1 / 14
文档名称:

linux下串口编程简单实例.doc

格式:doc   大小:181KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux下串口编程简单实例.doc

上传人:小辰GG 2021/10/25 文件大小:181 KB

下载得到文件列表

linux下串口编程简单实例.doc

相关文档

文档介绍

文档介绍:lirnix卜串口编程简单实例
1、 lrnux 'P的串I I设备文件存放丁・/dev目录下,英中串II 一,串II二对应设备名依次为"/dev/ttySO^.
“/dev/ttyS 1 ”。在linux b'操作串丨I与操作文件相同。
2、 在使用串IIZ前必须设置相关配置,包括:波特率、数据位、校验位、停止位等。串1丨设置由卜面结
构体实现:
de>stnicttemnos{
tcflag_t c_iflag;
tcflag_t c_oflag;
tcflagj c_cflag;
tcflag_t c」flag;
*mput flags*/ /♦output flags*/ /♦control flags*/ /♦local flags*/
cc_t c_cc[NCCS];
/*contiol characters ♦/
};de>
该结构屮c_cflag最为重要,可设盘波特率、数据位、校脸位、停止位。在设遏波特率时需在数字前加上 ®
如B9600. B19200o便用其需通过“与”“或”操作方式。
常用的串II控制函数:
Tcgetatti*
取属性(teiinios结构)
Tcsetattr
设'虽屈性(termios结构)
cfgetispeed Cfgetospeed Cfsetispeed Cfsetospeed
得到输入速度
得到输出速度
设置输入速度
设置输出速度
tcflusli 刷清未决输入和/或输出

⑴保存原先吊I I配置使用tcgetattr(fd,&oldtio)函数: stiuct teiuuos newlio^oldtio;
tcgetatti(fd,&oldtio);
⑵激活选项仃CLOCAL和CREAD,用「本地连接和接收使能。 = CLOCAL | CREAD;
⑶,使用函数cfsetispeed、cfsetospeed cfsetispeed(&加wtio, Bl 15200);
cfsetospeed(&«e\xtio, Bl 15200);
(4)设迓数据位,盂使用掩码役置。
&= YSIZE;
newtio c cflag |= CS8;
⑸12宣奇偶校验位,使用c_cflag和c_iflag。
设置奇校验:
newtio. c cflag [= PARENB;
cflag |= PARODD;
newtio. c iflag |= (INPCK ISTRIP);
设置偶校验:
newtio. c_iflag |= (INPCK ISTRIP);
newtio. c_c flag = PARENB;
newtio. c_c flag &=〜PARODD;
设置停止位,通过激活c_cflag »|«的CSTOPB实现。若停止位为1,则消除CSTOPB,若停止位为2,则 激活 CSTOPBo
newtio. c_c flag &=〜CSTOPB
设置最少字符和等待时间,对于接收字符和等待时间没有特别要求时,可设为0。
newtio c_cc[\TIME] = 0;
[\*MIN] = 0;
处理要写入的引用对彖
tcflush 数刷清(抛弃)输入缓存()或输出缓存(用户程序 己经写,但尚未发送)。
int tcflush(mt filedes, mt queue)
queue数应肖是F列三个常数Z—:
? TCIFLUSH刷淸输入队列。
? TCOFLUSH刷消输出队列。
? TCIOFLUSH刷清输入、输出队列。
如:tcflush(fd,TCIFLUSH),
激活配習。在完成配置后,需激活配置使其牛效。使用tsettattrO隨数。原型:
mt tcgetattr(int filedes, stnict temnos * tennpti);
int tcsetattr(iiit filedes, mt opt, const struct tennios * tennptr);
tcsetattr的参数opt使我们町以指定在什么时候新的终端属性才起作用。opt町以指定为卜列常数屮的一个:
? TCSANOW更改立即发生。
? TCSADRAIN发送了所仃输出后更改才发生。若更改输出参数则应使用此选择项。
? TCSAFLUSH发送了所仃输出后更改才发生。更进-步,在更改发生时未读的所仃输入数据都被删除(刷 消)
使用如:tcsetattr(fd,TCSANOW,&ne