Arduino Serial.ReadString() проблема

Всем привет я пишу свой код и есть некоторые проблемы. Когда я пишу на своем серийном мониторе, мое состояние зуммера не изменилось. Вы можете помочь мне понять причину. Я написал код с типом int, и он работает с функцией Serial.parseInt() правильно.

String ask="Please enter buzzer condition";
int buzzerPin=2;
String state;
void setup() {
  pinMode(buzzerPin,OUTPUT);
  Serial.begin(115200);

}

void loop() {
 Serial.println(ask);
 state=Serial.readString();
 Serial.println(state);
 while(Serial.available()==0){
  
 }
 if(state=="on"){
  digitalWrite(buzzerPin,HIGH);
 }
 if(state=="off"){
  digitalWrite(buzzerPin,LOW);
}
}

, 👍1

Обсуждение

Какое окончание строки вы выбрали на мониторе последовательного подключения? И почему вы ждете поступления дополнительных данных **после того, как** вы прочитали строку из Serial?, @chrisl

@christl спасибо, ты действительно помогаешь мне найти свою ошибку, @Shushan Abovyan


1 ответ


Лучший ответ:

1

Вам нужно использовать Serial.readStringUntil('\n') вместо Serial.ReadString, если вы используете последовательный монитор Arduino IDE (где a \n добавляется в качестве символа завершения при нажатии клавиши enter). Также удалите это время(Serial.available()==0). Он будет ждать до тех пор, пока в последовательном буфере есть какие-либо байты, и поскольку вы не делаете Serial.read() в цикле, буфер не будет опустошен. Таким образом, если что-либо получено при вызове Serial.println(state) или если вы отправите два символа завершения, программа застрянет в этом цикле.

,