当前位置: 首页 > news >正文

使用candump+grep查看CAN报文

在Linux系统中观察看CAN报文,我们一般使用candump,但是有时候会发现总线上CAN报文太多,例如开启了好几个PDO,这就导致想看的报文被夹杂到报文的海洋里,然后再去找,非常麻烦。

candump也提供了只观察某个报文的功能,但是一次只能观察一个,如果想观察多个报文,那就要开启多个candump,而且candump的命令行不是太友好,经常要多次测试。

本人找到一个比较好的办法,就是使用Linux提供的grep命令来提取需要的CAN报文。


一 方法

假设总线叫vcan0,设备id是0x10,协议是CANopen,那么如果只想观察0x10的SDO发送报文,那么命令如下,

candump vcan0 | grep "610"

如果同时还想观察0x10的SDO应答报文,那么命令可以修改如下,

candump vcan0 | grep -E "610|590"

“-E”选项可以让“|”变成或的意思,这里是抓取信息中含610或含590的报文,同理,可以根据需要来提取多个报文


二 实践

这里开启三个终端:

  • 第一个用cansend来发送报文,
  • 第二个使用candump直接观察报文,
  • 第三个使用candump+grep来实践本文方法。

这里candump+grep的组合如下,

candump vcan0 | grep -E "610|590"

首先使用cansend发现2条报文,如下,

cansend vcan0 610#1122334455667788
cansend vcan0 611#1122334455667788
cansend vcan0 612#1122334455667788
cansend vcan0 590#1122334455667788

然后在第二个终端下观察到报文如下,
image.png

而在第三个终端下观察到的报文如下,
image.png

可以看到和预期一样。

另外,由于grep使用正则表达式,那么只要简单学下就可以根据需要提取任何报文了,非常方便。


三 总结

本文讲述了如何使用grep来查看需要的CAN报文,如果再熟悉下正则表达式,那就是如虎添翼了。

最后,本人最近开启了微信公众号,欢迎大家关注 😃
在这里插入图片描述

http://www.lryc.cn/news/151630.html

相关文章:

  • Vue中el-table表格的拖拽排序
  • 配置环境变量的作用
  • Mysql的page,索引,Explain Type等基本常识
  • 【业务功能篇95】web中的重定向与转发
  • IP对讲终端SV-6005带一路2×15W或1*30W立体声做广播使用
  • ES6 新特性
  • grafana用lark发告警python3接口
  • Java 中数据结构HashSet的用法
  • vue3下的密码输入框(antdesignvue)
  • 鸿鹄企业工程项目管理系统 Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统源代码
  • 【爬虫】5.5 Selenium 爬取Ajax网页数据
  • thinkphp6 入门(3)--获取GET、POST请求的参数值
  • JSON简介
  • [Java]_[初级]_[以SAX流的方式高效读取XML大文件]
  • Visual Studio中平台和配置的概念
  • 【vue2第八章】工程化开发和使用脚手架和文件结构
  • 建造者模式简介
  • 虚拟世界指南:从零开始,一步步教你安装、配置和使用VMware,镜像ISO文件!
  • 服务器卡顿怎么查找原因?
  • Pnpm,npm,yarn
  • Kubernetes技术--使用kubeadm快速部署一个K8s集群
  • LeetCode 45题:跳跃游戏
  • idea中设置指定图片为项目站标
  • 【【萌新的STM32学习-27--USART异步通信配置步骤】】
  • elementplus实现左侧菜单栏收缩与展开
  • VBA技术资料MF50:VBA_在Excel中突出显示前3个值
  • linux定时删除服务器日志
  • 网络地址转换技术NAT(第九课)
  • K8s 在创建pod时api-server是先找scheduler 还是controller-manager
  • 【笔记】常用 js 函数