设计封装串口数据通信论文.doc_第1页
设计封装串口数据通信论文.doc_第2页
设计封装串口数据通信论文.doc_第3页
设计封装串口数据通信论文.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

设计封装串口数据通信论文 1协议的设计 1.1数据报格式 数据报分为报文头部和数据部两部分,其格式如图2所示。报文头部由6字节组成,第1、2字节AB表示报文长度,即报文头部长度加上数据部长度;第3、4字节CD表示整个报文的校验和;第5、6字节XX表示应答ACK;第7、8字节GH表示报文序号。数据报长度AB范围为065535,所以一个报文最大为8KB。数据部长度等于报文长度(AB)减去报文头长度(8B)。2.2数据处理与报文处理数据处理包括分割上层应用提供的数据,以及从报文还原拼接数据;报文处理包括格式化报文以提供给串口发送以及从串口读取报文、校验报文、提取数据。 1.2.1数据分割 协议从应用程序接口获取应用程序提供的数据并以流式数据写入发送方数据缓冲区;然后以事先设定的数据分割长度取数据,长度不足的部分则全部取出,取数据指针移动相应距离。 1.2.2报文组装 报文的组装过程如下: (1)计算取出数据的长度,填入报文第1、2字节; (2)报文第36字节全部置0; (3)计算报文序号GH; (4)计算校验和,从第1字节开始,每两个字节为一个单元进行分割,末尾不足两字节则在其后补0,再将这些单元进行二进制反码求和,结果存在检验和字段中第3、4字节; (5)将取出的数据接在报文头部后面,将整个报文写入报文缓冲区。 1.2.3报文拆分 报文拆分的具体步骤如下: (1)从报文缓冲区按报文长度获取报文数据; (2)计算校验和,方法同报文组装里的计算方法:如果校验和不为0xFFFF,则传输过程中发生差错,丢弃此报文;如果校验和为0xFFFF,取出报文长度及报文序号,计算数据部长度,取出数据。 1.2.4数据拼接 将从报文取出的数据填入接收方数据缓冲区,写数据指针移动相应距离;接收完最后一个数据后,协议将数据缓冲区中的数据提供给上层应用程序,写数据指针恢复初始值。 1.3数据报传输过程 数据报传输情况分为考虑定时器超时和不考虑定时器超时两种,定时器超时处理应属于中断调用。 1.3.1传输过程数据报传输过程如下: (1)在进行数据报传输前,发送方将数据分割并装进报文,ACK置为0x0000,计算报文序号,再将报文送入报文缓冲区。 (2)开始发送时,串口按已经设定的工作方式和波特率工作,从报文缓冲区获取报文数据并发送。 (3)发送方发送完毕一个数据报后,停止发送,启动定时器计时,准备接收响应。 (4)接收方串口接收数据并填入报文缓冲区。 (5)接收方从报文缓冲区获取报文数据,进行校验: 若接收方校验结果为正确,则取出数据;若接收的ACK=0x0011并且收到的序号等于前面一个报文的序号,则将数据覆盖到前一块数据,否则将数据填入数据缓冲区;记录报文序号,发送数据部为空、ACK=0x1111的报文。 若接收方校验结果为错误,则丢弃数据报,发送数据部为空、ACK=0x1110的报文,通知发送方重发。 (6)接收方每次处理完数据报均初始化并启动定时器计时,刚收到数据报时关闭定时器。 (7)发送方收到响应报文,校验通过则关闭定时器,获取ACK,若ACK=0x1111,则发送下一个数据报;若ACK=0x1110,则重发当前数据报(ACK置0x0011)。如果校验不通过就丢弃此数据报,仍保持定时器计时。 (8)双方重复以上步骤直到最后一个报文发送完毕。 (9)发送方发送最后一个报文完成后,发送数据部为空、ACK=0x0001的报文提示数据传输完毕,若此报文发送后收到重传响应,则重发此数据报(ACK仍置0x0001)。 1.3.2定时器超时处理 若发送方定时器达到发送方超时等待时间仍未收到响应报文,则重传当前数据报(ACK置0x0011),连续超时三次还没收到应答则停止发送数据报,清空报文缓冲区和数据缓冲区,并向应用程序返回通信失败。若接收方定时器达到接收方超时等待时间仍未收到报文,清空报文缓冲区和数据缓冲区,关闭定时器,并向上层应用程序返回通信失败。 2结论 本文所设计的协议封装串口通信是为了更方便和安全地传送数据,从上文可以看到,在发送大数据报时,串口的速度其实不高,而本协议若需控制在毫秒级的处理,所发数据不能超过1192B。报文长度字节AB范围为065535,故

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论