【ODX介绍】-2-如何手动编辑PDX文件以及PDX结构介绍
总目录:(单击下方链接皆可跳转至专栏总目录)
《UDS/OBD诊断&诊断描述文件CDD》总目录https://blog.csdn.net/qfmzhu/article/details/120425660https://blog.csdn.net/qfmzhu/article/details/120425660
目录
1 PDX - PACKAGED ODX DATA
2 PDX package catalogue结构
3 PDX封装的技术方面
4 如何手动编辑一个PDX文件
4.1 解压PDX文件
4.2 手动修改PDX中的文件
4.3 替换PDX中文件
5 结尾
关键字:
ODX:Open Diagnostic Data Exchange
PDX:Packaged ODX
ASAM
Vector ODX Studio工具
UDS/OBD诊断描述文件
ODX/PDX刷写文件
1 PDX - PACKAGED ODX DATA
ODX数据的交换可以通过一个叫做“PDX package”的文件容器来实现。要交换的所有文件都打包在一个PDX package中。PDX package可以处理不同类型的ODX文件。
以下是ODX V2.0.1和ODX V2.2.0版本中,ODX文件扩展名差异:
ODX V2.0.1 |
ODX V2.2.0 |
||
odx-d |
DIAG-LAYER-CONTAINER |
odx-d |
DIAG-LAYER-CONTAINER |
odx-c |
COMPARAM-SPEC |
odx-c |
COMPARAM-SPEC |
odx-v |
VEHICLE-INFORMATION-SPEC |
odx-v |
VEHICLE-INFORMATION-SPEC |
odx-m |
MULTIPLE-ECU-JOB-SPEC |
odx-m |
MULTIPLE-ECU-JOB-SPEC |
odx-f |
FLASH |
odx-f |
FLASH |
odx-cs |
COMPARAM-SUBSET |
||
odx-e |
ECU-CONFIG |
||
odx-fd |
FUNCTION-DICTIONARY |
注:所有包含ODX数据的文件都可以使用扩展名“odx”,限制性较小。
PDX package不仅可以包含ODX数据、文本或图片,还可以包含任意格式的任意文件。
PDX package的内容在称为“PDX package catalogue”的单独XML文档中进行了描述。PDX package catalogue本身不包含ODX数据。它用作交换过程中元数据的存储库。
所有ODX兼容工具都必须以区分大小写的方式处理包含ODX数据或参与ODX/PDX交换过程的文件的所有文件名。文件扩展名应始终以小写字母表示。PDX package catalogue的文件名应始终为小写字母“index.xml”。(注:该段落在ODX V2.2.0中新增)
PDX package/package catalogue用例:
- OEM和合作伙伴之间的相互数据交换:
--完整数据交换(一种或两种方式)
--增量(部分)数据交换:仅交换新创建或更改的数据
- 配置管理和版本控制:
--修订历史交换
--支持特定于CMS的版本控制:每个流程合作伙伴可以独立添加CMS内部修订信息
--多版本控制:可以在单个PDX package中提供文件的不同版本
注:CMS -- Configuration Management System配置管理系统
2 PDX package catalogue结构
PDX package由一组文件组成。PDX package的内容在PDX package catalogue中进行了描述,该catalogue是PDX package中存储的文件之一。
图 - PDX package catalogue的UML表示和结构
PDX package catalogue由CATALOG实例表示;它提供了存储在相应PDX package中的所有文件的列表。这些文件条目可以按逻辑分组。例如,ODX数据文件可以存储在一组中,文档文件(手册、图像等)可以存储在另一组中。
为此,CATALOG包含一个所谓的ABLOCK列表;每个ABLOCK代表一个逻辑组,并且可能包含任意数量的FILE成员,每个成员代表PDX package中的单个文件。可选地,可以为ABLOCK指定CATEGORY成员。这允许为文件分类定义特定于流程的标准。为CATEGORY预定义了以下值:
- 从ODX-CATEGORY派生的所有文件的ODX-DATA
- 所有作业代码文件的ODX-JOB(例如java文件、class文件、jar文件、dll文件)
- LIB用于可以使用或由作业导入的所有库
- 用于ECU编程并从ECU-MEM引用的二进制/十六进制文件的PROGRAMMING-DATA
可以根据实际用例扩展预定义的CATEGORY列表(注:该句在ODX V2.2.0中新增)。SHORT-NAME是每个ABLOCK的强制性成员。它标识ABLOCK中的文件所属的逻辑组,而不是ABLOCK本身。一个PDX package catalogue中可能存在多个具有相同SHORT-NAME的ABLOCK。
每个ABLOCK可能包含一个可选的ADMIN-DATA成员来存储特定于ABLOCK的修订信息,即,它指的是ABLOCK中的所有文件。对PDX package中的所有文件有效的ADMIN-DATA和其他全局元数据(如COMPANY-DATA)可以直接存储在CATALOG中。
一个ABLOCK有一个强制性的UPD成员,它描述了数据交换过程中ABLOCK文件的更新状态。UPD属性可以具有以下值之一:
- NEW:引入了新文件。
- CHANGED:文件已更改。
- UNCHANGED:文件没有改变。
- UNUSED:这些文件目前不再使用,但将来可能会再次使用。
- REUSED:在数据交换过程的较早阶段已标记为UNUSED的文件将再次使用。
- DELETED:文件已被删除。
- UNDEFINED:没有可用的更新状态。这是默认值。
每个FILE成员指定文件名以在PDX package中定位一个文件。可以使用可选属性指定此类文件的MIME-TYPE、CREATOR和CREATION-DATE。作为MIME-TYPE的值,应使用已经标准化的MIME类型。由于ODX文档是XML文档,因此应为它们使用MIME-TYPE“text/xml”。为了区分不同类型的ODX数据,在目录中应使用下表中定义的MIME-TYPE
表 - PDX packages中使用的MIME-TYPE(注:ODX V2.0.1)
File extension文件扩展名 |
MIME-TYPE |
class |
application/x-java-vm |
.java |
text/plain |
.jar |
application/x-java-archive |
.odx |
(odx-f,odx-c,…)text/xml |
.xml |
text/xml |
|
application/pdf |
.hex |
(flash data)application/octet-stream |
.zip |
application/zip |
示例:以下是一个包含三个文件PDX package catalogue的*.xml文件内容。
<CATALOG><SHORT-NAME>ODX_CC_Example</SHORT-NAME><ABLOCKS><ABLOCK UPD="NEW"><SHORT-NAME>DiagData</SHORT-NAME><CATEGORY>ODX-DATA</CATEGORY><FILES><FILE MIME-TYPE="text/xml" CREATOR="xyz"CREATION-DATE="2003-02-12">DiagData.odx</FILE></FILES></ABLOCK><ABLOCK UPD="NEW"><SHORT-NAME>Documentation</SHORT-NAME><CATEGORY>DOCUMENTATION</CATEGORY><FILES><FILE MIME-TYPE="application/pdf" CREATOR="xyz" CREATION-DATE="2003-02-12">odx_spec.pdf</FILE><FILE MIME-TYPE="text/html" CREATOR="xyz" CREATION-DATE="2003-02-12">readme.html</FILE></FILES></ABLOCK></ABLOCKS>
</CATALOG>
表 - PDX packages中使用的MIME-TYPE(注:ODX V2.2.0)
ODX category |
File extension |
MIME-TYPE |
Comparam Spec,Comparam Subset |
odx-c,odx-cs |
application/x-asam.odx.odx-c, |
Diag-Layer Container |
odx-d |
application/x-asam.odx.odx-d |
Vehicle Info Spec |
odx-v |
application/x-asam.odx.odx-v |
Flash |
odx-f |
application/x-asam.odx.odx-f |
Multiple ECU Job |
odx-m |
application/x-asam.odx.odx-m |
ECU Config |
odx-e |
application/x-asam.odx.odx-e |
Functional Dictionary |
odx-fd |
application/x-asam.odx.odx-fd |
Java Jobs |
Jar |
application/x-asam.odx.jobs.xjar-Archive |
Java Jobs Source |
Jar |
application/x-asam.odx.jobs.xjava-Source |
示例:以下是一个包含三个文件PDX package catalogue的*.xml文件内容。
<?xml version="1.0" encoding="UTF-8"?>
<CATALOG F-DTD-VERSION="ODX-2.2.0" xsi:noNamespaceSchemaLocation = "odx-cc.xsd" xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"><SHORT-NAME>ODX_CC_Example</SHORT-NAME><ABLOCKS><ABLOCK UPD = "NEW"><SHORT-NAME>DiagData</SHORT-NAME><CATEGORY>ODX-DATA</CATEGORY><FILES><FILE MIME-TYPE = "text/xml" CREATOR = "xyz" CREATION-DATE = "2005-12-08">DiagData.odx</FILE></FILES></ABLOCK><ABLOCK UPD = "NEW"><SHORT-NAME>Documentation</SHORT-NAME><CATEGORY>DOCUMENTATION</CATEGORY><FILES><FILE MIME-TYPE = "application/pdf" CREATOR = "xyz" CREATION-DATE = "2005-12-08">odx_spec.pdf</FILE><FILE MIME-TYPE = "text/html" CREATOR = "xyz" CREATION-DATE= "2005-12-08">readme.html</FILE></FILES></ABLOCK></ABLOCKS>
</CATALOG>
3 PDX封装的技术方面
PDX package作为ZIP存档实现,文件扩展名为“.pdx”(用于“packaged ODX”)。
PDX package包含一个带有PDX package catalogue的文件(参见上面的示例)。此文件名为“index.xml”,位于PDX package内部文件系统层次结构的根目录中。
PDX package是一个自包含文件,即,PDX package catalogue仅引用PDX package内的文件。因此,PDX package catalogue中不允许引用外部文件。
PDX package支持在分层目录结构中存储文件。在分层文件存储的情况下,PDX package catalogue中的所有文件路径都被制定为从PDX package内部文件系统层次结构的根目录开始的绝对路径(例如“zipdirectory1/zipdirectory2/myfile.odx”)。对于java job,需要将java package结构的完整路径包含在PDX文件中,以保持java job的明确性。
PDX package中文件的命名约定:
文件名通常按照以下方案构建:
NAME.EXTENSION
文件的类型由MIME-TYPE成员明确指定。因此,不需要符合ODX的工具将文件扩展名映射到MIME类型。文件扩展名应作为文件名的一部分处理。
为了在单个ODX容器中存储同一文件的多个修订(在ODX中称为“multi-versioning多版本控制”),每个文件修订都存储在单独的ABLOCK中。包含同一文件修订的所有ABLOCK共享相同的SHORT-NAME。
4 如何手动编辑一个PDX文件
由于ODX Studio等编辑PDX工具比较昂贵,有时比较稀缺。当你熟悉PDX/ODX文件内部格式后(手动修改的前提),可通过手动修改的方式实现快速修改PDX文件。
以下图“Test_PDX_File.pdx”文件为例,见图4-1。
图4-1
4.1 解压PDX文件
选中“Test_PDX_File.pdx”文件,使用7Z工具解压这个PDX文件,见图4-2和图4-3。
图4-2
图4-3
4.2 手动修改PDX中的文件
PDX解压后得到多个odx,xml,jar…文件,接着找到修改的文件,修改并保存,见图4-4。
图4-4
4.3 替换PDX中文件
使用7Z工具打开PDX文件,见图4-5。
图4-5
将修改后的文件,拖曳至7Z工具中实现对应文件的替换,见图4-6和图4-7。这样PDX文件就修改完成了。
图4-6
图4-7
5 结尾
【ODX介绍】-2-如何手动编辑PDX文件以及PDX结构介绍相关推荐
- mysql日志文件的类型和作用_Mysql日志文件和日志类型介绍_MySQL
日志文件类型 MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情: 日志文件 记入文件中的信息类型 错误日志 记录启动.运行或停止mysqld时出现的问题. 查询日志 记录建立的 ...
- 安装matlab到99%时出现的问题:在您的许可证文件中找不到 SERVER 行。您需要在 ...... 中手动编辑 SERVER
最近在我的window7 64位系统上安装Matlab2012b,安装过程中,需要输入密钥和导入许可证文件(均从网上找的),但是当安装到99%时,出现以下提示:在您的许可证文件中找不到 SERVER ...
- 一分钟教你学会手动提取pdx文件
1.首先要有一个pdx文件 在我们点击pdx文件时无法打开,是因为pdx类似于压缩包.所以我们只需要将里面的文件提取出来就可以了 2.如何提取?我们可以通过7-Zip这个工具进行提取 7-Zip官网: ...
- 如何编辑PDF文件,PDF编辑器如何使用
如何编辑PDF呢?其实大多数人都不知道该如何下手,部分人会选择将PDF文件转换成Word然后进行编辑,其实这种方法比较麻烦,大大拉低了我们的工作效率.如果想要提高工作效率更加快速的编辑PDF文件,就可 ...
- [转]解决Eclipse中编辑xml文件的智能提示问题
转自:http://hi.baidu.com/cghroom/item/48fd2d0dc1fc23c675cd3c3e 摘要: Eclipse for Android xml 文件代码自动提示功能 ...
- 如何编辑PDF文件,怎么修改PDF中的文字
相信大家都使用过PDF文件,那么有没有编辑过PDF文件呢,PDF文件的编辑是需要借助PDF编辑器的,PDF文件中的文字要怎么修改呢,Word文档的文字就直接编辑,而PDF文件并非这样,想知道怎么编辑吗 ...
- linux编辑conf文件命令,redhat linux7.3字符模式下: vi ***.conf 文件,又用什么命令才可编辑文件啊!!!!??...
噢谢谢! | 输入小写'a'->编辑->ESC->':wq'保存退出 | i ESC :x exit | Vi使用说明 ----Vi简介 ----vi做为Linux系统中一种编辑器, ...
- Linux下各文件夹的结构说明及用途介绍(转载)
linux下各文件夹的结构说明及用途介绍: /bin:二进制可执行命令. /dev:设备特殊文件. /etc:系统管理和配置文件. /etc/rc.d:启动的配 置文件和脚本. /home:用户主目录 ...
- linux下文件描述符的介绍
linux下文件描述符的介绍 (2012-10-02 16:01:56) 转载▼ 标签: 描述符 调用 返回 进程 限制 it 分类:linux 当某个程序打开文件时,操作系统返回相应的文件描述符,程 ...
最新文章
- DataTable ,XML和JSON相互转化
- 清华、北邮等高校研究人员实现具有 160 个目标的基于 SSVEP 的免校准 BCI 系统...
- 算法之动态规划——编辑距离问题
- C#里的一些加密解密标准函数示例——DES,SHA1,RSA
- Mac下IDEA安装Protobuf插件
- java自带数据库_Derby-jdk自带数据库的使用 - Java天堂
- 解决 mklink 使用中的各种坑(硬链接,软链接/符号链接,目录链接)
- serialVersionUID干嘛用的?
- 面对万人世界军人运动会票务,阿里文娱 Dpath 如何保障稳定性?
- shell介绍,date命令,shell变量
- 【知识梳理】《Kafka权威指南》知识梳理
- matlab金融时间序列分析,5 个 MATLAB 金融时序预测速查表
- CentOS6.5启动MariaDB错误
- python编程入门读书笔记1
- HTML5期末大作业:影评网站的设计--豆瓣以及IMDb等影评网站
- 捏脸是如何实现的?程序化生成3D头像
- java创建文件夹(Java创建文件夹失败重新创建)
- 计算机专业自我介绍结尾,计算机专业面试自我介绍怎么结尾
- 攻防世界writeup——Web(持续更新)
- OpenGL PBO渲染视频数据 [转]
热门文章
- 行空板-一款DFRobot自主研发的Python教学神器
- 面向星辰大海,出发吧骚年!
- L. Link with Level Editor I dp
- 08.jdk动态代理原理
- matlab求相关系数输出nan,Matlab:为什么使用'corrcoef'时相关NaN? - matlab代码 - 源码查...
- console连接h3c s5500_H3C交换机console口进入怎么设置密码
- 京东618叠蛋糕脚本,亲测好用
- typescript (简写Ts)
- 又拍网架构 -- 前端PHP后台Python +消息中间件 RabbitMQ + 分库步骤
- 浅论激光相控阵雷达在自动驾驶汽车中的应用