[发明专利]一种串口通讯的数据传输方法、系统及存储介质有效
申请号: | 202011015112.6 | 申请日: | 2020-09-24 |
公开(公告)号: | CN112181883B | 公开(公告)日: | 2022-11-08 |
发明(设计)人: | 张友明 | 申请(专利权)人: | 深圳市乐唯科技开发有限公司 |
主分类号: | G06F13/38 | 分类号: | G06F13/38 |
代理公司: | 深圳市海顺达知识产权代理有限公司 44831 | 代理人: | 欧阳士 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 串口 通讯 数据传输 方法 系统 存储 介质 | ||
1.一种串口通讯的数据传输方法,其特征在于,包括如下步骤:
步骤1:约定收发双方的传送波特率、校验位和停止位;
步骤2:打开某个连接好的串口;
步骤3:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;
步骤4:接收方收到协议数据后,将收到的数据按接收方解码方式进行解码并校验,将接收方收到的数据称为第一数据;
步骤5:判断校验是否通过,若是,那么执行步骤6,否则丢弃第一数据,返回执行步骤4;
步骤6:按协议数据进行操作,将操作的结果加上本条命令对应的seqID,按编码方的算法进行编码作为应答进行发送,将按编码方的算法进行编码作为应答的数据称为第二数据,第二数据不用存缓存;
步骤7:发送方收到应答,进行解码校验;
步骤8:判断是否通过校验,如是,那么执行步骤9,否则丢弃第二数据,返回执行步骤4;
步骤9:判断seqID对应的消息在发送缓存是否存在,若是,那么执行步骤10,否则丢弃第二数据,返回执行步骤4;
步骤10:从缓存中删除已经发送成功的数据;
步骤11:发送方检查发送缓存,如果有超时没有应答的消息,则重发步骤3中缓存的原始数据,然后返回执行步骤3;
所述编码方的算法包括如下步骤:
步骤S1:将原始数据拷贝到一个数组中,并创建一个长度为第一设定值的输出数组;
步骤S2:输出数组第一个字节是0xF0,输出数组的第二个字节是数据长度,输出数组的第二个字节的数值是原始数据长度+第二设定值;
步骤S3:发送方计算本地的SeqID,从0开始,每次发送成功一条命令,累加值加1,一直累加到255,255之后重新置为0,按0到255循环,SeqID放在原始数据之后的一个字节;
步骤S4:将第二个字节、原始数据、SeqID进行异或,计算得到一个字节的校验和;
步骤S5:对第一字节之后的每一字节进行编码;
步骤S6:判断编码后的数值是否为0xf0,如果是,那么将0xf0转化为0xE0和0xEF,然后执行步骤S8,如果编码后的数值不是0xf0,那么执行步骤S7;
步骤S7:判断编码后的数值是否为0xE0,如果是,那么将0xE0转化为0xE0和0xDF,然后执行步骤S8,如果编码后的数值不是0xE0,那么执行步骤S8;
步骤S8:将数据按字节存储到输出数组;
步骤S9:最后得到输出数组和对应的编码后的长度,通过串口写出去,同时将该数据存储到本地发送缓存中,记录本地的发送时间;
步骤S10:发送方定时检查本地发送缓存,如果存在超过第三设定值没有回复的数据,重新发送本地发送缓存中的消息。
2.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤S1中,第一设定值为512字节;在所述步骤S2中,第二设定值为3。
3.根据权利要求1所述的数据传输方法,其特征在于,在所述步骤6中,按协议数据进行操作,将操作的结果加上本条命令对应的seqID,按步骤S1至步骤S8进行编码作为应答进行发送,第二数据不用存缓存。
4.根据权利要求1所述的数据传输方法,其特征在于,在所述S10中,发送方定时1秒检查本地发送缓存,所述第三设定值为2秒。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市乐唯科技开发有限公司,未经深圳市乐唯科技开发有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011015112.6/1.html,转载请声明来源钻瓜专利网。