Arduino Serial.readStringUntil 没有正确检测到终止字符

Arduino Serial.readStringUntil doesn't correctly detect terminator chars

我有这个代码:

void setup() {
  Serial.begin(9600);
  while (!Serial){}
  Serial.println("Connected");
  Serial.println("L");
  Serial.println("R");
  Serial.println("B");
  Serial.println("S");
  Serial.println("T");
}

void loop() {
  evalComms(Serial.readStringUntil("0"));
}

void evalComms(String recv){
  if (recv == "L"){
    Serial.println("ok L " + String(Serial.parseInt()));
  } else if (recv == "R"){
    Serial.println("ok R " + String(Serial.parseInt()));
  } else if (recv == "B") {
    Serial.println("ok B " + String(Serial.parseInt()));
  } else if (recv == "S") {
    Serial.println("ok S");
  } else if (recv == "T"){
    Serial.println("ok T");
  } else if (recv != ""){
     Serial.println("Comm error. Read: " + recv);
  }
}  

预期I/O场景: 在:L020 输出:好的 L 20

实际I/O场景: 在:L020 OUT:通讯错误。阅读:L020

我做错了什么?

尝试:

Serial.readStringUntil('0') 因为根据 docs 它接受 char

否则我建议将终止字符更改为 \n ( ENTER ) ,

然后在串行上:"L\n20" 会给你正确的输出。

void loop() 
{
    if(Serial.available() > 0)
    {
        evalComms( Serial.readStringUntil('\n') );
    }
}