几个要点:
1: /*无奇偶校验位*/
case 0:
uart_attr->c_cflag &= ~PARENB;//PARENB:产生奇偶位,执行奇偶校验
//uart_attr->c_cflag &= ~INPCK;//INPCK:使奇偶校验起作用,此处不可写此剧,否则会乱码,所以在开发的时候,如果在此处写上了此剧,要将其注释掉即可
break;
:2: options.c_cc[VMIN] = 1;//堵塞的读,对于read(fd,buf,len),当fd接收到的字节数 >= len时,才会激活read函数。
options.c_cc[VMIN] = 0;//不阻塞的读取字符,相应的read函数的返回值是 0 或读取到的字节数
3: options.c_cc[VTIME] = 100;//设置read函数(在空闲时)的超时时间。当此项设置非0时,无论options.c_cc[VMIN]如何设置,只要fd缓冲区的字节数 小于 len时(此时算作read的空闲时间),read函数就会阻塞,直到超时时间到。fd的缓冲区字节数 >= len 是。read 会立即激活。
4:建议设置:options.c_cc[VTIME] = 0;
options.c_cc[VMIN] = 0;
uart_attr->c_cflag &= ~PARENB;