串口设置MIN和TIME
来源:互联网 发布:淘宝升级 编辑:程序博客网 时间:2024/06/07 07:24
作为数据读取分析的基本,嵌入式linux的串口编程就是基础中的基础了,串口的设置主要是设置struct termios结构体的各成员值。termios是在POSIX规范中定义的标准接口,表示终端设备(包括虚拟终端、串口等)。口是一种终端设备,一般通过终端编程接口对其进行配置和控制。在具体讲解串口相关编程之前,先了解一下终端相关知识。
终端有3种工作模式,分别为规范模式(canonical mode)、非规范模式(non-canonical mode)和原始模式(raw mode)。通过在termios结构的c_lflag中设置ICANNON标志来定义终端是以规范模式(设置ICANNON标志)还是以非规范模式(清除ICANNON标志)工作,默认情况为规范模式。
在规范模式下,所有的输入是基于行进行处理。在用户输入一个行结束符(回车符、EOF等)之前,系统调用read()函数读不到用户输入的任何字符。除了EOF之外的行结束符(回车符等)与普通字符一样会被read()函数读取到缓冲区之中。在规范模式中,行编辑是可行的,而且一次调用read()函数最多只能读取一行数据。如果在read()函数中被请求读取的数据字节数小于当前行可读取的字节数,则read()函数只会读取被请求的字节数,剩下的字节下次再被读取。
在非规范模式下,所有的输入是即时有效的,不需要用户另外输入行结束符,而且不可进行行编辑。在非规范模式下,对参数MIN(c_cc[VMIN])和TIME(c_cc[VTIME])的设置决定read()函数的调用方式。设置可以有4种不同的情况。
- MIN = 0和TIME = 0:read()函数立即返回。若有可读数据,则读取数据并返回被读取的字节数,否则读取失败并返回0。
- MIN > 0和TIME = 0:read()函数会被阻塞直到MIN个字节数据可被读取。
- MIN = 0和TIME > 0:只要有数据可读或者经过TIME个十分之一秒的时间,read()函数则立即返回,返回值为被读取的字节数。如果超时并且未读到数据,则read()函数返回0。
- MIN > 0和TIME > 0:当有MIN个字节可读或者两个输入字符之间的时间间隔超过TIME个十分之一秒时,read()函数才返回。因为在输入第一个字符之后系统才会启动定时器,所以在这种情况下,read()函数至少读取一个字节之后才返回。
按照严格意义来讲,原始模式是一种特殊的非规范模式。在原始模式下,所有的输入数据以字节为单位被处理。在这个模式下,终端是不可回显的,而且所有特定的终端输入/输出控制处理不可用。通过调用cfmakeraw()函数可以将终端设置为原始模式,而且该函数通过以下代码可以得到实现。
- 串口设置MIN和TIME
- OSX: 设置Time Server和Time Zone的script
- Min-Min算法和Max-Min算法
- Min-Min算法和Max-Min算法
- Min-Min算法和Max-Min算法
- Redboot中设置CLI串口和DEBUG串口
- VMware虚拟串口的设置和使用
- VMware虚拟串口的设置和使用
- VMware虚拟串口的设置和使用
- 串口设置
- 串口设置
- 串口设置
- username,Min(time),MIn(age),min(money) 带不出最早时间那条记录
- Session 的 Time out 和有效设置 Session 时间限制
- min-height和min-width的用法
- 学习笔记:min-width和min-height
- min和max函数
- 处理 min 和 max
- java数组之排序 v_1.0.0
- 代码控制 ViewPager 和 TabLayout 滑动.
- BZOJ 1500: [NOI2005]维修数列 splay
- 老妈套路深
- Android 屏幕适配:最全面的解决方案
- 串口设置MIN和TIME
- Android 各API版本代码常量
- [Intellij idea配置外部DTD文件]
- 关于网站建设目录的设置
- Ubuntu下安装cuda
- 参数
- 为什么少用Ifreame标签
- 被静态修饰的成员
- 【webpack】【Beatbox才艺】【自我提升】【iOS Patch】【Spring Boot】| Chat · 预告