ROS-CAN通信解析程序分析(ROS中进行CAN通信)

2023-05-16

CANALYST-II的linux版本通信解析程序
在这里插入图片描述

我们解析程序的先后顺便为:

  1. open,打开can卡;
  2. initcan,对can卡进行初始化;
  3. start,启动can通道;
  4. 就可以接收recive和发送transmit了。

open函数

DWORD __stdcall VCI_OpenDevice(DWORD DevType,DWORD DevIndex,DWORD Reserved)

其中形参第一个DevType为设备类型,第二个 DevIndex为索引号,通常为0,第三个Reserved为保留参数,通常为 0。

初始化函数

DWORD __stdcall VCI_InitCAN(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_INIT_CONFIG pInitConfig)

其中形参第一个DevType为设备类型;第二个 DevIndex为索引号,通常为0;第三个CANIndex为CAN通道的索引,若使用can1,则为0,若使用can2,则为1;最后为初始化结构参数

//example
VCI_INIT_CONFIG vci_conf;
 vci_conf.AccCode=0;
 vci_conf.AccMask=0xFFFFFFFF;
 vci_conf.Filter=1;//接收所有帧

启动CAN通道

DWORD __stdcall VCI_StartCAN(DWORD DevType,DWORD DevIndex,DWORD CANIndex)

根初始化函数类似,型参为设备类型,索引号以及CAN通道索引

接收函数

DWORD __stdcall VCI_Receive(DWORD DevType, DWORD DevIndex, DWORD CANIndex,
PVCI_CAN_OBJ pReceive, ULONG Len, INT WaitTime);

其形参前三个跟start相同,但第四个形参 pReceive是用来接收的帧结构体VCI_CAN_OBJ数组的首指针。第五个len为用来接收的帧结构体数组的长度,最后 WaitTime为保留参数。
注:

  1. pReceive数组大小一定要比len大,否则会出现内参读写错误
  2. len为可接收的最大长度,实际的接收长度都比此长度小
  3. waittime保留参数一般设置为100
  4. 函数的返回实际读取的帧数, 若=-1表示USB-CAN设备不存在或USB掉线。

发送函数

DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD
CANInd,PVCI_CAN_OBJ pSend,DWORD Length);

发送函数跟接收函数类似,psend为发送结构体的首指针,length为发送帧的长度。
注:

  1. length一般为1,单帧的发送,发送效率较高

接收函数一般为时间触发,每多少毫秒接收一次,发送函数一般为事件触发,有内容才发送

初始化成功

打开状态提醒

跟windows下的CANtest传输

ubuntu接收,windows发送

在这里插入图片描述

在这里插入图片描述

ubuntu发送,windows接收

在这里插入图片描述
在这里插入图片描述
成功!!
详细代码见
链接: ROS-CAN通信协议程序.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS-CAN通信解析程序分析(ROS中进行CAN通信) 的相关文章

随机推荐

  • 计算机网络地址划分及子网掩码计算

    一 点分十进制记法 8 位的二进制数 转为 十进制数 注意 xff1a 1 与有分类的ip地址的区别 这里的 n 不是固定的数 是可以在0 32位之间任意的 xff0c 所以 CIDR 斜线记法 xff1a IP地址后面加上 斜线后面的是网
  • axios简介

    Axios 对原生的 AJAX 进行封装 xff0c 简化书写 get请求如下 xff1a xff08 get请求地址栏传参 xff09 axios method 34 get 34 url 34 http localhost 8080 a
  • 安装OpenCV、cython、numpy和h5py

    安装OpenCV xff1a 一 系统烧录 Raspberry Pi Imager 烧录步骤 xff1a 软件下载地址 xff1a Raspberry Pi OS Raspberry Pi xff08 建议提前准备一张容量在8G以上的SD卡
  • 优秀!他历时三个月终于拿到阿里offer,在这里分享一下阿里的社招面经!

    前言 这也是我第二次进入三面了 xff0c 也不知道这次能不能进呢 xff1f 球球阿里爸爸了 xff0c 许愿一个 hr 面可以吗 xff1f wwwww 本人双非本科大三 xff0c 基础不强 xff0c 有一个简单的秒杀项目 xff0
  • wireshark-----过滤使用方法

    1 ip过滤 ip addr 61 61 10 239 4 160
  • MySQL数据库安装步骤及报错1251解决方法

    MySQL数据库安装 MySQL是一种关系数据库管理系统 xff0c 所使用的 SQL 语言是用于访问数据库的最常用的标准化语言 xff0c 其特点为体积小 速度快 总体拥有成本低 xff0c 尤其是开放源码这一特点 xff0c 在 Web
  • Docker 安装问题

    Docker 安装问题 出现了Failed to start docker service Unit docker service not found 这个图在图上的链接处拿的 xff0c 我自己之前出现的错误图找不到了 这个错误 xff0
  • vscode配置ros开发环境

    前言 xff1a 其实有两种方法来配置vscode里的ros环境 xff0c 第一种就是先通过终端创建工作空间 xff0c 并编译后然后选择vscode打开catkin ws xff0c 然后在vscode中配置ros的编译环境 xff1b
  • 判断IP地址是否在同一个网段

    一 什么是子网掩码 xff1f 在了解ip地址的网段之前 xff0c 我们先来了解子网掩码 xff0c 很多对网络了解不深的朋友都对子网掩码有些迷惑 xff0c 不了解它是用来干什么的 xff1f 子网掩码不能单独存在 xff0c 它必须结
  • 理解MySQL七种连接

    如上图是MySQL的七种连接 由于MySQ对于外连接支持SQL99语法 xff0c 我们就以JOIN ON举例 表t dept 表t emp 1 内连接 xff1a A表 xff0c B表交叉的部分 SELECT FROM t dept d
  • IP地址的分类和规划

    每日分享 xff1a 你拼命奔跑的样子 xff0c 终究会在风中留下痕迹 xff01 文章目录 一 IP地址的格式二 私有IP地址三 IP地址分类 xff1a 四 子网掩码五 IP地址的规划 一 IP地址的格式 1 主机唯一的标识 xff0
  • QT5+TCP/IP多线程传输图片

    先上实现结果 一 概述 QT中设计TCP IP通信主要使用QTCPServer和QTCPSocket两个类 xff0c 功能分为服务器端和客户端 xff0c 服务器端负责接收图片 xff0c 客户端发送图片 多线程设计主要有两种方法 xff
  • ubuntu建立新用户

    1 新建testuser用户 sudo adduser testuser 2 设置root密码 sudo passwd root 3 更改sudoers编辑权限 sudo chmod u 43 w etc sudoers 4 给testus
  • Error: Flash Download failed - “Cortex-M3“错误解决办法

    在使用STM32F103的时候 xff0c 使用DAP仿真器下载程序 xff0c 出现下载不了的情况 xff0c 错误信息如下 xff1a 输出框里打印信息如下 xff1a No Algorithm found for 08000000H
  • 浏览器自定义滚动条样式

    当一段文本过长 xff0c 使用overflow auto属性后 xff0c 这段文本所在区域将会出现滚动条 有时候 xff0c 我们需要自定义浏览器的滚动条样式 xff0c 可以使用css3的scrollbar thumb属性来实现 首先
  • linux rpm安装讲解

    1 安装rpm安装包 rpm ivh rpm 2 删除rpm安装包 rpm evv rpm 注意 xff1a 使用 e不能完全删除
  • Linux多进程/线程编程之【fork()和exec()】

    目录 一 fork系统调用创建子进程 1 1 为什么要创建子进程 1 2 fork系统调用的内部原理 1 3 关于子进程 1 4 线程和fork 二 exec族函数及实战 2 1 为什么需要exec族函数 2 2 exec族的6个函数介绍
  • 基于STM32的USART、UART串口命令调制和解析(加密与解密)

    基于STM32的USART UART串口命令调制和解析 xff08 加密与解密 xff09 采用芯片为STM32F407ZG 调制后的命令采用USART1往外发送 发送至USART2 而后USART2接收命令后 进行解析 把命令中有用的部分
  • 【STM32笔记】晶振及旁路电容设计避坑(低速外部晶振LSE无法起振的可能原因)

    STM32笔记 晶振及旁路电容设计避坑 xff08 低功耗低速外部晶振LSE无法起振的可能原因 xff09 晶振无法起振 无非就是旁路电容设计的有问题 一般旁路电容选10pF 12pF 20pF等等 都没啥问题 尤其是高速晶振 基本不会出问
  • ROS-CAN通信解析程序分析(ROS中进行CAN通信)

    CANALYST II的linux版本通信解析程序 我们解析程序的先后顺便为 xff1a open xff0c 打开can卡 xff1b initcan xff0c 对can卡进行初始化 xff1b start xff0c 启动can通道