- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
属性描述
串口属于终端设备,其接口属性用termios结构描述,如程序清单13.9所示。
程序清单13.9termios结构
structtermios{
tcflag_tc_cflag/*控制标志*/
tcflag_tc_iflag;/*输入标志*/
tcflag_tc_oflag;/*输出标志*/
tcflag_tc_lflag;/*本地标志*/
tcflag_tc_cc[NCCS];/*控制字符*/
};
粗略而言,控制标志影响到RS-232串行线(如:忽略调制解调器的状态线、每个字符需要一个或两个停止位等),输入标志由终端设备驱动程序用来控制字符的输入(如:剥除输入字节的第8位,允许输入奇偶校验等),输出控制则控制驱动程序输出(如:执行输出处理、将换行符映射为CR/LF等),本地标志影响驱动程序和用户之间的接口(如:本地回显的开和关等),c_cc数组则包含了所有可以更改的特殊字符。
(1)控制标志
c_cflag成员控制着波特率、数据位、奇偶校验、停止位以及流控制,表13.4列出了c_cflag可用的部分选项。
表13.4c_cflag部分可用选项
标志
说明
标志
说明
CBAUD
波特率位屏蔽
CSIZE
数据位屏蔽
B0
0位/秒(挂起)
CS5
5位数据位
B110
100位/秒
CS6
6位数据位
B134
134位/秒
CS7
7位数据位
B1200
1200位/秒
CS8
8位数据位
B2400
2400位/秒
CSTOPB
2位停止位,否则为1位
B4800
4800位/秒
CREAD
启动接收
B9600
9600位/秒
PARENB
进行奇偶校验
B19200
19200位/秒
PARODD
奇校验,否则为偶校验
B57600
57600位/秒
HUPCL
最后关闭时断开
B115200
115200位/秒
CLOCAL
忽略调制调解器状态行
B460800
460800位/秒
—
—
c_cflag成员的CREAD和CLOCAL选项通常是要启用的,这两个选项使驱动程序启动接收字符装置,同时忽略串口信号线的状态。
(2)输入标志
c_iflag成员负责控制串口输入数据的处理,表13.5所示是c_iflag的部分可用标志。
表13.5c_iflag标志
.标志
说明
INPCK
打开输入奇偶校验
IGNPAR
忽略奇偶错字符
PARMRK
标记奇偶错
ISTRIP
剥除字符第8位
IXON
启用/停止输出控制流起作用
IXOFF
启用/停止输入控制流起作用
IGNBRK
忽略BREAK条件
INLCR
将输入的NL转换为CR
IGNCR
忽略CR
ICRNL
将输入的CR转换为NL
设置输入校验
当c_cflag成员的PARENB(奇偶校验)选项启用时,c_iflag的也应启用奇偶校验选项。操作方法是启用INPCK和ISTRIP选项:
options.c_iflag|=(INPCK|ISTRIP);
注意:IGNPAR选项在一些场合的应用带有一定的危险性,它指示串口驱动程序忽略奇偶校验错误,也就是说,IGNPAR使奇偶校验出错的字符也通过输入。这在测试通信链路的质量时也许有用,但在通常的数据通信应用中不应使用。
设置软件流控制
使用软件流控制是启用IXON、IXOFF和IXANY选项:
options.c_iflag|=(IXON|IXOFF|IXANY);
相反,要禁用软件流控制是禁止上面的选项:
options.c_iflag&=~(IXON|IXOFF|IXANY);
输出标志
c_oflag成员管理输出过滤,如表13.6所示是c_oflag成员的部分选项标志。
表13.6c_oflag标志
标志
说明
BSDLY
退格延迟屏蔽
CMSPAR
标志或空奇偶性
CRDLY
CR延迟屏蔽
FFDLY
换页延迟屏蔽
OCRNL
将输出的CR转换为NL
OFDEL
填充符为DEL,否则为NULL
OFILL
对于延迟使用填充符
OLCUC
将输出的小写字符转换为大写字符
ONLCR
将NL转换为CR-NL
ONLRET
NL执行CR功能
ONOCR
在0列不输出CR
OPOST
执行输出处理
OXTABS
将制表符扩充为空格
启用输出处理
启用输出处理需要在c_oflag成员中启用OPOST选项,其操作方法如下:
options.c_oflag|=OPOST;
使用原始输出
使用原始输出,就是禁用输出处理,使数据能不经过处理、过滤地完整地输出到串口接口。当OPOST被禁止,c_oflag其它选项也被忽略,其操作方法如下:
options.c_oflag&=~OPOST;
本地标志
本地标志c_lflag控制
文档评论(0)