Vector的DBC文件描述了CAN网络的通信规范,通过定义signal可以表示CAN帧中的各个物理信号的含义。通过CANdb++ Editor软件可以创建和修改DBC文件,一般监控或控制CAN网络内的节点,不需要解析DBC文件里的全部信息,因为有些信息是给CANoe等软件使用的,我们自己编写软件,只利用vector的DBC文件中的部分信息。一个完整的DBC文件结构如下图:

35行之前的部分可以忽略,36行定义的的网络节点单元,多个节点之间用空格分开。41、43、47是定义消息,消息结构如下:

BO_ message_id message_name : message_size transmitter {signal}

signal是可选项。45、46、48、49行定义的是信号(Signal),信号的结构如下:

SG_ signal_name multiplexer_indicator : start_bit | signal_size @ byte_order value_type ( factor , offset ) [ minimum | maximum ] unit receiver {, receiver}

其中byte_order分为motorola和intel两种格式,motorola对应0,intel对应1。这两种格式是区别如下:

如果在同一个字节内,则没有区别,如果跨越多个字节则有区别,motorola格式是高位(msb)在低字节(说明:CAN消息的字节排列Byte0 Byte1 … Byte7,Byte0是低字节),intel格式是高位(msb)在高字节。

Intel格式

第一字节的bit0对应的是lsb(第一行的红色箭头),第二字节的bit14对应的是msb(第二行的红色箭头)。起始bit是lsb对应的bit0。

Motorola格式

第二字节的bit9对应的是lsb(第二行的红色箭头),第一字节的bit7对应的是msb(第一行的红色箭头)。起始bit是lsb对应的bit9。当然也可以修改起始位置,例如将起始位置改为bit8,如下图:

55~58行定义的是信号的选项值,其结构如下:

'VAL_' message_id signal_name { value_description } ';'

注意,行结尾有一个分号。其中value_description的定义如下:

value_description = double char_string ;

以上是需要解析的部分,注意字符部分都限制在32字节内,不太方便。

DBC文件小结的更多相关文章

  1. Hex、bin、axf、elf格式文件小结

    转自Hex.bin.axf.elf格式文件小结 一.HEX Hex文件,一般是指Intel标准的十六进制文件.Intelhex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理程序存储区中的 ...

  2. Delphi窗体创建释放过程及单元文件小结(转)

    Delphi窗体创建释放过程及单元文件小结 Delphi中的窗体,有模式窗体与非模式窗体两种.两种窗体的调用方式不同,模式窗体使用ShowModal显示,非模式窗体使用Show显示.当显示模式窗体的时 ...

  3. 解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真

    通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件. 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来 ...

  4. Can DBC 文件翻译,不是很标准,凑合看还可以

    1 引言 DBC文件描述单个CAN网络的通信.这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟). DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分 ...

  5. Can DBC文件翻译

    1 引言 DBC文件描述单个CAN网络的通信.这个信息足以监测和分析网络并模拟不是物理可用的节点(剩余的总线模拟). DBC文件也可以用来开发电子控制单元的通信软件,该控制单元应该是CAN网络的一部分 ...

  6. 利用scp传输文件小结

    从本地复制到远程 scp mysql-5.5.29-linux2.6-x86_64.tar.gz 192.168.1.11:/opt 指定端口: scp -P 60022 /opt/ray/nginx ...

  7. Hosts文件小结

    今天又遇到Hosts,小结一下: Hosts文件是什么? Hosts文件从表象上来看是一个没有扩展名的系统文件.其基本作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库&qu ...

  8. File API 读取文件小结

    简单地说,File API只规定怎样从硬盘上提取文件,然后交给在网页中运行的JavaScript代码. 与以往文件上传不一样,File API不是为了向服务器提交文件设计的. 关于File API不能 ...

  9. pdb文件 小结

    .pdb文件,是VS生成的用于调试的符号文件(program database),保存着调试的信息.在VS的工程属性,C/C++,调试信息格式,设置/Zi,那么VS就会在构建项目时创建PDB文件. 在 ...

随机推荐

  1. IOS开发中发布的时候取消日志打印

    在PCH文件中定义如下宏 #if DEBUG #define NSLog(...) NSLog(__VA_ARGS__) #define debugMethod() NSLog(@"%s&q ...

  2. js 设计模式之观察者模式

    观察者模式 又被称为“发布-订阅”模式,目的是解决主题对象和观察者之间功能的耦合性.发布者和订阅者之间是互不干扰的,没有联系的,通过观察者,当做中介,将二者联系起来. 例子:以学生和老师之间的为例 1 ...

  3. 下面findmax函数将计算数组中的最大元素及其下标值,请编写该函数。

    #include <stdio.h> void findmax ( int s[ ], int t, int *k ) { int i; *k = ; ; i < t; i++) { ...

  4. Hibernate-day02

    OID 1,对象里面没有主键的概念,对象中对应主键的属性,称为OID(对象标识符);2,OID用来唯一标明一个对象实体(加上对象类型)3,OID在对象里面不见得只有一个属性;(映射复合主键)4,OID ...

  5. 我了解到的新知识之----如何使用Python获取最新外汇汇率信息

    这个需求本来是来源于公司同事工作中需求,用户需要使用数据分析工具Power BI抓取多页的中国银行官网上当天的外汇数据.但是没能研究出来. 我就开始在网络上找关于使用python来抓取当天汇率的案例分 ...

  6. mysql视图、存储过程等

    视图: 需求: 创建的临时表(select * from tb1)被反复使用,这时可以为该临时表创建视图.视图相当于为某个查询创建了别名. 1.创建视图 create view v1 as selec ...

  7. ps去掉图片上的文字

    使用仿制图章工具去除文字这是比较常用的方法,具体的操作是,选取仿制图章工具,按住Alt键,在无文字区域点击相似的色彩名图案采样,然后在文字区域拖动鼠标复制以覆盖文字.要注意的是,采样点即为复制的起始点 ...

  8. 二、jspxcms使用-用户和模型

    原本想二次开发,后来放弃了,里面东西很多. 1.用户 菜单位置:用户权限 注意:用户中 id为0和1的用户为默认用户,不要删,0是默认管理员用户,1是匿名账户.                   会 ...

  9. Python_tkinter(5)_GUI工具

    1.Excel行数统计工具 源代码 import xlrd import tkinter as tk import tkinter.filedialog # 计算一个工作簿中所有Sheet表的行数 d ...

  10. JMeter 压测基础(四)——Java工程测试

    JMeter Java工程测试 1.eclipse中新建工程 2.导入需要的jar包 从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“Apac ...