ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:150.56KB ,
资源ID:6048574      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6048574.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Linux下串口和Socket通讯及应用.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Linux下串口和Socket通讯及应用.docx

1、Linux下串口和Socket通讯及应用XXXX学校实习报告书 专 业 计算机科学与技术 系 别 信息工程系 报告题目 Linux下串口和Socket通讯及应用 报告人 班 级 指导教师 带队教师 实习时间2011.7.4-2011.7.18 实习单位 教务处监制目 录1、实习题目 32、实习目的 33、实习内容 44、实习步骤 54.1系统需求分析 54.1.1 问题定义 54.1.2 可行性研究 54.1.3 需求分析 54.1.4 项目开发计划 64.2 系统设计 64.2.1 系统架构 64.2.2 结构设计 74.2.2.1 上层结构设计 74.2.2.2 中层结构设计 94.2.2

2、.3 物理层结构设计 94.2.3功能模块设计 104.3 系统实现 124.3.1 系统硬件环境 124.3.2 系统软件环境 124.3.3 开发工具 124.3.4 系统功能模块设计与实现 134.3.4.1 界面 134.3.4.2 其他功能 144.4 关键技术 144.5系统测试 154.6系统部署 175、实习参考资料 171、实习题目 Linux下串口和Socket通信及其应用串口通信(Serial Communication),串口按位(bit)发送和接收字节。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。 串口通信是指外设和计算机间,通过数据信号线 、地线、控制线

3、等,按位进行传输数据的一种通讯方式。套接口(Socket)通信为目前Linux上最为广泛使用的一种的进程间通信机制,与其他的Linux通信机制不同之处在于除了它可用于单机内的进程间通信以外,还可用于不同机器之间的进程间通信。简单应用设计为温度仪协议转换软件设计和模拟打印机。对于温度仪协议转换软件一共有三个设备,Server端为PC机,Client端为Linux机(或嵌入式系统机),末端为串口的温度仪。温度仪协议转换软件位于Client端的Linux机(或嵌入式系统机)上,该软件不断通过串口轮询温度仪数据,获得温度仪的数据后主动通过Socket发送到远程的PC机上,PC机上安装数据演示软件,显示

4、温度仪的数据。2、实习目的综合运用软件工程、操作系统、数据库原理、嵌入式系统基础、数据结构等课程基础理论知识,逐步完成一个串口和Socket通信及其简单应用的设计与开发工作。使学生:熟悉串口通讯和Socket通信应用程序开发的基本流程; 掌握串口通讯和Socket通信应用程序常用的设计方式; 熟练掌握软件需求分析方法和需求建模工具;熟练掌握嵌入式系统的分析和设计技术;熟练掌握Linux下C语言的基本语法和高级特性; 熟练掌握Linux下的相关开发技术。3、实习内容序号实习任务主要内容学时1需求分析根据项目需求,描述模型2系统分析分析系统,建立模型。3系统设计系统架构结构设计功能设计串口通讯设计

5、、Socket通讯设计,演示软件设计4系统实现硬件环境实现软件环境实现功能实现5系统测试单元测试设计测试用例,对单个类及类的方法进行测试。功能测试设计测试用例,对系统关键功能进行测试。性能测试使用测试工具,对系统进行性能测试。6系统部署描述具体部署过程7整理实习报告根据自己完成的情况,整理实习报告4、实习步骤4.1系统需求分析4.1.1 问题定义串口通讯,双机用串口线连接,互相收发数据。Socket通讯,远程的两台计算机通过网线互连,Server端和Client端互相收发数据。简单应用设计为温度仪协议转换软件。对于温度仪协议转换软件,一共有三个设备,Server端为PC机,Client端为Li

6、nux机(或嵌入式系统机),末端为串口的温度仪。温度仪协议转换软件位于Client端的Linux机(或嵌入式系统机)上,该软件不断通过串口轮询温度仪数据,获得温度仪的数据后主动通过Socket发送到Server端的PC机上,PC机上安装数据演示软件,显示温度仪的数据。4.1.2 可行性研究 对于串口温度仪,类似的设备很多,比如串口的液位仪、打印机等,这些设备都有相应的通讯协议,通过协议就可以完成相应的数据的采集。对于串行口的应用有很多,例如,它可以连接鼠标、MODEM、串口温度仪、打印机,验钞机等等。为了确保数据的正确性,在接收过程中可以在检测异步传输的起始信号处加上一些防干扰处理,在接收每个

7、数据加校验数据。4.1.3 需求分析 串口通信是一种按位进行传输数据的一种通讯方式,这种通讯方式使用的数据线少,在远距离通信中可以节约通信成本。将双机用串口连接,叫串口通信,互相收发数据。对于那些与计算机相距不远的人机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘、验钞机等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,这样简捷,方便,快速。 本次生产实习中,用串口线将两台计算机相连,其中一台计算机运行温度模拟仪,另一台运行温度协议转换程序。通过串口进行命令的发送以及温度数据的读取。 Socket通信是通过TCP/IP协议栈进行传输

8、数据的一种通讯方式,可以实现Server端和Client端的远程通讯,这种通讯方式在社会中应用广泛,成本低,可以实现全球内的远距离通讯。 本次生产实习中,通过以太网连接两台计算机,其中一台上运行client,即温度协议转换程序,另一台运行server演示软件。演示软件显示client 发来的温度数据,并发送命令给client端。4.1.4 项目开发计划总体上分两个部分,即PC机和Linux虚拟机。PC机:PC机上运行温度模拟仪以及服务端演示软件。服务端演示软件需要显示客户端发来的温度数据,发送取状态命令,设置频率。Linux虚拟机:在虚拟机下运行温度协议转换程序。实现功能:向串口发送命令,读取

9、串口数据,数据格式转换,发送数据到服务端,处理服务端发送的命令。然后分别完成各个功能函数,再把每个部分的所有的函数集中起来编译连接进行调试,并进行整体测试,最后对两个部分进行联合测试。4.2 系统设计4.2.1 系统架构1、温度协议转换软件:图 4-1 温度协议转换Socket:远程PC机的IP地址及程序所使用的端口号串口:通过串口线连接两台计算机(连接温度仪和嵌入式系统机)2、演示软件: 在一台计算机上运行演示软件,通过以太网连接,接受来自client端(运行温度协议转换软程序的嵌入式系统机)的数据,并向其发送命令。4.2.2 结构设计 一、协议串口通信程序采用分层结构,即将程序按层次分为物

10、理层、驱动层、应用层。分层设计有以下优点:(1)与主机通信的串口程序支持接收和发送并发处理(主动发送和被动查询设备并存),利于提高通信效率及数据处理的实时性。(2)当PC只有一个串口而以串口通信方式控制的设备模块有多个时,必需对串口扩展,为了简化硬件则需用软件实现模拟的串口,因此系统内部应有支持I/O口模拟串口操作的软件实现。标准串口和模拟串口在物理实现上有区别,但采用统一的对外封装,以提高程序的封装性和模块化程度。(3)防止由于串口操作而在流程中独占CPU资源,避免漏检状态信息等现象发生。Socket通信程序,一台PC机作为Server端,运行Socket,监听连接,另一台Linux机作为C

11、lient端,将通过TCP与Server端取得连接,连接成功后Server端和Client端就可以互相收发数据。收发数据结束后关闭连接。二、演示端 演示软件显示客户端发来的温度数据,发送取状态命令,设置频率。4.2.2.1 上层结构设计 一、协议(一)、对于温度协议转换软件,协议如下:与Server端的协议一)、使用TCP Server发收数据,先发后收,发收的数据都是字符串类型,可以直接在文本框中显示。二)、协议格式: (1).取温度数据:发送:命令码+温度计个数+温度计编号+温度值+.+温度计编号+温度值命令码:0201;温度计个数:二个字符,例:04;温度计编号,二个字符,例:02;温度

12、值,6个字符,例:802321,002122,前二个字符80代表负数,00代表正数,后二位是小数。收到:020100表示正常收到并且没有命令;发送0201FF表示数据错误,发送0201XXXX.表示有其他命令。以下数据都是发送温度数据后收到相应的命令的处理。 (2).取温度计状态:发送1的数据后收到:1的命令回复码+长度+命令码,即:0201 02 0202 。读取串口获得温度状态后发送:命令码:0202+温度计个数+温度计1状态+温度计2状态+.+温度计N状态 (3).设置温度频率:发送1的数据后收到:1的命令回复码+长度+命令码+频率,即:0201 03 0101XX,其中XX为频率 。命

13、令码:0101,频率,二个字符,最大为99秒,例:02。发送:命令码+结果,其中收到:010100表示设置正常,收到0101FF表示出错。三)、本次实习温度仪的温度计个数为4个。与串口温度仪的协议一)、收发的数据都是bin8格式的压缩BCD,即都是一个个字节构成,每一个字节转换成两个十六进制字符就是相应的数字,可以在文本框中显示,例:02就是一个字节,11也是一个字节,FF也是一个字节;或者是普通bin8格式的数据,比如正负号,00为正,80为负值。二)、协议格式: (1).取温度数据:发送:命令码,二字节:0201 。收到:命令码+温度计个数+温度计编号+温度值命令码:0201;温度计个数:

14、一个字节,例:04;温度计编号,一个字节,例:02;温度值,3个字节,第一个字节是正负号,00为正,80为负值,例:002321,802122。 (2).取温度计状态:发送:命令码,二字节:0202 。收到:命令码+温度计个数+温度计1状态+温度计2状态+.+温度计N状态命令码:0202,温度计个数一个字节,温度计状态一个字节,00正常,其他异常。 三)、本次实习温度仪温度计个数为4个。四)、串口确定参数为9600,N,8,1(二)、Server端演示软件协议:一)、使用TCP Server收发数据,先收后发,收发的数据都是字符串类型,可以直接在文本框中显示。二)、协议格式: (1).取温度数

15、据:主动数据,收到:命令码+温度计个数+温度计编号+温度值+.+温度计编号+温度值命令码:0201;温度计个数:二个字符,例:04;温度计编号,二个字符,例:02;温度值,6个字符,例:802321,002122,前二个字符80代表负数,00代表正数,后二位是小数。发送:020100表示正常收到并且没有命令;发送0201FF表示数据错误,发送0201XXXX.表示有其他命令。 (2).取温度计状态:收到1的数据后发送:1的命令回复码+长度+命令码,即:0201 02 0202 。收到:命令码:0202+温度计个数+温度计1状态+温度计2状态+.+温度计N状态 (3).设置温度频率:收到1的数据

16、后发送:1的命令回复码+长度+命令码+频率,即:0201 03 0101XX,其中XX为频率 。命令码:0101,频率,二个字符,最大为99秒,例:02。收到:命令码+结果,其中收到:010100表示设置正常,收到0101FF表示出错。三)、本次试验确定温度计个数为4个二、实现原理:一)、协议转换软件:图4-2 协议转换软件二)、演示软件: 见时序图。4.2.2.2 中层结构设计1文件系统:Linux的相关的系统设定,各种Linux环境下的软件的使用与调试。2网络服务:Linux这种类UNIX的操作系统其另一个作用域是网络服务器。Linux本身自带几乎所有网络上的用得到的服务,可以充当任何网络

17、服务器,比如DNS、DHCP、ftp、NFS、Proxy等等。而且其特点是,所有这些服务的配置与设定都可以通过文本形式的配置文件进行配置。所以学好Linux下网络服务的配置与使用,完全可以当CIO(首席信息官)了,因为已经具备Linux网络工程师的能力了。3软件设计:Linux是开源的操作系统软件,也是较原始的编程环境,其下的C/C+、PHP等都是比Windows下更纯语言。但Linux下高级的开发环境较少。Linux这三大块知识不相互影响,但有相互依赖和促进的作用。4.2.2.3 物理层结构设计 对于温度协议转换软件,通过串口线,连接Linux机和温度仪,实现串口通讯。通过网线,连接PC机和

18、Linux机,实现Socket通讯。图 4-3 物理层结构4.2.3功能模块设计一、温度协议转换软件:一)、全局变量:int frq(初始化为2秒), 采集温度仪数据的频率,单位秒。char statFlag, 是否查询温度仪状态,0: 不查询, 1: 查询。二)、功能函数:函数名com_send 功能串口发送数据参数int fd, 串口描述符char cmd,数据 int cmdlen数据长度实现方法 调用write(fd,cmd,cmdlen)(与一的函数相同)函数名com_receive功能串口接收数据参数int fd,串口描述符char buffer,数据 int retlen数据长度

19、实现方法调用read(fd, buffer, retlen) 函数名socket功能socket连接,连接Server端参数char ip, IP地址char port, 端口号返回值Int类型,socket描述符实现方法函数名bin2hexString功能二进制数据转换十六进制字符串参数char buffer,数据 int len数据长度返回char *,buffer数据的16进制字符串形式。实现方法 表 4-1 实现函数二、Server端演示软件:具体使用Qt设计,界面见界面部分,协议见结构设计部分。1、时序图图 4-4 演示软件时序图2、类图 图 4-5 类图4.3 系统实现4.3.1

20、系统硬件环境 最低配置:高性能计算机每人一台,两人一组,每台计算机要求有串口和以太网、同时要求有串口连接线和以太网连接线。最佳配置:装有Linux的嵌入式系统的实验平台每人一台,两人一组,每台嵌入式系统要求有以太网口和串口,同时要求有串口连接线和双机对联网线。高性能计算机每人一台。4.3.2 系统软件环境一、温度协议转换软件环境Linux系统是一项稳定的开源系统,稳定行好,能够调试串口通信,C语言程序编译,运行,分析。串口,对于安装了Linux的PC机,可以直接调用(/dev/ttyS0)。对于Windows可以用VMWare的添加串口向导完成。在Win32下,整个系统中只有一个串口:COM1

21、;Linux下也只有一个:/dev/ttyS0。分别运行两个系统中的相应软件,选择这个串口,就可以开始调试了。串口的优点是更类似于实际的嵌入式系统。Socket,对于Windows和Linux都基于TCP/IP协议栈。直接进行Socket编程即可。二、温度演示软件环境 在PC机上安装Qt软件,设置好变量环境,在Qt下编写温度显示软件。通过Socket与Client进行通信,显示其发来的数据,并发回处理命令。4.3.3 开发工具一、协议转换软件解压压缩文件,安装VMWare虚拟机,在虚拟机中建立共享文件夹,将所用的文件放入WINDOWS与LINUX共享文件夹e:vmshare中。进入虚拟机,打开

22、LINUX系统,进入共享文件夹c,在WINDOWS下打开文件,进行编译,保存后,在LINUX下运行终端,然后输入命令 cd /mnt/hgfs/share在输入命令 gcc tt.c o tt 进行调试,查看程序问题,错误,警告,并一一解答,直到调试没有错误。在输入命令 ./tt 运行程序,查看程序运行情况。二、演示软件 安装Qt软件开发工具,设置环境变量,进行开发。4.3.4 系统功能模块设计与实现 4.3.4.1 界面一、温度协议转换软件:一)、Server端演示软件图4-6 Server端演示软件二)、Client端温度协议转换软件图 4-7 Client端温度协议转换软件4.3.4.2

23、 其他功能一、温度协议转换软件1.轮询温度仪的温度数据2 .获取温度仪状态3.用Socket上传温度数据或者温度仪状态数据二、温度演示软件1.获取温度仪的状态2.设置取温度的频率3.设置端口4.4 关键技术关键技术一:通讯代码:int open_serial( char *ttyname ) int fd; struct termios termios_new; fd = open (ttyname, O_RDWR | O_NOCTTY); /| O_NONBLOCK if( fd 0) ok = 1; break; sleep(1); if(k100)break; ; if(ok=0) pr

24、intf(com_send data error,write length%d,cmdlen%d,ret,retlen); return -1; else return cmdlen;关键技术二:二级制数据转换十六进制字符串函数bin2hexString#define MAX_ORDER_LEN 128unsigned char* bin2hexString ( unsigned char *cmd, int cmdlen ) static char retcmdMAX_ORDER_LEN*2+1; int i; memset( retcmd, 0, sizeof(retcmd) ); for

25、( i = 0; i cmdlen; i+ ) sprintf(retcmd + i * 2, %02x, cmdi); return retcmd;4.5系统测试4.5.1 获取温度数据测试:client 端:图 4-8 client端测试Server端:图 4-9 server端显示4.5.2 设置取温度频率测试 server端:图 4-10 设置取温度频率4.5.3 设置查询温度计状态测试 server端: 图 4-11 查询温度计状态4.6系统部署一、协议转换软件对于温度协议转换软件,Client端和温度仪端用串口线连接,Client端 和Server端用网线连接,Server端部署温

26、度仪演示软件。解压压缩文件,安装虚拟机,在虚拟机中建立共享文件夹,将所用的文件放入WINDOWS与LINUX共享文件夹。进入虚拟机,打开LINUX系统,进入共享文件夹,在WINDOWS下打开文件,进行编辑,保存后,在LINUX下运行终端,然后输入命令 cd /mnt/hgfs/share在输入命令 gcc tt.c o tt 进行调试,查看程序问题,错误,警告,并一一解答,直到调试没有错误。在输入命令 ./tt 运行程序,查看程序运行情况。二、演示软件 安装Qt演示软件,设置好环境变量。5、实习参考资料1. 谭浩强. C语言程序设计M.北京:清华大学出版社,2010.1.2. 史蒂文斯,拉戈 著,尤晋元,张亚英,戚正伟 译,UNIX环境高级编程,机械工业出版社,2006.53. 4. 报告内容摘要:本次生产实习,我所做的课题是Linux下串口和Socket通讯及应用。该课题主要是设计一个温度协议转换软件和温度演示软件,实现对温度数据的读取、转换和显示。报告中,介绍了该课题的大概原理、相应的软件以及硬件要求、具体实现过程的各个步骤,包括需求分析、系统定义、系统实现,以及关键的代码等内容。同时还进行了相应的系统测试。指导教师评语:成绩: 指导教师(签名): 年 月 日

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1