Как отключить флаги SERIAL_AUTO_TRANSMIT и SERIAL_AUTO_RECEIVE с помощью boost asio

Я работаю с устройством RS485, и мне нужно изменить его свойство FlowReplace передачи с 0x43 на 0x40. Вот мой журнал Eltima Serial Port Monitor.

В настоящее время это:

47 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3)
STATUS_SUCCESS
IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
ControlHandShake - 0x01 (SERIAL_DTR_CONTROL)
FlowReplace      - 0x43 (SERIAL_AUTO_TRANSMIT | SERIAL_AUTO_RECEIVE | SERIAL_RTS_CONTROL)
XonLimit         - 0
XoffLimit        - 32768

Но это должно быть так:

64 IRP_MJ_DEVICE_CONTROL - Request operates a serial port (COM3)
STATUS_SUCCESS
IOCTL_SERIAL_GET_HANDFLOW - Request returns information about the configuration of the handshake flow control set for a COM port
ControlHandShake - 0x01 (SERIAL_DTR_CONTROL)
FlowReplace      - 0x40 (SERIAL_RTS_CONTROL)
XonLimit         - 0
XoffLimit        - 32768

Разница между FlowReplace 0x43 и 0x40 заключается в этих двух флагах SERIAL_AUTO_TRANSMIT и SERIAL_AUTO_RECEIVE.

Возможно, я мог бы добиться этого, настроив структуру _SERIAL_HANDFLOW, но я бы хотел иметь кроссплатформенное решение, если нет другого пути.

Итак, есть ли способ исправить это, не вызывая родной дескриптор?
К сожалению, я ничего не могу найти здесь:
https://www.boost.org/doc/libs/1_64_0/boost/asio/serial_port_base.hpp

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]