代码之家  ›  专栏  ›  技术社区  ›  JulianWgs

如何转换。blf数据从CAN传输至。使用python的csv

  •  4
  • JulianWgs  · 技术社区  · 7 年前

    我有矢量软件中blf格式的CAN数据。为了进一步研究,我想使用python将其转换为csv格式。

    我目前的进展:

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

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

    这可能 help

    1 回复  |  直到 7 年前
        1
  •  7
  •   JulianWgs    3 年前

    原始答案:

    该对象的列表起到了作用

    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数据提供了一个类似熊猫的API。看看吧 here 。可以找到功能演示 here

    • 处理CAN数据的通用格式
    • 使用dbc文件中的数据自动丰富测井数据的绘图
    • 各种信号的通用和可扩展绘图功能
    • 轻松将CAN数据导出到熊猫数据框
    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"]