《linux软件工程师(C语言)实用教程》第5章

《linux软件工程师(C语言)实用教程》第5章

ID:44772674

大小:429.50 KB

页数:20页

时间:2019-10-28

《linux软件工程师(C语言)实用教程》第5章_第1页
《linux软件工程师(C语言)实用教程》第5章_第2页
《linux软件工程师(C语言)实用教程》第5章_第3页
《linux软件工程师(C语言)实用教程》第5章_第4页
《linux软件工程师(C语言)实用教程》第5章_第5页
资源描述:

《《linux软件工程师(C语言)实用教程》第5章》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第5章串行通信本章重点串行通信编程的流程串行通信端口的设置串行通信中相关函数的应用25.1串行通信概述现在的串行通信端口(RS-232)是计算机上的标准配置。最为常见的应用是连接调制解调器进行数据传输。计算机通常包含COM1和COM2两个串行通信端口。一般计算机的COM端口从外观上看有9个针脚。在Linux中,所有的设备文件都位于“/dev”下,其中COM1、COM2对应的设备名依次为“/dev/ttyS0”、“/dev/ttyS1”。Linux对设备的操作方法和对文件的操作方法相同,因此,对串口的读写就可以使用简单的“read”、“write”函数来完成,所不同的是要对串口的一些参数进

2、行配置。35.2串行通信程序的设计5.2.1串行通信程序设计流程45.2.2打开通讯端口在Linux中把串口设备视为普通文件,可使用open()函数来打开串口设备。例5.1:打开PC的COM1串行通信端口。源程序代码com1open.c思考题:要求以只读的模式打开计算机的COM2。55.2.3设置串口属性在Linux中若要对串口进行操作,如改变其波特率、字符大小等,就是对结构体stucttermios中成员的值进行设置。注意:在这个结构中最为重要的是c_iflag,通过对它的赋值,用户可以设置波特率、字符大小、数据位、停止位、奇偶校验位和硬件控制等。65.2.3设置串口属性c_oflag

3、(输出模式)c_cflag(控制模式)c_lflag(局部模式)c_cc[NCCS](特殊控制字符)思考题:在设置串口属性时,要求奇偶校验。请写出设置串口的语句。75.2.4串口通信程序设计主要语句说明串口通信一般分为接收端和发送端。接收端:打开PC的COM1端口。如果以读写的方式打开COM1端口,语句可写为:fd=open(“/dev/ttyS0”,O_RDWR

4、O_NOCTTY);取得当前串口值,并保存至结构体变量oldtio。tcgetattr(fd,&oldtio);清除结构体变量newtio。bzero(&newtio,sizeof(newtio));85.2.4串口通信程序设

5、计主要语句说明设置串口参数。(1)假定设置波特率为38400,8个数据位,忽略任何调制解调器状态,同时启动接受器。newtio.c_cflag=BAUDRATE

6、CS8

7、CLOCAL

8、CREAD;(2)忽略奇偶校验错误newtio.c_iflag=IGNPAR;(3)设输出模式非标准型,同时不回应。ewtio.c_oflag=0;(4)启用正规模式newtio.c_lflag=ICANON;95.2.4串口通信程序设计主要语句说明清除所有列队在串口的输入输出tcflush(fd,TCIFLUSH);设置当前的串口参数为newtiotcsetattr(fd,TCSANOW,&newtio)

9、;读取缓存中的数据。read(fd,buf,255);关闭串口。close(fd);恢复旧的端口参数tcsetattr(fd,TCSANOW,&oldtio);105.2.4串口通信程序设计主要语句说明发送端:打开PC的COM2端口。fd=open(“/dev/ttyS1”,O_RDWR

10、O_NOCTTY);取得当前串口值,并保存至oldtio。tcgetattr(fd,&oldtio);清除结构体newtio。bzero(&newtio,sizeof(newtio));115.2.4串口通信程序设计主要语句说明设置串口参数。(1)设置波特率为38400,8个数据位,忽略任何调制解调器状

11、态同时启动接受器。newtio.c_cflag=BAUDRATE

12、CS8

13、CLOCAL

14、CREAD;(2)忽略奇偶校验错误newtio.c_iflag=IGNPAR;(3)设输出模式非标准型,同时不回应。ewtio.c_oflag=0;(4)启用正规模式newtio.c_lflag=ICANON;125.2.4串口通信程序设计主要语句说明清除所有列队在串口的输入输出tcflush(fd,TCIFLUSH);设置当前的串口为newtiotcsetattr(fd,TCSANOW,&newtio);向串口写入数据,储存在缓存中。write(fd,s1,1);关闭串口。close(fd);恢复旧

15、的端口参数tcsetattr(fd,TCSANOW,&oldtio);/*恢复旧的端口参数*/135.2.4串口通信程序设计主要语句说明例5.2:通过计算机的COM1和COM2进行通信,利用RS-232来传送信息,其中COM1为发射端,COM2为接收端,当接收端接收到字符‘@’时,结束传输。RS-232的通信格式为38400,n,8,1(38400表示波特率大小,n表示不进行奇偶校验,8表示数据位,1表示停止位)。步骤1:连线计算机

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。