相机和毫米波雷达数据融合2--SocketCan编写
参考文章
linux下的SocketCan编写
Linux socket CAN编程示例
工控机Can接口激活
工控机的can卡需要激活,一般厂家会有执行文件,你每次开机然后执行这个文件就好了。也可以把这个文件设置成开机自动执行,这样就不要每次都运行了。

里面的内容没有太大借鉴意义,不同厂家写的不一样。运行成功之后可以通过ifconfig命令查看是否出现了相应的can口。注意这里面的can口命名(can0,can1)很重要,后面的SocketCan代码中的名字和这里的一致
算了还是看看这个**.sh**文件里写了什么吧。

重点就是设置的语句“set up”等等,你会看到参考文章链接中的代码前面会有类似的设置语句,这时你就知道我的**Can_Init()**里面为什么注释掉这几行设置代码了。总结就是别重复激活,一个位置激活了,另外就没必要再次激活了。

Canutils,这是linux下一个查看can报文的软件,你可以在你的linux里下一个,网上教程很多。用candump命令可以很好地查看指定can口传输的报文。
项目SocketCan编写
本人对c++基础不好,在编写的时候对相应类的编写可能不合适,希望大家一起交流,指导。

里面的错误可以忽略,因为这是linux下的代码,但是为了方便写文章我在windows下打开了。
箭头所指的两个文件用来实现SocketCan功能。
头文件 can_vehicle_class.h
#ifndef CAN_VEHICLE_CLASS_H
#define CAN_VEHICLE_CLASS_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <linux/can.h>
#include <linux/can/raw.h>
#include <vector>
using namespace std;
class CanVehicleClass
{
private:
int Can_Init();
public:
CanVehicleClass(char* name);
char* can_name;//绑定的can口
int s;//socketcan套接字
unsigned char CAN_Receive_Msg(can_frame& receive_msg,vector<unsigned int> &receive_id);
int Can_Send_Msg(vector<can_frame>& send_msg_vec);
vector<can_frame> send_msg_vec;//打算发送的报文
vector<unsigned int><

本文介绍了如何使用C++实现SocketCan功能,包括SocketCan类的设计、构造函数、初始化函数、报文接收与发送函数。通过SocketCan在Linux环境下接收和发送CAN报文,并结合相机与毫米波雷达数据融合的上下文,讨论了CAN接口的激活以及Canutils工具的使用。文章提供了一个CanVehicleClass类的头文件和源文件示例,用于接收和发送CAN报文。
最低0.47元/天 解锁文章
1199

被折叠的 条评论
为什么被折叠?



