Мониторинг линии RTS / DTR в PySerial - PullRequest
0 голосов
/ 18 апреля 2020

Я работаю над программным проектом RS232, который использует RTS / DTR в качестве управляющих входов для некоторого программного обеспечения. Есть ли способ контролировать линию RTS или DTR на предмет изменения состояния в PySerial? Я изо всех сил пытаюсь найти примеры мониторинга линий RTS или DTR в Python, с целью по существу запустить функцию, пока установлена ​​линия RTS / DTR.

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2020

Входным сигналом RS232 C является CTS / DSR / RI / CD.

Возможно, вы и ваши участники проекта неправильно понимаете спецификации RS232 C.

RTS / DTR выходной сигнал управляется программой, которую вы создаете, а не входной сигнал.

Вы можете знать, что вы установили, или каково состояние по умолчанию, даже если вы не установили его, но оно не изменяется из-за внешние факторы.

pySerial API

Возможно, что сигнальная линия RTS / DTR может измениться нежелательно из-за аппаратной проблемы, такой как обрыв линии или короткое замыкание с чем-то, но программа не может знать это, и она не находится в состоянии, когда связь возможна.


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

Драйвер устройства автоматически контролирует сигнальные линии, чтобы предотвратить переполнение входных данных.

Это происходит из-за недостаточного учета настроек последовательного порта и спецификаций программы, и считается правильным программированием для максимально возможного предотвращения таких изменений состояния.


Кажется, что есть нет интерфейса событийного программирования для PySerial.

cts
dsr

Вы писали, что хотите вызывать функцию при включенном CTS / DSR, но наоборот Вы можете проверить состояние CTS / DSR при вызове функции?

Если вы действительно хотите выполнять управляемое событиями программирование с сигналами CTS / DSR, это метод создания программного обеспечения l oop, которое отслеживает сигналы CTS / DSR в качестве основной процедуры, определяет время, когда Сигнал CTS / DSR меняется с OFF на ON и вызывает соответствующую функцию.

Обратите внимание, что если мониторинг сигнала CTS / DSR основной подпрограммой не выполняется периодически между засыпаниями, ЦП будет занят и система не будет работать должным образом.

...