修改串口只能被打开一次和read被阻塞的问题
Change-Id: I7f7b4d142d56155b86f2f596fde968861a201338
diff --git a/mbtk/ql_lib/src/ql_uart.c b/mbtk/ql_lib/src/ql_uart.c
index ee9ce4c..ca6f779 100755
--- a/mbtk/ql_lib/src/ql_uart.c
+++ b/mbtk/ql_lib/src/ql_uart.c
@@ -31,7 +31,7 @@
}
newtio.c_cc[VTIME] = 0; /* inter-character timer unused */
- newtio.c_cc[VMIN] = 1; /* blocking read until 5 chars received */
+ newtio.c_cc[VMIN] = 0; /* blocking read until 5 chars received */
if(flowctrl == FC_RTSCTS) {
newtio.c_cflag |= CRTSCTS;
@@ -40,11 +40,25 @@
} else {
// newtio.c_cflag |= CRTSCTS;
}
- newtio.c_iflag = IGNPAR;
- newtio.c_oflag = 0;
- newtio.c_lflag = 0;
+ /* c_iflag 输入模式 */
+ newtio.c_iflag &= ~(ICRNL | INLCR);
+ newtio.c_iflag &= ~(IXON | IXOFF | IXANY);
- tcflush(fd, TCIFLUSH);
+ // /* c_lflag 本地模式 */
+ newtio.c_cflag &= ~ INPCK;
+ newtio.c_cflag |= (CLOCAL | CREAD);
+
+ // /* c_lflag 本地模式 */
+ newtio.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
+ /* c_oflag 输出模式 */
+ newtio.c_oflag &= ~ OPOST;
+ newtio.c_oflag &= ~(ONLCR | OCRNL);
+
+ /* c_cflag 控制模式 */
+ newtio.c_cflag &= ~ CSIZE;
+ newtio.c_cflag |= CS8;
+ newtio.c_cflag &= ~ CSTOPB;
+ newtio.c_cflag &= ~ PARENB;
switch(baudrate)
{