From 7cb87dca3edd9a642e52ace4741f2ed82aeeaadc Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Sat, 6 May 2023 02:15:30 -0500 Subject: [PATCH] Set serial port byte size --- serial_port/serial_port.cpp | 71 ++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/serial_port/serial_port.cpp b/serial_port/serial_port.cpp index b38e285bb..b8d603102 100644 --- a/serial_port/serial_port.cpp +++ b/serial_port/serial_port.cpp @@ -138,6 +138,28 @@ bool serial_port::serial_open() break; } + /*-----------------------------------------*\ + | Configure size | + \*-----------------------------------------*/ + switch(size) + { + case SERIAL_PORT_SIZE_8: + dcb.ByteSize = 8; + break; + + case SERIAL_PORT_SIZE_7: + dcb.ByteSize = 7; + break; + + case SERIAL_PORT_SIZE_6: + dcb.ByteSize = 6; + break; + + case SERIAL_PORT_SIZE_5: + dcb.ByteSize = 5; + break; + } + /*-----------------------------------------*\ | Configure stop bits | \*-----------------------------------------*/ @@ -165,7 +187,6 @@ bool serial_port::serial_open() /*-----------------------------------------*\ | Configure additional parameters | \*-----------------------------------------*/ - dcb.ByteSize = 8; //8 data bits dcb.fAbortOnError = FALSE; //Abort on error dcb.fOutX = FALSE; //XON/XOFF off for transmit dcb.fInX = FALSE; //XON/XOFF off for receive @@ -241,6 +262,30 @@ bool serial_port::serial_open() break; } + /*-----------------------------------------*\ + | Configure size | + \*-----------------------------------------*/ + options.c_cflag &= ~CSIZE; + + switch(size) + { + case SERIAL_PORT_SIZE_8: + options.c_cflag |= CS8; + break; + + case SERIAL_PORT_SIZE_7: + options.c_cflag |= CS7; + break; + + case SERIAL_PORT_SIZE_6: + options.c_cflag |= CS6; + break; + + case SERIAL_PORT_SIZE_5: + options.c_cflag |= CS5; + break; + } + /*-----------------------------------------*\ | Configure stop bits | \*-----------------------------------------*/ @@ -324,6 +369,30 @@ bool serial_port::serial_open() break; } + /*-----------------------------------------*\ + | Configure size | + \*-----------------------------------------*/ + options.c_cflag &= ~CSIZE; + + switch(size) + { + case SERIAL_PORT_SIZE_8: + options.c_cflag |= CS8; + break; + + case SERIAL_PORT_SIZE_7: + options.c_cflag |= CS7; + break; + + case SERIAL_PORT_SIZE_6: + options.c_cflag |= CS6; + break; + + case SERIAL_PORT_SIZE_5: + options.c_cflag |= CS5; + break; + } + /*-----------------------------------------*\ | Configure stop bits | \*-----------------------------------------*/