Arduino Serial.available() 不断增加
Arduino Serial.available() keeps increasing
我正在使用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] = ' ';
Serial.print(sensorValue);
}
delay(2000);
}
我从串行监视器得到的结果是:
-30-
-63-
-63-
-63-
。
为什么可用的字节数从 30 开始,然后最大为 63?即使我使用 Serial.read() 也会发生这种情况,它应该消耗缓冲区中的数据。
sensorValue[serial+1] = ' ';
Serial.print(sensorValue); // <== here
您将收到的任何内容直接发送回调制解调器。 这立即回应了它。 因此,一旦您使用 AT 命令运行它,您将永远循环来回发送相同的字节。 删除 Serial.print() 调用。
我建议您使用软件串行库(SoftwareSerial)并使用它来访问GSM调制解调器,除非GSM调制解调器需要UART或RS-232电平信号。
另一种选择,如果您的大多数工作涉及与调制解调器交谈,则可能是合适的,那就是Arduino Mega 2560。 它有四个硬件串行接口,尽管它没有RS-232输出信号。 为此,您应该能够使用FTDI分线板之一。
相关文章:
- 数组索引的值没有增加
- 为什么我的代码在输出中增加了93天
- 不断收到相同的错误...怎么了?C++
- 有效地使用std::unordered_map来插入或增加键的值
- Vulkan验证层不断在VkQueuePresentKHR()上抛出图像布局错误
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- ActiveMQ使用者的内存使用量在onMessage调用后不断增加
- 不断增加的指针数组 错误:赋值中的类型不兼容
- 我的值不断增加,而不是在循环语句中重置
- C++不断增加阵列大小
- 当使用动态数组时,循环中的内存使用量不断增加.(C++)
- 随着C++程序的运行,内存使用量不断增加
- Arduino Serial.available() 不断增加
- gtkmm应用程序内存使用量不断增加
- 不断增加物理内存Visual c++ CryptMsgClose和CryptReleaseContext
- 在AIX上,VSZ和RSS不断增加
- 信号量句柄的数量不断增加
- 尽管初始大小固定,但用于跟踪对象的边界框/ROI 的大小仍在不断增加
- Linux:为什么 smaps 中的值会不断增加
- c++ -不断增加一个整数