我使用发送一系列字节的程序通过串行与 Arduino 通信。
为了让 Arduino 意识到它正在接收消息而不是垃圾,我用字符“S”“T”“A”“R”“T”标记了我的字节数组的开头。在此之后最终将遵循一系列将分配给内部变量的字节(尚未实现)。
Arduino 必须按顺序读取每个字节并将其与字节数组进行比较,如果所有字节都以正确的顺序出现,它将继续程序的下一部分,否则它将丢弃当前字节并等待更多字节到达。
我试图以最有效和可读的方式实现它,而不是使用一系列嵌套的 if 语句。
到目前为止,我得到了:
byte inByte = 0;
byte handShake[] = {'S','T','A','R','T'};
void setup() {
Serial.begin(9600);
}
void loop()
{
while (Serial.available())
{
for (int x =0; x < sizeof(handShake) ; x++)
{
inByte = Serial.read();
Serial.println(x);
if (inByte == handShake[x])
{
if (x == (sizeof(handShake)-1)) {setArduino();}
}
else break;
}
}
}
void setArduino () {
Serial.println("Ready To Set Parameters");
}
然而,这似乎没有超过第二个字节,我不知道为什么。