[发明专利]一种通用的串口数据接收处理方法在审
申请号: | 202110665882.3 | 申请日: | 2021-06-16 |
公开(公告)号: | CN113392060A | 公开(公告)日: | 2021-09-14 |
发明(设计)人: | 赵昶宇 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F13/42 | 分类号: | G06F13/42 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 李晶尧 |
地址: | 300000 天津市*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 通用 串口 数据 接收 处理 方法 | ||
1.一种通用的串口数据接收处理方法,其特征在于:包括如下步骤:
步骤一、设定本次总共接收到的串口数据长度为dataLength;设定存储接收到的串口数据缓冲区为sourceBuff;设定对接收到的串口数据进行解析处理的缓冲区为destiBuff;设定当前处理的串口数据长度为pu8MessLength,且pu8MessLength的初始值为0;
步骤二、将sourceBuff中的串口数据传输至destiBuff进行解析处理,每处理一个字节,pu8MessLength的计数加一;串口数据的格式为:数据帧头+有效数据+数据校验+数据帧尾;
步骤三、在destiBuff中寻找正确的数据帧头;
步骤四、提取正确数据帧头对应串口数据的数据帧尾内容,并判断数据帧尾是否正确;当数据帧尾正确,进入步骤五;当数据帧尾不正确,返回步骤三,重新寻找正确的数据帧头;
步骤五、判断数据校验是否正确;当数据校验错误时,返回步骤三,重新寻找正确的数据帧头;当数据校验正确时,判断接收的该串口数据正确,进入步骤六;
步骤六、对该串口数据中的有效数据进行串口通讯协议处理,并在destiBuff中删除当前数据帧尾及之前的所有字节数据;并将当前数据帧尾下一个字节开始的数据作为destiBuff最早接收的数据,重新寻找正确的数据帧头。
2.根据权利要求1所述的一种通用的串口数据接收处理方法,其特征在于:所述步骤二中,数据帧头的长度为L1、有效数据的长度为L2、数据校验的长度为L3、数据帧尾的长度为L4;L1为大于1的正整数;L2为大于0的正整数;L3为大于0的正整数;L4为大于0的正整数。
3.根据权利要求1所述的一种通用的串口数据接收处理方法,其特征在于:所述步骤三中,寻找正确的数据帧头的方法为:
按照destiBuff接收串口数据时间的先后顺序,依次寻找正确的数据帧头;
当接收到串口数据中数据帧头的每个字节内容都正确,且该数据帧头的长度也正确时,则判断当前接收到串口数据的数据帧头是正确的数据帧头;
当接收到串口数据中数据帧头的每个字节内容都正确,但该数据帧头的长度错误;或当接收到串口数据中数据帧头的长度正确,但数据帧头的各字节内容不完全正确,则判断当前接收到串口数据的数据帧头不是正确的数据帧头。
4.根据权利要求3所述的一种通用的串口数据接收处理方法,其特征在于:当在destiBuff数据缓冲区中最早接收的长度为L1的数据帧头不是正确的数据帧头时,则从当前destiBuff数据缓冲区中最早接收的第二个字节开始,按照destiBuff接收串口数据时间的先后顺序,依次寻找正确的数据帧头;
直至pu8MessLength计数值大于destiBuff能够容纳的最大字节数时,若此时在destiBuff数据缓冲区中一直找不到正确的数据帧头,设置当前数据帧头的字节长度为headLen,在destiBuff中仅保留最新接收的headLen-1个字节的数据内容,将destiBuff数据缓冲区中其余字节内容全部删除,destiBuff从第headLen个字节开始接收sourceBuff中的串口数据。
5.根据权利要求4所述的一种通用的串口数据接收处理方法,其特征在于:当在destiBuff中寻找到正确的数据帧头时,则当前数据帧头的长度L1和内容已确定,即该数据帧头对应的串口数据中有效数据的长度L2、数据校验的长度L3、数据帧尾的长度L4和串口数据的类型标识Sign均确定。
6.根据权利要求1所述的一种通用的串口数据接收处理方法,其特征在于:所述步骤四中,判断数据帧尾是否正确的方法为:
当当前destiBuff中数据帧尾的内容与该数据帧头对应的数据帧尾的内容一致,则判断当前destiBuff数据缓冲区中数据帧尾正确,找到该数据帧头对应的数据帧尾;
当当前destiBuff中数据帧尾的内容与该数据帧头对应的数据帧尾的内容不一致,则判断当前destiBuff数据缓冲区中数据帧尾错误,未找到该数据帧头对应的数据帧尾。
7.根据权利要求1所述的一种通用的串口数据接收处理方法,其特征在于:所述步骤五中,数据校验是否正确的判断方法为:
当当前destiBuff中数据校验的内容与该数据帧头对应的数据校验的内容一致,则判断当前destiBuff数据缓冲区中数据校验正确,找到该数据帧头对应的数据校验;
当当前destiBuff中数据校验的内容与该数据帧头对应的数据校验的内容不一致,则判断当前destiBuff数据缓冲区中数据校验错误,未找到该数据帧头对应的数据校验。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110665882.3/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置