我正在使用 Arduino UNO R3,当我通过 Serial 向我的 GSM 屏蔽发送 AT 命令时,我从 Serial.available() 获得越来越多的数字。
这是我一直用来调试的示例:
void loop()
{
Serial.println("AT+CADC?");
delay(3000);
}
void serialEvent()
{
char * sensorValue;
int serial = Serial.available();
Serial.print("-");
Serial.print(serial);
Serial.println("-");
if(serial >0)
{
sensorValue = (char*) malloc(sizeof(char) * (serial +1));
int i;
for(i = 0; i < serial; i++)
{
sensorValue[i] = Serial.read();
//Serial.print(sensorValue[i]);
}
sensorValue[serial+1] = '\0';
Serial.print(sensorValue);
}
delay(2000);
}
我从串行监视器得到的结果是:
-30-
-63-
-63-
-63-
...
为什么可用字节数从 30 开始,然后在 63 时达到最大值?即使我使用 Serial.read() 也会发生这种情况,它应该消耗缓冲区中的数据。
编辑:添加了 serialEvent() 的完整内容。