我正在使用twisted.internet.serialport让我的程序不断连接到串口上的设备。
不幸的是我的串口只是一个usb设备,这意味着它可以在任何时候被操作系统断开或重置(端口2被集线器(EMI?)禁用,重新启用...)。我看到pyserial已经支持了几周并引发了一个SerialException。
我想做的是尝试重新连接到每隔几秒就消失的串口。
那么,有什么方法可以让我知道扭曲通知我断开连接?或者我应该继续为pyserial编写一个线程包装器?
由于
答案 0 :(得分:1)
http://twistedmatrix.com/trac/ticket/3690可能是相关的。
在正确的Windows支持上,该票证似乎已被阻止。我不确定这种断开事件是否会触发Twisted的内部连接丢失检测代码,但我希望它(即使没有最新版本的pyserial)。
你可能很容易尝试从该票证链接的分支,看看它是否能满足您的需求,至少。如果是这样,也许你可以帮助实际解决票证( 10.2 发布即将推出)。
答案 1 :(得分:1)
分支版本中唯一相关的变化似乎是在协议中调用connectionLost()。
直到它固定在行李箱中我才使用:
class fixedSerialPort(SerialPort):
def connectionLost(self, reason):
SerialPort.connectionLost(self, reason)
self.protocol.connectionLost(reason)
我用Twisted 10.1(在ubuntu上)和8.1(在我可信赖的debian上)进行了测试。两者都很好。不过不知道其他操作系统。