2012-05-04 2 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)을 설정하십시오. 지정된 시간 초과 후에 더 이상 수신 된 데이터가 없으면 전체 문자열이 완전히 전송되었음을 의미합니다. 그런 다음 문자열의 길이를 확인하고 응용 프로그램 논리를 실행할 수 있습니다.