主題:[求助]LINUX -socket Can 連續(xù)發(fā)送數(shù)據(jù)問(wèn)題 共有50223人關(guān)注過(guò)本帖 |
---|
airyrain |
1樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
[求助]LINUX -socket Can 連續(xù)發(fā)送數(shù)據(jù)問(wèn)題 Post By:2014-5-21 9:39:00 [只看該作者]
Linux下 CAN發(fā)送數(shù)據(jù)能不能無(wú)間隔連續(xù)發(fā)送多幀數(shù)據(jù)? 現(xiàn)在循環(huán)幾十次write發(fā)送,就會(huì)有發(fā)送丟幀。
如何處理才能連續(xù)發(fā)送? |
單帖管理 | 引用 | 回復(fù) |
hzc |
2樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2014-5-21 10:45:00 [只看該作者]
你好,can是可以連續(xù)發(fā)送數(shù)據(jù)幀的,循環(huán)調(diào)用write()函數(shù)發(fā)送數(shù)據(jù)的測(cè)試情況如下:
如果沒(méi)有解決問(wèn)題,可以將你的詳細(xì)情況發(fā)送郵件或者直接通過(guò)電話和我們交流,謝謝。
|
單帖管理 | 引用 | 回復(fù) |
airyrain |
3樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2014-5-21 11:02:00 [只看該作者]
原先的樣例里有mdelay(500)。不知你測(cè)試的是否也有延時(shí)。 我想做的是不要延時(shí),類似usbcan工具里的 連續(xù)N幀的情況,相當(dāng)于直接往CAN_FD socket 里放了N個(gè)can幀。 數(shù)據(jù)比較多,不想加延時(shí) 例如: for( i1=0;i1<100; i1++ ) memset( frame.data, 0x32, frame.can_dlc ); [此貼子已經(jīng)被作者于2014-5-21 11:06:32編輯過(guò)]
|
單帖管理 | 引用 | 回復(fù) |
hzc |
4樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2014-5-21 11:27:00 [只看該作者]
你好,把延時(shí)去掉了,這是使用的測(cè)試程序: for(i=0;i<500;i++) nbytes = write(s, &frame, sizeof(struct can_frame)); 這是測(cè)試的結(jié)果:
在連續(xù)調(diào)用500次write()后,數(shù)據(jù)沒(méi)有丟失。 |
單帖管理 | 引用 | 回復(fù) |
airyrain |
5樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 |
Post By:2014-5-21 14:07:00 [只看該作者]
for(i=0;i<500;i++) nbytes = write(s, &frame, sizeof(struct can_frame)); 你把printf 去掉試試。。用usbcan 看接收包。100幀以內(nèi)就漏了。 |
單帖管理 | 引用 | 回復(fù) |
hzc |
6樓 信息 | 搜索 | 郵箱 |
加好友 發(fā)短信 員工 |
Post By:2014-5-21 15:11:00 [只看該作者]
你好,查看write()函數(shù)的返回值,有出現(xiàn)-1的情況,說(shuō)明有數(shù)據(jù)沒(méi)有發(fā)送出去,“丟掉的”數(shù)據(jù)就是沒(méi)有發(fā)送出去的數(shù)據(jù)。 可以在程序中增加發(fā)送是否成功的判斷:if(nbytes!=sizeof(struct can_frame)),如果發(fā)送失敗就重新發(fā)送。 |
單帖管理 | 引用 | 回復(fù) |