- 论坛徽章:
- 0
|
我用socket can 接收数据,每秒向下位机发送查询命令帧,下位机只有一个节点,下位机 连续发送72帧数据上来,有丢包的问题,不是每次都丢包,一个小时丢几帧,我用can分析仪发现下位机都发上来了,就是socketcan没接收对,我是这么接收的如下是程序:
static int test_can_rw(int fd, int master)
{
int ret;//,len;
struct can_frame frdup;
printf_debug("get in test_can_rw\n");
while (1) {
ret = read(fd, &frdup, sizeof(frdup));
if (ret < sizeof(frdup)) {
myerr("read failed");
printf("read cnt = %d",ret);
continue;
}
if (frdup.can_id & CAN_ERR_FLAG) { /*出错设备错误 */
handle_err_frame(&frdup);
myerr("CAN device error");
continue;
}
//处理can数据
can_data_process(&frdup);
}
return 0;
}
总觉得这个程序有问题,但不知道问题出在哪,请各位给看看 |
|