VTIME定义要求等待的时间量(取值不能大于cc_t)。
VMIN定义了要求等待的最小字节数。
options.c_cc[VTIME] = X; //设置从获取到1个字节后开始计时的超时时间
options.c_cc[VMIN] = Y; //设置要求等待的最小字节数
在原始模式下对read()函数的影响:
1、X=0,Y!=0。函数read()只有在读取了Y个字节的数据或者收到一个信号的时候才返回;
2、X!=0,Y=0。即使没有数据可以读取,read()函数等待X时间量后返回;
3、X!=0,Y!=0。第一个字节数据到时开始,最先满足收到Y个字节或达超时时间X任意一个条件,read()返回;
4、X=0,Y=0。即使读取不到任何数据,函数read也会立即返回。
示例:
通过串口连ID卡读卡器,要求读串口至少收6个字节数据立即返回,可以将串口的上述两个设置项设置如下:
options.c_cc[VTIME]=0;
options.c_cc[VMIN]=6;
本文详细介绍了在原始模式下,VTIME和VMIN如何影响read()函数的行为。VTIME定义了超时时间量,VMIN则规定了所需的最小读取字节数。当VTIME=0,VMIN!=0时,read()会等到接收完整个VMIN字节或接收到信号;VTIME!=0,VMIN=0时,即使无数据,read()也会在指定时间后返回;VTIME!=0,VMIN!=0时,满足字节数或超时条件任一,read()即返回。举例说明,为确保从串口读取至少6个字节数据,可将VTIME设为0,VMIN设为6。
8867

被折叠的 条评论
为什么被折叠?



