2017-01-05 12 views
0

1バイトのシリアルポートを読み取るループがあります。有効なバイトを検出すると、他の関数を呼び出します。シリアルreadBytes - Arduinoループ

これは動作しますが、else文も実行されているようです。

void loop() { 
byte rx_byte[1]; 
byte input[2]; 


if (a_Serial.available() > 0) {  
    a_Serial.readBytes(rx_byte,1); 

    debug_Serial.println(rx_byte[0],HEX); 

    if (rx_byte[0] == 0xaa){ 

      debug_Serial.println("aa Running"); 

      } 

    if (rx_byte[0] == 0xbb){ 
      debug_Serial.println("bb Running"); 

      } 

    if (rx_byte[0] == 0xcc){ 
       a_Serial.readBytes(input,2); 
       rawcmd(input); 

       } 

    else { 
     a_Serial.println("Error"); 
     debug_Serial.println("Command Invalid");} 

    memset(rx_byte, 0, sizeof(rx_byte)); 

答えて

0

利用else ifの代わりifrx_byte[0]0xccに等しくない場合は、0xaaまたは0xbbになることもあります。

if (rx_byte[0] == 0xaa){ 

     debug_Serial.println("aa Running"); 

     } 

else if (rx_byte[0] == 0xbb){ 
     debug_Serial.println("bb Running"); 

     } 

else if (rx_byte[0] == 0xcc){ 
      a_Serial.readBytes(input,2); 
      rawcmd(input); 

      } 

else { 
... 
関連する問題