我正在爲分佈式系統中的串行通信編寫一個簡單的多點RS485協議。我正在使用一個可尋址的模型,從屬設備被給予20ms的窗口來響應。主uC輪詢連接的設備進行更新,並相應地作出響應。我採用了校驗和並採取必要的超限預防措施,以確保連接的設備不會響應格式錯誤的消息。這種方法在大約99%的情況下證明是有效的,但是如果在通信會話期間引入新設備,我將丟失數據包。只要在極短的時間內插入新的「熱」設備,就會對從設備監控的信號產生負面影響。我在工程的軟件方面,但我怎麼可以緩解這種情況,而不嘗試重新創建TCP?我們使用輪詢模式,因爲它速度很快,能夠很好地完成我們的應用程序,不需要RTOS功能。我在每個cpu上都有豐富的週期,用基本的術語來思考。自定義RS485協議
4
A
回答
8
通過RS485發送數據包不是可靠的通信。無論如何,你將不得不處理丟失的數據包。當然,你不必重新創建TCP。但是您將不得不通過超時監控和序列號來檢測丟失的數據包。在簡單的應用程序中,這可以在應用程序級完成,這使您遠離TCP的複雜性。當您的輪詢模型丟棄所有具有無效校驗和的數據包時,可能會以較少的努力進行整合。
如果你想檢查碰撞,可能是由熱插拔或行爲不當造成的,可能會有一些改進。有些硬件允許讀回自己的傳輸。如果發現已發送數據和接收數據之間存在差異,則可以假定發生衝突並重複數據包。這也將需要一種序列編號。
1
也許我在你的問題中遺漏了一些東西,但是你能不能寫出主控,這樣如果在允許的時間內沒有從設備看到響應,它會重新輪詢該設備?
相關問題
- 1. 定義自定義協議
- 2. 自定義協議
- 3. 自定義協議支持
- 4. Pyside qwebview自定義協議
- 5. RS485:簡單可靠的協議
- 6. 無法找到協議聲明自定義協議委託iphone
- 7. wp7中的自定義協議
- 8. 自定義協議中的XMPP錯誤
- 9. 創建自定義協議(Windows 7)
- 10. 如何過濾自定義協議包?
- 11. 如何處理自定義協議?
- 12. 的Android Jwebsocket自定義協議
- 13. BlackBerry - 處理自定義協議
- 14. 在Javascript中調用自定義協議
- 15. SCIM協議中的自定義資源
- 16. 使用WebRequest註冊自定義協議
- 17. 自定義協議斯威夫特
- 18. 如何實現自定義協議
- 19. Windows Phone 7自定義協議處理
- 20. PDFDocument不使用自定義URL協議
- 21. 自定義協議不起作用
- 22. Torrent文件協議 - 自定義字段
- 23. QtWebkit:如何處理自定義協議
- 24. 自定義UITableViewCell不符合協議UITableViewDataSource?
- 25. NSNotificationCenter vs自定義觀察者協議
- 26. 自定義協議不發送消息
- 27. 未找到協議定義
- 28. 重複協議定義
- 29. 在協議中定義@property
- 30. 在協議中的自定義類定義的錯誤
優秀的建議,每個設備都能夠聽取它自己的傳輸。熱插頭肯定給我一點悲傷。這個解決方案非常簡單,我自己沒有想到它,我感到有點無聊。謝謝! – Nate 2010-08-31 14:30:43