我想通過USB向Arduino寫另一端的二進制傳輸。現在,我用ASCII來做,而且很簡單。使用ASCII碼,您可以看到垃圾直到雙方同步。但是用二進制,很難區分數據和噪聲。是否有一些標準的方法來重置連接並獲得可靠的字節流?我可以發一次休息並強制Arduino以某種方式重置嗎?只是尋找最佳實踐的建議。管理Linux與Arduino之間的串行對話
0
A
回答
0
對於可靠的通信,需要包括一些協議與您的二進制數據,使
- 你知道當事情出了錯
- 可以同步
A detailed description of serial framing can be found here找回
作爲一個例子,point-to-point protocol (PPP)提供了一種簡單的方法,通過用sp保證在二進制流中永遠不會發生的特殊字符(有一個逃避機制可以讓它發生)。接收器可以使用成幀字符進行同步。
你可以(取決於錯誤的數據通過的有多糟),也可以在你的消息中添加一個校驗和或CRC - PPP把這稱爲幀檢查序列或FCS。
0
如果你真的想推出你自己的協議,你想成爲真正的8位能力,你需要做的事情有幾件事。如果你處在一個理想的世界中,數據永遠不會丟失,那麼它就更簡單了,但你並不是!
- 你必須轉義兩個字符字節,比如說X和Z.每次你想發送一個X而不是發送Z1,並且當你想發送一個Z時,你發送Z2。這樣你永遠不會發送一個普通的X接收器現在可以等待一個X,並開始收集字節。每次看到一個Z時,它都必須讀取一個額外的字節並對該數字進行解碼才能得到真正的字節。現在,使用標題解釋消息將包含多少數據以及校驗和來開始每條消息。如果讀取器具有指定的編號,讀取器應該停止讀取,如果校驗和失敗,則讀取器會丟棄所有內容
- 頭之後,你把你的數據
注意,使用結構序列化數據不被認爲是安全的,並且往往會打破,如果你跨架構的邊界,其中包裝是不同的。
相關問題
- 1. c#和arduino之間的串行通信
- 2. Unity和arduino之間的串行通信
- 3. 與Arduino的串行
- 4. 西門子PLC與Arduino之間的串行通訊
- 5. Arduino和Java之間的通話
- 6. Web與EJB層之間的Java EE會話管理
- 7. linux和windows之間的串行通信
- 8. 在Linux上的PHP串行到Arduino openwrt
- 9. Nodejs和Arduino之間的串口通信
- 10. Arduino - 處理串行通信
- 11. PC與Arduino之間的XBee AT通信
- 12. Arduino盾與10針之間的衝突
- 13. C++:與Arduino串行接口
- 14. 中斷之外的Arduino串行通信
- 15. C++ Linux(Ubuntu)正確寫入串行(對於Arduino)
- 16. 如何在Arduino上的中斷之間讀取串行?
- 17. Python(OpenCV)和Arduino之間的串行通信
- 18. python和arduino之間的串行數據實時繪圖
- 19. OS X與Linux - 串行端口處理
- 20. Linux中管道之間的通信
- 21. Android無法使用AVRDUDE與Arduino對話
- 22. Symfony2:管理會話時間
- 23. 可擴展http會話管理(java,linux)
- 24. strcpy似乎與之前的串行輸出Arduino
- 25. Slack api知道作爲管理員的兩個用戶之間的對話
- 26. Arduino到Arduino通過串行
- 27. Android對話框管理
- 28. 會話管理對於笨
- 29. QT與Arduino的串行通訊超時
- 30. 與vb.net和arduino的串行通訊