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' )