Linux下CAN调试工具can-utils的使用

文章目录

    • candump
    • cansend
    • canbusload

can-utils提供了一系列实用的命令行工具,可以方便的调试CAN总线数据。这里主要记录各个工具的用法

  • candump: 用于查看CAN数据
  • cansend: 用于发送数据到CAN总线
  • canbusload: 用于查看CAN总线使用率

candump

命令行中输入candump然后回车可以打印出该工具的详细用法

candump - dump CAN bus traffic.Usage: candump [options] <CAN interface>+(use CTRL-C to terminate candump)Options:-t <type>   (timestamp: (a)bsolute/(d)elta/(z)ero/(A)bsolute w date)-H          (read hardware timestamps instead of system timestamps)-c          (increment color mode level)-i          (binary output - may exceed 80 chars/line)-a          (enable additional ASCII output)-S          (swap byte order in printed CAN data[] - marked with '`' )-s <level>  (silent mode - 0: off (default) 1: animation 2: silent)-b <can>    (bridge mode - send received frames to <can>)-B <can>    (bridge mode - like '-b' with disabled loopback)-u <usecs>  (delay bridge forwarding by <usecs> microseconds)-l          (log CAN-frames into file. Sets '-s 2' by default)-L          (use log file format on stdout)-n <count>  (terminate after receiption of <count> CAN frames)-r <size>   (set socket receive buffer to <size>)-D          (Don't exit if a "detected" can device goes down.-d          (monitor dropped CAN frames)-e          (dump CAN error frames in human-readable format)-x          (print extra message infos, rx/tx brs esi)-T <msecs>  (terminate after <msecs> without any reception)Up to 16 CAN interfaces with optional filter sets can be specified
on the commandline in the form: <ifname>[,filter]*Filters:Comma separated filters can be specified for each given CAN interface.
<can_id>:<can_mask>(matches when <received_can_id> & mask == can_id & mask)
<can_id>~<can_mask>(matches when <received_can_id> & mask != can_id & mask)
#<error_mask>(set error frame filter, see include/linux/can/error.h)
[j|J](join the given CAN filters - logical AND semantic)CAN IDs, masks and data content are given and expected in hexadecimal values.
When can_id and can_mask are both 8 digits, they are assumed to be 29 bit EFF.
Without any given filter all data frames are received ('0:0' default filter).Use interface name 'any' to receive from all CAN interfaces.Examples:
candump -c -c -ta can0,123:7FF,400:700,#000000FF can2,400~7F0 can3 can8candump -l any,0~0,#FFFFFFFF(log only error frames but no(!) data frames)
candump -l any,0:0,#FFFFFFFF(log error frames and also all data frames)
candump vcan2,92345678:DFFFFFFF(match only for extended CAN ID 12345678)
candump vcan2,123:7FF(matches CAN ID 123 - including EFF and RTR frames)
candump vcan2,123:C00007FF(matches CAN ID 123 - only SFF and non-RTR frames)

常用的几种情况

  1. 直接使用如下指令查看对应CAN设备总线上的所有数据:
candump can1
  1. 查看特定ID的CAN数据
candump can1,181:7FF,281:7FF // candump <can_devices>,<can_id>:<can_mask>

这里是只监听CANID为0x181,0x281的数据。(知识点:CAN标准帧ID为11位,对应的掩码为0x7FF。CAN扩展帧ID为29位,对应的掩码为0x1FFFFFFF)

cansend

Usage: cansend - simple command line tool to send CAN-frames via CAN_RAW sockets.
Usage: cansend <device> <can_frame>.
<can_frame>:<can_id>#{R|data}          for CAN 2.0 frames<can_id>##<flags>{data}    for CAN FD frames<can_id>:can have 3 (SFF) or 8 (EFF) hex chars
{data}:has 0..8 (0..64 CAN FD) ASCII hex-values (optionally separated by '.')
<flags>:a single ASCII Hex value (0 .. F) which defines canfd_frame.flagsExamples:5A1#11.2233.44556677.88 / 123#DEADBEEF / 5AA# / 123##1 / 213##3111F334455#1122334455667788 / 123#R for remote transmission request.
  1. 发送数据到CAN总线
cansend can1 201#1122334455667788 //发送 11 22 33 44 55 66 77 88到总线
cansend can1 000#0100

canbusload

canbusload - monitor CAN bus load.Usage: canbusload [options] <CAN interface>+(use CTRL-C to terminate canbusload)Options:-t  (show current time on the first line)-c  (colorize lines)-b  (show bargraph in 5% resolution)-r  (redraw the terminal - similar to top)-i  (ignore bitstuffing in bandwidth calculation)-e  (exact calculation of stuffed bits)Up to 16 CAN interfaces with mandatory bitrate can be specified on the
commandline in the form: <ifname>@<bitrate>The bitrate is mandatory as it is needed to know the CAN bus bitrate to
calcultate the bus load percentage based on the received CAN frames.
Due to the bitstuffing estimation the calculated busload may exceed 100%.
For each given interface the data is presented in one line which contains:(interface) (received CAN frames) (used bits total) (used bits for payload)Examples:user$> canbusload can0@100000 can1@500000 can2@500000 can3@500000 -r -t -b -c
  1. 查看CAN1总线负载
canbusload can1@500000

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/732994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建智能IoT系统的步骤

目录 一、需求分析 二、设备选择与部署 三、架构设计 四、边缘节点的配置 五、数据处理与分析 六、安全措施 七、测试与优化 总结 构建一个智能IoT系统需要经过一系列精心规划和执行的步骤&#xff0c;以确保系统的稳定性、可靠性和高效性。下面将详细介绍构建智能IoT系…

【数据分享】2013-2022年全国范围逐月CO栅格数据(免费获取)

空气质量数据是在我们日常研究中经常使用的数据&#xff01;之前我们给大家分享了2000-2022年全国范围逐月的PM2.5栅格数据和2013-2022年全国范围逐月SO2栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;。 本次我们给大家带来的是2013-2022年全国范围的逐月的CO栅格…

【微信小程序】基本语法

目录 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 二、事件冒泡和事件捕获 三、生命周期 一、列表渲染&#xff08;包括wx:for改变默认&#xff09; 1、列表渲染(wx-for、block 改变默认wx:for item等) <view> {{msg}} </view> //渲染跟普通vu…

jupyter notebook 调整深色背景与单元格宽度与自动换行

# 安装jupyter主题 pip install jupyterthemes # 列举主题 jt -l # 设置主题 jt -t chesterish设置宽度 打开users 当前用户目录下的custom.css文件 写入.container { width:80% !important; } 即可 设置自动换行 查找创建这个目录以及文件notebook.json 写入配置 “li…

DualSPHysics使用FlowTool工具进行后处理,定义的粒子全在domains外,解决办法

可以知道DualSPHysics官方给了后处理工具使用的示例&#xff0c;如下就是官方给的案例&#xff0c;使用FlowTool工具可以计算出在两个实体domain内的粒子数。 然而我自己也定义了2个domains&#xff0c;但是计算出来Tank1和Tank2里边的粒子数一直是空的&#xff0c;粒子全部在…

保姆级讲解字符串函数(上篇)

目录 字符分类函数 导图 函数介绍 1.getchar 2. isupper 和 islower 字符转换函数&#xff1a;&#xff08;toupper , tolower&#xff09; 与 putchar 字符串函数 导图 string函数的使用和模拟实现 string的使用 求字符串长度 字符串的比较 string函数的模拟实现…

王道机试C++第 4 章 字符串:字符串内容续写几个小程序 Day30

统计字符 习题描述 统计一个给定字符串中指定的字符出现的次数。 输入描述&#xff1a; 测试输入包含若干测试用例&#xff0c;每个测试用例包含2行&#xff0c;第1行为一个长度不超过5的字符串&#xff0c;第2行为一个长度不超过80的字符串。注意这里的字符串包含空格&…

2419. prufer序列(prufer编码,模板题)

活动 - AcWing 本题需要你实现prufer序列与无根树之间的相互转化。 假设本题涉及的无根树共有 n 个节点&#xff0c;编号 1∼n。 为了更加简单明了的描述无根树的结构&#xff0c;我们不妨在输入和输出时将该无根树描述为一个以 n 号节点为根的有根树。 这样就可以设这棵无…

Sora的盈利新视角:从共创经济到产业赋能

随着科技的进步&#xff0c;人工智能和机器学习技术正逐渐成为推动经济增长的新动力。在这样的背景下&#xff0c;Sora作为一款先进的AI视频生成工具&#xff0c;其盈利路径和产业影响也呈现出新的特点。本文将从共创经济和产业赋能的角度&#xff0c;探讨Sora的盈利新路径以及…

kamailio转发电话到目的地,目的返回失败时再转给其他IP

按图中这样测试&#xff1a; A---->kamailio------->B B返回480等失败错误码&#xff08;非200 OK&#xff09;&#xff0c;能进入failure_route[TOVOICEMAIL]&#xff0c;但是t_relay_to_udp执行失败。 好吧&#xff0c;说是&#xff1a;在 failure_route 中处理的是…

苍穹外卖-day01

苍穹外卖-day01 目录 苍穹外卖-day01课程内容1. 软件开发整体介绍1.1 软件开发流程1.2 角色分工1.3 软件环境 2. 苍穹外卖项目介绍2.1 项目介绍2.2 产品原型2.3 技术选型 3. 开发环境搭建3.1 前端环境搭建3.2 后端环境搭建3.2.1 熟悉项目结构3.2.2 Git版本控制3.2.3 数据库环境…

【考研数学】129高分学姐二战经验+资料分享

21年数学三87分 22年数学三129分 可以说这两年该踩的雷我都踩了、该做的题我都做了。 进来看看是什么使我突然醒悟让我数学提分40多分的叭。 李林的880题我也做过&#xff0c;先来说说这本书的优缺点以及适用人群吧。 习题优点 李林老师的880题难度适中&#xff0c;很贴近…

【视频转码】基于ZLMediakit的视频转码技术概述

一、概述 zlmediakit pro版本支持基于ffmpeg的转码能力&#xff0c;在开源版本强大功能的基础上&#xff0c;新增支持如下能力&#xff1a; 1、音视频间任意转码(包括h265/h264/opus/g711/aac等)。2、基于配置文件的转码&#xff0c;支持设置比特率&#xff0c;codec类型等参…

总结:Java枚举类Enum常用API,与EnumUtil工具类封装

总结&#xff1a;Java枚举类Enum常用API&#xff0c;与EnumUtil工具类封装 一通过enum关键字创建一个枚举类&#xff1a;二自定义枚举对象常用方法示例&#xff1a;1.获取枚举值方法&#xff1a;一般为code字段2.获取描述值方法&#xff1a;一般为description字段3.获取枚举对象…

使用docker搭建chromium

使用Docker CLI 首先&#xff0c;你需要确保已经安装了Docker。以下是使用Docker命令行界面&#xff08;CLI&#xff09;搭建linuxserver/chromium的步骤&#xff1a; 拉取linuxserver/chromium镜像&#xff1a; docker pull linuxserver/chromium这将从Docker Hub上拉取最新的…

LeetCode-Hot100

哈希 1.两数之和&#xff1a; 给定一个整数数组nums和一个整数目标值target&#xff0c;请你再该数组中找出和为目标值target的那两个整数&#xff0c;并返回它们的数组下标。 思路&#xff1a;暴力解法是使用两层循环来遍历每一个数&#xff0c;然后找出两数之和等于target的…

Unity的PICO项目基础环境搭建笔记(调试与构建应用篇)

文章目录 前言一、为设备开启开发者模式1、开启PICO VR一体机。前往设置>通用>关于本机>软件版本号2、一直点击 软件版本号 &#xff0c;直到出现 开发者 选项3、进入 开发者模式&#xff0c;打开 USB调试&#xff0c;选择 文件传输 二、实时预览应用场景1、下载PC端的…

Linux中的read命令详解:交互性脚本编写的利器

在Linux系统中&#xff0c;Shell脚本是一种强大的工具&#xff0c;用于自动化任务和编写系统管理脚本。然而&#xff0c;有时候需要脚本能够与用户进行交互&#xff0c;以便动态地获取输入或提供输出。这时&#xff0c;read命令就成为了我们的利器。本文将深入探讨read命令的使…

2024年新手视频剪辑软件推荐-6款视频剪辑软件测评

视频剪辑软件推荐 premiere premiere 直达地址:各大软件网站 说到底,还是得专业的来,虽然很多人觉得他是收费的,但是你懂的,想要免费总是会有办法的.别的不说,剪辑这块,我还是很认可这个软件,虽然我现在还是刚入门. 剪映 剪映 抖音官方推出的一款手机视频编辑剪辑应用,提供切割…

go切片实现原理

近日一直在学习golang,已经产出如下博客一篇 GO闭包实现原理(汇编级讲解) 引言 最近在使用go语言的切片时,出现了一些意料之外的情况,遂查询相关文档学习后写下此篇博客 正文 首先,我们思考,go在通过函数传递一个切片时,是通过引用传递的吗,还是通过值传递的呢(答案将会很…