一种车辆协议解析方法及系统与流程

文档序号:17923693发布日期:2019-06-15 00:16阅读:277来源:国知局
一种车辆协议解析方法及系统与流程

本发明涉及汽车领域,特别涉及一种车辆协议解析方法及系统。



背景技术:

车载终端匹配车辆时的一项重要工作就是要遵循车辆协议完成车辆上报数据的解析。

不同车辆如果协议不同,就需要对车载终端中软件协议解析部分进行修改,导致出现同一型号车载终端多个版本现象。也导致了开发工作重复,人力使用成本提升,后期维护困难。



技术实现要素:

本发明的目的是提供一种车辆协议解析方法及系统,以避免同一型号车辆的车载终端有多个版本现象。

为实现上述目的,本发明提供了如下方案:

一种车辆协议解析方法,所述解析方法包括如下步骤:

确定dbc文件中每个数据项的协议数据项描述词;

建立车载终端所需数据项的结构体数组;所述结构体数组的所需数据项包括数据项序号、can帧id、起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值;

根据所述协议数据项描述词确定结构体数组中每个所需数据项的所需数据项描述词;

获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数;

判断所述解析协议中每个数据项的id与所述结构体数组中与所述数据项具有相同数据项序号的所需数据项的id是否相同,得到第一判断结果;

若所述第一判断结果表示相同,则根据所述解析协议对can总线数据进行解析;

若所述第一判断结果表示不相同,则返回步骤“获取所述dbc文件中协议数据项描述词与第i个所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数”。

可选的,所述建立车载终端所需数据项的结构体数组,具体包括:

建立车载终端所需数据项的数据项序号;

基于所述数据项序号建立车载终端所需数据项的结构体数组。

可选的,所述获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,具体包括:

获取所述dbc文件中包含“bo_”关键字的数据项,得到第一解析协议;

获取所述第一解析协议中的第j个数据项的协议数据项描述词;

判断第i个所需数据项的所需数据项描述词是否与所述第一解析协议中第j个数据项的协议数据项描述词是否相同,得到第二判断结果;

若所述第二判断结果表示相同,则利用第i个所需数据项的数据项序号对第j个数据项进行编号,得到第i个所需数据项的解析方式;

若所述第二判断结果表示不相同,则令j的数值增加1,返回步骤“获取所述第一解析协议中的第j个数据项的协议数据项描述词”。

可选的,所述根据所述解析协议对can总线数据进行解析,具体包括:

根据所述解析协议对所述can总线中的数据进行解析,得到解析后的数据;

根据所述解析后的数据对应的解析协议中数据项的数据项序号,将所述解析后的数据赋值到所述结构体数组中具有相同数据项序号的所需数据项中。

一种车辆协议解析系统,所述解析系统包括:

协议数据项描述词确定模块,用于确定dbc文件中每个数据项的协议数据项描述词;

结构体数组建立模块,用于建立车载终端所需数据项的结构体数组;所述结构体数组的所需数据项包括数据项序号、can帧id、起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值;

所需数据项描述词确定模块,用于根据所述协议数据项描述词确定结构体数组中每个所需数据项的所需数据项描述词;

解析协议获取模块,用于获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数;

第一判断模块,用于判断所述解析协议中每个数据项的id与所述结构体数组中与所述数据项具有相同数据项序号的所需数据项的id是否相同,得到第一判断结果;

第一判断结果处理模块,用于若所述第一判断结果表示相同,则根据所述解析协议对can总线数据进行解析;若所述第一判断结果表示不相同,则调用解析协议获取模块,执行步骤“获取所述dbc文件中协议数据项描述词与第i个所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数”。

可选的,所述结构体数组建立模块,具体包括:

数据项序号建立子模块,用于建立车载终端所需数据项的数据项序号;

结构体数组建立子模块,用于基于所述数据项序号建立车载终端所需数据项的结构体数组。

可选的,所述解析协议获取模块,具体包括:

第一解析协议获取子模块,用于获取所述dbc文件中包含“bo_”关键字的数据项,得到第一解析协议;

描述词获取子模块,用于获取所述第一解析协议中的第j个数据项的协议数据项描述词;

第二判断子模块,用于判断第i个所需数据项的所需数据项描述词是否与所述第一解析协议中第j个数据项的协议数据项描述词是否相同,得到第二判断结果;

第二判断结果处理子模块,用于若所述第二判断结果表示相同,则利用第i个所需数据项的数据项序号对第j个数据项进行编号,得到第i个所需数据项的解析方式;若所述第二判断结果表示不相同,则令j的数值增加1,调用描述词获取子模块,执行步骤“获取所述第一解析协议中的第j个数据项的协议数据项描述词”。

可选的,所述第一判断结果处理模块,具体包括:

解析子模块,用于根据所述解析协议对所述can总线中的数据进行解析,得到解析后的数据;

映射子模块,用于根据所述解析后的数据对应的解析协议中数据项的数据项序号,将所述解析后的数据赋值到所述结构体数组中具有相同数据项序号的所需数据项中。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明公开了一种车辆协议解析方法及系统。所述车辆协议解析方法通过统一确定dbc文件中每个数据项的协议数据项描述词,车载终端仅需建立所需数据项的结构体数组,并对每个所需数据项采用数据项序号进行编号,建立对应机制,采用采用所需数据项的所需数据项描述词与协议数据项描述词的对应关系确定每个所需数据项的解析方式,并根据数据项进行解析方式的对应,得到车载终端的所需数据项的结构体对应的解析协议,即,根据每个车辆的结构体数组建立对应的解析协议,实现车辆上报数据的解析。本发明将对车载终端的修改,转移到根据车载终端确定对应的解析协议(dbc),即,从车载终端软件的修改转移到dbc文件的修改,实现了车载终端版本的统一,而且简化了开发流程、缩减了开发周期。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种车辆协议解析方法的结构图;

图2为本发明提供的一种车辆协议解析系统的结构图。

具体实施方式

本发明的目的是提供一种车辆协议解析方法及系统,以避免同一型号车辆的车载终端有多个版本现象。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对发明作进一步详细的说明。

实施例1

本发明实施例1提供了一种车辆协议解析方法。

如图1所示,所述解析方法包括如下步骤:

步骤101,确定dbc文件中每个数据项的协议数据项描述词;

步骤102,建立车载终端所需数据项的结构体数组;所述结构体数组的所需数据项包括数据项序号、can帧id、起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值;

步骤103,根据所述协议数据项描述词确定结构体数组中每个所需数据项的所需数据项描述词;

步骤104,获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数;

步骤105,判断所述解析协议中每个数据项的id与所述结构体数组中与所述数据项具有相同数据项序号的所需数据项的id是否相同,得到第一判断结果;

步骤106,若所述第一判断结果表示相同,则根据所述解析协议对can总线数据进行解析;

步骤107,若所述第一判断结果表示不相同,则返回步骤“获取所述dbc文件中协议数据项描述词与第i个所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数”,直到扫描完成dbc文件中所有的数据项(对应图1中的返回箭头)。

本发明的车辆协议解析方法通过统一确定dbc文件中每个数据项的协议数据项描述词,车载终端仅需建立所需数据项的结构体数组,并对每个所需数据项采用数据项序号进行编号,建立对应机制,采用采用所需数据项的所需数据项描述词与协议数据项描述词的对应关系确定每个所需数据项的解析方式,并根据数据项进行解析方式的对应,得到车载终端的所需数据项的结构体对应的解析协议,即,根据每个车辆的结构体数组建立对应的解析协议,实现车辆上报数据的解析。本发明将对车载终端的修改,转移到根据车载终端确定对应的解析协议(dbc),即,从车载终端软件的修改转移到dbc文件的修改,实现了车载终端版本的统一,而且简化了开发流程、缩减了开发周期。

实施例2

本发明实施例2提供一种车辆协议解析方法的优选的实施方式。

步骤102所述建立车载终端所需数据项的结构体数组,具体包括:建立车载终端所需数据项的数据项序号;基于所述数据项序号建立车载终端所需数据项的结构体数组。

步骤104所述获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,具体包括:获取所述dbc文件中包含“bo_”关键字的数据项,得到第一解析协议;获取所述第一解析协议中的第j个数据项的协议数据项描述词;判断第i个所需数据项的所需数据项描述词是否与所述第一解析协议中第j个数据项的协议数据项描述词是否相同,得到第二判断结果;若所述第二判断结果表示相同,则利用第i个所需数据项的数据项序号对第j个数据项进行编号,得到第i个所需数据项的解析方式;若所述第二判断结果表示不相同,则令j的数值增加1,返回步骤“获取所述第一解析协议中的第j个数据项的协议数据项描述词”,直到j的值达到所述第一解析协议中数据项的个数。

步骤106所述根据所述解析协议对can总线数据进行解析,具体包括:根据所述解析协议对所述can总线中的数据进行解析,得到解析后的数据;根据所述解析后的数据对应的解析协议中数据项的数据项序号,将所述解析后的数据赋值到所述结构体数组中具有相同数据项序号的所需数据项中。

实施例3

本发明实施例3提供一种车辆协议解析方法的一个具体的实施方式。

具体的,所述解析方法包括如下步骤:

步骤1:在标准dbc(databaseofcan,can协议数据库)文件基础上,统一车辆生产厂家对dbc文件包含协议数据项的描述词定义及每个数据项解析方式。车载终端对dbc文件识别时依据统一确定的数据项描述词建立不同的数据项的解析方式。例如:车速,其数据项描述词定义为speed。

步骤2:车载终端建立对需求车辆数据项固定序号。例如:车速,数据项序号为1;里程数据项序号为2等。

步骤3:实现车载终端启动初始化时对dbc文件解析功能。主要包括构建需求数据项结构体数组,对数据项的can帧id识别,数据项解析方法识别,需求数据项映射。

3.1、构建车载终端所需数据项的数据结构体数组。该数据结构体包括:数据项序号,can帧id,起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值。

3.2、can帧id识别:车载终端程序上电运行后,首先读取dbc文件内容,根据dbc文件格式标准,判断读取到的字符中是否包含信息“bo_“(信息简称)关键字,进而获取到bo_后续字段中can帧id。记录该帧id到当前数据项结构体中。

3.3、根据信号“sg_“(sg为信号简称)关键字获取数据项描述词定义,以及该数据项解析方法,包括:起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值。记录该帧id到当前数据项结构体中。

3.4、将3.3步骤中读取到的数据项描述词与车载终端预置的需求数据项描述词进行比对,完全匹配则证明该数据项是车载终端需求数据项。将该需求数据项固定序号记录到当前数据项结构体中。实现dbc文件中数据项通过预置固定序号映射到车载终端需求数据项。如不匹配则跳回3.1步骤开始循环继续扫描下一数据项。

3.5、构建的需求数据项数组序号累加,然后重复3.1步骤进行下一数据项扫描,直至dbc文件扫描完成。

步骤4:车载终端从电动车辆can总线获取数据包后,提取该数据包帧id与步骤3建立的数据项结构体数组中的每一个需求项帧id进行比对。完全匹配则表示该数据包包含车载终端需求的数据项需要解析。从源数据包中按该数据项的解析方式(步骤3.3中所示)进行数据解析。解析后的数据根据该数据项映射序号赋值到对应的需求数据项中。从而完成数据解析。

实施例4

本发明实施例4提供一种车辆协议解析系统。

如图2所示,所述解析系统包括:

协议数据项描述词确定模块201,用于确定dbc文件中每个数据项的协议数据项描述词;

结构体数组建立模块202,用于建立车载终端所需数据项的结构体数组;所述结构体数组的所需数据项包括数据项序号、can帧id、起始位,数据长度,数据格式,是否有符号数据,精度,偏移量,最小值和最大值;

所需数据项描述词确定模块203,用于根据所述协议数据项描述词确定结构体数组中每个所需数据项的所需数据项描述词;

解析协议获取模块204,用于获取所述dbc文件中协议数据项描述词与第i个所需数据项的所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数;

第一判断模块205,用于判断所述解析协议中每个数据项的id与所述结构体数组中与所述数据项具有相同数据项序号的所需数据项的id是否相同,得到第一判断结果;

第一判断结果处理模块206,用于若所述第一判断结果表示相同,则根据所述解析协议对can总线数据进行解析;若所述第一判断结果表示不相同,则调用解析协议获取模块,执行步骤“获取所述dbc文件中协议数据项描述词与第i个所需数据项描述词相同的数据项,利用第i个所需数据项的数据项序号对所述相同的数据项进行编号,得到第i个所需数据项的解析方式,令i=1,2,……i,获得每个所需数据项的解析方式,得到解析协议,其中,i为结构体数组中所需数据项的个数”。

实施例5

本发明实施例5提供一种车辆协议解析系统的优选的实施方式。

所述结构体数组建立模块202,具体包括:数据项序号建立子模块,用于建立车载终端所需数据项的数据项序号;结构体数组建立子模块,用于基于所述数据项序号建立车载终端所需数据项的结构体数组。

所述解析协议获取模块204,具体包括:第一解析协议获取子模块,用于获取所述dbc文件中包含“bo_”关键字的数据项,得到第一解析协议;描述词获取子模块,用于获取所述第一解析协议中的第j个数据项的协议数据项描述词;第二判断子模块,用于判断第i个所需数据项的所需数据项描述词是否与所述第一解析协议中第j个数据项的协议数据项描述词是否相同,得到第二判断结果;第二判断结果处理子模块,用于若所述第二判断结果表示相同,则利用第i个所需数据项的数据项序号对第j个数据项进行编号,得到第i个所需数据项的解析方式;若所述第二判断结果表示不相同,则令j的数值增加1,调用描述词获取子模块,执行步骤“获取所述第一解析协议中的第j个数据项的协议数据项描述词”。

所述第一判断结果处理模块205,具体包括:解析子模块,用于根据所述解析协议对所述can总线中的数据进行解析,得到解析后的数据;映射子模块,用于根据所述解析后的数据对应的解析协议中数据项的数据项序号,将所述解析后的数据赋值到所述结构体数组中具有相同数据项序号的所需数据项中。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明针对不同车辆如果协议不同,就需要对车载终端中软件协议解析部分进行修改,导致出现同一型号车载终端多个版本现象。也导致了开发工作重复,人力使用成本提升,后期维护困难,这一问题,基于车辆can协议自适应方法,将在车载终端软件中进行的协议解析修改转移到对车辆dbc文件修改。车载终端只需要确定对需求数据项关键词的定义,建立内部数据解析机制和映射机制。根据统一确定的需求数据项关键词去匹配不同车辆的dbc文件。从而达到简化开发流程,缩减开发周期,实现车载终端版本统一,减少维护成本的目的。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

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