1.如何发送或接收 CAN 数据

目的 本文介绍如何使用 can-utils [1 ]包在 SocketCAN 接口上发送/接收数据。

can-utils 包含一些用于 Linux®SocketCAN 子系统的用户空间实用程序。它已集成在STM32微处理器系列的 SDK 中。在此示例中,仅使用到 cansend 和 candump,但软件包中还提供了许多其他的工具。
准备条件
至少需要两个设备才能在 CAN 网络上进行通信。要实现这种配置,请在同一 CAN 总线上连接两个设备。然后,从一个节点发送数据,并在另一节点上接收数据。
在开始通信之前,必须在每块板上配置并启用 SocketCAN 接口。请参阅如何设置 SocketCAN 接口。

在CAN总线上发送数据

要发送单个帧,请使用 cansend 实用程序:

Board $> cansend can0 123#1122334455667788

获取 cansend 实用程序中的使用帮助信息:

Board $> cansend -hUsage: cansend <device> <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.flagse.g. 5A1#11.2233.44556677.88/123#DEADBEEF/5AA#/123##1/213##3111F334455#1122334455667788/123#R for remote transmission request.

在CAN总线上接收数据

要实时显示总线上收到的消息列表,请使用 candump 实用程序:

Board $> candump can0can0  123   [8] 11 22 33 44 55 66 77 88

在 candump 实用程序上获取帮助信息:

Board $> candump -h
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)-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]*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 can8
candump -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)

硬件自检

在内部环回测试模式下,FDCAN将发送的消息作为接收消息进行处理。此选项用于硬件自检(无需在 CAN 总线上连接外部 CAN 节点)。
要在回环模式下配置和启用 SocketCAN,请执行以下操作:

Board $> ip link set can0 up type can bitrate 1000000 dbitrate 2000000 fd on loopback on[ 78.700698] m_can 4400e000.can can0: bitrate error 0.3%[ 78.704568] m_can 4400e000.can can0: bitrate error 1.6%[ 78.710140] IPv6: ADDRCONF(NETDEV_CHANGE): can0: link becomes ready

要在同一接口上发送和接收消息,请按照下列步骤操作:

Board $> candump can0 -L &[1] 475Board $> cansend can0 300#AC.AB.AD.AE.75.49.AD.D1(1539944874.949723) can0 300#ACABADAE7549ADD1(1539944874.949683) can0 300#ACABADAE7549ADD1

2.Socket CAN指令详解

1、#ip link set canX down //关闭can设备;
2、#ip link set canX up   //开启can设备;
3、#ip -details link show canX //显示can设备详细信息;
4、#candump canX  //接收can总线发来的数据;
5、#ifconfig canX down //关闭can设备,以便配置;
6、#ip link set canX up type can bitrate 250000 //设置can波特率
7、#conconfig canX bitrate + 波特率;
8、#canconfig canX start //启动can设备;
9、#canconfig canX ctrlmode loopback on //回环测试;
10、#canconfig canX restart // 重启can设备;
11、#canconfig canX stop //停止can设备;
12、#canecho canX //查看can设备总线状态;
13、#cansend canX --identifier=ID+数据 //发送数据;
14、#candump canX --filter=ID:mask//使用滤波器接收ID匹配的数据

参考http://wiki.100ask.org/index.php?title=How_to_send_or_receive_CAN_data&oldid=6022

CAN发送和接收数据相关推荐

  1. 使用DatagramSocket发送、接收数据(Socket之UDP套接字)

    2019独角兽企业重金招聘Python工程师标准>>> 创建一个DatagramSocket实例,并将该对象绑定到指定IP地址.指定端口. 通过上面三个构造器中的任意一个构造器即可创 ...

  2. 网络——在网络上发送,接收数据

    问题 创建并加入一个网络会话是一回事,但如果不能发送或接收任何数据那么网络会话有什么用呢? 解决方案 当玩家连接到会话时,你可以在一个PacketWriter流中存储所有想要发送的数据.完成这个操作后 ...

  3. hal 双串口同时接收丢失数据_【STM32Cube_06】使用USART发送和接收数据(查询模式)...

    寻求更简洁舒适的阅读体验,请移步Mculover666的个人博客: [STM32Cube_06]使用USART发送和接收数据(查询模式)​www.mculover666.cn 本篇文章主要介绍如何使用 ...

  4. 手把手教你Android手机与BLE终端通信--连接,发送和接收数据

    假设你还没有看上一篇 手把手教你Android手机与BLE终端通信--搜索,你就先看看吧,由于这一篇要接着讲搜索到蓝牙后的连接.和连接后的发送和接收数据. 评论里有非常多人问假设一条信息特别长,怎么不 ...

  5. socket简介和udp网络程序-发送、接收数据

    socket简介 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. 其实TCP ...

  6. STM32L152RE实现串口发送及接收数据

    本文主要讲解用keil软件实现USART串口发送及接收数据,默认读者keil环境已经配好,且头文件已正确引入,如出现编译错误以及st-link下载问题,请自行百度解决. 串口发送和接收数据是一件看起来 ...

  7. Android-Ble蓝牙开发Demo示例–扫描,连接,发送和接收数据

    万物互联的物联网时代的已经来临,ble蓝牙开发在其中扮演着举重若轻的角色.最近刚好闲一点,抽时间梳理下这块的知识点. 涉及ble蓝牙通讯的客户端(开启.扫描.连接.发送和接收数据.分包解包)和服务端( ...

  8. UHD C/C++ 编程实例 USRP发送、接收数据

    UHD C/C++ 编程实例 USRP发送.接收数据 如有相关问题,欢迎随时讨论交流 jxwxg@foxmail.com 1. UHD库函数简介 1.1 发送函数 新建一个usrp设备 std::st ...

  9. Android开发-连接开发板蓝牙模块发送和接收数据

    帮同学写一个连接小车蓝牙模块遥控小车的APP,在网上搜阅了很多资料,大概了解了蓝牙的工作原理,再经历了种种BUG后终于是成功连上了小车蓝牙,并可以发送数据,小车可以接收到,测试的蓝牙是Arduino小 ...

  10. 25. Python语言 Web 开发 之 Socket 编程 · 第一章 UDP发送与接收数据

    UDP发送与接收数据 本章主题 关键词 前导: 计算机网络的发展及基础网络概念 两台电脑的通信 IP地址介绍及分类 IP地址与IP协议 Windows 和 Linux 查看网卡信息 IP地址分类 以太 ...

最新文章

  1. python list除以_扫描器篇(三)之python编写基于字典的网站目录探测脚本
  2. 软考-信息系统项目管理师-组织级项目管理
  3. beoplay(BO)耳机拒绝配对的解决方法
  4. JS中通过call方法实现继承
  5. javascript:window.showModalDialog缓存问题
  6. 查看node的位置_升级Node版本RN项目运行报错cb.apply is not a function
  7. 判断输入的字符串是否为回文_刷题之路(九)--判断数字是否回文
  8. html4中basefont,html basefont标签怎么用
  9. MSSQL游标的原理及示例
  10. 合成创意海报灵感|比技术更重要的是创意!
  11. ACL2021 知识图谱、推荐系统相关论文
  12. oracle 安装的提示ntp,oracle rac 安装 PRVG-13606 ntp 同步报错解决过程
  13. Analytic Functions in Oracle 8i and 9i
  14. R语言聚类分析可视化
  15. 快乐数Python解法
  16. 集体心智:社会网络拓扑塑造集体认知
  17. java 画趋势图,java画曲线图
  18. 阿里巴巴推进中国中产阶级奢侈消费
  19. iOS开发UI篇 -- UINagivationController
  20. 【informix】解决启动报错大全,以及解决办法

热门文章

  1. 您要允许以下程序对计算机进行更改吗,win10提示“您要允许以下程序对此计算机进行更改吗”如何解决...
  2. Android应用返回桌面后,每次点击图标,启动界面都会出现
  3. Python 初始学习 (实验一)
  4. 至少12%的Facebook帐号是虚假或重复帐号;《王者荣耀》外挂牟利可能被刑拘|ServiceHot一周热闻
  5. 【慢慢】V6.03.1 读书笔记 css字体
  6. devstack mysql_devStack-阿里云开发者社区
  7. (转)刨根问底!曲面细分技术到底是个啥?
  8. 转:对历史和常识的无知
  9. 基于无保护AES芯片的 CPA攻击
  10. JavaScript 心灵鸡汤