主題:[求助]Socket can可以配置自動重發么 共有72386人關注過本帖 |
---|
![]() 劉豪豪 |
1樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
[求助]Socket can可以配置自動重發么 ![]() Socket can可以配置自動重發么,報文發送失敗后可以自動重發 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
2樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,can總線是有ACK信號相應的,所以can總線協議本身就有自動重發的功能,不需要單獨配置。 [此貼子已經被作者于2020-11-18 9:44:47編輯過]
|
單帖管理 | 引用 | 回復 ![]() |
客人 |
3樓 |
![]() |
![]() 但是發送失敗不會自動重發,硬件有自動重發的設置么 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
4樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,can的控制器本身就會重發,不需要設置。 如果是軟件上調用發送提示失敗,可能是因為程序中沒有判斷調用發送的返回值,然后一直在填入數據。 硬件在發送失敗后,會一直反復重發,在數據發送成功之前會一直占用緩存,如果這時軟件一直填入數據,就會占用更多的緩存,當緩存占滿之后,軟件中再次調用發送就會報錯。 [此貼子已經被作者于2020-11-19 13:54:24編輯過]
|
單帖管理 | 引用 | 回復 ![]() |
![]() 劉豪豪 |
5樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 好的,了解,判斷write的返回值可以判斷發送失敗,就不能write直到等到硬件重發成功了么?硬件重發成功是怎么判斷的呢 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
6樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 你好,write返回值只要沒有出錯,就說明數據已經填寫到硬件中了,硬件會自動進行發送,直到發送成功,成功的標志是收到對應設備回發的ACK信號,具體的說明可以在網上查詢一下CAN總線的協議說明。wirtei返回值出錯就和上一條帖子說的一樣,是因為在數據沒有發送成功的時候,程序還在一直填寫數據,導致硬件緩存數據溢出。 |
單帖管理 | 引用 | 回復 ![]() |
![]() 劉豪豪 |
7樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 好的,謝謝 |
單帖管理 | 引用 | 回復 ![]() |
![]() hzc |
8樓 信息 | 搜索 | 郵箱 |
![]() ![]() ![]() ![]() |
![]() 不客氣 |
單帖管理 | 引用 | 回復 ![]() |