串口通信之協議格式


緩存收到的所有數據,找到一條完整數據,分析數據,界面通知。

 

信令格式:

同步頭 + 數據正文 + 同步尾

同步頭 + 命令字 + 數據長度 + 數據正文 + 同步尾

同步頭 + 地址碼 + 命令字 + 數據長度 + 數據正文 + 同步尾

 

同步頭 + 數據正文 + 校驗碼

同步頭 + 命令字 + 數據長度 + 數據正文 + 校驗碼

同步頭 + 地址碼 + 命令字 + 數據長度 + 數據正文 + 校驗碼

 

  文本格式可以直觀的定義回車換行是協議的結尾,所以我們可以省略數據長度,增加協議尾。即:協議頭 + 數據 + 校驗 + 數據尾

  

  一般情況下,同步頭2B,地址碼1B,命令字1B,數據長度1B,數據正文nB,同步尾2B,校驗碼2B

 

  信令的格式為了3個目的:a>符合業務需求;b>方便識別一條完整的數據;c>進一步驗證數據,如有需要進行數據還原。

         地址碼、命令字為了目的a

         同步頭、數據長度、同步尾、校驗碼為了目的b

         校驗碼為了目的c

 

建議:

1>    盡量采用數據內容不會出現的字符作為同步頭尾。比如數據用BCD碼,則同步頭可以用A-E,如5E

2>    如果同步頭尾字符可能會在數據正文出現,則可能要用轉義符,當然同步頭+數據長度+同步尾3個條件同時成立的正文數據出現概率應該非             常非常低;

3>    如果數據較短,請使用校驗碼進一步驗證數據的正確性;

4>    如果正確性要求特別高,請采用校驗碼還原可能的錯誤數據,如果校驗碼不能完成數據還原,請重發信令請求以保證正確。

 

C# 串口操作系列(3) -- 協議篇,二進制協議數據解析

http://blog.csdn.net/wuyazhe/article/details/5627253

C#串口操作系列(4) -- 協議篇,文本協議數據解析

http://blog.csdn.net/wuyazhe/article/details/5657188


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM