ROS-CAN通信解析程序分析(ROS中进行CAN通信)
CANALYST-II的linux版本通信解析程序
我们解析程序的先后顺便为:
- open,打开can卡;
- initcan,对can卡进行初始化;
- start,启动can通道;
- 就可以接收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为保留参数。
注:
- pReceive数组大小一定要比len大,否则会出现内参读写错误
- len为可接收的最大长度,实际的接收长度都比此长度小
- waittime保留参数一般设置为100
- 函数的返回实际读取的帧数, 若=-1表示USB-CAN设备不存在或USB掉线。
发送函数
DWORD __stdcall VCI_Transmit(DWORD DeviceType,DWORD DeviceInd,DWORD
CANInd,PVCI_CAN_OBJ pSend,DWORD Length);
发送函数跟接收函数类似,psend为发送结构体的首指针,length为发送帧的长度。
注:
- length一般为1,单帧的发送,发送效率较高
接收函数一般为时间触发,每多少毫秒接收一次,发送函数一般为事件触发,有内容才发送
初始化成功
跟windows下的CANtest传输
ubuntu接收,windows发送
ubuntu发送,windows接收
成功!!
详细代码见
链接: ROS-CAN通信协议程序.
ROS-CAN通信解析程序分析(ROS中进行CAN通信)相关推荐
- 4.0 树莓派做下位机播放视频、控制电机舵机、超声波检测、paj7620手势传感器控制,树莓派串口通信等程序分析
文章目录 一.前言 二.Python实现封装打包自己写的代码 参考链接 我的参考 _init_.py setup.py 三. 树莓派的硬件解码播放器--Omxplayer 四.树莓派控制舵机,驱动L2 ...
- matlab ros 手势识别,使用MATLAB读取分析ros记录的.bag文件
/一定要关闭所有的防火墙 设置主机IP setenv('ROS_MASTER_URI','http://192.168.43.241;11311') 设置本机节点ip setenv('ROS_IP', ...
- 原理 msc_解析应用在气象站中的GPRS通信原理及优势
现如今,我们对于气象数据的需求越来越高,比如,我们出去游玩时需要了解景区的生态环境和气象环境要素,有关部门需要了解高速公路气象状况以确保行车安全,农民伯伯需要了解更加精准的温度.降水量等气象要素信息来 ...
- caffe common 程序分析 类中定义类
caffe中 有 common.hpp 和common.cpp // The main singleton of Caffe class and encapsulates the boost and ...
- 程序分析过程中遇到疑难问题解决办法
1.怎样分析一个程序的流程 C# JAVA C++ 打印出调用堆栈. (1).打印C#调用堆栈 new System.Diagnostics.StackTrace().ToString() (2).打 ...
- 【翻译】Tricorder-谷歌如何建立程序分析的生态系统
I. 介绍II. 背景A. 开发流程B. 谷歌的程序分析III. 谷歌程序分析理念A. 0误报率B. 授权用户做出贡献C. 改进数据驱动的可用性D. 工作流集成是关键E. 项目级别定制,而不是用户定制 ...
- 从源码角度分析Android中的Binder机制的前因后果
为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道.消息队列.socket机制等.socket我们再熟悉不过了,然而其作为一款通用的接口,通信开 ...
- Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析
背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...
- 软件 2.0 时代的程序分析
作者 | 张昕 整理 | 晴天 作者经历: 2020.9 – 现在,北京大学计算机系助理教授 2017.9 – 2020.8,美国麻省理工学院计算机与人工智能实验室博士后 2017,博士,美国佐治亚理 ...
最新文章
- android 运动管理,使用 MotionLayout 管理运动和微件动画
- Ajax的数据发送与接收(jQuery)
- Mybatis主要内容
- android发展的外文文献综述,android文献综述总结.docx
- 为什么有人说“穷人玩股票一般都会赔”?
- 对MAC自带的SVN进行升级
- 网络广告中,CPC、CPA、CPM 的定义各是怎样的?
- html加减乘除除数不能为零,如何用正则表达式表示除数不为0 呢
- 欢迎来到咆哮2020:人工智能时代
- matlab 中图字体设置,关于matlab绘图中字体及图片大小等的设置
- Spring Boot框架
- Pycharm复制代码时括弧前出现空格
- 基金投资入门3:中外常见金融指数类型说明
- 沙龙与华为强强携手,机甲龙惊艳广州车展
- 基于微信小程序的在线商城设计(后台PHP)
- 支付宝“刷脸支付”韩国遇冷 真相让人笑出眼泪
- delphi JSON用法
- 【国产数据库】GBase学习④ - GBase 8c 介绍
- java计算机毕业设计旅游服务平台源代码+数据库+系统+lw文档
- 毕业设计 基于51单片机智能停车场管理车位引导系统设计
热门文章
- Linux与Windows下Shebang的执行
- python readlines慢_为什么在Python中readline()比readlines()慢得多?
- python中readlines_python读文件的三个方法read()、readline()、readlines()详解
- ABC 227 D(二分
- 微信小程序数组删除元素splice不起作用
- hmr webpack 不编译_Webpack的HMR原理分析
- 布局HR SaaS领域,极光转型的阵痛期将止?
- python实现电脑自动开机_教你用Python人脸识别自动开机,值得收藏
- 中创向心力:职业院校如何严格职业技能等级考核与证书发放?
- Hackbar旧版安装教程