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 timedb = cantools.db.load_file('test.dbc') #dbc对象
filename = "test.blf"
blf = can.BLFReader(filename) #blf对象for msg in blf:ID = msg.arbitration_id #message idtime_stamp = msg.timestamp #blf包中保存的报文时间戳can_data = msg.data #blf包中保存的数据,直接打印是加密的数字字符码dict_data = db.decode_message(msg.arbitration_id, msg.data) #对数据进行解码length = msg.dlc #blf包中保存的报文长度,如8,64print('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
CAN BLF包解析和播包发送(二):CAN BLF包解析相关推荐
- iis服务器udp协议,Win2003系统的IIS服务的w3wp.exe使用UDP的80端口发送大量的数据包,寻求帮助...
环境介绍: 1. 系统是:Windows 2003 Enterprise Edit + SP2 2. 作为Web服务器:安装 IIS6,同时支持asp + asp.net 1.1 + asp.net ...
- python scapy 抓包_Python3下基于Scapy库完成网卡抓包解析
Scapy是一个可以让用户发送.侦听和解析并伪装网络报文的Python程序.这些功能可以用于制作侦测.扫描和攻击网络的工具. 在 Python 代码中可以通过 sniff 函数调用抓包分析,并对抓到的 ...
- ARP原理概述——基于WinPcap发送ARP请求数据包获取远程MAC地址
ARP原理概述--基于WinPcap发送ARP请求数据包获取远程MAC地址 ARP协议 ARP概述 ARP工作原理 ARP数据包格式 编写程序发送ARP请求获取本机和远程IP的MAC 注意: ARP协 ...
- Python基于statsmodels包构建多元线性回归模型:模型构建、模型解析、模型推理预测
Python基于statsmodels包构建多元线性回归模型:模型构建.模型解析.模型推理预测 目录
- python数据包的作用_使用Python将登录数据包发送到Minecraft服务器不起作用
我在Python中有以下脚本 . 它的作用是尝试连接到MineCraft服务器,首先发送'handshake',然后发送登录请求 . 协议规格可以在这里找到:http://wiki.vg/Protoc ...
- java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
1 try { 2 //向指定的ip和端口发送数据~! 3 //先说明一下数据是谁发送过来的! 4 byte[] ip = InetAddress.getLocalHost().getHostAddr ...
- tshark 解析pcap中带TLS协议的数据包
tshark的简单用法参考:tshark解析本地pcap数据包提取五元组{src_ip,src_port,proto,dst_ip,dst_port}与时间戳,包长 详细用法:官方DOC 比如提取一个 ...
- java发送接收UDP数据包:字符串,byte[]字节数组,文件等
全栈工程师开发手册 (作者:栾鹏) java教程全解 java发送接收UDP数据包,数据内容为byte[],包括一切可以转换为byte[]的内容. 测试代码 public static void ma ...
- 网卡是如何将包转换成电信号并发送到网线中的
下面来看一看网卡是如何将包转换成电信号并发送到网线中的.网卡驱动从IP模块获取包之后,会将其复制到网卡内的缓冲区中,然后向MAC模块发送发送包的命令.接下来就轮到MAC模块进行工作了. 首先,MAC模 ...
最新文章
- ORA-12514 监听程序当前无法识别连接描述符中的服务
- 如何删除oracle用户数据库用户,oracle删除指定用户的原数据库,建立该用户的新数据库...
- WebSphere MQ For AIX和HP-UX安装配置
- ps光效插件_全套光效PS插件(2019),只有你想不到的,没有它做不到的PS特效...
- Focal Loss升级:让Focal Loss动态化,类别极端不平衡也可以轻松解决
- mysql删除有关联的数据库表_【数据库】mysql如何删除关联表
- 数据结构之单链表(头结点)的一些常用操作(增删改查逆)
- linux打印软件,KX-MB2033CN Linux
- 烂泥:nagios学习(四):pnp4nagios图形化绘制nagios数据
- 黑鸭宣布开源项目-年度新秀
- 羊坊店不眠夜(续集)
- 3串口多串口双串口以及2串口转WiFi多跳路由通讯实现一
- idea如何恢复默认的keymap
- 编辑器 的保存怎么绑定事件_135编辑器有哪些可以快速提升新媒体小编工作效率的功能?...
- 001.Python安装及Pycharm安装破解
- python中forward是什么意思_pytorch 中forward 的用法与解释说明
- 入行大数据需要学习哪些编程语言
- 金立android怎么升级包,金立S6升级刷机教程[多图]
- C语言串的基本操作(assign,compare,concat,index,insert,delete,replace)
- Matlab声音处理教程