文件I/O编程之: 嵌入式Linux串口应用编程
IUCLC | 将接收到的大写字符映射为小写字符 |
IMAXBEL | 当输入队列满时响铃 |
c_oflag用于控制终端端口发送出去的字符处理,c_oflag支持的常量名称如表6.12所示。因为现在终端的速度比以前快得多,所以大部分延时掩码几乎没什么用途。
表6.13 c_oflag支持的常量名称
OPOST | 启用输出处理功能,如果不设置该标志,则其他标志都被忽略 |
OLCUC | 将输出中的大写字符转换成小写字符 |
ONLCR | 将输出中的换行符(‘\n’)转换成回车符(‘\r’) |
ONOCR | 如果当前列号为0,则不输出回车符 |
OCRNL | 将输出中的回车符(‘\r’)转换成换行符(‘\n’) |
ONLRET | 不输出回车符 |
OFILL | 发送填充字符以提供延时 |
OFDEL | 如果设置该标志,则表示填充字符为DEL字符,否则为NUL字符 |
NLDLY | 换行延时掩码 |
CRDLY | 回车延时掩码 |
TABDLY | 制表符延时掩码 |
BSDLY | 水平退格符延时掩码 |
VTDLY | 垂直退格符延时掩码 |
FFLDY | 换页符延时掩码 |
c_lflag用于控制控制终端的本地数据处理和工作模式,c_lflag所支持的常量名称如表6.14所示。
表6.14 c_lflag支持的常量名称
ISIG | 若收到信号字符(INTR、QUIT等),则会产生相应的信号 |
ICANON | 启用规范模式 |
ECHO | 启用本地回显功能 |
ECHOE | 若设置ICANON,则允许退格操作 |
ECHOK | 若设置ICANON,则KILL字符会删除当前行 |
ECHONL | 若设置ICANON,则允许回显换行符 |
ECHOCTL | 若设置ECHO,则控制字符(制表符、换行符等)会显示成"^X",其中X的ASCII码等于给相应控制字符的ASCII码加上0x40。例如:退格字符(0x08)会显示为"^H"(’H’的ASCII码为0x48) |
ECHOPRT | 若设置ICANON和IECHO,则删除字符(退格符等)和被删除的字符都会被显示 |
ECHOKE | 若设置ICANON,则允许回显在ECHOE和ECHOPRT中设定的KILL字符 |
NOFLSH | 在通常情况下,当接收到INTR、QUIT和SUSP控制字符时,会清空输入和输出队列。如果设置该标志,则所有的队列不会被清空 |
TOSTOP | 若一个后台进程试图向它的控制终端进行写操作,则系统向该后台进程的进程组发送SIGTTOU信号。该信号通常终止进程的执行 |
IEXTEN | 启用输入处理功能 |
c_cc定义特殊控制特性。c_cc所支持的常量名称如表6.13所示。
表6.13 c_cc支持的常量名称
VINTR | 中断控制字符,对应键为CTRL+C |
VQUIT | 退出操作符,对应键为CRTL+Z |
VERASE | 删除操作符,对应键为Backspace(BS) |
VKILL | 删除行符,对应键为CTRL+U |
VEOF | 文件结尾符,对应键为CTRL+D |
VEOL | 附加行结尾符,对应键为Carriage return(CR) |
VEOL2 | 第二行结尾符,对应键为Line feed(LF) |
VMIN | 指定最少读取的字符数 |
VTIME | 指定读取的每个字符之间的超时时间 |
下面就详细讲解设置串口属性的基本流程。
1.保存原先串口配置
首先,为了安全起见和以后调试程序方便,可以先保存原先串口的配置,在这里可以使用函数tcgetattr(fd, &old_cfg)。该函数得到fd指向的终端的配置参数,并将它们保存于termios结构变量old_cfg中。该函数还可以测试配置是否正确、该
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE下驱动程序开发基础(二)(11-09)
- VXWORKS内核分析(11-11)
- REDIce-Linux--灵活的实时Linux内核(11-12)
- Linux2.4内核为我们带来了什么?(11-12)