[发明专利]一种串口通讯数据处理分析方法在审
申请号: | 201510166792.4 | 申请日: | 2015-04-10 |
公开(公告)号: | CN104765573A | 公开(公告)日: | 2015-07-08 |
发明(设计)人: | 吴永刚;姚海涛;李倩;陈金花;盖旗涛 | 申请(专利权)人: | 中国船舶重工集团公司第七一0研究所 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F11/14;G06F12/08 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 付雷杰;杨志兵 |
地址: | 443003 *** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 串口 通讯 数据处理 分析 方法 | ||
技术领域
本发明涉及一种新型的串口通讯数据处理分析方法,属于数据传输技术领域。
背景技术
在目前很多的工程化控制应用中,大部分采用了PC机和多台单片机构成的主从系统;单片机主要进行数据采集,处理现场信号,驱动执行机构;PC机则通过对单片机进行集中管理,完成信息显示,数据运算并做出决策以分配任务。PC机与单片机之间则需通过通讯方式完成数据交互,在众多通讯接口中,串口通讯应用比较普遍。
串口通讯有RS232、RS422和RS485三种方式,按照字节流的方式来进行,即每中断一次,表明成功传送或者接收一个字节;但是,由于RS232、RS422和RS485等串口通讯存在不可靠、不稳定的问题,因此需要提供一种新的串口通讯数据处理方法。
发明内容
有鉴于此,本发明的目的是针对现有技术的不足,提出一种新型的串口通讯数据处理分析方法,该方法可以有效提高串口通讯的稳定性。
实现本发明的技术方案如下:
一种串口通讯数据处理分析方法,数据存储时,将通讯数据存储于大小为SIZE的循环先进先出环形缓冲区中,缓冲区中Tail指针表示该缓冲区中接收到的有效数据位置,Head指针表示该缓冲区中已经处理的有效数据位置,HeadBak指针为Head指针的备份;数据写入时,首先判断缓冲区是否写满,若Tail不等于Head,则表示缓冲区不满,写入数据;否则,不能写入;
数据读出处理分析时采用如下步骤进行:
步骤一、读取缓冲区数据进行前导码检查,若该数据与通信协议中预设的前导码不相等,则表明该数据不是前导码,丢弃该数据,读取下一个数据继续进行前导码检查,直到读取数据与预设的前导码相等,即获得前导码,转入步骤二;
步骤二、读取缓冲区中下一个数据进行帧长度检查,若该数据不满足通信协议中对长度域可能出现的最大和最小包长要求,则表明该数据不是帧长度,丢弃该数据,读取下一个数据继续进行帧长度检查,直到读取数据满足通信协议要求,即获得帧长度,转入步骤三;
步骤三、读取缓冲区中下一个数据进行帧号检查,若该数据与通信协议中预设的帧号不相等,则表明该数据不是帧号,丢弃该数据,读取下一个数据继续进行帧号检查,直到读取数据与预设的帧号相等,即获得帧号,并令HeadBak等于Head,转入步骤四;
步骤四、根据步骤二获得的帧长度数据,连续读取帧长度所述长度的数据作为数据域数据,转入步骤五;
步骤五,按照通信协议对步骤四获得的数据域数据进行校验和检查,若校验和错误,则表明读取的数据域中有数据有误,放弃此次读取的数据域数据,令Head=HeadBak,转入步骤一,即从HeadBak所示位置开始重新执行步骤一~步骤五,进行数据读取分析;若校验和正确,则读取(Head-HeadBak+SIZE)%SIZE的长度数据,然后根据帧号,执行相应的操作。
有益效果
(1)本发明采用循环先进先出环形缓冲区进行数据存储,能够利用循环FIFO缓冲区的特性,提供对数据的缓存和对字节流数据灵活多样的访问方式;在读取数据时,分别依次对协议的各个域(前导码、帧长度、帧号、数据域、校验和)进行严格的检查,实现对部分含有错误域的包和不完整的包的完美过滤,以及对混乱数据中正确包准确无误的抽取,减少数据帧(即报文)读取时由于数据错误提取带来的对报文的错误解读。
(2)采用HeadBak对Head进行备份,当帧头分析结束后(即提取完帧号后),记录下Head的位置,以防后续数据不符合协议要求后,根据HeadBak重新恢复Head的位置,从而防止前导码等信息漏查。
附图说明
图1为通讯协议结构。
图2为循环FIFO缓冲区示意。
图3为本发明流程图。
具体实施方式
下面结合具体实例对本发明作进一步详细说明。
本发明一种新型的串口通讯数据处理分析方法,具体过程为:
(一)定义通讯协议
串口通讯协议一般包含这样几个域:帧头、用户数据和帧尾,其中,帧头包括前导码、帧长度和帧号;用户数据对应数据域;帧尾为校验和。
(二)循环FIFO(先进先出)环形缓冲区
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国船舶重工集团公司第七一0研究所,未经中国船舶重工集团公司第七一0研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510166792.4/2.html,转载请声明来源钻瓜专利网。