您的位置:首页 > 其它

设置串口通信参数

2009-04-02 15:42 253 查看
6.7.2 设置串口通信参数

串口通信参数指的是波特率、数据位、奇偶校验位和停止位。对串口实现控制的时候同样要用到termio结构体。下面将结合具体的代码说明如何设置这些参数。

1.波特率设置

……



2.数据位
数据位指的是每字节中实际数据所占的比特数。要修改数据位可以通过修改termios结构体中c_cflag成员来实现。CS5、CS6、CS7和CS8分别表示数据位为5、6、7和8。值得注意的是,在设置数据位时,必须先使用CSIZE做位屏蔽。具体设置代码如下:

#include     //头文件定义
#include
#include < termios.h >
……
struct termios opt;           /*定义指向termios 结构类型的指针opt*/
.......
//获得串口指向termios结构的指针
tcgetattr(fd, &Opt);
…
//屏蔽其他标志
Opt.c_cflag&=~CSIZE;
//将数据位修改为8bit
Opt.c_cflag |=CS8;
…

//将修改后的termios数据设置到串口中
tcsetattr(fd,TCANOW,&Opt);
……

3.奇偶校验位

奇偶校验可以选择偶校验、奇校验、空格等方式,也可以不使用校验。如果要设置为偶校验的话,首先要将termios结构体中c_cflag设置
PARENB标志,并清除PARODD标志。如果要设置奇校验,要同时设置termios结构体中c_cflag设置PARENB标志和PARODD标
志。如果不想使用任何校验的话,清除termios结构体中c_cflag的PARENB位。表6.12所示为设置奇偶校验的具体方法。

表6.12 设置奇偶校验位

设 置
具 体 代 码
无校验
opt.c_cflag &= ~PARENB;
奇校验
opt.c_cflag |= (PARODD | PARENB);
偶校验
opt.c_cflag &= ~ PARENB;
opt.c_cflag &= ~PARODD;
空格
opt.c_cflag &= ~PARENB;
opt.c_cflag &= ~CSTOPB;
下面给出将串口通信的奇偶校验设置为偶校验的例子,具体代码如下:

#include     //头文件定义
#include
#include < termios.h >
……
struct termios opt;           /*定义指向termios 结构类型的指针opt*/
……
//获得串口指向termios结构的指针
tcgetattr(fd, &Opt);
…
opt.c_cflag &= ~ PARENB;
opt.c_cflag &= ~PARODD;
…

//将修改后的termios数据设置到串口中
tcsetattr(fd,TCANOW,&Opt);
……

4.数据流控制

数据流控制指是使用何种方法来标志数据传输的开始和结束。可以选择不使用数据流控制、使用硬件进行流控制和使用软件进行流控制。数据流控制设置如表6.13所示。

表6.13 数据流控制设置

设 置
具 体 代 码
不使用数据流控制
opt.c_cflag &= ~CRTSCTS
硬件
opt.c_cflag |= CRTSCTS
软件
opt.c_cflag | = IXON|IXOFF|IXANY
由于使用硬件流控制需要相应连接的电缆,常用的流控制方法还是使用软件进行流控制。下面给出了设置不使用数据流控制的相关代码:

#include     //头文件定义
#include
#include < termios.h >
……
struct termios opt;           /*定义指向termios 结构类型的指针opt*/
……
//获得串口指向termios结构的指针
tcgetattr(fd, &opt);
…
opt.c_cflag &= ~CRTSCTS…

//将修改后的termios数据设置到串口中

tcsetattr(fd,TCANOW,&Opt);

……

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: