封装时间转换工具类_Excel2DBC工具

321bd3338776db6a17b58b742400a7a8.png


本篇文章主要介绍 CAN总线工具

第一节 Excel2DBC工具

基于python脚本的excel2dbc工具,可以实现从excel矩阵文件自动化转换成dbc文件,转换过程中,能够检查excel文件中的错误,生成错误检查报告,实现一周的工作10分钟完成,大幅提高工作效率,节省出来的时间,可以用来学习新技术,然后运用在工作中的其他领域,善用工具,实现正向循环。

Dbc文件格式是Vector公司的CAN总线数据库文件,可以用Vector的CANdb++软件编辑,该文件格式也被Vspy、周立功等CAN工具支持。先先说一下dbc文件的格式吧,用notepad++打开dbc文件,可以看到很多奇怪的符号,其实就是值表、报文和信号、注释、dbc文件属性等内容。每项内容前面都会用关键字标志出来,BU_:后面接控制器名称,比如BCM,VAL_TABLE_表示值表,格式为:VAL_TABLE_ 信号名 值 “值描述”, BO_是报文,格式为BO_ CANID(10进制) 报文名: DLC 发送节点;SG_是信号,格式为SG_ 信号名 :起始位(从1计数)|信号长度@interl格式(1)/摩托罗拉格式(2)数据格式(+表示unsigned) (精度,偏移量) [最小值|最大值] “单位” Vector__XXX(就是一个标志,也可以是其他的);CM_表示注释,后面是报文和信号的描述;BA_DEF_是dbc文件定义的属性,BA_DEF_DEF_是dbc文件使用的属性;BA_发送类型和报文类型的表述,见图7-1-1最后一个数字,GenMsgSendType为发送类型,0表示周期型(这个在BA_DEF_字段自定义的),VframeFormat表示报文类型,3表示可以标准帧(这个也在BA_DEF_字段自定义);VAL_字段是信号值的表述,格式为VAL_ CANID 信号名 值 “值描述”。以上基本就是一个dbc文件的所有字段了。

abf21a916bbaa7c8cafa83cbe1faded4.png
图7-1-1

基于python的excel2dbc转换工具,其核心原理就是读取excel文件中报文和信号的属性,将其封装为结构体数组,见图7-1-2,构造了Msg类和Sig类,分别封装报文和信号的相关属性,比如报文名称、报文ID、报文数据长度、发送节点和周期、信号名称、信号所在字节和位、信号精度和偏移量等等,读取excel矩阵的内容,填充这些类,为后续操作做准备。在读取的过程中,转换工具会检查excel文件中的语法错误,生成错误报告,只有当所有的语法错误都修改后,才能生成dbc文件。

cea7b8a0fbbeb71c842cfd3aeca59598.png
图7-1-2 报文和信号封装

整个工具运行流程见图7-1-3,首先加载excel矩阵文件(矩阵文件的格式暂时固定,用标准模板),将所有的报文和信号的属性封装起来,存放在计算机内存,然后会读取这些封装的内容,检查excel文件中存在的错误,如果没有错误,则直接生成dbc文件,如果有错误,则生成错误检查报告,用户根据错误检查报告的提示,修改excel矩阵文件中的错误,常见错误包括信号值为空、报文周期未定义、报文发送节点未定义等等,修改完错误后,再次运行工具,就能生成dbc文件了。

生成dbc文件以后,当我们用CANdb++打开dbc文件时,可能还会报错,见图7-1-4,根据提示,用notepad++打开dbc文件,找到对应的行数(一般出错的地方都是在报错行数的下一行),错误原因一般是命名不符合C语言规范,多了特殊字符等原因,修改了这些错误以后,dbc文件就能正常打开了。

749d2e4d80dd29942dfa216119964ef0.png
图7-1-3 流程图

21955f06d934d165c7ce58de535b93ef.png
图7-1-4 打开错误
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值