gpt4 book ai didi

serial-port - Arduino 串行事件未返回

转载 作者:行者123 更新时间:2023-12-04 04:46:06 24 4
gpt4 key购买 nike

我正在处理一个 Arduino 项目,并希望从 Serial port 接收一些命令与 arduino 串行事件。然而它总是不满足条件,使得代码不知道串行事件已经完成。这是我的代码。

void serialEvent() {
while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
if (inChar == '`')
{
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '|') {
settingsReceived = true; // <----- This will never be called
Serial.println("true"); // <------ Nor this will too
}
}
}
}

我试过传递字符串 `Hello|从串行监视器但它不会响应。另外,我试过 Line endingNo Line EndingNewline但它不起作用,有人可以帮忙吗?谢谢!

最佳答案

我已经想通了,Serial.read()每次只会读取一个字节,例如,`Hello|将被拆分为

` H e l l o |  

所以第一次, if (inChar == ' ` ')是真的,因此进入里面的 Action ,但是从第二个字符开始,(H, e, l, l, o, |) 不是字符“`”,意思是 if (inChar == ' ` ')不是真的,之后不让它进入条件。

这应该是正确的做法:
void serialEvent() {
if (Serial.available())
{
char inChar = (char)Serial.read();
if (inChar != '`')
{
return; // <----- Rejecting the char if not starting with `
}
}

while (Serial.available()) {
// get the new byte:
char inChar = (char)Serial.read();
// add it to the inputString:
inputString += inChar;
// if the incoming character is a newline, set a flag
// so the main loop can do something about it:
if (inChar == '|') {
settingsReceived = true;
Serial.println("true");
}

}
}

关于serial-port - Arduino 串行事件未返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18158988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com