CN112445797B - 车辆诊断数据引用方法、装置、终端设备及存储介质 - Google Patents

车辆诊断数据引用方法、装置、终端设备及存储介质 Download PDF

Info

Publication number
CN112445797B
CN112445797B CN202011266856.5A CN202011266856A CN112445797B CN 112445797 B CN112445797 B CN 112445797B CN 202011266856 A CN202011266856 A CN 202011266856A CN 112445797 B CN112445797 B CN 112445797B
Authority
CN
China
Prior art keywords
odx
class object
data
short name
class
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011266856.5A
Other languages
English (en)
Other versions
CN112445797A (zh
Inventor
刘均
邓蒙召
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Launch Technology Co Ltd
Original Assignee
Shenzhen Launch Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Launch Technology Co Ltd filed Critical Shenzhen Launch Technology Co Ltd
Priority to CN202011266856.5A priority Critical patent/CN112445797B/zh
Publication of CN112445797A publication Critical patent/CN112445797A/zh
Application granted granted Critical
Publication of CN112445797B publication Critical patent/CN112445797B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请适用于车辆技术领域,提供了一种车辆诊断数据引用方法、装置、终端设备及存储介质,包括:获取目标短名称,该目标短名称为待引用的ODX数据对应的短名称;根据该目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;其中ODX类对象中包含局部容器;根据该目标短名称及该第一ODX类对象的该局部容器,确定第二ODX类对象的指针,该第二ODX类对象为该第一ODX类对象的下一级ODX类对象中短名称与该目标短名称相匹配的ODX类对象;根据该第二ODX类对象的指针引用该第二ODX类对象,以实现ODX数据的引用。本申请实施例能够准确地引用ODX数据。

Description

车辆诊断数据引用方法、装置、终端设备及存储介质
技术领域
本申请属于车辆技术领域,尤其涉及一种车辆诊断数据引用方法、装置、终端设备及存储介质。
背景技术
开放式诊断数据交换(Open Diagnostic Data Exchange,ODX)规定了汽车诊断行业的标准诊断数据格式,当诊断仪诊断不同车型的车或者不同的电子控制单元(Electronic Control Unit,ECU)时,只需加载适配这个车型或者ECU的ODX源文件即可,无需对诊断仪做任何改变。
目前,在将ODX源文件应用于诊断仪时,通常是将ODX源文件中的各个ODX数据解析为ODX类对象存储于诊断仪的程序中。之后,当诊断仪需要引用ODX数据进行当前的车辆诊断时,是通过获取对应的该ODX类对象的信息来实现ODX数据的引用的。现有方式中,引用ODX数据的方式通常分为两种,一种是通过ODX数据的唯一标识号(ID)来实现ODX数据的引用,一种是通过ODX数据的短名称(SHORT-NAME)来实现ODX数据的引用。由于唯一标识号能够唯一标识ODX数据,因此当通过ODX数据进行ODX数据的引用时,能够唯一地定位到对应的ODX类对象,准确地实现ODX数据的引用。然而,当通过ODX数据的短名称来实现ODX数据的引用时,由于不同的ODX数据可能存在相同的短名称,因此可能导致ODX数据的引用错误。
发明内容
有鉴于此,本申请实施例提供了一种车辆诊断数据引用方法、装置、终端设备及存储介质,以解决现有技术中如何准确地引用ODX数据的问题。
本申请实施例的第一方面提供了一种车辆诊断数据引用方法,包括:
获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称;
根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象;
根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象;
根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
可选地,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及在所述ODX类对象中创建用于存储所述下一级ODX类对象的短名称的局部容器。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称与唯一标识号的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称及所述第一ODX类对象的所述局部容器,将所述局部容器中与所述目标短名称对应存储的唯一标识号确定为所述第二ODX类对象的唯一标识号;
根据所述第二ODX类对象的唯一标识号,从预设的全局容器中查找与所述第二ODX类对象的唯一标识号对应存储的指针作为第二ODX类对象的指针;其中,所述全局容器为存储各个层级的所有ODX类对象的唯一标识号及所述ODX类对象的指针的对应关系的容器。
可选地,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
将所述ODX类对象的唯一标识号与所述ODX类对象的指针对应存储至所述全局容器中;其中,所述ODX类对象的唯一标识号包括所述ODX类对象对应的ODX数据的属性信息中包含的原始唯一标识号,所述原始唯一标识号为存在于所述ODX源文件的唯一标识号;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的唯一标识号的对应关系存储至所述局部容器中;其中,所述下一级ODX类对象的唯一标识号包括所述下一级ODX类对象对应的下一级ODX数据的属性信息中包含的原始唯一标识号。
可选地,在所述解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息之后,还包括:
若所述ODX类对象对应的所述ODX数据的属性信息中不包含所述原始唯一标识号,则为所述ODX类对象创建预设唯一标识号;
对应地,所述全局容器中存储的ODX类对象的唯一标识号还包括所述ODX类对象的预设唯一标识号;
对应地,所述局部容器中存储的下一级ODX类对象的唯一标识号还包括所述下一级ODX类对象的预设唯一标识号。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称及指针的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称,在所述第一ODX类对象的所述局部容器中查找与所述目标短名称对应存储的指针作为所述第二ODX类对象的指针。
可选地,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的指针对应存储至所述局部容器中。
本申请实施例的第二方面提供了一种车辆诊断数据引用装置,包括:
目标短名称获取单元,用于获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称;
第一ODX类对象定位单元,用于根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象;
指针确定单元,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象;
引用单元,用于根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
局部容器创建单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及在所述ODX类对象中创建用于存储所述下一级ODX类对象的短名称的局部容器。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称与唯一标识号的对应关系的容器;对应地,所述指针确定单元包括唯一标识号确定模块及指针确定模块:
唯一标识号确定模块,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,将所述局部容器中与所述目标短名称对应存储的唯一标识号确定为所述第二ODX类对象的唯一标识号;
指针确定模块,用于根据所述第二ODX类对象的唯一标识号,从预设的全局容器中查找与所述第二ODX类对象的唯一标识号对应存储的指针作为第二ODX类对象的指针;其中,所述全局容器为存储各个层级的所有ODX类对象的唯一标识号及所述ODX类对象的指针的对应关系的容器。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
全局容器存储单元,用于将所述ODX类对象的唯一标识号与所述ODX类对象的指针对应存储至所述全局容器中;其中,所述ODX类对象的唯一标识号包括所述ODX类对象对应的ODX数据的属性信息中包含的原始唯一标识号,所述原始唯一标识号为存在于所述ODX源文件的唯一标识号;
第一局部容器存储单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的唯一标识号的对应关系存储至所述局部容器中;其中,所述下一级ODX类对象的唯一标识号包括所述下一级ODX类对象对应的下一级ODX数据的属性信息中包含的原始唯一标识号。
可选地,所述车辆诊断数据引用装置还包括:
预设唯一标识号创建单元,用于若所述ODX类对象对应的所述ODX数据的属性信息中不包含所述原始唯一标识号,则为所述ODX类对象创建预设唯一标识号;
对应地,所述全局容器中存储的ODX类对象的唯一标识号还包括所述ODX类对象的预设唯一标识号;
对应地,所述局部容器中存储的下一级ODX类对象的唯一标识号还包括所述下一级ODX类对象的预设唯一标识号。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称及指针的对应关系的容器;对应地,所述指针确定单元,具体用于根据所述目标短名称,在所述第一ODX类对象的所述局部容器中查找与所述目标短名称对应存储的指针作为所述第二ODX类对象的指针。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
第二局部容器存储单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的指针对应存储至所述局部容器中。
本申请实施例的第三方面提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,当所述处理器执行所述计算机程序时,使得终端设备实现如所述车辆诊断数据引用方法的步骤。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得终端设备实现如所述车辆诊断数据引用方法的步骤。
本申请实施例的第五方面提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面中任一项所述的车辆诊断数据引用方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:本申请实施例中,在获取待引用的ODX数据对应的短名称(即目标短名称)后,能够根据该目标短名称从指定层级的ODX类对象开始逐级遍历各个ODX类对象,从而准确地定位到位于该指定层级下的第一ODX类对象,缩小目标短名称的搜索范围。之后,由于在该第一ODX类对象之下的各个下一级ODX类对象中,短名称具有局部的唯一性,因此通过该第一ODX类对象中用于存储该第一ODX类对象对应的下一级ODX类对象的短名称的局部容器,能够准确地查找到与目标短名称一致的ODX类对象作为第二ODX类对象的指针,该第二ODX类对象即为待引用的ODX数据对应的ODX类对象,通过该第二ODX类对象的指针能够准确地引用该第二ODX类对象,从而准确地实现ODX数据的引用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种车辆诊断数据引用方法对应的应用场景示意图;
图2是本申请实施例提供的一种ODX源文件中的ODX数据的示意图;
图3是本申请实施例提供的车辆诊断数据引用方法的实现流程示意图;
图4是本申请实施例提供的另一种ODX源文件中的ODX数据的示意图;
图5是本申请实施例提供的一种车辆诊断数据引用装置的示意图;
图6是本申请实施例提供的终端设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
为了说明本申请所述的技术方案,下面通过具体实施例来进行说明。
图1示出了本申请实施例的车辆诊断数据引用方法对应的应用场景示意图,包括诊断仪11及车辆12。当诊断仪11需要对车辆12进行车辆诊断时,该诊断仪11与车辆12的车载自动诊断系统(On Board Diagnostics,OBD)接口121连接,并载入该车辆12的厂家提供的ODX源文件,之后解析该ODX源文件,为ODX源文件的各个ODX数据创建对应的ODX类对象。其中,ODX源文件具体包括不同层级、不同ECU对应的多个ODX源文件。在各个ODX源文件中,每个ODX数据基本都有对应的短名称,该短名称写入为该ODX数据对应创建的ODX类对象中。当需要对车辆进行诊断时,需要引用ODX数据里的内容进行指令码、故障码的解析、数据格式转换,此时,可以根据短名称来定位该诊断仪中存储的与所要引用的ODX数据对应的ODX对象的指针,通过返回该ODX类对象的指针来实现ODX数据的引用。
具体地,上述ODX源文件为可扩展标记语言XML格式文件,不同类型的ODX数据均以XML标签进行封装,该ODX数据具体可以包括ECU-VARIANT、DIAG-DATA-DICTIONARY-SPEC、DTC-DOPS、DTC-DOP、DTCS和DTC等逐级嵌套的ODX数据,例如图2所示。其中,ECU-VARIANT表示一个特化的ECU对象;DIAG-DATA-DICTIONARY-SPEC表示诊断数据词典集,其中包含各种简单类型以及复杂类型的DOP集合(Data Object Property,可以简单理解为算法相关的数据),被其他诊断参数引用,参与计算ECU回复的原始数据,得出物理值显示到用户界面;DTC(Diagnostic Trouble Code)诊断故障代码,简称故障码,DTCS表示DTC的集合;DTC-DOP表示一条具体的故障码相关的DOP,DTC-DOPS表示一个DTC-DOP的集合。
诊断仪11获取上述的XML格式的ODX源文件后,依次为每一级的ODX数据创建对应的ODX类对象,通过该ODX类对象存储XML标签中封装的ODX数据的内容。其中,ODX类对象为诊断仪的程序语言中的数据对象,例如C++对象。示例性地,对于图2中“DTC-DOP”类型的ODX数据,在诊断仪的C++程序中会对应创建一个DTC-DOP的C++对象作为DTC-DOP类型数据对应的ODX类对象(简称为DTC-DOP类对象)。同时,将图2的DTC-DOP标签内的数据存储至该DTC-DOP类对象中。具体地,在该DTC-DOP类对象中分别定义各个字符串类型string变量来分别存储图2中的原始唯一标识ID、相对标识OID、短名称SHORT-NAME、长名称LONG-NAME,以及通过一个DIAG-CODED-TYPE类型的对象存储图2中DIAG-CODED-TYPE类型标签中的数据等,以此类推。之后,诊断仪在获取到目标短名称后,就可以根据该目标短名称(例如图2中的“DTCRecord”)逐级查找各个ODX类对象,定位第一ODX类对象(例如“DTCRecord”对应的DTC-DOP类对象的上一级类对象——DTC-DOP类对象),再最终从第一ODX类对象的下一级ODX类对象中找出与该目标短名称匹配的第二ODX类对象(即DTC-DOP类对象),返回该第二ODX类对象的指针,即可实现对该目标短名称对应的ODX数据的引用。
实施例一:
图3示出了本申请实施例提供的一种车辆诊断数据引用方法的流程示意图,本申请实施例的执行主体为终端设备,具体可以为诊断仪,详述如下:
在S301中,获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称。
本申请实施例中,目标短名称为待引用的ODX数据对应的短名称(SHORT-NAME),该目标短名称具体可以根据当前选择的诊断功能所确定。例如,当前选择的诊断功能为读故障码功能,则确定当前需要引用用于解析故障码的一条ODX数据,该ODX数据对应的短名称为“DTCRecord”,即将“DTCRecord”确定为当前的目标短名称。具体地,可以提前预存诊断功能与短名称的对应关系,当接收到选择指令确定诊断功能后,根据该预存的对应关系,即可确定当前的目标短名称。
在S302中,根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象。
本申请实施例中,指定层级为根据当前待诊断的ECU确定的层级,具体为待诊断的ECU对应的ECU变量层(ECU-VARIANT,EV)。例如,若确定当前待诊断的ECU为发动机管理系统(Engine Management System,EMS),则确定当前的指定层级EMS系统对应的EV层为指定层级,具体为短名称为“EV-EMS”的ECU-VARIANT层,如图2所示。
本申请实施例中,如对上述应用场景的描述,ODX源文件中的各级ODX数据都在诊断仪获取到该ODX源文件后逐级创建对应的ODX类对象,用于存储各级ODX数据中的具体内容。除此之外,对于一个ODX类对象来说,若该ODX类对象包含下一级ODX类对象(即位于该ODX类对象的下一级的ODX类对象),并且包含的下一级ODX类对象存在短名称,则还为该ODX类对象提前创建局部容器,用于存储该ODX类对象所包含的的下一级ODX类对象的短名称。例如,对照图2,解析得到的DTC-DOPS类对象的下一级ODX类对象为DTC-DOP类对象,而DTC-DOP类对象具有短名称属性信息,因此在DTC-DOPS类对象中创建局部容器,用于存储位于DTC-DOPS类对象下一级的DTC-DOP类对象的短名称。又如,对于解析得到的DTCS类对象,存在下一级ODX类对象——DTC类对象(实际上一个DTCS类对象的下一级包括了多个DTC类对象,图中只示出了一个DTC数据作为示例),且DTC类对象具有短名称属性信息,因此在DTCS类对象中也对应创建了局部容器,用于存储位于DTCS类对象下一级的各个DTC类对象的短名称。
在确定了目标短名称及指定层级后,根据目标短名称从指定层级的ODX类对象按照解析得到的各级ODX类对象的嵌套顺序遍历各级ODX类对象。在遍历时,若当前层级ODX类对象存在局部容器,则先查找该ODX类对象的局部容器是否存在与目标短名称相匹配的项,若存在,则将该ODX类对象确定为第一ODX类对象,该第一ODX类对象的下一级ODX类对象中存在与该短名称相匹配的项。换句话来说,该第一ODX类对象为目标短名称对应的ODX类对象的上一级ODX类对象。
示例性地,对照图2,若当前的目标短名称为“DTCRecord”,从当前的指定层级EV_EMS层(即短名称为EV_EMS对应的ECU-VRAIANT层)对应的ODX类对象开始,逐级遍历DIAG-DATA-DICTIONARY-SPEC类对象、DCT-DOPS类对象,此时检测该DTC-DOPS类对象的局部容器,查找到该局部容器中存在与目标短名称“DTCRecord”匹配的项,因此此时将该DTC-DOPS类对象确定为第一ODX类对象。
通过步骤S302,从指定层级对应ODX类对象准确地逐级遍历,准确地定位到目标短名称对应的ODX类对象的上一级ODX类对象——第一ODX类对象,从而缩小ODX类对象的查找范围。在该第一ODX类对象的范围内,目标短名称具有局部唯一性,即,位于第一ODX类对象下一级的各个ODX类对象对应的短名称信息均不相同,因此通过准确地定位第一ODX类对象可以准确地定位一个使得短名称具有局部唯一性的查找范围。
在S303中,根据所述目标短名称及所述第一ODX类对象的局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的各个下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象。
本申请实施例中,第一ODX类对象的局部容器除了存储该第一ODX类对象对应的下一级ODX类对象的短名称外,具体还与短名称对应存储了该下一级ODX类对象的指针,或者对应存储了该下一级ODX类对象的指针的索引信息,使得通过该局部容器查找到与目标短名称匹配的项后,可以直接或者间接地确定第二ODX类对象的指针。具体地,第二ODX类对象为第一ODX类对象的各个下一级ODX类对象中短名称与目标短名称相匹配的ODX类对象,该第二ODX类对象即为实际所要查找的,与目标短名称相符的、待引用的ODX数据对应的ODX类对象。
具体地,本申请实施例中的指针指的是ODX类对象对应的内存地址,通过该指针可以获取该ODX类对象。例如,若本申请实施例中的ODX类对象具体为C++对象,则该指针为C++中指向该C++对象的指针。
在S304中,根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
在确定该第二ODX类对象的指针后,通过该第二ODX类对象的指针即可定位该第二ODX类对象,引用该第二ODX类对象中存储的与ODX源文件的ODX数据对应的信息,从而实现对ODX数据的引用。
以下以读发动机故障码的车辆诊断过程作为一个应用场景来进行示例说明:
(1)诊断仪接收用户的选择指令,确定当前需要进行诊断的ECU为发动机管理系统EMS,需要进行诊断的功能为读故障码功能。对应地,根据确定的EMS,确定当前的指定层级为EV-EMS层(即短名称为“EV-EMS”的ECU-VARIANT层);根据确定的读故障码功能,确定当前的目标短名称为“DTCRecord”。
(2)从当前的指定层级EV_EMS层对应的ODX类对象开始,逐级遍历DIAG-DATA-DICTIONARY-SPEC类对象、DCT-DOPS类对象,此时检测该DTC-DOPS类对象的局部容器,查找到该局部容器中存在与目标短名称“DTCRecord”匹配的项,将该DTC-DOPS类对象确定为第一ODX类对象。
(3)根据该局部容器,查找与目标短名称“DTCRecord”相匹配的第二ODX类对象“DTC-DOP”类对象的指针。
(4)当诊断仪接收到故障码数据流后,向故障码解析接口传入该故障码数据流以及“DTC-DOP”类对象的指针,从而引用“DTC-DOP”类对象中存储的与图2的DTC-DOP数据对应的内容例来解析该故障码数据流,得到对应的故障结果显示在诊断仪界面上,以便用户查看。具体地,通过传入故障码解析接口的DTC-DOP类对象的指针,可以定位获取DTC_DOP类对象中存储的编码值类型DIAG-CODRD-TYPE数据,确定数据流长度为24bit,数据类型为32位的非整型UINT32;定位获取DTC-DOP类对象中存储的物理值类型PHYSICAL-TYPE元素,确定解析后能够呈现给用户查看的故障结果的数据类型;定位获取DTC_DOP类对象中存储的算法COMPU-METHOD元素,确定当前将编码值类型的故障码数据流转换为物理值类型的诊断结果所需采用的数据转换算法。之后,根据这定位获取的三个元素,即可将当前的故障码数据流准确地转换为对应的诊断结果,以供用户查看。
本申请实施例中,在获取待引用的ODX数据对应的短名称(即目标短名称)后,能够根据该目标短名称从指定层级的ODX类对象开始逐级遍历各个ODX类对象,从而准确地定位到位于该指定层级下的第一ODX类对象,缩小目标短名称的搜索范围。之后,由于在该第一ODX类对象之下的各个下一级ODX类对象中,短名称具有局部的唯一性,因此通过该第一ODX类对象中用于存储该第一ODX类对象对应的下一级ODX类对象的短名称的局部容器,能够准确地查找到与目标短名称一致的ODX类对象作为第二ODX类对象的指针,该第二ODX类对象即为待引用的ODX数据对应的ODX类对象,通过该第二ODX类对象的指针能够准确地引用该第二ODX类对象,从而准确地实现ODX数据的引用。并且,在逐级遍历时,具体可以先根据局部容器来确定ODX类对象是否为第一ODX类对象,在确定局部容器后对第二ODX类对象的查找也是遍历该局部容器的内容查找得到的,由于局部容器中存储的数据量较少,相对于直接遍历第一ODX类对象的所有下一级ODX类对象的具体内容来查找得到与目标短名称相符的第二ODX类对象的方式,能够提高遍历查找效率,提高第二ODX类对象的指针确定效率,进而提高ODX数据的引用效率。
可选地,在所述步骤S301之前,还包括解析ODX源文件创建ODX类对象的过程,具体包括以下的步骤S300A1~S300A2:
S300A1:解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
S300A2:若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及在所述ODX类对象中创建用于存储所述下一级ODX类对象的短名称的局部容器。
在步骤S300A1中,解析ODX源文件,当解析到ODX源文件的一个ODX数据的XML标签时,为该ODX数据创建对应的ODX类对象,并将该ODX数据的属性信息写入该ODX类对象中。例如,如图2所示,在解析到“ECU-VARINANT”标签时,创建对应的EV-EMS层类对象;并将属性信息:短名称(SHORT-NAME)、长名称(LONG-NAME)的值存储至该EV-EMS类型中对应的变量中。同样地,当解析到DIAG-DATA-DICTIONARY-SPEC标签时,创建对应的DIAG-DATA-DICTIONARY-SPEC类对象;当解析到DTC-DOPS标签时,创建对应的DTC-DOPS类对象;当解析到DTC-DOP标签时,创建对应的DTC-DOP标签,并将DTC-DOP标签内的原始唯一标识ID、短名称(SHORT-NAME)、长名称(LONG-NAME)、编码值类型DIAG-CODRD-TYPE、物理值类型PHYSICAL-TYPE等属性信息写入该DTC-DOP类对象中。
在步骤S300A2中,在上述创建的ODX类对象中,若该ODX类对象对应的ODX数据存在下一级ODX数据,则对应在该ODX类对象写入下一级ODX类对象的信息,并且,若该下一级ODX数据的属性信息中包含短名称,则还在该ODX类对象中创建用于存储下一级ODX数据的短名称(也即下一级ODX类对象对应的短名称)的局部容器。例如,如图2中的DTC-DOPS数据包含下一级ODX数据——DTC-DOP,且该DTC-DOP的属性信息中存在短名称,则对应地在DTC-DOPS中写入DTC-DOP类对象的信息(具体可以将解析得到的完整的DTC-DOP类对象存储至该DTC-DOPS类对象中,或者将DTC-DOP类对象的指针、实例对象名称写入该DTC-DOPS),同时,在DTC-DOPS类对象中创建一个局部容器,用于存储DTC_DOP数据的短名称。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称与唯一标识号的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称及所述第一ODX类对象的局部容器,将所述局部容器中与所述目标短名称对应存储的唯一标识号确定为所述第二ODX类对象的唯一标识号;
根据所述第二ODX类对象的唯一标识号,从预设的全局容器中查找与所述第二ODX类对象的唯一标识号对应存储的指针作为第二ODX类对象的指针;其中,所述全局容器为存储各个层级的所有ODX类对象的唯一标识号及所述ODX类对象的指针的对应关系的容器。
本申请实施例中,一个ODX类对象的局部容器具体为存储该ODX类对象的下一级ODX类对象的短名称、该下一级ODX类对象的唯一标识号的对应关系的容器。具体地,该局部容器具体可以为关联数组map类型,该map类型的局部容器以键值对的方式来存储短名称以及唯一标识号的对应关系。为了以示区别,将该局部容器称为第一局部容器map1,则map1可以表示为map1=<shortname,id>,其中,shortname表示短名称,id表示唯一标识。示例性地,对照图2,DTC_DOPS类对象存在第一局部容器map1,map1的shortname变量具体存储下一级ODX类对象DTC_DOP类对象的短名称“DTCRecord”,id变量具体存储下一级ODX类对象DTC_DOP类对象的唯一标识号“id-52608793-8d3b-44f6-92f7-03ce1a5d00b1”。其中,若DTC_DOPS的下一级ODX类对象包括多个不同的DTC-DOP,则map1存储多对shortname、id键值对,以分别表示各个下一级ODX类对象的短名称与唯一标识的对应关系。
另外,诊断仪的程序中还存在预设的全局容器,该预设的全局容器存储了各个层级的所有ODX类对象的唯一标识号及该ODX类对象的指针的对应关系,该唯一标识号具有全局唯一性。之后,当通过唯一标识号来引用ODX数据时,可以根据该唯一标识号查找该预设的全局容器获取对应的ODX类对象的指针实现对应的ODX数据的引用。或者,当通过短名称来引用ODX数据时,由于短名称只具有局部唯一性,因此可以先根据上述的局部容器准确地确定该短名称对应的具有全局唯一性的唯一标识号,再通过该唯一标识号从预设的全局容器中查找对应ODX类对象的指针。同样地,该预设的全局容器具体也可以为map形式的容器。
具体地,在确定了第一ODX类对象后,根据目标短名称在该第一ODX类对象的局部容器中查找与目标短名称对应存储的唯一标识号,将该唯一标识号确定为待引用的第二ODX类对象的唯一标识号。例如,对照图2,设目标短名称为“DTCRecord”,根据局部容器查找到的第二ODX类对象——DTC-DOP的唯一标识号为“id-52608793-8d3b-44f6-92f7-03ce1a5d00b1”之后,通过该唯一标识号从预设的全局容器中进行查找,可以准确地获取到与该唯一标识号对应存储的第二ODX类对象的指针。
本申请实施例中,通过局部容器存储具有局部唯一性的短名称与其具有全局唯一性的唯一标识号的对应关系,使得通过该局部容器能够准确确定待引用的第二ODX类对象的全局唯一标识;之后,根据存储了唯一标识号及ODX类对象的指针的对应关系的预设的全局容器,可以唯一确定该唯一标识号对应的第二ODX类对象的指针。即,通过查找具有局部唯一性的短名称对应的具有全局唯一性的唯一标识号,来唯一确定ODX类对象的指针,从而准确地定位ODX类对象,实现ODX数据的准确引用。
可选地,在所述获取目标短名称之前,还包括:
S300B1:解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
S300B2:将所述ODX类对象的唯一标识号与所述ODX类对象的指针对应存储至所述全局容器中;其中,所述ODX类对象的唯一标识号包括所述ODX类对象对应的ODX数据的属性信息中包含的原始唯一标识号,所述原始唯一标识号为存在于所述ODX源文件的唯一标识号;
S300B3:若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的唯一标识号作为键值对存储至所述局部容器中;其中,所述下一级ODX类对象的唯一标识号包括所述下一级ODX类对象对应的下一级ODX数据的属性信息中包含的原始唯一标识号。
本申请实施例中,同样在获取目标短名称前需要提前对ODX源文件进行解析,该解析过程包括步骤S300B1至步骤S300B3。其中,步骤S300B1与上述的步骤S300A1相似,此处不再赘述。
在步骤S300B2中,每创建了一个ODX类对象后,将该ODX类对象中的唯一标识号及该ODX类对象的指针的对应关系存储至预设的全局容器中。其中,该唯一标识号可以为该ODX类对象对应的ODX数据原始的属性信息中包含的原始唯一标识号,即该ODX数据在ODX源文件中存在的原始的ID。例如,创建的DTC-DOP类对象中,对照图2,存储了对应的DTC-DOP数据的原始唯一标识号“id-52608793-8d3b-44f6-92f7-03ce1a5d00b1”。
在步骤S300B3中,具体的实现与上述的步骤S300A2类似,进一步限定的是,在存储下一级ODX类对象的短名称时,具体是将该下一级ODX类对象的短名称与对应的唯一标识号对应存储。例如,对照图2,将DTC-DOP的短名称“DTCRecord”与对应的唯一标识号“id-52608793-8d3b-44f6-92f7-03ce1a5d00b1”对应存储。
可选地,在上述的步骤S300B1之后,还包括:
若所述ODX类对象对应的所述ODX数据的属性信息中不包含所述原始唯一标识号,则为所述ODX类对象创建预设唯一标识号;
对应地,所述全局容器中存储的ODX类对象的唯一标识号还包括所述ODX类对象的预设唯一标识号;
对应地,所述局部容器中存储的下一级ODX类对象的唯一标识号还包括所述下一级ODX类对象的预设唯一标识号。
本申请实施例中,当ODX数据属性信息不包含原始唯一标识号时(例如图4所示,“PARAM”类型的ODX数据的属性信息不包含原始唯一标识号ID)则在为该ODX数据创建的ODX类对象中创建一个预设唯一标识号,用于在全局的所有的ODX类对象中,唯一标识该ODX类对象。具体地,本申请实施例中每个ODX类对象都继承于同一ODX基类,该ODX基类提前定义了字符串变量UUID;当解析到ODX数据不存在原始唯一标识号时,则在该ODX数据对应的ODX类对象中为该从ODX基类继承的字符串变量UUID赋值,从而为该ODX类对象创建了一个预设唯一标识号UUID。
对应地,上述步骤S300B2中,当ODX类对象对应的ODX数据不存在原始的唯一标识号,则对应将该ODX类对象中的预设唯一标识号作为唯一标识号,与该ODX类对象的指针对应存储至预设的全局容器中。对应地,上述步骤S300B3中,下一级ODX类对象对应的下一级ODX数据不存在原始的唯一标识号,则对应将下一级ODX类对象中的预设唯一标识号作为唯一标识号,将该下一级ODX类对象的短名称与该预设唯一标识号对应存储至该下一级ODX类对象的上一级ODX类对象的局部容器中。
本申请实施例中,由于解析ODX数据创建对应的ODX类对象的过程中,当ODX数据不存在原始唯一标识号时,在该ODX数据对应的ODX类对象中创建预设唯一标识号,从而通过该预设唯一标识号在全局的所有ODX类对象中唯一标识该ODX类对象,使得之后能够通过该预设唯一标识号在全局容器中准确地查找对应的ODX类对象的指针,从而实现ODX数据的准确引用。
可选地,所述局部容器为所述ODX类对象的下一级ODX类对象的短名称及指针的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称,在所述第一ODX类对象的局部容器中查找与所述目标短名称对应存储的指针作为所述第二ODX类对象的指针。
本申请实施例中,局部容器具体直接存储了下一级ODX类对象的短名称及该下一级ODX类对象的指针的对应关系。对应地,上述的步骤S303中,直接根据目标短名称即可在该局部容器中查找到与该目标短名称对应存储的指针,该指针即为待引用的第二ODX类对象的指针。
本申请实施例中,通过在局部容器中直接存储具有局部唯一性的短名称以及下一级ODX类对象的指针的对应关系,从而使得在定位到第一ODX类对象后,即可根据该目标短名称在该局部容器中直接获取待引用的第二ODX类对象的指针,提高指针获取的便捷性,从而进一步提高ODX数据引用的效率。
可选地,在所述获取目标短名称之前,还包括:
S300C1:解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
S300C2:若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的指针对应存储至所述局部容器中。
本申请实施例中,同样在获取目标短名称前需要提前对ODX源文件进行解析,该解析过程包括步骤S300C1至步骤S300C2。其中,步骤S300C1与上述的步骤S300A1相似,此处不再赘述。
在步骤S300C2中,在上述创建的ODX类对象中,若该ODX类对象对应的ODX数据存在下一级ODX数据,则对应在该ODX类对象写入下一级ODX类对象的信息,并且,若该下一级ODX数据的属性信息中包含短名称,则还在该ODX类对象中创建用于存储下一级ODX数据的短名称(也即下一级ODX类对象对应的短名称)的局部容器。此时,具体将该下一级ODX类对象的短名称与该下一级ODX类对象的指针对应存储至该局部容器中,该下一级ODX类对象的指针具体为在解析到该下一级ODX数据创建对应的下一级ODX类对象时获取得到。
本申请实施例中,由于无需创建预设的全局容器,在具体创建各个ODX类对象时,无需在预设的全局容器存储所有ODX类对象的唯一标识号及指针的对应关系,只需在ODX类对象存在下一级ODX类对象时,直接在该ODX类对象的局部容器中存储下一级ODX类对象的短名称与指针的对应关系,从而既减少了需要存储指针的ODX类对象的数量,节省了存储空间,又提高了指针获取的便捷性,从而进一步提高ODX数据引用的效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
实施例二:
图5示出了本申请实施例提供的一种车辆诊断数据引用装置的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分:
该车辆诊断数据引用装置包括:目标短名称获取单元51、第一ODX类对象定位单元52、指针确定单元53、引用单元54。其中:
目标短名称获取单元51,用于获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称。
第一ODX类对象定位单元52,用于根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象。
指针确定单元53,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象。
引用单元54,用于根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
局部容器创建单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及在所述ODX类对象中创建用于存储所述下一级ODX类对象的短名称的局部容器。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称与唯一标识号的对应关系的容器;对应地,所述指针确定单元53包括唯一标识号确定模块及指针确定模块:
唯一标识号确定模块,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,将所述局部容器中与所述目标短名称对应存储的唯一标识号确定为所述第二ODX类对象的唯一标识号;
指针确定模块,用于根据所述第二ODX类对象的唯一标识号,从预设的全局容器中查找与所述第二ODX类对象的唯一标识号对应存储的指针作为第二ODX类对象的指针;其中,所述全局容器为存储各个层级的所有ODX类对象的唯一标识号及所述ODX类对象的指针的对应关系的容器。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
全局容器存储单元,用于将所述ODX类对象的唯一标识号与所述ODX类对象的指针对应存储至所述全局容器中;其中,所述ODX类对象的唯一标识号包括所述ODX类对象对应的ODX数据的属性信息中包含的原始唯一标识号,所述原始唯一标识号为存在于所述ODX源文件的唯一标识号;
第一局部容器存储单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的唯一标识号的对应关系存储至所述局部容器中;其中,所述下一级ODX类对象的唯一标识号包括所述下一级ODX类对象对应的下一级ODX数据的属性信息中包含的原始唯一标识号。
可选地,所述车辆诊断数据引用装置还包括:
预设唯一标识号创建单元,用于若所述ODX类对象对应的所述ODX数据的属性信息中不包含所述原始唯一标识号,则为所述ODX类对象创建预设唯一标识号;
对应地,所述全局容器中存储的ODX类对象的唯一标识号还包括所述ODX类对象的预设唯一标识号;
对应地,所述局部容器中存储的下一级ODX类对象的唯一标识号还包括所述下一级ODX类对象的预设唯一标识号。
可选地,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称及指针的对应关系的容器;对应地,所述指针确定单元53,具体用于根据所述目标短名称,在所述第一ODX类对象的所述局部容器中查找与所述目标短名称对应存储的指针作为所述第二ODX类对象的指针。
可选地,所述车辆诊断数据引用装置还包括:
解析单元,用于解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
第二局部容器存储单元,用于若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的指针对应存储至所述局部容器中。
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
实施例三:
图6是本申请一实施例提供的终端设备的示意图。如图6所示,该实施例的终端设备6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如车辆诊断数据引用程序。所述处理器60执行所述计算机程序62时实现上述各个车辆诊断数据引用方法实施例中的步骤,例如图3所示的步骤S301至S304。或者,所述处理器60执行所述计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图5所示单元51至54的功能。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本申请。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述终端设备6中的执行过程。例如,所述计算机程序62可以被分割成目标短名称获取单元、第一ODX类对象定位单元、指针确定单元、引用单元,各单元具体功能如下:
目标短名称获取单元,用于获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称。
第一ODX类对象定位单元,用于根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象。
指针确定单元,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象。
引用单元,用于根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
所述终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器、诊断仪等计算设备。所述终端设备可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的示例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种车辆诊断数据引用方法,其特征在于,包括:
获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称;
根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述局部容器具体用于存储具有局部唯一性的短名称与具有全局唯一性的唯一标识号的对应关系;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象;
根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象;其中,所述指针为所述ODX类对象的内存地址;
根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
2.如权利要求1所述的车辆诊断数据引用方法,其特征在于,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及在所述ODX类对象中创建用于存储所述下一级ODX类对象的短名称的局部容器。
3.如权利要求1所述的车辆诊断数据引用方法,其特征在于,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称与唯一标识号的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称及所述第一ODX类对象的所述局部容器,将所述局部容器中与所述目标短名称对应存储的唯一标识号确定为所述第二ODX类对象的唯一标识号;
根据所述第二ODX类对象的唯一标识号,从预设的全局容器中查找与所述第二ODX类对象的唯一标识号对应存储的指针作为第二ODX类对象的指针;其中,所述全局容器为存储各个层级的所有ODX类对象的唯一标识号及所述ODX类对象的指针的对应关系的容器。
4.如权利要求3所述的车辆诊断数据引用方法,其特征在于,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
将所述ODX类对象的唯一标识号与所述ODX类对象的指针对应存储至所述全局容器中;其中,所述ODX类对象的唯一标识号包括所述ODX类对象对应的ODX数据的属性信息中包含的原始唯一标识号,所述原始唯一标识号为存在于所述ODX源文件的唯一标识号;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的唯一标识号的对应关系存储至所述局部容器中;其中,所述下一级ODX类对象的唯一标识号包括所述下一级ODX类对象对应的下一级ODX数据的属性信息中包含的原始唯一标识号。
5.如权利要求4所述的车辆诊断数据引用方法,其特征在于,在所述解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息之后,还包括:
若所述ODX类对象对应的所述ODX数据的属性信息中不包含所述原始唯一标识号,则为所述ODX类对象创建预设唯一标识号;
对应地,所述全局容器中存储的ODX类对象的唯一标识号还包括所述ODX类对象的预设唯一标识号;
对应地,所述局部容器中存储的下一级ODX类对象的唯一标识号还包括所述下一级ODX类对象的预设唯一标识号。
6.如权利要求1所述的车辆诊断数据引用方法,其特征在于,所述局部容器为存储所述ODX类对象的下一级ODX类对象的短名称及指针的对应关系的容器;对应地,所述根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,包括:
根据所述目标短名称,在所述第一ODX类对象的所述局部容器中查找与所述目标短名称对应存储的指针作为所述第二ODX类对象的指针。
7.如权利要求6所述的车辆诊断数据引用方法,其特征在于,在所述获取目标短名称之前,还包括:
解析所述ODX源文件,为所述ODX源文件中各个ODX数据创建对应的ODX类对象,并在所述ODX类对象中写入对应的所述ODX数据的属性信息;
若所述ODX类对象对应的ODX数据中还包含下一级ODX数据,则在所述ODX类对象中写入所述下一级ODX数据对应的下一级ODX类对象,以及将所述下一级ODX类对象的短名称与所述下一级ODX类对象的指针对应存储至所述局部容器中。
8.一种车辆诊断数据引用装置,其特征在于,包括:
目标短名称获取单元,用于获取目标短名称,所述目标短名称为待引用的开放式诊断数据交换ODX数据对应的短名称;
第一ODX类对象定位单元,用于根据所述目标短名称从指定层级的ODX类对象开始遍历各级的ODX类对象,直至查找到第一ODX类对象;各级的所述ODX类对象为根据ODX源文件中各个ODX数据对应创建的类对象,其中所述ODX类对象中包含用于存储所述ODX类对象的下一级ODX类对象的短名称的局部容器;所述局部容器具体用于存储具有局部唯一性的短名称与具有全局唯一性的唯一标识号的对应关系;所述第一ODX类对象为包含的所述局部容器中存在与所述目标短名称相匹配的项的ODX类对象;
指针确定单元,用于根据所述目标短名称及所述第一ODX类对象的所述局部容器,确定第二ODX类对象的指针,所述第二ODX类对象为所述第一ODX类对象的下一级ODX类对象中短名称与所述目标短名称相匹配的ODX类对象;其中,所述指针为所述ODX类对象的内存地址;
引用单元,用于根据所述第二ODX类对象的指针引用所述第二ODX类对象,以实现所述ODX数据的引用。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,当所述处理器执行所述计算机程序时,使得终端设备实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,当所述计算机程序被处理器执行时,使得终端设备实现如权利要求1至7任一项所述方法的步骤。
CN202011266856.5A 2020-11-13 2020-11-13 车辆诊断数据引用方法、装置、终端设备及存储介质 Active CN112445797B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011266856.5A CN112445797B (zh) 2020-11-13 2020-11-13 车辆诊断数据引用方法、装置、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011266856.5A CN112445797B (zh) 2020-11-13 2020-11-13 车辆诊断数据引用方法、装置、终端设备及存储介质

Publications (2)

Publication Number Publication Date
CN112445797A CN112445797A (zh) 2021-03-05
CN112445797B true CN112445797B (zh) 2023-09-05

Family

ID=74736986

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011266856.5A Active CN112445797B (zh) 2020-11-13 2020-11-13 车辆诊断数据引用方法、装置、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN112445797B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115755867A (zh) * 2022-12-22 2023-03-07 深圳市元征科技股份有限公司 一种车辆诊断方法及相关装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010056232A1 (de) * 2010-12-24 2012-06-28 Volkswagen Ag Verfahren zum Speichern von Diagnosedaten für ein Steuergerät eines Fahrzeugs sowie entsprechende Vorrichtung
CN103197930A (zh) * 2013-03-27 2013-07-10 北京经纬恒润科技有限公司 汽车诊断软件自动生成的方法
CN109710808A (zh) * 2018-12-28 2019-05-03 深圳市元征科技股份有限公司 一种xml文件的解析方法、系统、装置及可读存储介质
CN110263222A (zh) * 2019-06-25 2019-09-20 深圳市元征科技股份有限公司 一种数据获取方法、装置、设备及介质
CN111739190A (zh) * 2020-05-27 2020-10-02 深圳市元征科技股份有限公司 车辆诊断文件加密方法、装置、设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010056232A1 (de) * 2010-12-24 2012-06-28 Volkswagen Ag Verfahren zum Speichern von Diagnosedaten für ein Steuergerät eines Fahrzeugs sowie entsprechende Vorrichtung
CN103197930A (zh) * 2013-03-27 2013-07-10 北京经纬恒润科技有限公司 汽车诊断软件自动生成的方法
CN109710808A (zh) * 2018-12-28 2019-05-03 深圳市元征科技股份有限公司 一种xml文件的解析方法、系统、装置及可读存储介质
CN110263222A (zh) * 2019-06-25 2019-09-20 深圳市元征科技股份有限公司 一种数据获取方法、装置、设备及介质
CN111739190A (zh) * 2020-05-27 2020-10-02 深圳市元征科技股份有限公司 车辆诊断文件加密方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN112445797A (zh) 2021-03-05

Similar Documents

Publication Publication Date Title
CN113127338A (zh) 一种固件测试方法、服务器及计算机可读存储介质
CN109165209B (zh) 数据库中对象类型的数据校验方法、装置、设备及介质
CN111552267B (zh) 车辆诊断方法、装置及车辆诊断设备
CN110263222B (zh) 一种数据获取方法、装置、设备及介质
CN112182036A (zh) 数据的发送与写入方法、装置、电子设备及可读存储介质
CN111708353A (zh) 一种车辆诊断设备数据显示方法、系统及相关设备
CN112558584B (zh) 诊断数据获取方法、装置及诊断设备
CN112147983B (zh) 一种车辆诊断方法、装置、电子设备及存储介质
CN111460232A (zh) 功能模块的查找方法、装置、终端和计算机可读存储介质
CN113190220A (zh) Json文件差异化对比方法及装置
CN112181924A (zh) 文件转换方法、装置、设备及介质
CN112445797B (zh) 车辆诊断数据引用方法、装置、终端设备及存储介质
CN114329090A (zh) 路径寻参的方法、装置、电子设备及存储介质
CN112948233A (zh) 一种接口测试方法、装置、终端设备及介质
CN111078948A (zh) 汽车诊断数据解析方法及系统、存储介质
CN114756470A (zh) 测试文件生成方法、装置、存储介质及计算机设备
CN112445816B (zh) 车辆诊断数据引用方法、装置、终端设备及存储介质
CN112445490A (zh) 文件序列处理方法、装置、终端设备及存储介质
CN115406452A (zh) 一种实时定位及建图方法、装置及终端设备
CN113848862A (zh) 诊断软件获取方法、装置、通信设备及存储介质
CN112949258A (zh) 数据处理方法、装置、电子设备及存储介质
CN110378457B (zh) 一种码标的生成方法及装置
CN112433943A (zh) 基于抽象语法树的环境变量检测方法、装置、设备及介质
CN111930097B (zh) 一种车辆诊断数据解析方法、装置、设备及存储介质
CN112104766B (zh) 诊断协议重构方法、装置、终端设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant