2012-05-04 6 views
-1
#include <stdio.h> 

#define LED 13 

void setup() { 
    pinMode(LED, OUTPUT); 
    Serial.begin(9600); 
} 

void loop() { 
    if (Serial.available() == 4) { 
    char command[5]; 

    for (int i = 0; i < 4; i++) command[i] = Serial.read(); 
    command[4] = '\0'; 

    Serial.println(command); 

    if (strcmp(command, "AAAA") == 0) { 
     digitalWrite(LED, HIGH); 
     Serial.println("LED13 is ON"); 
    } else if (strcmp(command, "BBBB") == 0) { 
     digitalWrite(LED, LOW); 
     Serial.println("LED13 is OFF"); 
    } 
    } 
} 

は、私は4文字の長い文字列を読み込み、そのコードを、持っています。しかし、私はそれが4文字ではない文字列を無視する必要があります。Arduinoの明確なバッファ

ので、この入力を想像:

AAAA 
BBBB 
BBB 
AAAA 

今、それは読み込み{ "AAAA"、 "BBBB"、 "BBBA"}。

私はそれを読むために必要{ "AAAA" を、 "BBBB"、 "AAAA"}。

ありがとうございました。

答えて

0

あなたは、文字間の遅延の継続時間を確認することができます。 100msなどのタイムアウトを設定します。指定されたタイムアウト後に受信したデータがなくなると、文字列全体が完全に転送されます。次に、文字列の長さを確認し、アプリケーションロジックを実行することができます。