DBC文件解析

一般DBC文件中包含了如下的8种信息:

1、版本与新符号 用VERSION 表示版本 用NS_ 表示新符号

2、波特率定义 用BS_ 表示

3、网络节点的定义 用BU_ 表示

4、报文帧的定义 用BO_ 表示

5、信号的定义 用SG_ 表示

6、注解部分 用CM_ 表示

7、特征(属性)部分 对特征名称类型定义用BA_DEF_表示 对特征默认值的设置用BA_DEF_DEF_表示 对特征项目设置值定义用BA_ 表示

8、数值表部分 用VAL_ 表示

从第3点开始详细讲解:

3、网络节点的定义:

格式如下: BU_: Nodename1 Nodename2 Nodename3 ……

BU_ 为关键字,表示网络节点 Nodename1、Nodename2 网络节点名字,由用户自己定义;

注意:要保证节点命名的唯一性。

4、报文帧的定义:

格式如下: BO_ MessageId MessageName: MessageSize Transmitter

BO_ 为关键字,表示报文;

MessageId 报文ID,是以10进制数表示

MessageName 报文的名字,命名规则和C语言变量相同

MessageSize 报文数据域字节数,为无符号整型数据,CAN 2.0为最大8字节CAN FD 最大64字节

Transmitter 该报文的网络节点;如果该报文没有指定发送节点,则该值需设置为” Vector__XXX”。

5、信号的定义:

格式如下:

SG_ SignalName (SigTypeDefinition) : StartBit|SignalSize@ByteOrder ValueType (Factor,Offset) [Min|Max] Unit Receiver

SG_ 为关键字,表示信号;

SignalName(SigTypeDefinition) : 表示该信号的名字 和 多路选择信号的定义;

SigTypeDefinition是可选项,有3种格式:

a)空,表示普通信号。

b)M,表示多路选择器信号。

c)m50,表示被多路选择器选择的信号,50,表示当M定义的信号的值等于50的时候,该报文使用此通路。

StartBit、 SignalSize 表示该信号起始位、信号长度

ByteOrder 表示信号的字节顺序:0代表Motorola格式,1代表Inter格式;

ValueType 表示该信号的数值类型:+表示无符号数,-表示有符号数

Factor,Offset 表示因子,偏移量;这两个值用于信号的原始值与物理值之间的转换。

   转换如下:物理值=原始值*因子+偏移量;

Min|Max 表示该信号的最小值和最大值,即指定了该信号值的范围;这两个值为double类型;

Unit 表示该信号的物理单位,为字符串类型;

Receiver 表示该信号的接收节点;若该信号没有指定的接收节点,则必须设置为” Vector__XXX”。

6、注解部分:

格式如下:

CM_ Object MessageId/NodeName “Comment”

CM_ 为关键字,表示注解信息;

Object 表示进行注解的对象类型,可以是节点“BU_”、报文“BO_”、消息”SG_”;

MessageId/NodeName 表示进行注解的对象,若前面的对象类型是信号或者报文,则这里的值应为 报文的ID(10进制数表示);若前面的对象类型为节点,则这里的值应为节 点的名字;

Comment 表示进行注解的文本信息;

注释以 “” 包围,注释内部不允许出现“号。

7、特征(属性)定义部分:

和特征相关的Tag一共有三条:

1)BA_DEF_ 特征名称类型定义

格式如下: BA_DEF_ Object AttributeName ValueType Min Max;

Object 特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义)、空格(项 目特征定义);

AttributeName 特征名称(C语言变量格式)

ValueType 特征值类型(只能是十进制、十六进制、浮点数、枚举、字符5种类型)

Min Max 数值类型这里出现范围,枚举类型这里是枚举值,字符类型,这里是空

2)BA_DEF_DEF_ 特征默认值定义

格式如下:

  BA_DEF_DEF_ AttributeName DefaultValue;

BA_DEF_DEF_ 标签

AttributeName 特征名称(C语言变量格式)

DefaultValue 该特征的默认设置值

3)BA_ 项目中特征设置值定义

格式如下: BA_ AttributeName Object MessageId projectValue;

BA_ 标签 AttributeName 特征名称(C语言变量格式)

Object 特征类型,可以是BU_(节点特征定义)、BO_(报文特征定义)、SG_(信号特征定义) MessageId 这里的值应为报文的ID(10进制数表示)

projectValue 该特征的设置值

8、数值表部分:

格式如下: VAL_ MessageId SignalName N “DefineN” …… 0 “Define0”;

VAL_ 为关键字,表示数值表定义

MessageId 表示该信号所属的报文ID(10进制数表示);

SignalName 表示信号名;

N “DefineN” …… 0 “Define0” 表示定义的数值表内容,即该信号的有效值分别用什么符号表示 。

   例如:1 “Active” 0 “Not Active”;即1表示Active,0表示Active。

信号的值的表示方法有两种: 1) 物理值=原始值*因子+偏移量;(常规表示,前面有提到) 2) 数字表,用来表示逻辑值

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java DBC文件解析是指使用Java编程语言对DBC文件进行解析和处理的过程。DBC文件是CAN网络通信协议的描述文件,它定义了CAN协议的消息,信号,节点等信息。 在Java中解析DBC文件涉及到以下几个步骤: 1. 导入相关的Java库:首先需要导入相关的Java库来处理和解析DBC文件。比如,可以使用Apache POI库来读取和解析Excel格式的DBC文件,或者使用自定义的DBC解析库。 2. 读取DBC文件:使用Java代码读取和加载DBC文件,可以将DBC文件读取到内存中,以便后续的解析和处理。 3. 解析DBC文件解析DBC文件的过程包括解析消息、信号、节点等信息。根据DBC文件的格式和结构,可以使用Java代码逐行解析DBC文件,并将解析的结果存储到相应的数据结构中,比如使用Java的类和对象来表示消息、信号和节点等。 4. 处理和利用解析结果:解析DBC文件后,可以根据解析结果进行各种操作和处理。例如,可以根据解析的节点信息,生成相应的代码来实现CAN节点的功能;或者根据解析的消息和信号信息,构建CAN消息的发送和接收逻辑。 5. 错误处理和异常处理:在解析DBC文件的过程中,可能会遇到各种错误和异常情况,比如文件路径错误、文件格式错误等。在Java代码中需要适当处理这些错误和异常情况,以保证程序的稳定性和可靠性。 总之,Java DBC文件解析是一项比较复杂的任务,需要熟悉DBC文件的格式和结构,以及相关的Java编程知识和技巧。通过解析和处理DBC文件,可以方便地获取和利用CAN协议的消息和信号等信息,从而实现相应的功能和应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值