#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 个字符的字符串。
所以,想象一下这个输入:
AAAA
BBBB
BBB
AAAA
现在,它显示为 {"AAAA", "BBBB", "BBBA"}。
我需要它来读取 {"AAAA", "BBBB", "AAAA"}。
有什么想法吗?谢谢。
最佳答案
您可以检查字符间延迟的持续时间。设置超时时间,例如100ms。当指定的超时时间后没有收到更多数据时,表示整个字符串已传输完毕。然后您可以检查字符串的长度并执行您的应用程序逻辑。
关于c++ - Arduino清除缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456931/