如何使用 python 将 .blf 数据从 CAN 转换为 .csv

How do I convert .blf data from CAN to .csv using python

我有来自 Vector 软件的 blf 格式的 CAN 数据。为了进一步调查,我想使用 python.

将其转换为 csv 格式

目前我的进度:

import can
filename = "test.blf"
log = can.BLFReader(filename)

我不知道这样对不对。我现在无法 "log" 保存到 csv 文件。

这可能help

原回答:

该对象的列表就可以了

import can
import csv

filename = "test.blf"
log = can.BLFReader("test.blf")
log = list(log)

log_output = []

for msg in log:
msg = str(msg)
log_output.append([msg[18:26],msg[38:40],msg[40:42],msg[46],msg[62],msg[67:90]])

with open("output.csv", "w", newline='') as f:
writer = csv.writer(f,delimiter=';', quotechar='\"', quoting=csv.QUOTE_ALL)
writer.writerows(log_output)

新答案:

自从我发布这篇文章以来,我实际上创建了一个库,它为 CAN 数据提供了一个 pandas 之类的 API。看看 here. A demonstration of features can be found here.

  • 处理CAN数据的常用格式
  • 使用来自 dbc 文件的数据自动丰富记录数据的图表
  • 适用于各种信号的多功能且可扩展的绘图函数
  • 轻松将 CAN 数据导出到 pandas 数据帧
import candas as cd

db = cd.load_dbc("dbc_folder")
# Provide file without extension
log_data = cd.from_file("blf_file")
# Signals can be accessed like this
log_data["AVGcellTemperature"]