Twisted的串行端口和消失的串行端口设备

2024-04-28 16:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用twisted.internet.serialport使我的程序连续连接到串行端口上的设备。在

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

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

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

谢谢


Tags: 方法端口程序twisted集线器线程internetusb
2条回答

看来分支版本中唯一相关的更改是对协议中connectionLost()的调用。在

在它被固定在后备箱里之前,我用一个:

class fixedSerialPort(SerialPort):
    def connectionLost(self, reason):
        SerialPort.connectionLost(self, reason)
        self.protocol.connectionLost(reason)

我用Twisted 10.1(在ubuntu上)和8.1(在我信任的debian上)进行了测试。两者都很好。但不知道其他操作系统。在

http://twistedmatrix.com/trac/ticket/3690可能有关联。在

在适当的Windows支持下,票证似乎被阻止。我不确定这种断开连接事件是否会触发Twisted的内部连接丢失检测代码,但我希望它会触发(即使没有最新版本的pyserial)。在

你也许可以很容易地尝试一下与罚单链接的分支,看看它是否符合你的要求。如果是这样的话,也许你可以帮助解决问题(10.2版即将发布)。在

相关问题 更多 >