首页 > 编程知识 正文

ros底层的通信机制,ros can总线

时间:2023-05-03 08:55:34 阅读:172582 作者:4605

CANALYST-II的linux版本通信分析程序

我们分析过程的优先顺序如下

打开、can卡; 初始化initcan、can卡; 开始,启动can通道; 可以接收recive和发送传输。 open函数dword _ stdcall VCI _ open device (dword DevType,DWORD DevIndex,DWORD Reserved ) )表示形状参数的第一个devtype是设备类型,2

初始化函数dword _ stdcall VCI _ initcan (dword devtype,DWORD DevIndex,DWORD CANIndex, PVCI_INIT_CONFIG pInitConfig ),其中第一个参与的第二个DevIndex是索引号,通常为0;第三个CANIndex是CAN信道的索引,当使用can1时为0,can1为0 最后初始化结构参数

//example VCI _ init _ config VCI _ conf; vci_conf.AccCode=0; vci_conf.AccMask=0xFFFFFFFF; vci_conf.Filter=1; //用于接收所有帧的CAN信道dword _ stdcall VCI _ start can (dword devtype,DWORD DevIndex,DWORD CANIndex )根初始化函数用于描述设备类型、设备类型

接收函数dword _ stdcall VCI _ receive (dword devtype、DWORD DevIndex、DWORD CANIndex、PVCI_CAN_OBJ pReceive、ULONG Len、iid 第五个len是用于接收的帧结构数组的长度,最后一个WaitTime是保留参数。

注:

pReceive数组的大小必须大于len。 否则,发生内参读写错误的len是可以接收的最大长度。 实际的接收信长都小于这个长度的waittime预约参数通常被设置为返回100函数的实际读取的帧数。=-1表示USB-CAN设备不存在或USB已放弃。 发送函数dword _ stdcall VCI _ transmit (dword device type,DWORD DeviceInd,DWORDCANInd,PVCI_CAN_OBJ pSend,DWORD Length )

注:

length通常是1、1帧发送,发送效率高的接收函数是通常时间触发,每隔几毫秒接收一次,发送函数是通常事件触发,有内容才发送

初始化成功了

windows上的CANtest传输ubuntu接收、windows发送

ubuntu发送、windows接收

成功!

详细代码在这里

链接: ROS-CAN通信协议程序。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。