【问题标题】:How do I convert .blf data from CAN to .csv using python如何使用 python 将 .blf 数据从 CAN 转换为 .csv
【发布时间】:2018-03-26 20:16:22
【问题描述】:

我有来自 Vector 软件的 blf 格式的 CAN-Data。为了进一步调查,我想使用 python 将其转换为 csv 格式。

我目前的进展:

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

我不知道这是否正确。我现在无法将“日志”保存到 csv 文件。

这可能是help

【问题讨论】:

    标签: python type-conversion can-bus


    【解决方案1】:

    原答案:

    该对象的列表可以解决问题

    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。可以在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"]
    

    【讨论】:

    • 我尝试了这种方法并得到了assert header[0] == b"LOBJ", "Parse error" (File "C:\Users\my_user_name\AppData\Local\Python\Python36\lib\site-packages\can\io\blf.py", line 129, in __iter__)。我尝试传递的 BLF 文件是合法的 Vector CANoe 日志文件。有什么想法吗?
    • 请把.blf上传到某个地方,我去看看?
    • 我以前从未收到此错误。你可以上传一个虚拟文件吗?
    • 生成一个虚拟文件超出了我目前对 CANoe 的了解(我是新来的),但我确定该文件是合法的,因为我可以使用 Vector CANoe 本身将其转换为 CSV (Tools >> Logging File Conversion 对话框)没有问题。
    • 我相信你这是合法的,但要知道它是否在你身边或在代码中存在问题的唯一方法是给我某种 test-blf-file。也许你可以给我一些不保密的日志。而且它只需要非常短(1s)
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多