我有一个使用 PySerial 运行数据采集的进程。它现在工作正常,但我必须做一件奇怪的事情才能让它连续工作,我不确定这是否正常,所以我问了这个问题。
会发生什么:看起来连接不时断开!大约每 30-60 分钟一次,误差线很大(可能会持续数小时并没问题,但有时会经常发生)。
我的问题:这是标准吗?
我的临时解决方案:我编写了一个简单的“重新打开”函数,如下所示:
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 程序,用户单击“开始”之类的东西,该按钮会做一些准备工作并通过以下方式运行一个功能multiprocessing.Process()
:
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()
不断返回零......无论设备上有多少数据!
这种行为是预期的,并且应该始终考虑它是否发生?