1

0xFA5D0D01 のようなパケットを受信して​​います。今、私はそれを次のように分割したい

FA はヘッダー 1、5D はヘッダー 2、0D は長さ、01 はチェックサムです。const int data_availabe = Serial.available();

シリアルポートに書き込むことはできますが、FA を受信した場合のように分割することはできません。受信したヘッダー 1 を出力します。

const int data_availabe = Serial.available();
if (data_availabe <= 0) 
{
    return;
}
const int c = Serial.read();

Serial.print("Receive Status: ");
Serial.println(STATE_NAME[receiveState]);
Serial.print(c, HEX);
Serial.print(" ");
if (isprint(c))          //isprint checks whether it is printable character or not (e.g non printable char = \t)
{
  Serial.write(c);
} 
Serial.println();   
Serial.println(receiveState);   

switch (receiveState)
{
case WAITING_FOR_HEADER1:
    if (c == HEADER1)
    {
        receiveState = WAITING_FOR_HEADER2;

    }
    break;

case WAITING_FOR_HEADER2:
    if (c == HEADER2)
    {
        receiveState = WAITING_FOR_LENGTH;
    }
    break;
}

期待されるデータを取得しているため、 receiveState が変更されている enum です。

4

1 に答える 1