您的位置:首页 > 运维架构 > Linux

linux串口超时时间设置

2017-07-22 16:40 671 查看
comport[port].opt.c_cc[VTIME] = 0;

comport[port].opt.c_cc[VMIN] = 0;

那么可能需要关注的是VMIN和VTIME这两个选项。

VMIN 最少读取字符数

VTIME 超时时间 (100ms最小单位)

这两个参数只有当设置为阻塞模式时才有效,有以下几种可能值:

1 VMIN> 0 && VTIME> 0

VMIN为最少读取的字符数,当读取到一个字符后,会启动一个定时器,在定时器超时事前,如果已经读取到了VMIN个字符,则read返回VMIN个字符。如果在接收到VMIN个字符之前,定时器已经超时,则read返回已读取到的字符,注意这个定时器会在每次读取到一个字符后重新启用,即重新开始计时,而且是读取到第一个字节后才启用,也就是说超时的情况下,至少读取到一个字节数据。

2 VMIN > 0 && VTIME== 0

在只有读取到VMIN个字符时,read才返回,可能造成read被永久阻塞。

3 VMIN == 0 && VTIME> 0

和第一种情况稍有不同,在接收到一个字节时或者定时器超时时,read返回。如果是超时这种情况,read返回值是0。

4 VMIN == 0 && VTIME== 0

这种情况下read总是立即就返回,即不会被阻塞。

from:http://blog.csdn.net/pengrui18/article/details/54929731
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: