- 論壇徽章:
- 0
|
我用socket can 接收數(shù)據(jù),每秒向下位機(jī)發(fā)送查詢命令幀,下位機(jī)只有一個(gè)節(jié)點(diǎn),下位機(jī) 連續(xù)發(fā)送72幀數(shù)據(jù)上來,有丟包的問題,不是每次都丟包,一個(gè)小時(shí)丟幾幀,我用can分析儀發(fā)現(xiàn)下位機(jī)都發(fā)上來了,就是socketcan沒接收對(duì),我是這么接收的如下是程序:
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) { /*出錯(cuò)設(shè)備錯(cuò)誤 */
handle_err_frame(&frdup);
myerr("CAN device error");
continue;
}
//處理can數(shù)據(jù)
can_data_process(&frdup);
}
return 0;
}
總覺得這個(gè)程序有問題,但不知道問題出在哪,請(qǐng)各位給看看 |
|