1.深入理解缓冲区和Serial.available():
运行下面的代码,我发现如果不在串口输入任何数字,就会一直显示“no”,输入一个数字,就一直显示“yes”。关掉串口界面再打开,还是一直显示no
得出第一个结论:
输入的字符并不会随着输入的结束而结束,他一直都存在于缓冲区。
void setup(){
Serial.begin(9600);
}
void loop(){
if(Serial.available()>0){
Serial.println("yes");
}
else {
Serial.println("no");
}
}
由于arduino是通过loop函数不断循环的,每一次的循环都很快,可能我们输入的数据还没有完全传入arduino的串口缓冲区,因此Serial.avaliable()的值在一开始可能并不能准确显示出缓冲区里的所有数据的字节数。
我们只能说,Serial.avaliable()的返回值是当前缓冲区中接收到的数据字节数,注意是当前。
例子:
void setup(){
Serial.begin(9600);
}
void loop(){
if(Ser