serialport / serialport-rs

A cross-platform serial port library in Rust. Provides a blocking I/O interface and port enumeration including USB device information.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hardware flow control permanently asserts RTS

xioTechnologies opened this issue · comments

RTS is permanently asserted regardless of FlowControl::None or FlowControl::Hardware. Hardware flow control using RTS/CTS signals should assert the RTS output when the receive buffer is full, and inhibit transmission when the CTS input is asserted. I have confirmed that transmission is inhibited by the CTS input. The issue is limited to the RTS behaviour.

This is an urgent issue for us. If a fix is not easily achievable then I suggest a workaround where RTS is permanently unasserted. This will at least allow reception of data from devices using hardware flow control, even if there is a risk that the receive buffer overflows.

A potentially related issue is that I cannot find any scenario where write_request_to_send is able to write the RTS level.

I am testing on Windows 10 using an FTDI USB to UART. This issue was first reported as #118 on GitLab.

Please feel free to make a change proposal as a pull request. Then the community can discuss the concrete approach.

I have misreported this issue. We were mistakenly measuring DTR not RTS. I have confirm that the DTR pin state can be written using write_data_terminal_ready.