一种车辆诊断描述文件的自动修改方法及装置与流程

摘要: 本技术涉及车辆诊断,具体而言,涉及一种车辆诊断描述文件的自动修改方法及装置。背景技术:1、车辆诊断描述文件是用于定义电子控制单元诊断通信接口的标准化数据文件。诊...
一种车辆诊断描述文件的自动修改方法及装置与流程

本技术涉及车辆诊断,具体而言,涉及一种车辆诊断描述文件的自动修改方法及装置。

背景技术:

1、车辆诊断描述文件是用于定义电子控制单元诊断通信接口的标准化数据文件。诊断工具通过加载车辆诊断描述文件,实现与车辆各电子控制单元之间的诊断服务交互,如数据读取、故障码读取、输入输出控制等。车辆诊断描述文件采用可扩展标记语言格式存储,内部包含多层嵌套的元素结构,元素之间通过标识符相互引用,形成复杂的引用关系。

2、在相关技术中,当诊断需求发生变化时,对车辆诊断描述文件的更新主要采用两种方式。一种方式是由工程师人工修改车辆诊断描述文件中的文本,手动添加或修改诊断实例。另一种方式是根据更新后的诊断需求文件全量重新生成车辆诊断描述文件,覆盖原有文件。

3、人工修改方式效率低,且在诊断实例数量较多时容易遗漏引用关系的同步更新,导致修改后的车辆诊断描述文件内部引用关系不一致。全量重新生成方式虽然可以保证引用关系的一致性,但会覆盖车辆诊断描述文件中已有的经过人工验证的配置内容,造成已有配置的丢失。对车辆诊断描述文件进行自动增量修改时,内部引用关系容易被破坏,使得修改后的文件无法被诊断工具正确加载。

技术实现思路

1、本技术解决的问题是如何在对车辆诊断描述文件进行修改时,不破坏文件内部对象之间的引用关系。

2、为解决上述问题,本技术提供一种车辆诊断描述文件的自动修改方法及装置。

3、第一方面,本技术提供了一种车辆诊断描述文件的自动修改方法,包括:

4、获取目标诊断对象和车辆诊断描述文件,其中,所述车辆诊断描述文件包括诊断分类容器,所述诊断分类容器包括诊断实例;

5、根据所述目标诊断对象在诊断需求文件中的服务子功能组合,确定所述目标诊断对象所属的目标诊断分类容器;

6、在所述目标诊断分类容器中选取模板诊断实例,克隆所述模板诊断实例,生成所述目标诊断对象对应的新诊断实例,其中,所述模板诊断实例的属性包括引用属性和自有标识属性,所述引用属性的取值指向所述车辆诊断描述文件中的其他对象,所述自有标识属性的取值为诊断实例自身的标识符,克隆时保持所述引用属性的取值不变,将所述自有标识属性的取值替换为新标识符;

7、将所述新诊断实例写入所述目标诊断分类容器,获得修改后的车辆诊断描述文件。

8、可选地,所述获取目标诊断对象包括:

9、获取差异列表,所述差异列表记录诊断需求文件与所述车辆诊断描述文件之间,诊断对象的属性差异;

10、从所述差异列表中确定所述目标诊断对象。

11、可选地,所述根据所述目标诊断对象在诊断需求文件中的服务子功能组合,确定所述目标诊断对象所属的目标诊断分类容器包括:

12、当所述目标诊断对象为聚合多个子数据标识符的组合数据标识符时,确定所述目标诊断分类容器为标识信息容器;

13、当所述服务子功能组合包括输入输出控制服务时,确定所述目标诊断分类容器为输入输出控制容器;

14、当所述服务子功能组合同时包括数据读取服务和数据写入服务时,确定所述目标诊断分类容器为变体配置容器;

15、当所述服务子功能组合仅包括所述数据读取服务时,确定所述目标诊断分类容器为动态数据容器;

16、当所述服务子功能组合仅包括所述数据写入服务时,确定所述目标诊断分类容器为存储数据容器。

17、可选地,所述将所述自有标识属性的取值替换为新标识符包括:

18、通过负向后视正则表达式对所述模板诊断实例的属性名进行匹配,其中,以引用标识符结尾的属性名被所述负向后视正则表达式排除;

19、将未被排除的属性名对应的属性确定为所述自有标识属性,在所述模板诊断实例的文本中定位所述自有标识属性的赋值位置;

20、将所述赋值位置处的取值替换为所述新标识符。

21、可选地,所述方法还包括:根据所述差异列表对所述车辆诊断描述文件进行以下编辑操作中的至少一种:

22、删除所述差异列表指示的待删除诊断对象对应的诊断实例的实例块;

23、将所述差异列表指示的待替换诊断对象对应的诊断实例的实例块,替换为所述新诊断实例的实例块;

24、对于所述差异列表指示的字节长度变更的诊断对象,将所述诊断对象的数据引用替换为目标字节长度对应的数据对象的引用。

25、可选地,所述方法还包括:

26、删除所述新诊断实例中,所述差异列表指示的不支持的服务和所述不支持的服务对应的数据对象块,其中,每次删除后重新扫描所述车辆诊断描述文件的文本,获得更新后的匹配位置;基于所述更新后的匹配位置进行后续修改。

27、可选地,所述方法还包括:对所述车辆诊断描述文件进行的所述编辑操作按照行号降序排序;自所述车辆诊断描述文件的底部向上依次应用所述编辑操作。

28、可选地,所述目标诊断对象为故障码时,所述方法还包括:

29、将所述故障码对应的故障码记录同时写入所述车辆诊断描述文件中的各故障码记录容器,其中,所述各故障码记录容器不包括车载诊断故障码容器;每个所述故障码记录容器中的所述故障码记录具有独立的标识符。

30、可选地,在所述获得修改后的车辆诊断描述文件之后,还包括:

31、对所述修改后的车辆诊断描述文件重新进行解析,将重新解析获得的诊断数据与所述诊断需求文件再次比对;

32、在确认诊断对象标识符级别的差异清零后,输出所述修改后的车辆诊断描述文件。

33、第二方面,本技术提供了一种车辆诊断描述文件的自动修改装置,包括:

34、获取模块,用于获取目标诊断对象和车辆诊断描述文件,其中,所述车辆诊断描述文件包括诊断分类容器,所述诊断分类容器包括诊断实例;

35、确定模块,用于根据所述目标诊断对象在诊断需求文件中的服务子功能组合,确定所述目标诊断对象所属的目标诊断分类容器;

36、克隆模块,用于在所述目标诊断分类容器中选取模板诊断实例,克隆所述模板诊断实例,生成所述目标诊断对象对应的新诊断实例,其中,所述模板诊断实例的属性包括引用属性和自有标识属性,所述引用属性的取值指向所述车辆诊断描述文件中的其他对象,所述自有标识属性的取值为诊断实例自身的标识符,克隆时保持所述引用属性的取值不变,将所述自有标识属性的取值替换为新标识符;

37、写入模块,用于将所述新诊断实例写入所述目标诊断分类容器,获得修改后的车辆诊断描述文件。

38、本技术的车辆诊断描述文件的自动修改方法的有益效果是:

39、通过定位待修改对象、根据服务子功能组合确定目标诊断分类容器、选取模板诊断实例克隆生成新诊断实例、将属性区分为引用属性和自有标识属性并差异化处理、写入目标诊断分类容器的完整链路,形成引用完整性保持的增量修改方案。在增量修改过程中,通过保持引用属性取值不变而仅替换自有标识属性取值,从属性级别保证引用关系不被破坏,使修改后的车辆诊断描述文件内部引用关系保持一致,可被诊断工具正确加载,解决对车辆诊断描述文件进行增量修改时引用关系容易被破坏的问题。