一連のバイトを送信するプログラムを使用して、シリアル経由で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");
}
ただし、これは2バイト目を超えていないようで、理由はわかりません。