Linux串口编程(1)
2015-05-22 00:00
274 查看
串行通信是利用一条传输线以比特为单位顺序传送。特点是通信线路简单,一般电缆就可以实现串口通信,适合于长距离且速度较慢的数据通信。
串口是计算机上比较常见的接口,一般为RS—232—C接口。
串口的配置参数一般包括波特率,起始位比特数,数据位比特数,停止位比特数和流控模式。
串口的设置主要是设置结构体termios的各成员值。
#include <termios.h>
struct termios
{
tcflag_t c_iflag; /* input mode flags 输入模式标志*/
tcflag_t c_oflag; /* output mode flags 输出模式标志*/
tcflag_t c_cflag; /* control mode flags 控制模式标志*/
tcflag_t c_lflag; /* local mode flags 本地模式标志*/
cc_t c_line; /* line discipline * 线路规程/
cc_t c_cc[NCCS]; /* control characters 控制特征*/
speed_t c_ispeed; /* input speed * 输入速度/
speed_t c_ospeed; /* output speed * 输出速度/
};
termios是在POSIX规范中定义的标准接口,表示终端设备。
终端有三种工作方式,为规范模式(canonical mode),非规范模式(non-canonical mode)和原始模式(raw mode)。通过设置termios的c_iflag中设置ICANNON标志来定义终端是以规范模式还是非规范模式,默认是规范模式。
在规范模式下,所有的输入是基于行进行处理的,非规范模式下,输入是即时有效的。
在非规范模式下,对c_cc[NCCS]的设置决定了输入时read()函数的调用方式。区别如下:
c_cc[VMIN]相当于缓冲区,c_cc[VTIME]相当于等待时间,它们有4中组合,分别为立即读取,阻塞读c_cc[VMIN]个数据,只要有数据或等待c_cc[VTIME]个十分之一秒时间和有c_cc[VMIN]个数据或等待c_cc[VTIME]个十分之一秒时间。
串口是计算机上比较常见的接口,一般为RS—232—C接口。
串口的配置参数一般包括波特率,起始位比特数,数据位比特数,停止位比特数和流控模式。
串口的设置主要是设置结构体termios的各成员值。
#include <termios.h>
struct termios
{
tcflag_t c_iflag; /* input mode flags 输入模式标志*/
tcflag_t c_oflag; /* output mode flags 输出模式标志*/
tcflag_t c_cflag; /* control mode flags 控制模式标志*/
tcflag_t c_lflag; /* local mode flags 本地模式标志*/
cc_t c_line; /* line discipline * 线路规程/
cc_t c_cc[NCCS]; /* control characters 控制特征*/
speed_t c_ispeed; /* input speed * 输入速度/
speed_t c_ospeed; /* output speed * 输出速度/
};
termios是在POSIX规范中定义的标准接口,表示终端设备。
终端有三种工作方式,为规范模式(canonical mode),非规范模式(non-canonical mode)和原始模式(raw mode)。通过设置termios的c_iflag中设置ICANNON标志来定义终端是以规范模式还是非规范模式,默认是规范模式。
在规范模式下,所有的输入是基于行进行处理的,非规范模式下,输入是即时有效的。
在非规范模式下,对c_cc[NCCS]的设置决定了输入时read()函数的调用方式。区别如下:
c_cc[VMIN]相当于缓冲区,c_cc[VTIME]相当于等待时间,它们有4中组合,分别为立即读取,阻塞读c_cc[VMIN]个数据,只要有数据或等待c_cc[VTIME]个十分之一秒时间和有c_cc[VMIN]个数据或等待c_cc[VTIME]个十分之一秒时间。