使用canmatrix模块解析DBC,生成的.exe文件执行报错

1. 问题现象描述

使用canmatrix模块解析DBC,pycharm运行程序代码是能够正常实现功能的,但是生成.exe后执行报错如下:

定位到出错代码如下:

python 复制代码
db = canmatrix.formats.loadp(dbc_path, encoding="utf-8")

报错信息导致的原因是加载DBC文件之后,得到的db是None。

目前还没有找到原因,我采取的解决办法是换cantools模块解析DBC文件,发现生成的.exe文件功能执行正常。

2. cantools解析DBC文件

使用cantools解析DBC,查看cantools模块的.py代码可知Signal和Message包含的字段定义如下。

Message的字段名称如下:

python 复制代码
db = cantools.database.load_file(dbc_file_path, encoding="utf-8")
# 遍历所有消息(frames)
for message in db.messages:
    message_info = dict()
    message_info["name"] = message.name
    message_info["frame_id"] = message.frame_id
    message_info["is_extended"] = message.is_extended_frame
    message_info["is_fd"] = message.is_fd
    message_info["size"] = message.length
    message_info["comment"] = message.comment

Signal的字段名称如下:

python 复制代码
 db = cantools.database.load_file(dbc_file_path, encoding="utf-8")
 for signal in message.signals:
     signal_info_dict = dict()
     signal_info_dict["name"] = signal.name
     signal_info_dict["start_bit"] = signal.start
     signal_info_dict["size"] = signal.length
     if signal.byte_order == "little_endian":
         signal_info_dict["is_little_endian"] = True
     else:
         signal_info_dict["is_little_endian"] = False
     signal_info_dict["is_signed"] = signal.is_signed
     signal_info_dict["is_float"] = signal.conversion.is_float
     signal_info_dict["offset"] = signal.conversion.offset
     signal_info_dict["factor"] = signal.conversion.scale
     signal_info_dict["min"] = signal.minimum
     signal_info_dict["max"] = signal.maximum
     signal_info_dict["unit"] = signal.unit
     signal_info_dict["comment"] = signal.comment
相关推荐
zmj3203245 天前
UDS 0x27 安全访问(种子 / 密钥 Seed-Key) 的用法、流程、算法、存储位置、安全机制
安全·can·诊断·uds·27服务
南金研高新科技(南京)有限公司6 天前
南金研CAN数采仪助力吉利远程商用车售后问题处理
can·硬件·记录仪
zmj3203249 天前
工业通信--CRC校验分类及实现细节
人工智能·单片机·数据挖掘·can
zmj32032412 天前
CAN数据帧详解
网络·can·canfd·数据帧
Z文的博客13 天前
SLCAN工程搭建与实现教程(下)
stm32·单片机·嵌入式·can
不知秋88015 天前
PEAK PCAN 设备常见报错与故障排查大全
单片机·嵌入式硬件·can·plc·codesys·peak
记录无知岁月1 个月前
【GD32】(二) 基本外设使用
单片机·can·iic·gd32·dwt
rhythm-ring1 个月前
CAN机能开发全流程实战指南
can
北京阿尔泰科技厂家3 个月前
高效连接智能世界:CAN总线通讯接口卡的多领域应用与性能解析
网络·can·工业控制·工业自动化·仪器仪表·数据通讯·通讯卡
【 STM32开发 】3 个月前
【STM32 + CubeMX】 CAN 通信
stm32·cubemx·can·hal·通信·f407