Повышение или понижение RTS на последовательном порту (C++)

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

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

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

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

Есть ли способ программно поднять или опустить линию РТС?

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


person Daniel Mošmondor    schedule 22.02.2010    source источник


Ответы (3)


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

EscapeCommFunction(hPort, SETRTS);

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

person avakar    schedule 22.02.2010

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

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

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

person Thomas Matthews    schedule 22.02.2010

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

person dbasnett    schedule 16.04.2010