Twisted的Serialport和消失的串口设备

时间:2010-09-09 16:44:39

标签: python serial-port twisted pyserial

我正在使用twisted.internet.serialport让我的程序不断连接到串口上的设备。

不幸的是我的串口只是一个usb设备,这意味着它可以在任何时候被操作系统断开或重置(端口2被集线器(EMI?)禁用,重新启用...)。我看到pyserial已经支持了几周并引发了一个SerialException。

我想做的是尝试重新连接到每隔几秒就消失的串口。

那么,有什么方法可以让我知道扭曲通知我断开连接?或者我应该继续为pyserial编写一个线程包装器?

由于

2 个答案:

答案 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上)进行了测试。两者都很好。不过不知道其他操作系统。