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" 提出问题的可能原因。