2012-05-04 266 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。如果在指定的超時後沒有收到更多數據,則意味着整個字符串被完全傳輸。然後你可以檢查字符串的長度並執行你的應用程序邏輯。