我正在研究一些软件,包括PC机和嵌入式设备之间通过UART进行通信。我正在使用STLink的USB/串行适配器。
大多数时候通信都很正常,但过了一段时间(可能是几小时/分钟甚至几天),我就遇到了无法从软件层面解决的写入超时问题——唯一可行的解决方案是将USB从Nucleao的st链路断开,然后再连接。我试图重置或重新编程嵌入式设备,重新运行串行脚本,但似乎没有任何工作。我尝试实现异常处理,现在看起来像这样(但不起作用):
self.ser.reset_output_buffer()
try:
self.ser.write(bytes(response))
except Exception as e:
print(e)
print("write timeout occured")
while self.ser.inWaiting()>0:
self.ser.read(1)
self.ser.reset_output_buffer()
self.ser.flushOutput()
self.ser.flushInput()
self.ser.close()
self.ser.open()
串行端口配置为:
^{pr2}$所以。。。这两个设备(PC和嵌入式)每秒交换5条消息,包大小是恒定的(196字节),在上一个错误之前,我已经交换了500k个包,没有任何问题(我以前有过较高和较低的数字)。通信协议非常简单,主(嵌入式)发送数据并等待响应。若响应在5秒内并没有被发送回来,它将重新传输最后一个包,仅此而已。在
我想尽一切办法想知道我应该在哪里找到这个问题。我怎样才能避免呢?是pyserial问题吗(那么我应该使用什么,什么才足够稳定)?也许stlink(来自nuclear144)的uart/usb坏了?在
谢谢你的帮助!在
目前没有回答
相关问题 更多 >
编程相关推荐