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') );
}
}
我有这个代码:
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') );
}
}