Повышение или понижение RTS на последовательном порту (C ++) - PullRequest
2 голосов
/ 22 февраля 2010

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

Использование нуль-модемного кабеля, описанного здесь:

http://www.lammertbies.nl/comm/info/RS-232_null_modem.html#full

я могу обнаружить линию RTS на каком-то другом порту, который подключен через этот нуль-модемный кабель.

Есть ли способ программного повышения или понижения линии RTS?

Платформа - Win32, c ++, но любая информация о том, когда линия RTS поднимается или опускается, будет полезна.

Ответы [ 3 ]

7 голосов
/ 22 февраля 2010

Взгляните на EscapeCommFunction.

EscapeCommFunction(hPort, SETRTS);

Аппаратное подтверждение связи должно быть отключено, т. Е. dcb.fRtsControl должен быть установлен на что-то отличное от RTS_CONTROL_HANDSHAKE при вызове SetCommState.

1 голос
/ 16 апреля 2010

В .Net это свойство .RtsEnable последовательного порта.

1 голос
/ 22 февраля 2010

Эта проблема сильно зависит от конкретной платформы, а не только от ОС. Если линия RTS подключена к машине в качестве выхода, ее можно поднять.

Аппаратное обеспечение самого низкого уровня должно обеспечивать доступ к линии. Некоторые последовательные интерфейсы не разрешают программному доступу к этой линии, но обрабатывают его автоматически посредством H / W рукопожатия.

Операционная система должна разрешить доступ к этому ресурсу для пользовательского приложения. В некоторых ОС последовательный порт может быть ограничен привилегиями ядра или суперпользователя.

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