串口属性设置.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

gaozhigang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档