我開始爲一個設備編寫代碼,該設備將以全雙工模式進行數據輸入輸出,所以我會在出現問題時使用硬件握手並設置中斷條件。但是,當涉及到錯誤檢測時,不太清楚最好的方法是什麼。RS232:要校驗還是不要校驗?
RS232有內置的奇偶校驗,我可以使用。據我瞭解,如果我使用8個數據位,一個奇偶校驗位和一個停止位,那麼線上的數據包將是10位。這意味着對於每發送1024個字節,我都會發送128字節的驗證信息。由於奇偶校驗對於每個字節是50/50的事情,因此持續少於一個字節的短暫突發噪聲將導致仍然與奇偶校驗位一致的損壞不是不太可能的。所以這似乎不是一個可靠的測試。
如果我在每個1024字節的末尾使用校驗和,在115200波特仍然只有80ms,我的驗證開銷從12%下降到小於1%,即使我使用64位校驗和。錯過腐敗很難。
僅僅是一種在sub 100波特連接的時代很有用的技術,它早已過時,我應該使用塊校驗和,或者我錯過了什麼?
還有一些值得考慮的事情:可能會出現在使用此環境的環境中的短暫爆發噪聲?如果是這樣,RS-232肯定是不適合的,它將被視爲室內,辦公環境總線。更好的選擇是RS-485(代碼兼容)或更好,CAN(不兼容)。 – Lundin
@Lundin [RS-485](http://en.wikipedia.org/wiki/Rs4850)將不滿足OP需要的「全雙工模式下的數據輸入和輸出」,它不是全雙工通信協議。 [RS-422](http://en.wikipedia.org/wiki/Rs422)將提供更好的電噪聲免疫力,但仍保留全雙工能力。 – chux
@Lundin - *「RS-232 ...被認爲是......巴士」 - 不是「巴士」,而是通信鏈路。巴士意味着控制,尋址,甚至是電力以及數據。 – sawdust