Python工具——dbc文件生成CAN报文解析接口

gitee仓库地址:HuangJunzeng/dbc_Parse

在工作中难免会遇到需要手动解析CAN报文的需求。从dbc或excel文件手动做CAN报文的解析接口,非常繁琐且容易出错。使用Python开源库如cantools等可以自动生成解析接口,但生成的文件、接口形式总是不能完全满足需求。

索性自己开发一个python小工具。目前可以实现从dbc文件直接生成CAN报文的解析、打包接口。

生成的接口文件借鉴了AUTOSAR的设计思路:
1)读取dbc文件,生成CAN报文、CAN信号的配置文件。CAN信号的配置结构体中包含该信号的数据类型、起始位、长度等信息。
2)手动编写静态解析/打包接口,可以根据CAN报文、CAN信号的配置信息,解析CAN信号,或将CAN信号打包至CAN报文原始数据中。

这种设计的优势是:
1)代码解耦,读取dbc文件生成配置文件的部分,与解析/打包的静态代码可以分开设计实现。
2)基于代码的解耦,方便后续对工具进行维护升级,如目前工具还不支持intel格式、不支持信号复用格式等等。后续读取dbc文件生成配置代码、静态代码部分可以分开进行功能扩展和测试。

这种设计的劣势是:
1)解析/打包的函数接口运行效率较低。
2)占用Flash或RAM空间较多。由于每个CAN信号都要生成相应的配置结构体,如果CAN信号较多,则要占据较大的RAM空间。考虑对单片机来说RAM资源更宝贵,在生成配置结构体时将其配置为const类型,改存到Flash中。

其实有另一种接口生成的思路,就是直接在接口中对CAN原始报文进行移位操作、计算分辨率和偏移量,这种设计的代码运行效率显然更高。但代价就是工具本身的代码耦合性高,不方便后期的功能升级和维护。笔者在做好这版工具后会考虑按这种思路再做一版。

工具还在开发中,尚未充分测试,笔者会在readme.md中记录相关信息,使用工具前注意下工具开发进度。

欢迎交流!

邮箱:1512915174 @qq.com
微信:JasonHChina

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值