human_blue 2015-05-21 07:24 采纳率: 40%
浏览 3665

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 rx,tx;

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...............%d\n",m);

}


用sizeof时,程序报错
图片说明

  • 写回答

2条回答 默认 最新

  • nswcfd 2015-06-01 07:24
    关注

    write(fd, &tx, 1)肯定是不对的。

    没有使用过CAN,这是使用的哪种socket?(也就是socket的三个参数分别是什么?)

    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?