【技术实现步骤摘要】
一种串口通讯的数据传输方法、系统及存储介质
本专利技术涉及数据通信
,尤其涉及一种串口通讯的数据传输方法、系统及存储介质。
技术介绍
在一般的串口通讯中,数据包的格式如下:标志:1字节的包头起始标志,固定为0xF0。数据长度:1字节,表示数据内容的长度,长度范围1~255。数据内容:不定长字节,长度范围1~255。校验和:1字节,所有数据内容相加后的和再强制转换为BYTE类型后的值。接收方和发送方通过起始标识和数据长度来定义一帧的数据传输,应答的数据也一样按照相同的格式。这个格式在某些情况下,会出现粘包或者数据位错乱的时候,无法纠错重发。
技术实现思路
本专利技术提供了一种串口通讯的数据传输方法,包括如下步骤:步骤1:约定收发双方的传送波特率、校验位和停止位;步骤2:打开某个连接好的串口;步骤3:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;步骤4:接收方收到协议数据后,将收到的数据按接收方解 ...
【技术保护点】
1.一种串口通讯的数据传输方法,其特征在于,包括如下步骤:/n步骤1:约定收发双方的传送波特率、校验位和停止位;/n步骤2:打开某个连接好的串口;/n步骤3:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;/n步骤4:接收方收到协议数据后,将收到的数据按接收方解码方式进行解码并校验;/n步骤5:判断校验是否通过,若是,那么执行步骤6,否则丢弃该帧数据,返回执行步骤4;/n步骤6:按协议数据进行操作,将操作的结果加上本条命令对应的seqID,按编码方的算法进行编码作为应答进行发送,该数据不用存缓存;/n步骤7:发送方收到应答,进行解码校验;/ ...
【技术特征摘要】
1.一种串口通讯的数据传输方法,其特征在于,包括如下步骤:
步骤1:约定收发双方的传送波特率、校验位和停止位;
步骤2:打开某个连接好的串口;
步骤3:发送方按编码方的算法来计算得到要发送数据,通过串口写出,并将这个原始数据缓存起来;
步骤4:接收方收到协议数据后,将收到的数据按接收方解码方式进行解码并校验;
步骤5:判断校验是否通过,若是,那么执行步骤6,否则丢弃该帧数据,返回执行步骤4;
步骤6:按协议数据进行操作,将操作的结果加上本条命令对应的seqID,按编码方的算法进行编码作为应答进行发送,该数据不用存缓存;
步骤7:发送方收到应答,进行解码校验;
步骤8:判断是否通过校验,如是,那么执行步骤9,否则丢弃该帧数据,返回执行步骤4;
步骤9:判断seqID对应的消息在发送缓存是否存在,若是,那么执行步骤10,否则丢弃该帧数据,返回执行步骤4;
步骤10:从缓存中删除已经发送成功的数据;
步骤11:发送方检查发送缓存,如果有超时没有应答的消息,则重发该帧数据,然后返回执行步骤3。
2.根据权利要求1所述的数据传输方法,其特征在于,所述编码方的算法包括如下步骤:
步骤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:发送方定时检查本地发送缓存,如果存在超过第三设定值没有回复的数据,重新发送本地发送缓存中的消息。
...
【专利技术属性】
技术研发人员:张友明,
申请(专利权)人:乐唯科技深圳有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。