diff --git a/src/serialport_win.cpp b/src/serialport_win.cpp index f6be1d86b..9213bae60 100644 --- a/src/serialport_win.cpp +++ b/src/serialport_win.cpp @@ -89,11 +89,28 @@ void EIO_Open(uv_work_t* req) { dcb.Parity = NOPARITY; dcb.ByteSize = 8; dcb.StopBits = ONESTOPBIT; - dcb.fInX = FALSE; - dcb.fOutX = FALSE; + + dcb.fOutxDsrFlow = FALSE; dcb.fOutxCtsFlow = FALSE; - dcb.fRtsControl = RTS_CONTROL_ENABLE; + + if (data->xon) { + dcb.fOutX = TRUE; + } else { + dcb.fOutX = FALSE; + } + + if (data->xoff) { + dcb.fInX = TRUE; + } else { + dcb.fInX = FALSE; + } + + if (data->rtscts) { + dcb.fRtsControl = RTS_CONTROL_ENABLE; + } else { + dcb.fRtsControl = RTS_CONTROL_DISABLE; + } dcb.fBinary = true; dcb.BaudRate = data->baudRate;