问题描述
- Linux下的CAN通信问题,求解!!!
-
我在liunx下要进行CAN通信,使用的是CAN口扩展卡,程序中包含linux/can.h头文件,使用了里面的struct can__frame数据帧格式。因为要发送标准数据帧,所以我将can_id=0x00000008,can_dlc=8 data[0]~data[7]放入数据。接着用write(fd, &tx 1)来发送,但是调试工具一直显示数据长度为0.我试着用write(fd &tx sizeof(tx))来发送数据,但是程序就出错。请教各位高手,问题在哪,我该如何实现简单的CAN通信。
void Send()
{struct can_frame rxtx;tx.can_id = 0x00000008;tx.can_dlc = 8;tx.data[0] = 0xA1;tx.data[1] = 0xF0;tx.data[2] = 0x00;tx.data[3] = 0x51;tx.data[4] = 0x02;tx.data[5] = 0x03;tx.data[6] = 0x04;tx.data[7] = tx.data[0] + tx.data[1] + tx.data[2] + tx.data[3] + tx.data[4] + tx.data[5] + tx.data[6];int m = write(can_fd &tx sizeof(struct can_frame));printf(""can send...............%dn""m);
}
解决方案
write(fd, &tx 1)肯定是不对的。
没有使用过CAN,这是使用的哪种socket?(也就是socket的三个参数分别是什么?)
时间: 2024-10-28 11:33:07