Twisted Serialport и исчезающие устройства последовательного порта - PullRequest
3 голосов
/ 09 сентября 2010

Я использую twisted.internet.serialport, чтобы моя программа постоянно подключалась к устройству через последовательный порт.

К сожалению, мой последовательный порт - это просто USB-устройство, что означает, что его можно отключить илиСброс ОС в любое время (порт 2 отключен концентратором (EMI?), повторное включение ...) .Я вижу, что pyserial поддерживает эту функцию в течение нескольких недель и вызывает SerialException.

Я хотел бы попытаться повторно подключиться к последовательному порту, который просто исчезал каждые несколько секунд.

Итак, есть ли способ, как я могу сказать скрученный, чтобы уведомить меня о разъединении?Или я должен пойти дальше и написать потоковую оболочку для pyserial?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 сентября 2010

Кажется, единственное существенное изменение в разветвленной версии - это вызов метода connectionLost () в протоколе.

Пока он не исправлен в транке, я использую:

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

Я тестировалэто с Twisted 10.1 (на Ubuntu) и 8.1 (на моем верном Debian).Оба отлично работают.Впрочем, понятия не имею о других ОС.

1 голос
/ 09 сентября 2010

http://twistedmatrix.com/trac/ticket/3690 могут быть связаны.

Билет заблокирован при правильной поддержке Windows. Я не уверен, вызовет ли событие такого рода отключение внутреннего кода обнаружения потери соединения Twisted, но я ожидаю, что это произойдет (даже без последней версии pyserial).

Возможно, вы могли бы довольно просто попробовать ветку, связанную с этим тикетом, чтобы увидеть, выполняет ли она, по крайней мере, то, что вы хотите. И если это так, возможно, вы могли бы помочь получить разрешение на самом деле (релиз 10.2 появится довольно скоро).

...