[发明专利]一种串口通讯的数据传输方法、系统及存储介质有效
申请号: | 202011015112.6 | 申请日: | 2020-09-24 |
公开(公告)号: | CN112181883B | 公开(公告)日: | 2022-11-08 |
发明(设计)人: | 张友明 | 申请(专利权)人: | 深圳市乐唯科技开发有限公司 |
主分类号: | G06F13/38 | 分类号: | G06F13/38 |
代理公司: | 深圳市海顺达知识产权代理有限公司 44831 | 代理人: | 欧阳士 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 串口 通讯 数据传输 方法 系统 存储 介质 | ||
本发明提供了一种串口通讯的数据传输方法、系统及存储介质,该数据传输方法包括:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;接收方收到协议数据后,将收到的数据按接收方解码方式进行解码并校验。本发明的有益效果是:本发明通过对协议的改进,可以确保收发双方协议顺序得到控制,如果出现协议传输错乱,可以通过双方约定的重发机制,确保消息按顺序到达。可以确保消息出现粘连的时候,也能解析出所有的帧数据,确保通讯能按照设计的方案运行。
技术领域
本发明涉及数据通信技术领域,尤其涉及一种串口通讯的数据传输方法、系统及存储介质。
背景技术
在一般的串口通讯中,数据包的格式如下:
标志:1字节的包头起始标志,固定为0xF0。
数据长度:1字节,表示数据内容的长度,长度范围1~255。
数据内容:不定长字节,长度范围1~255。
校验和:1字节,所有数据内容相加后的和再强制转换为BYTE类型后的值。
接收方和发送方通过起始标识和数据长度来定义一帧的数据传输,应答的数据也一样按照相同的格式。这个格式在某些情况下,会出现粘包或者数据位错乱的时候,无法纠错重发。
发明内容
本发明提供了一种串口通讯的数据传输方法,包括如下步骤:
步骤1:约定收发双方的传送波特率、校验位和停止位;
步骤2:打开某个连接好的串口;
步骤3:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;
步骤4:接收方收到协议数据后,将收到的数据按接收方解码方式进行解码并校验;
步骤5:判断校验是否通过,若是,那么执行步骤6,否则丢弃该帧数据,返回执行步骤4;
步骤6:按协议数据进行操作,将操作的结果加上本条命令对应的seqID,按编码方的算法进行编码作为应答进行发送,该数据不用存缓存;
步骤7:发送方收到应答,进行解码校验;
步骤8:判断是否通过校验,如是,那么执行步骤9,否则丢弃该帧数据,返回执行步骤4;
步骤9:判断seqID对应的消息在发送缓存是否存在,若是,那么执行步骤10,否则丢弃该帧数据,返回执行步骤4;
步骤10:从缓存中删除已经发送成功的数据;
步骤11:发送方检查发送缓存,如果有超时没有应答的消息,则重发该帧数据,然后返回执行步骤3。
作为本发明的进一步改进,所述编码方的算法包括如下步骤:
步骤S1:将原始数据拷贝到一个数组中,并创建一个长度为第一设定值的输出数组;
步骤S2:输出数组第一个字节是0xF0,输出数组的第二个字节是数据长度,输出数组的第二个字节的数值是原始数据长度+第二设定值;
步骤S3:发送方计算本地的SeqID,从0开始,每次发送成功一条命令,累加值加1,一直累加到255,255之后重新置为0,按0到255循环,SeqID放在原始数据之后的一个字节;
步骤S4:将第二个字节、原始数据、SeqID进行异或,计算得到一个字节的校验和;
步骤S5:对第一字节之后的每一字节进行编码;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市乐唯科技开发有限公司,未经深圳市乐唯科技开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011015112.6/2.html,转载请声明来源钻瓜专利网。