3

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

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

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

那么,有什么方法可以告诉twisted 通知我断开连接?还是我应该继续为 pyserial 编写一个线程包装器?

谢谢

4

2 回答 2

1

http://twistedmatrix.com/trac/ticket/3690可能是相关的。

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

至少,您可以很容易地尝试从该票证链接的分支,看看它是否符合您的要求。如果是这样,也许您可​​以帮助实际解决问题(10.2 版本即将发布)。

于 2010-09-09T17:50:05.697 回答
1

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

直到它被固定在后备箱中,我使用:

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

我用 Twisted 10.1(在 ubuntu 上)和 8.1(在我信任的 debian 上)对其进行了测试。两者都工作正常。虽然不知道其他操作系统。

于 2010-09-09T19:50:01.253 回答