Arduino не принимает несколько команд

Я пытаюсь сделать основы с моим Arduino, и поэтому я начинаю с малого.

Тем не менее, я хочу, чтобы Arduino прослушивал простые множественные команды, отправляемые с моего Raspberry Pi (однако сейчас я эмулирую это через последовательный монитор)

Это код, с которым я работаю:

#include "SoftwareSerial.h"

void setup()
{
  Serial.begin(9600);
  delay(100);
}

void loop() {
    if (Serial.find("test1")) {
      delay(100);
      Serial.println("TEST1 command received");
    }
    if (Serial.find("test2")) {
      delay(100);
      Serial.println("TEST2 command received");
    }
  }
}

К сожалению, только команда test1 вызывает последовательный ответ на печать, а test2 — нет. Может ли кто-нибудь здесь помочь указать мне в правильном направлении?

Благодарю вас!


person user5740843    schedule 22.09.2016    source источник
comment
find будет блокироваться до тех пор, пока test1 не будет найден или не истечет время ожидания, потребляя все данные на своем пути, включая test2 строки, которые могут встретиться. Я предлагаю вам провести небольшое исследование функций, которые вы пытаетесь использовать.   -  person Eugene Sh.    schedule 22.09.2016


Ответы (1)


Прочитав документацию, я не думаю, что вы можете использовать функцию find() таким образом.

Рассмотрим, что произойдет, если вводится test2, когда выполняется вызов find("test1"). Вероятно, он использует все символы до 2 включительно, а затем возвращает false, после чего эти символы теряются.

Я думаю, вам следует разработать реальный протокол с некоторым разделителем между командами и прочитать/разобрать их.

person unwind    schedule 22.09.2016