System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种通用的串口数据滑窗系统技术方案_技高网

一种通用的串口数据滑窗系统技术方案

技术编号:40656531 阅读:9 留言:0更新日期:2024-03-13 21:33
本发明专利技术涉及一种通用的串口数据滑窗系统,属于串口通信技术领域。该系统逻辑清晰,代码实现简单,能够完整准确地从复杂的串口数据中提取出各种类型的数据帧,提高了系统的可靠性和通用性。

【技术实现步骤摘要】

本专利技术属于串口通信,具体涉及一种通用的串口数据滑窗系统


技术介绍

1、串行接口是计算机应用系统常见的数据接口,串口通信线路简单,特别适合远距离通信,因此被广泛应用。由于其抗干扰能力较弱,一般通信双方在发送有效数据时会制定相应的串口协议。协议内容包括帧头、有效数据长度、有效数据、数据校验、帧尾,其中帧头通常用来指示本包串口数据帧的类型,数据校验和帧尾用来确保串口数据帧的准确性和完整性。由于串口传输方式是以单个字节为单位的,通常情况下,一次接收处理的串口数据通常为多包数据组合在一起的,并且由于传输的误码,需要对接收到的串口数据进行滑窗处理,从中提取出有效的串口数据。

2、目前对串口数据解析的方法有多种,对于有效数据长度相同、且帧头长度相同的不同类型的串口数据帧可以很好的解析出来。但是对于串口数据帧类型多,且在串口数据帧有效数据长度、帧头长度不一的情况下,程序设计逻辑复杂,容错机制不完备,存在对有效数据帧无法正确解析出来的缺陷。并且大多是针对特定串口协议的,因此不具备通用性。


技术实现思路

1、(一)要解决的技术问题

2、本专利技术要解决的技术问题是:提出一种通用的串口数据滑窗系统,能够完整准确地从复杂的串口数据中提取出各种类型的数据帧,提高系统的可靠性和通用性。

3、(二)技术方案

4、为了解决上述技术问题,本专利技术提供了一种通用的串口数据滑窗系统,包括:

5、初始化模块,用于初始化接收数据缓存区recvdatabuff、待处理数据缓存区dealdatabuff、有效数据缓存区databuff、有效数据长度messlen,在头文件中对通信双方制定的串口协议的帧头、帧长度、帧尾进行宏定义;

6、存储模块,用于设置数据处理周期,数据处理周期到时,通过串口模块读取全部串口数据,储存在接收数据缓存区中,将有效数据缓存区中的数据复制到待处理数据缓存区,然后再将接收数据缓存区中的数据追加复制到待处理数据缓存区;

7、提取模块,用于从待处理数据缓存区中第posdeal个数据开始提取数据到有效数据缓存区,提取一个字节;

8、帧头判断模块,用于判断有效数据缓存区中是否有帧头,如果没有帧头,则剔除有效数据缓存区中的首字节后,将有效数据缓存区中其他的字节的位置全部向前移动一个位置,并且将posdeal加1,触发提取模块继续提取单个字节,直到找到帧头后,执行继续提取模块;

9、继续提取模块,用于由帧头得知帧长度,继续从待处理数据缓存区中提取数据到有效数据缓存区中,直到有效数据缓存中数据长度等于帧长度后执行帧尾判断模块;

10、帧尾判断模块,用于判断有效数据缓存区中帧尾是否正确,若帧尾错误执行剔除模块,若帧尾正确执行帧校验模块;

11、剔除模块,用于当发现帧尾或帧校验错误时,将有效数据缓存区剔除首字节后,将有效数据缓存区中剩余字节的前framheadlen-1个数据向前移动一个位置,此时为有效数据长度赋值为framheadlen-1,为posdeal赋值posdeal-framlen+freamheadlen,触发帧头判断模块重新查找帧头;

12、帧校验模块,用于对有效数据缓存区中的数据帧进行帧校验,判断有效数据缓存区中的帧校验是否正确,若帧校验错误执行剔除模块,若帧校验正确执行清空模块;

13、清空模块,用于在帧校验正确时确认有效数据缓存区中的数据即为一包完整准确的串口数据帧,此时根据业务需要处理该串口数据帧后,清空有效数据缓存区并将有效数据长度赋值为0,重新执行提取模块查找下一帧数据。

14、本专利技术还提供了一种基于所述系统实现的串口数据解析方法。

15、本专利技术还提供了一种基于所述系统实现的串口传输方法。

16、本专利技术还提供了一种基于所述系统实现的串口通信方法。

17、(三)有益效果

18、1、通过设定接收数据缓存区和待处理数据缓存区,将接收数据与待处理数据分开存储,能够保证数据接收的完整性;

19、2、通过对帧头、有效长度、帧尾、校验的联合判断,能够准确地从复杂数据中提取出有效数据。

本文档来自技高网...

【技术保护点】

1.一种通用的串口数据滑窗系统,其特征在于,包括:

2.如权利要求1所述的系统,其特征在于,初始化模块事先已知通信双方制定的串口通信协议中,串口帧数据最大值为Lmax,串口模块中数据缓存区长度为ComLmax,接收数据缓存区的长度初始化为ComLmax,有效数据缓存区的长度初始化为Lmax,待处理数据缓存区的长度初始化为ComLmax+Lmax。

3.如权利要求2所述的系统,其特征在于,初始化模块将有效数据缓存区初始化为全局变量。

4.如权利要求3所述的系统,其特征在于,初始化模块将有效数据长度初始化为全局变量。

5.如权利要求2所述的系统,其特征在于,存储模块将数据处理周期设置为12.5ms。

6.如权利要求2所述的系统,其特征在于,串口数据格式为:帧头+帧长度+有效数据+校验+帧尾。

7.如权利要求2所述的系统,其特征在于,posDeal初始值等于MessLen。

8.一种基于如权利要求1至7中任一项所述系统实现的串口数据解析方法。

9.一种基于如权利要求1至7中任一项所述系统实现的串口传输方法。

10.一种基于如权利要求1至7中任一项所述系统实现的串口通信方法。

...

【技术特征摘要】

1.一种通用的串口数据滑窗系统,其特征在于,包括:

2.如权利要求1所述的系统,其特征在于,初始化模块事先已知通信双方制定的串口通信协议中,串口帧数据最大值为lmax,串口模块中数据缓存区长度为comlmax,接收数据缓存区的长度初始化为comlmax,有效数据缓存区的长度初始化为lmax,待处理数据缓存区的长度初始化为comlmax+lmax。

3.如权利要求2所述的系统,其特征在于,初始化模块将有效数据缓存区初始化为全局变量。

4.如权利要求3所述的系统,其特征在于,初始化模块将有效数据长度初始化为全...

【专利技术属性】
技术研发人员:潘雁鹏
申请(专利权)人:天津津航计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1