经过很长一段时间后,Arduino停止向串口发送数据

Max*_*Cat 9 serial-port communication arduino

我使用的是Arduino Uno rev2设备作为永久连接设备,有时会向PC发送信号(Windows 7 x64).使用arduino.cc的Arduino 1.0软件编译的代码

arduino.cc上的主题,Arduino在很长一段时间后停止向Serial发送数据

源代码

它工作得很好但有时,经过很长一段时间后,PC停止从Arduino设备接收数据.它不是PC软件问题,因为所有软件(putty,telnet等)的行为都相同 - 我可以将数据发送到Arduino(设备响应命令); 我只是无法接收它.

此处描述了类似的问题,在长时间后串行通信停止.,但没有提出解决方案.

断开/连接设备暂时解决了问题,但这不是一个解决方案,因为该设备应该永久全自动使用.

使用重置程序和所有值的板重置按钮开始不会有帮助.PC不会开始接收数据.

笔记:

  1. 在使用Arduino 1.0软件的Arduino Uno板上无法重现millis()翻转错误 - 我想这是固定的,而且millis()现在只在50天内完成翻转,就像在文档中说的那样.除了代码有millis()独立代码,也没有响应.

  2. 在向PC发送数据期间闪烁的LED仍然闪烁.

  3. 字符串的使用会增加内存使用量,但是这个程序太小而不容易出现问题.程序运行10个小时后没有使用额外的内存,所以我真的不打算用其他东西替换Strings,因为串口问题更为重要.

如果您认为问题出在arduino程序错误中,请考虑如何解释TX闪烁和重置没有帮助.

avr*_*vra 0

如果您不断轮询 Arduino,那么作为一种解决方法,您可以在 Arduino 中实现一个看门狗,如果 Arduino 长时间没有向 PC 输出数据,它将重置 Arduino。您可以监视 Arduino TX 引脚,将其连接到另一个输入引脚,使用中断...重点是在每次 TX 活动后重置看门狗。