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通信协议程序.

ROS-CAN通信解析程序分析(ROS中进行CAN通信)相关推荐

  1. 4.0 树莓派做下位机播放视频、控制电机舵机、超声波检测、paj7620手势传感器控制,树莓派串口通信等程序分析

    文章目录 一.前言 二.Python实现封装打包自己写的代码 参考链接 我的参考 _init_.py setup.py 三. 树莓派的硬件解码播放器--Omxplayer 四.树莓派控制舵机,驱动L2 ...

  2. matlab ros 手势识别,使用MATLAB读取分析ros记录的.bag文件

    /一定要关闭所有的防火墙 设置主机IP setenv('ROS_MASTER_URI','http://192.168.43.241;11311') 设置本机节点ip setenv('ROS_IP', ...

  3. 原理 msc_解析应用在气象站中的GPRS通信原理及优势

    现如今,我们对于气象数据的需求越来越高,比如,我们出去游玩时需要了解景区的生态环境和气象环境要素,有关部门需要了解高速公路气象状况以确保行车安全,农民伯伯需要了解更加精准的温度.降水量等气象要素信息来 ...

  4. caffe common 程序分析 类中定义类

    caffe中 有 common.hpp 和common.cpp // The main singleton of Caffe class and encapsulates the boost and ...

  5. 程序分析过程中遇到疑难问题解决办法

    1.怎样分析一个程序的流程 C# JAVA C++ 打印出调用堆栈. (1).打印C#调用堆栈 new System.Diagnostics.StackTrace().ToString() (2).打 ...

  6. 【翻译】Tricorder-谷歌如何建立程序分析的生态系统

    I. 介绍II. 背景A. 开发流程B. 谷歌的程序分析III. 谷歌程序分析理念A. 0误报率B. 授权用户做出贡献C. 改进数据驱动的可用性D. 工作流集成是关键E. 项目级别定制,而不是用户定制 ...

  7. 从源码角度分析Android中的Binder机制的前因后果

    为什么在Android中使用binder通信机制? 众所周知linux中的进程通信有很多种方式,比如说管道.消息队列.socket机制等.socket我们再熟悉不过了,然而其作为一款通用的接口,通信开 ...

  8. Python与OpenCV(二)——基于背景差分法的运动目标检测程序分析

    背景差分法是传统运动目标检测算法中最常用的方法.其基本原理如图所示. 从图中可知,背景差分法是通过建立背景模型,比较当前帧与背景模型对应像素的差异点来检测运动目标的方法. 背景模型的建立主要通过两种方 ...

  9. 软件 2.0 时代的程序分析

    作者 | 张昕 整理 | 晴天 作者经历: 2020.9 – 现在,北京大学计算机系助理教授 2017.9 – 2020.8,美国麻省理工学院计算机与人工智能实验室博士后 2017,博士,美国佐治亚理 ...

最新文章

  1. android 运动管理,使用 MotionLayout 管理运动和微件动画
  2. Ajax的数据发送与接收(jQuery)
  3. Mybatis主要内容
  4. android发展的外文文献综述,android文献综述总结.docx
  5. 为什么有人说“穷人玩股票一般都会赔”?
  6. 对MAC自带的SVN进行升级
  7. 网络广告中,CPC、CPA、CPM 的定义各是怎样的?
  8. html加减乘除除数不能为零,如何用正则表达式表示除数不为0 呢
  9. 欢迎来到咆哮2020:人工智能时代
  10. matlab 中图字体设置,关于matlab绘图中字体及图片大小等的设置
  11. Spring Boot框架
  12. Pycharm复制代码时括弧前出现空格
  13. 基金投资入门3:中外常见金融指数类型说明
  14. 沙龙与华为强强携手,机甲龙惊艳广州车展
  15. 基于微信小程序的在线商城设计(后台PHP)
  16. 支付宝“刷脸支付”韩国遇冷 真相让人笑出眼泪
  17. delphi JSON用法
  18. 【国产数据库】GBase学习④ - GBase 8c 介绍
  19. java计算机毕业设计旅游服务平台源代码+数据库+系统+lw文档
  20. 毕业设计 基于51单片机智能停车场管理车位引导系统设计

热门文章

  1. Linux与Windows下Shebang的执行
  2. python readlines慢_为什么在Python中readline()比readlines()慢得多?
  3. python中readlines_python读文件的三个方法read()、readline()、readlines()详解
  4. ABC 227 D(二分
  5. 微信小程序数组删除元素splice不起作用
  6. hmr webpack 不编译_Webpack的HMR原理分析
  7. 布局HR SaaS领域,极光转型的阵痛期将止?
  8. python实现电脑自动开机_教你用Python人脸识别自动开机,值得收藏
  9. 中创向心力:职业院校如何严格职业技能等级考核与证书发放?
  10. Hackbar旧版安装教程