Python: PySerial 随机断开与设备的连接
Python: PySerial disconnecting from device randomly
我有一个使用 PySerial 运行数据采集的进程。它现在工作正常,但我必须做一件奇怪的事情才能让它持续工作,我不确定这是否正常,所以我问这个问题。
发生了什么: 看起来连接时不时掉线!大约每 30-60 分钟一次,误差线很大(可以持续数小时并且没问题,但有时经常发生)。
我的问题:这个标准吗?
我的临时解决方案:我写了一个简单的"reopen"函数,看起来像这样:
def ReopenDevice(devObject):
try:
devObject.close()
devObject.open()
except Exception as e:
print("Error while trying to connect to device " + devObject.port + ". The error says: " + str(e))
time.sleep(2)
而我做的是,如果数据拉取失败2分钟,我重新打开具有此功能的设备,它继续正常工作,没有问题。
我的程序模型:这是一个GUI程序,用户点击类似"Start"的东西,那个按钮会做一些准备并通过[=14运行一个函数=] 开头为:
devObj = serial.Serial()
#... other params
devObj.open()
然后该函数运行一个 while 循环,使用类似以下内容轮询数据:
bytesToRead = devObj.inWaiting()
if bytesToRead != 0:
buffer = decodeString(devObj.read(bytesToRead))
#process buffer and push it to a list...
我知道问题发生的方式是 devObj.inWaiting()
一直返回零...无论设备上有多少数据!
这种行为是否是预期的并且应该始终考虑它是否发生?
在不经常调用 inWaiting()
之后问题减少了很多。无论如何,我保留了重新连接部分以确保我的程序永远不会失败。感谢 "Kobi K" 提出问题的可能原因。
我有一个使用 PySerial 运行数据采集的进程。它现在工作正常,但我必须做一件奇怪的事情才能让它持续工作,我不确定这是否正常,所以我问这个问题。
发生了什么: 看起来连接时不时掉线!大约每 30-60 分钟一次,误差线很大(可以持续数小时并且没问题,但有时经常发生)。
我的问题:这个标准吗?
我的临时解决方案:我写了一个简单的"reopen"函数,看起来像这样:
def ReopenDevice(devObject):
try:
devObject.close()
devObject.open()
except Exception as e:
print("Error while trying to connect to device " + devObject.port + ". The error says: " + str(e))
time.sleep(2)
而我做的是,如果数据拉取失败2分钟,我重新打开具有此功能的设备,它继续正常工作,没有问题。
我的程序模型:这是一个GUI程序,用户点击类似"Start"的东西,那个按钮会做一些准备并通过[=14运行一个函数=] 开头为:
devObj = serial.Serial()
#... other params
devObj.open()
然后该函数运行一个 while 循环,使用类似以下内容轮询数据:
bytesToRead = devObj.inWaiting()
if bytesToRead != 0:
buffer = decodeString(devObj.read(bytesToRead))
#process buffer and push it to a list...
我知道问题发生的方式是 devObj.inWaiting()
一直返回零...无论设备上有多少数据!
这种行为是否是预期的并且应该始终考虑它是否发生?
在不经常调用 inWaiting()
之后问题减少了很多。无论如何,我保留了重新连接部分以确保我的程序永远不会失败。感谢 "Kobi K" 提出问题的可能原因。