gpt4 book ai didi

c++ - Arduino Serial.available() 不断增加

转载 作者:行者123 更新时间:2023-11-28 03:37:37 26 4
gpt4 key购买 nike

我正在使用 Arduino Uno R3当我向我的 GSM 发送 AT 命令时通过 Serial 屏蔽,我从 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() 时也会发生这种情况,它应该消耗缓冲区中的数据。

最佳答案

sensorValue[serial+1] = '\0';
Serial.print(sensorValue); // <== here

您将收到的任何内容发送回调制解调器。这立即回应了它。所以一旦你用 AT 命令让它运行,你将永远循环地来回发送相同的字节。删除 Serial.print() 调用。

关于c++ - Arduino Serial.available() 不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10375753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com