Linux下串口编程入门-.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Linux下串口编程入门-.pdf》由会员分享,可在线阅读,更多相关《Linux下串口编程入门-.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1/23 IA Division 2007-9-16 Linux 下串口编程入门Linux 下串口编程入门Version 1.00 2/23 IA Division 2007-9-16 Linux 下串口编程入门Revision History Version Date Originator Description 1.00 2007-09-16 YanDong 3/23 IA Division 2007-9-16 Linux 下串口编程入门目录1 串口简介.4 1.1 同步通信.4 1.2 异步通信.4 1.3 什么是 RS-232.5 1.4 计算机串口引脚说明.5 1.5 3 线接法.6
2、 1.6 全双工与半双工.6 1.7 流量控制.6 2 串口访问函数.7 2.1 串口操作需要的头文件.7 2.2 打开串口.7 2.3 设置串口属性.8 2.3.1 波特率设置.8 2.3.2 设置控制模式.9 2.3.4 需要注意的内容.13 2.4 读写串口.13 2.5 关闭串口.13 3 串口读取程序例子.14 附件:又一个串口读写的例子程序.15 4/23 IA Division 2007-9-16 Linux 下串口编程入门1 串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在
3、 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是 数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准 该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于 4%的情况下,传输电缆长度应为 50 英尺。串口通信可以分为同步通信和异步通信两类。同步通信是按照软件识别同步字符来实现数据的发送和接收,异步通信是一种利用字符的再同步技术的通信方式。1.1 同步通信同步通信是一种连续串行传送数据的通信方式,一
4、次通信只传送一帧信息。这里的信息帧与异步通信中的字符帧不同,通常含有若干个数据字符。它们均由同步字符、数据字符和校验字符(CRC)组成。其中同步字符位于帧开头,用于确认数据字符的开始。数据字符在同步字符之后,个数没有限制,由所需传输的数据块长度来决定;校验字符有1 到 2 个,用于接收端对接收到的字符序列进行正确性的校验。同步通信的缺点是要求发送时钟和接收时钟保持严格的同步。1.2 异步通信异步通信中,数据通常以字符或者字节为单位组成字符帧传送。字符帧由发送端逐帧发送,通过传输线被接收设备逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。接收端检测
5、到传输线上发送过来的低电平逻辑0(即字符帧起始位)时,确定发送端已开始发送数据,每当接收端收到字符帧中的停止位时,就知道一帧字符已经发送完毕。在异步通行中有两个比较重要的指标:字符帧格式和波特率。(1)字符帧,由起始位、数据位、奇偶校验位和停止位组成。5/23 IA Division 2007-9-16 Linux 下串口编程入门1.起始位:位于字符帧开头,占1 位,始终为逻辑 0 电平,用于向接收设备表示发送端开始发送一帧信息。2.数据位:紧跟在起始位之后,可以设置为 5 位、6 位、7 位、8位,低位在前高位在后。3.奇偶校验位:位于数据位之后,仅占一位,用于表示串行通信中采用奇校验还是偶
6、校验。(2)波特率,波特率是每秒钟传送二进制数码的位数,单位是b/s。异步通信的优点是不需要传送同步脉冲,字符帧长度也不受到限制。缺点是字符帧中因为包含了起始位和停止位,因此降低了有效数据的传输速率。1.3 什么是 RS-232 RS-232-C接口(又称 EIARS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是 数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准 该标准规定采用一个25 个脚的 DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号
7、的电平加以规定。传输距离在码元畸变小于4%的情况下,传输电缆长度应为50 英尺。1.4 计算机串口引脚说明引出号说明1 接地2 TXD输出3 RXD 输入4 RTS请求发送5 CTS请求接收6 DSR 数据序列就绪7 GND 逻辑地8 DCD 数据负载检测9 保留10 保留11 未定义6/23 IA Division 2007-9-16 Linux 下串口编程入门12 后备 DCD 13 后备 CTS 14 后备 TXD 15 传输时钟16 后备 RXD 17 接收时钟18 未定义19 后备 RTS 20 DTR 数据终端就绪21 信号质量检测22 闹钟检测23 数据速率选择24 传输时钟25
8、 未定义1.5 3线接法A机 B机2-3接收3-2发送5-5地线1.6 全双工与半双工1.全双工,表示机器可以同时发送数据也可以接收数据,有两个独立的数据通道(一个用于发送,一个用于接收)2.半双工,表示机器不能在发送数据的同时也接收数据。1.7 流量控制1)使用软件方法使用特殊的字符来标记数据流的开始和结束,比如XON,DC1,八进制 021 来标志开始,用X0FF,DC3,八进制 023 来标志结束。2)使用硬件方法使用 RS232的 CTS和 RTS信号来代替特殊字符控制。当接收方准备接收更多数据时,设置CTS为 0,反之设置成 1。对应的发送端准备发送数据时,设置RTS为 0。7/23
9、 IA Division 2007-9-16 Linux 下串口编程入门2 串口访问函数2.1 串口操作需要的头文件#include /*标准输入输出定义*/#include /*标准函数库定义*/#include /*Unix 标准函数定义*/#include#include#include /*文件控制定义*/#include /*PPSIX 终端控制定义*/#include /*错误号定义*/2.2 打开串口int fd;/*以读写方式打开串口*/fd=open(/dev/ttyS0,O_RDWR);if(-1=fd)/*不能打开串口一*/perror(提示错误!);ttyS0 是串口
10、1,ttyS1是串口 2,O_RDWR|NOCTTY|O_NDELAY分别表示可读写,非控制终端(防止任意的中断信号(如键盘)影响程序的执行),不关注 DCD 信号线的状态.详细设置如下:O_RDONLY以只读方式打开文件O_WRONLY以只写方式打开文件O_RDWR以读写方式打开文件O_APPEND写入数据时添加到文件末尾O_CREATE 如果文件不存在则产生该文件,使用该标志需要设置访问权限位mode_t O_EXCL 指定该标志,并且指定了O_CREATE 标志,如果打开的文件存在则会产生一个错误O_TRUNC 如果文件存在并且成功以写或者只写方式打开,则清除文件所有内容,使得文8/23
11、 IA Division 2007-9-16 Linux 下串口编程入门件长度变为 0 O_NOCTTY如果打开的是一个终端设备,这个程序不会成为对应这个端口的控制终端,如果没有该标志,任何一个输入,例如键盘中止信号等,都将影响进程。O_NONBLOCK该标志与早期使用的 O_NDELAY 标志作用差不多。程序不关心 DCD 信号线的状态,如果指定该标志,进程将一直在休眠状态,直到DCD 信号线为 0。O_SYNC 对 I/O 进行写等待返回值:成功返回文件描述符,如果失败返回-1 2.3 设置串口属性控制结构为:POSIX终端接口,大多数系统都支持POSIX终端接口,POSIX终端通过一个t
12、ermios 结构来进行控制,该结构定义在termios.h文件中。串口的设置主要是设置 struct termios 结构体的各成员值。struct termio unsigned short c_iflag;/*输入模式标志 */unsigned short c_oflag;/*输出模式标志 */unsigned short c_cflag;/*控制模式标志*/unsigned short c_lflag;/*本地选项标志*/unsigned char c_line;/*line discipline*/unsigned char c_ccNCC;/*控制特性 */;设置这个结构体很复杂,
13、我这里就只说说常见的一些设置:2.3.1 波特率设置下面是修改波特率的代码:struct termios Opt;tcgetattr(fd,&Opt);/*得到当前的串口属性*/cfsetispeed(&Opt,B19200);/*设置为 19200Bps*/cfsetospeed(&Opt,B19200);tcsetattr(fd,TCANOW,&Opt);/*设置新的串口属性*/设置波特率的例子函数:9/23 IA Division 2007-9-16 Linux 下串口编程入门/*brief 设置串口通信速率*param fd 类型 int 打开串口的文件句柄*param speed 类
14、型 int 串口速度*return void*/int speed_arr=B38400,B19200,B9600,B4800,B2400,B1200,B300,B38400,B19200,B9600,B4800,B2400,B1200,B300,;int name_arr=38400,19200,9600,4800,2400,1200,300,38400,19200,9600,4800,2400,1200,300,;void set_speed(int fd,int speed)int i;int status;struct termios Opt;tcgetattr(fd,&Opt);fo
15、r(i=0;i 0)printf(nLen%dn,nread);buffnread+1=0;printf(n%s,buff);close(fd);exit(0);15/23 IA Division 2007-9-16 Linux 下串口编程入门附件:又一个串口读写的例子程序Sample2.h/*串口结构*/typedefstruct charprompt;/*promptafterrecivingdata*/intbaudrate;/*baudrate*/chardatabit;/*databits,5,6,7,8*/chardebug;/*debugmode,0:none,1:debug*/
16、charecho;/*echomode,0:none,1:echo*/charfctl;/*flowcontrol,0:none,1:hardware,2:software*/chartty;/*tty:0,1,2,3,4,5,6,7*/charparity;/*parity0:none,1:odd,2:even*/charstopbit;/*stopbits,1,2*/constintreserved;/*reserved,mustbezero*/portinfo_t;typedefportinfo_t*pportinfo_t;/*打开串口,返回文件描述符*pportinfo:待设置的串口信
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 串口 编程 入门
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内