Files
H100PowerManger/test/cantools/dbc2csv.py
T
2025-05-16 01:08:12 +08:00

55 lines
1.9 KiB
Python

import cantools
import csv
import sys
def export_dbc_to_csv(dbc_file, csv_file):
try:
# 载入 DBC 文件
db = cantools.database.load_file(dbc_file)
print(f"成功加载 DBC 文件: {dbc_file}")
# 打开 CSV 文件写入
with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
# 写入表头
writer.writerow([
"MessageName", "MessageID", "DLC", "Sender",
"SignalName", "StartBit", "Length", "Factor", "Offset",
"Min", "Max", "Unit", "Receivers", "SignalComment"
])
# 遍历每条消息和信号
for msg in db.messages:
for signal in msg.signals:
writer.writerow([
msg.name,
hex(msg.frame_id),
msg.length,
','.join(msg.senders),
signal.name,
signal.start,
signal.length,
signal.scale,
signal.offset,
signal.minimum,
signal.maximum,
signal.unit,
','.join(signal.receivers),
signal.comment if signal.comment else ''
])
print(f"已导出为 CSV 文件: {csv_file}")
except Exception as e:
print(f"导出失败: {e}")
if __name__ == "__main__":
# if len(sys.argv) != 3:
# print("用法: python dbc_to_csv.py your_file.dbc output.csv")
# else:
# export_dbc_to_csv(sys.argv[1], sys.argv[2])
export_dbc_to_csv(
'/home/zjk/project/H100/H100PowerManger/test/cantools/CSC_TSU_20240823.dbc',
'/home/zjk/project/H100/H100PowerManger/test/cantools/CSC_TSU_20240823.csv'
)