чтение и разбор Serial

Vittorio
Offline
Зарегистрирован: 02.02.2015

Подскажите, как изменить этот код под мои условия: в serial раз в x секунд приходит строка из 4-х символов (без скрытого символа конца строки), надо по значению 3-го символа присвоить переменной n определенное число. Первый символ - это "r" или "k", второй всегда "0", четывертый всегда "t".

Я из примеров составил такой код, и он даже работает, но он основан на анализе символа конца строки, а мне надо чтобы этот разбор не учитывал конечный символ "\n" - его может и не быть, при этом ничего не работает.

  while (Serial.available())
  {
    char x = Serial.read();
    if (x != '\n') serialinput += x;
    else 
    {
      if (serialinput.substring(0,4) == "r01t") n= 1;
      if (serialinput.substring(0,4) == "r02t") n= 2;
      if (serialinput.substring(0,4) == "k03t") n= 3;
      if (serialinput.substring(0,4) == "k04t") n= 4;
      serialinput = ""; // очищаем буфер
    }
  } 

 

 

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Serial.readBytes(buffer, length)

n = buffer[2]

Vittorio
Offline
Зарегистрирован: 02.02.2015

эм, может n = buffer[2] - 47 ?

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

Vittorio пишет:

эм, может n = buffer[2] - 47 ?

Может, я ж не знаю, как написали так и ответили "надо по значению 3-го символа присвоить"

Тип данных для n не указано. Ну это мелочи, сами поди разберетесь.

 

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

А чего бы просто не вычесть '0', а не придумывать всякие 47 (реально это '0'-1, будете потом по граблям прохаживаться и удивляться).