我试图让我的arduino uno通过串口监视器接收命令。该命令将始终作为#RANDOM_COMMAND%发送,因此我需要从字符串中删除#和%。下面的代码可行,但我被告知它不安全,因为有时连接会被破坏,命令也不会被完全接收。
// wait for a message to come in
if (Serial.available() > 0) {
message = Serial.readStringUntil('%');
int beginMessage = message.indexOf('#') + 1;
command = message.substring(beginMessage);
}
// if the message is "REMOTE_CONTROL" then switch to the program mode for message receiving
if (command == "REMOTE_CONTROL") {
programMode = 4;
}
if (programMode == 4) {
//digitalWrite(lampRemote, HIGH);
if (command.startsWith("SET_RED:"))
{
int colourIndex = command.indexOf(':') + 1;
r = command.substring(colourIndex).toInt();
}
else if (command.startsWith("SET_GREEN:"))
{
int colourIndex = command.indexOf(':') + 1;
g = command.substring(colourIndex).toInt();
}
else if (command.startsWith("SET_BLUE:"))
{
int colourIndex = command.indexOf(':') + 1;
b = command.substring(colourIndex).toInt();
}
ShowColor(b, r, g);
}
是否有其他方法通过串行监视器接收字符串,然后安全地删除#和%符号?我对编程很新,所以越简单越好!
谢谢!
答案 0 :(得分:0)
当然,任何通讯都可以以某种方式中断。
您唯一要避免的是您的代码停止工作。只要你继续监听新命令,如果你在某些时候收到破坏的命令并不重要。只需处理下一个。 您可以简单地忽略它们,或者如果收到无效命令,通常会更好地发送错误消息。因此,与您的设备通话的人都会知道出了问题。 如果您收到有效命令,请发送收据。