System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种总线数据的处理方法及装置制造方法及图纸_技高网

一种总线数据的处理方法及装置制造方法及图纸

技术编号:40468483 阅读:11 留言:0更新日期:2024-02-22 23:23
本发明专利技术提供一种总线数据的处理方法及装置,在缓存层将总线数据赋值到RxService结构类型的第一静态变量,将第一静态变量中的总线数据拷贝到uint8*结构类型的指针变量,得到总线数据包副本和对应的指针并存储到单向队列,提取指针并将指针对应的总线数据包副本差额拷贝到应用层RxService结构类型的第二静态变量。在本方案中,在缓存层通过RxService结构类型缓存总线数据,以uint8*结构类型分配总线数据的大小,去冗余拷贝总线数据得到指针并入队,出队时基于差额拷贝以及C++强制转换的特性,将总线数据拷贝到应用层RxService结构类型,以解决总线数据在缓存层内存占用过大以及数据冗余的问题。

【技术实现步骤摘要】

本专利技术涉及数据处理,具体涉及一种总线数据的处理方法及装置


技术介绍

1、目前汽车主流的总线应用类型包括can、canfd、lin、ethernet,在车辆研发、测试、生产、售后等全生命周期内,对车辆总线数据的监控采集和节点仿真,具有非常重要的实际应用价值,当前业内主流的做法是基于一个车辆总线接口卡设备,通过usb连接到电脑,将车载总线数据封装成usb数据帧,上位机程序读取usb数据帧并解析转换到对应的总线数据结构化内存中,实现对车辆总线数据的读取和发送。

2、现有技术中,采用联合体对多种总线数据进行等额内存拷贝存取,其不考虑实际的总线数据类型,均基于联合体大小即最大长度进行内存开辟,导致内存占用过大以及数据冗余问题。

3、因此,如何考虑实际的总线数据类型进行存取,以实现解决内存占用过大以及数据冗余问题的目的,是目前急需考虑的。


技术实现思路

1、有鉴于此,本专利技术实施例提供一种总线数据的处理方法及装置,以实现解决内存占用过大以及数据冗余问题的目的。

2、为实现上述目的,本专利技术实施例提供如下技术方案:

3、本专利技术实施例第一方面公开了一种总线数据的处理方法,所述方法包括:

4、获取总线数据包;

5、将所述总线数据包中的总线数据,赋值到预先在缓存层的静态内存区创建的第一静态变量;所述第一静态变量的结构类型为用于存储多种总线数据包的rxservice结构类型;

6、将所述第一静态变量中的总线数据,去冗余拷贝到与所述总线数据长度一致的uint8*结构类型的指针变量中,得到总线数据包副本以及对应的指针,并清空所述第一静态变量中的数据;所述uint8*结构类型的指针变量位于所述缓存层的堆内存;

7、将所述总线数据包副本对应的指针存储到预先构建的单向队列;

8、响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针对应的总线数据包副本差额拷贝到第二静态变量,并释放所述总线数据包副本在缓存层占用的内存;所述第二静态变量预先在所述应用层构建,所述第二静态变量为rxservice结构类型。

9、优选的,所述获取总线数据包,包括:

10、获取车辆总线接口卡设备封装总线数据包得到的usb数据帧;

11、基于usb应用协议,对所述usb数据帧进行截取和解析,得到所述总线数据包。

12、优选的,所述将所述第一静态变量中的总线数据,去冗余拷贝到与所述总线数据长度一致的uint8*结构类型的指针变量中,得到总线数据包副本以及对应的指针,并清空所述第一静态变量中的数据,包括:

13、利用字节对齐方式,计算所述第一静态变量中的总线数据实际占用的字节长度;

14、在所述缓存层的堆内存中,创建与所述第一静态变量中的总线数据实际占用的字节长度一致的uint8*结构类型的指针变量中;

15、基于字节对齐方式以及所述第一静态变量中的总线数据,对所述指针变量进行去冗余拷贝,得到总线数据包副本以及对应的指针;

16、清空所述第一静态变量中的数据。

17、优选的,所述响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针对应的总线数据包副本差额拷贝到第二静态变量,并释放所述总线数据包副本在缓存层占用的内存,包括:

18、响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针强制转换为rxservice结构类型的指针;

19、采用差额拷贝的方式,将rxservice结构类型的指针对应的总线数据包副本拷贝至所述第二静态变量,并对所述第二静态变量剩余的字节长度进行填充;

20、释放所述总线数据包副本在缓存层占用的内存。

21、优选的,所述采用差额拷贝的方式,将rxservice结构类型的指针对应的总线数据包副本拷贝至所述第二静态变量,包括:

22、将rxservice结构类型的指针对应的总线数据包副本拷贝至所述第二静态变量;

23、若所述第二静态变量中存在剩余字节长度,利用无效数据对剩余的字节长度进行填充。

24、优选的,所述释放所述总线数据包副本在缓存层占用的内存,包括:

25、调用c++中的内存释放语句,对uint8*结构类型的总线数据包副本在缓存层占用的内存进行释放。

26、本专利技术实施例第二方面公开了一种总线数据的处理装置,所述装置包括:

27、获取单元,用于获取总线数据包;

28、赋值单元,用于将所述总线数据包中的总线数据,赋值到预先在缓存层的静态内存区创建的第一静态变量;所述第一静态变量的结构类型为用于存储多种总线数据包的rxservice结构类型;

29、拷贝单元,用于将所述第一静态变量中的总线数据,去冗余拷贝到与所述总线数据长度一致的uint8*结构类型的指针变量中,得到总线数据包副本以及对应的指针,并清空所述第一静态变量中的数据;所述uint8*结构类型的指针变量位于所述缓存层的堆内存;

30、存储单元,用于将所述总线数据包副本对应的指针存储到预先构建的单向队列;

31、提取单元,用于响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针对应的总线数据包副本拷贝到第二静态变量,并释放所述总线数据包副本在缓存层占用的内存;所述第二静态变量预先在所述应用层构建,所述第二静态变量为rxservice结构类型。

32、优选的,所述获取单元,具体用于:

33、获取车辆总线接口卡设备封装总线数据包得到的usb数据帧;

34、基于usb应用协议,对所述usb数据帧进行截取和解析,得到所述总线数据包。

35、优选的,所述拷贝单元,具体用于:

36、利用字节对齐方式,计算所述第一静态变量中的总线数据实际占用的字节长度;

37、在所述缓存层的堆内存中,创建与所述第一静态变量中的总线数据实际占用的字节长度一致的uint8*结构类型的指针变量中;

38、基于字节对齐方式以及所述第一静态变量中的总线数据,对所述指针变量进行去冗余拷贝,得到总线数据包副本以及对应的指针;

39、清空所述第一静态变量中的数据。

40、优选的,所述提取单元,包括:

41、提取子单元,用于响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针强制转换为rxservice结构类型的指针;

42、拷贝子单元,用于采用差额拷贝的方式,将rxservice结构类型的指针对应的总线数据包副本拷贝至所述第二静态变量,并对所述第二静态变量剩余的字节长度进行填充;

43、释放子单元,用于释放所述总线数据包副本在缓存层占用的内存。

44、基于上述本专利技术实施例提供的一种总线数据的处理方法及装置,获取总线数据包;将所述总线数据包中的总线数据,赋值到预先在缓存层的静态本文档来自技高网...

【技术保护点】

1.一种总线数据的处理方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述获取总线数据包,包括:

3.根据权利要求1所述的方法,其特征在于,所述将所述第一静态变量中的总线数据,去冗余拷贝到与所述总线数据长度一致的uint8*结构类型的指针变量中,得到总线数据包副本以及对应的指针,并清空所述第一静态变量中的数据,包括:

4.根据权利要求1所述的方法,其特征在于,所述响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针对应的总线数据包副本差额拷贝到第二静态变量,并释放所述总线数据包副本在缓存层占用的内存,包括:

5.根据权利要求4所述的方法,其特征在于,所述采用差额拷贝的方式,将RxService结构类型的指针对应的总线数据包副本拷贝至所述第二静态变量,包括:

6.根据权利要求4所述的方法,其特征在于,所述释放所述总线数据包副本在缓存层占用的内存,包括:

7.一种总线数据的处理装置,其特征在于,所述装置包括:

8.根据权利要求7所述的装置,其特征在于,所述获取单元,具体用于:

9.根据权利要求7所述的装置,其特征在于,所述拷贝单元,具体用于:

10.根据权利要求7所述的装置,其特征在于,所述提取单元,包括:

...

【技术特征摘要】

1.一种总线数据的处理方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述获取总线数据包,包括:

3.根据权利要求1所述的方法,其特征在于,所述将所述第一静态变量中的总线数据,去冗余拷贝到与所述总线数据长度一致的uint8*结构类型的指针变量中,得到总线数据包副本以及对应的指针,并清空所述第一静态变量中的数据,包括:

4.根据权利要求1所述的方法,其特征在于,所述响应于应用层的提取操作,提取所述单向队列中的指针,将所述指针对应的总线数据包副本差额拷贝到第二静态变量,并释放所述总线数据包副本在缓存层占用的内存,包括...

【专利技术属性】
技术研发人员:赵晓亮刘振宇张学换
申请(专利权)人:北京经纬恒润科技股份有限公司
类型:发明
国别省市:

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

1