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

Тема в разделе "Микроконтроллеры AVR", создана пользователем Vittorio, 20 мар 2015.

  1. Vittorio

    Vittorio Нуб

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

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

    Код (Text):
      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 = ""; // очищаем буфер
        }
      }
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Код (Text):
    void loop()
    {
      if (Serial.available())
      {
        char x = Serial.read();
        if(x != '\n')// чтобы пропускать \n
          serialinput += x;
        if (x == 't')// накопилась очередная строка, можно разбирать
        {
         // тут разбор строки
          serialinput = ""; // очищаем буфер
        }
      }
    }
     
  3. Unixon

    Unixon Оракул Модератор

    if (x < ' ') чтобы отделить все непечатные символы в ASCII.
     
    Megakoteyka нравится это.