一种protobuf的解析方法、装置、设备及介质与流程

文档序号:36639196发布日期:2024-01-06 23:24阅读:20来源:国知局
一种protobuf的解析方法、装置、设备及介质与流程

本发明涉及protobuf数据解析,具体涉及一种protobuf的解析方法、装置、设备及介质。


背景技术:

1、随着自动驾驶技术的快速发展,目前车辆搭载了越来越多的控制器,搭载的控制器负责的功能业务也越来越复杂,不管是控制器之间还是控制器内部都伴随着大量的数据交互。因此,监控控制器内部的数据信息对于整个控制器的开发和测试阶段都尤为重要。

2、protobuf也就是protocol buffers,是开发的一种跨语言和平台的序列化数据结构的方式,是一种灵活、高效的用于序列化数据的协议。与xml和json格式相比,protobuf更小、更快、更便捷,在汽车数据通讯领域经常得以应用。而canoe是开发出的一款总线开发环境,是一款网络和ecu开发、测试和分析的专业工具,常用于汽车总线开发测试。canoe支持多种以太网数据包格式的解析,但是不支持解析除mqtt协议外(其他协议)控制器发送的protobuf数据包,所以无法对控制器内部的信号进行监控和测试。


技术实现思路

1、有鉴于此,本发明实施例提供一种protobuf的解析方法、装置、设备及介质。旨在直接通过canoe对控制器发送的protobuf数据包进行解析,以提高对控制器内部信号进行监控和测试的效率。

2、本发明实施例第一方面提供了一种protobuf的解析方法,应用于canoe,所述方法包括:

3、启动canoe工程并在所述canoe工程中导入canoe结构体系统变量文件和运行程序集文件;

4、基于所述canoe结构体系统变量文件,通过所述程序集文件对接收的protobuf数据包进行处理,以将所述protobuf数据包中的各个字段数据转化为canoe结构体系统变量;

5、通过所述canoe的窗口实时显示所述canoe结构体系统变量。

6、可选的,所述基于所述canoe结构体系统变量文件,通过所述程序集文件对接收的protobuf数据包进行处理,以将所述protobuf数据包中的各个字段数据转化为canoe结构体系统变量,包括:

7、通过所述程序集文件中的解析代码对接收的protobuf数据包进行解析,获得所述protobuf数据包中protobuf消息体对应的结构体;

8、通过所述程序集文件中的目标调用代码调用对应的源代码以调用对应的反序列化接口对对应的结构体进行反序列化处理,获得所述结构体对应的protobuf对象;

9、通过所述程序集文件中的映射代码确定所述protobuf对象的字段数据,并将所述字段数据映射至结构体数组;

10、基于所述canoe结构体系统变量文件,将所述结构体数组赋值给所述protobuf对象对应的canoe结构体系统变量。

11、可选的,所述通过所述程序集文件中的解析代码对接收的protobuf数据包进行解析,获得所述protobuf数据包中protobuf消息体对应的结构体,包括:

12、对接收的protobuf数据包进行解析,获得所述protobuf数据包中的protobuf消息体的目标信息,所述目标信息至少包括:标识消息体名称的topic名称、时间戳、protobuf消息体数据和消息体数据长度;

13、根据所述protobuf消息体的目标信息,构建所述protobuf消息体对应的结构体。

14、可选的,所述通过所述程序集文件中的目标调用代码调用对应的源代码以调用对应的反序列化接口对对应的结构体进行反序列化处理,获得所述结构体对应的protobuf对象,包括:

15、根据所述结构体中的topic名称,确定调用代码中与所述topic名称对应的目标调用代码;

16、通过所述目标调用代码调用对应的源代码;

17、基于调用的所述源代码调用对应的反序列化接口对对应的结构体中的protobuf消息体数据进行反序列化处理,获得所述结构体对应的protobuf对象。

18、可选的,所述通过所述程序集文件中的映射代码确定所述protobuf对象的字段数据,并将所述字段数据映射至结构体数组,包括:

19、根据所述protobuf对象对应的topic名称,读取基于proto文件生成的文件信息表格中与所述topic名称对应的第一文件信息;

20、根据所述protobuf对象和所述第一文件信息,确定所述protobuf对象的字段数据;

21、根据所述文件信息表格中各字段定义的数据类型占用的内存字节长度,确定所述protobuf对象的数据长度;

22、将所述字段数据存入与所述数据长度相等的结构体数组。

23、可选的,所述基于所述canoe结构体系统变量文件,将所述结构体数组赋值给所述protobuf对象对应的canoe结构体系统变量,包括:

24、调用canoe系统接口获取到canoe结构体系统变量文件,所述canoe结构体系统变量文件为记录protobuf消息体的各个字段与canoe系统中各个变量之间对应关系的文件;

25、基于所述canoe系统接口和所述canoe结构体系统变量文件,将所述结构体数组赋值给所述protobuf对象对应的canoe结构体系统变量。

26、可选的,基于proto文件生成的文件信息表格,包括:

27、获取数据发送方使用的proto文件;

28、通过提取代码以预设提取顺序,对所述proto文件中的目标文件信息进行提取;

29、基于提取的所述目标文件信息生成对应的文件信息表格,所述目标文件信息至少包括:文件名、命名空间、关联文件信息、消息类名、重复修饰符、字段类型、字段名、字段值、各字段对应的注释信息、枚举类和字段信息。

30、可选的,所述源代码的构建,包括:

31、通过protobuf编译工具对数据发送方使用的proto文件进行处理,生成分别与各个protobuf消息体对应的源代码;其中,所述源代码包括用于对所述源代码对应的protobuf消息体进行反序列化的反序列化接口。

32、可选的,所述解析代码的构建,包括:

33、根据protobuf数据包,确定所述protobuf数据包定义的数据包格式信息;

34、根据所述数据包格式信息,构建解析代码。

35、可选的,所述调用代码的构建包括:

36、根据数据发送方使用的proto文件,确定所述proto文件中的protobuf消息体的消息类;

37、根据所述消息类,构建与所述消息类对应的调用代码。

38、可选的,所述canoe结构体系统变量文件的构建,包括:

39、通过对接收的proto文件进行解析,获得所述proto文件中各个protobuf消息体;

40、根据所述各个protobuf消息体和文件信息表格,确定所述proto文件中的各个字段信息和对应的字段信息长度;

41、基于canoe帮助手册中系统变量的格式定义和所述各个字段信息和对应的字段信息长度,构建映射所述各个字段信息的canoe结构体系统变量文件。

42、本发明实施例第二方面提供了一种protobuf的解析装置,所述装置包括:

43、启动运行模块,用于启动canoe工程并在所述canoe工程中导入canoe结构体系统变量文件和运行程序集文件;

44、解析映射模块,用于基于所述canoe结构体系统变量文件,通过所述程序集文件对接收的protobuf数据包进行处理,以将所述protobuf数据包中的各个字段数据转化为canoe结构体系统变量;

45、显示模块,用于通过所述canoe的窗口实时显示所述canoe结构体系统变量。

46、本发明实施例第三方面提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如本发明第一方面所述的一种protobuf的解析的方法中的步骤。

47、本发明实施例第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明第一方面所述的一种protobuf的解析的方法中的步骤。

48、本发明实施例提供的protobuf的解析方法,首先启动canoe工程并在所述canoe工程中导入canoe结构体系统变量文件和运行程序集文件;基于canoe结构体系统变量文件,通过运行的程序集文件对接收的protobuf数据包进行处理,以将protobuf数据包中的各个字段数据转化为canoe结构体系统变量;通过canoe的窗口实时显示转化的canoe结构体系统变量。由此,可通过canoe直接解析控制器发送的protobuf数据包,将其中的字段信息转换成一一映射的canoe结构体系统变量的字段信息,实现了由canoe直接对控制发送的内部模块信号的监控和测试,从而提高了对控制器内部信号进行监控和测试的效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1