Windows 11, NCS v2.3.0, VSCode
Hi, I am using the uart_poll_out API for communicating via USB serial.
For each character I want to output, I do this:
uint32_t dtr; uart_line_ctrl_get(DEV_UART_USB, UART_LINE_CTRL_DTR, &dtr); if (dtr) { uart_poll_out(DEV_UART_USB, c); }
The other side of the serial connection can disconnect at any time.
I don't want my code to hang trying to write, that's why I checked the DTS beforehand, and basically throw away any data that won't get sent immediately.
The problem I have is:
- I am writing continuously
- The other side disconnects
- I attempt to detect that, and do, eventually, but not before the uart_poll_out puts a few characters into what I assume is an output buffer which fills up a short time later
Then, when the other side re-connects, the bytes that are sitting in the output buffer get sent. This corrupts the datastream to the receiver as those bytes were for a different connection.
Is there a way to deal with this?
I would basically like to detect that I can't send data, and clear any existing output buffer at that time.
Or any other way to deal with this situation?
I'm not a serial expert and I only had the line_ctrl code because I saw it in an example. Please let me know.
Thanks.