linux 串口阻塞与非阻塞参数设置
来源:互联网 发布:做好淘宝网的免费流量 编辑:程序博客网 时间:2024/05/02 06:10
在串口设置中,有以下两个参数可以决定是否阻塞。
在打开串口时不加O_NODELAY,可用下面的第二种方法,来进行阻塞/非阻塞的设定
关键代码
通过上面的设置,如果在 len=read(fd, tmp,124);
c_cc[VMIN],就像一个阀值一样,比如设为8,如果只接收到3个数据,那么它是不会返回的,只有凑齐8个数据后一齐才READ返回,阻塞在那儿了.
如果这样设置,就完全阻塞了,只有串口收到至少8个数据才会对READ立即返回,或才少于8个数据时,超时3秒也会有返回
再来说下
O_NONBLOCK和O_NDELAY所产生的结果都是使I/O变成非搁置模式(non-blocking),在读取不到数据或是写入缓冲区已满会马上return,而不会搁置程序动作,直到有数据或写入完成。
它们的差别在于设立O_NDELAY会使I/O函式马上回传0,但是又衍生出一个问题,因为读取到档案结尾时所回传的也是0,这样无法得知是哪中情况;因此,O_NONBLOCK就产生出来,它在读取不到数据时会回传-1,并且设置errno为EAGAIN。
不过需要注意的是,在GNU C中O_NDELAY只是为了与BSD的程序兼容,实际上是使用O_NONBLOCK作为宏定义,而且O_NONBLOCK除了在ioctl中使用,还可以在open时设定。
- linux 串口阻塞与非阻塞参数设置
- linux 串口阻塞与非阻塞参数设置
- linux 串口阻塞与非阻塞参数设置
- linux 串口阻塞和非阻塞
- linux串口编程--规范模式和非规范模式及read的阻塞与非阻塞
- linux驱动的阻塞与非阻塞
- Linux Driver中阻塞与非阻塞
- Linux驱动之阻塞与非阻塞
- 嵌入式linux:阻塞与非阻塞驱动
- 阻塞与非阻塞
- 阻塞与非阻塞
- 阻塞与非阻塞
- 阻塞 与 非阻塞
- 阻塞与非阻塞
- 阻塞 与 非阻塞
- 阻塞与非阻塞
- 阻塞与非阻塞
- 阻塞与非阻塞
- JavaScript-运算符
- 浓缩的精华!从零开始带你认识最新的图片格式WEBP
- jQuery效果(三)——滑动
- 解决Spring MVC @ResponseBody返回中文字符串乱码问题
- Windows 64位系统安装Apache2.4+PHP5.5+MySQL5.6
- linux 串口阻塞与非阻塞参数设置
- C语言基础 ASCII转换成二进制存入数组中
- modelsim学习4——ise和modelsim联合仿真
- 【专题总结】二分查找(持续更新)
- 使用Java调用以WSDL形式发布的web service
- 花椒,映客这种直播app怎么做
- SCU2016-05 J题构造
- PHP5免安装版配置
- SSH应用总结--接口