CAN BLF包解析和播包发送(二):CAN BLF包解析 |
您所在的位置:网站首页 › blf文件解析 › CAN BLF包解析和播包发送(二):CAN BLF包解析 |
DBC解析请见:CAN BLF包解析和播包发送(一):CAN dbc解析https://blog.csdn.net/qq_42503781/article/details/128966946 CAN BLF包解析 BLF是什么BLF是vector的CANoe工具录制can报文形成的包的数据格式,一般会保存在BLF和ASC两种格式,BLF是其中一种。 好,废话不多说,直接进入BLF解析,无需看BLF的格式定义,直接根据包的输出即可直观了解。 BLF包解析BLF解析需要结合dbc和blf解析两者才可实现正常数据展示。 dbc解析请转至文章开始,点击链接跳转。 BLF解析也采用python,需要使用can的库,安装方法: pip3 install can使用时,直接import can即可。 直接上代码,可直接运行: # -*- coding: utf-8 -*- ##### """ # author:vehicle_ma, 2023/2/10 """ ###### import can import cantools import time db = cantools.db.load_file('test.dbc') #dbc对象 filename = "test.blf" blf = can.BLFReader(filename) #blf对象 for msg in blf: ID = msg.arbitration_id #message id time_stamp = msg.timestamp #blf包中保存的报文时间戳 can_data = msg.data #blf包中保存的数据,直接打印是加密的数字字符码 dict_data = db.decode_message(msg.arbitration_id, msg.data) #对数据进行解码 length = msg.dlc #blf包中保存的报文长度,如8,64 print('origin message data ', msg.data) print('message id: ', ID) print('message data ', dict_data) print('message length ', length) break #为了好展示,所以就输出了包里面的第一行报文,全输出去掉即可直接执行结果: origin message data bytearray(b'\x00\x02\x00\x04\x00\x00\t|\x80\x08\x00\x80\x00\x00\x00\x00\x04\x00\x00\x02\x00\x80\x00\x00\x80\x08\x00\x00\x04\x00\x00\x00\x02\x00\x00\x08\x00\x80\x00\x00\x80\x00\x00\x04\x00\x00\x00\x00\x80\x08\x00\x80\x02\x00\x00\x00\x80\x08\x00\x00\x04\x00\x00\x00') message id: 428 message data {'FRM_ObjID': 0, 'FRM_ObjObstcl': 0.0, 'FRM_ObjDirAccrnY': 0.0, 'FRM_ObjExistnc': 0.0, ********(这里不全部展示了)} message length 64这里面用到的接口有: blf = can.BLFReader(filename), 获取一个blf文件对象d = db.decode_message(msg.arbitration_id, msg.data), db为dbc对象,根据输入的id和data,对data进行decode,形成可直观展示的结果;相对应的就有对can报文进行encode的接口: msg.data = db.encode_message(msg.arbitration_id, d), 输入为message id和直观展示的直观展示的字典结果,如上述中decode之后的结果。输出就是上述示例中的origin message data |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |