修改串口只能被打开一次和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)
     {