[發明專利]一種適用于多種總線的協議解析方法有效
| 申請號: | 202011103070.1 | 申請日: | 2020-10-15 |
| 公開(公告)號: | CN112235302B | 公開(公告)日: | 2023-03-24 |
| 發明(設計)人: | 王雨龍 | 申請(專利權)人: | 天津津航計算技術研究所 |
| 主分類號: | H04L69/22 | 分類號: | H04L69/22;H04L69/18;H04L69/06;H04L12/40;H04L1/00 |
| 代理公司: | 中國兵器工業集團公司專利中心 11011 | 代理人: | 劉二格 |
| 地址: | 300308 天津*** | 國省代碼: | 天津;12 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 適用于 多種 總線 協議 解析 方法 | ||
1.一種適用于多種總線的協議解析方法,其特征在于,包括以下步驟:
STEP1:設計通用通信協議;
STEP2:將各類總線的驅動底層接收函數封裝為接口一致的統一接收函數DataRecv函數,DataRecv函數返回接收到的數據長度RecvLen,并把數據存在指針pData所指的緩沖區中,將起始地址為pData、長度為RecvLen的數據拷貝到TackBuf中;
STEP3:尋找幀頭;
STEP4:尋找到幀頭后,確定這一完整幀的長度FrmLen;比較FrmLen和接收到數據的長度RecvLen的大小,當RecvLen≥FrmLen時,收到了一個完整幀,繼續進行處理;否則,繼續接收數據,直到接收到數據RecvLen≥FrmLen,則轉到STEP5,繼續進行處理;
STEP5:校驗數據幀的完整性;
STEP6:取出幀類型,判斷這一幀是數據幀還是命令幀,根據目的地址和該系統的ID,判斷這一幀數據是否為本系統需要的數據。
STEP7:根據功能碼判斷數據的類型,將數據使用內存拷貝函數memcpy函數拷貝到同一類型的結構體中,使用這個結構體進行算法計算與數據顯示;
所述步驟STEP1中,通用通信協議為變長協議,協議內容包括兩個字節的協議幀頭、兩個字節的幀長度、一個字節的幀類型、一個字節的目的地址、一個字節的源地址、兩個字節的功能碼、字節數不定的負載內容、兩個字節的CRC校驗,和兩個字節的幀結尾;
所述步驟STEP1中,協議幀頭的兩個字節為0x55和0xAA;幀長度為從幀頭到幀尾所有字節的長度;幀類型中,命令幀用0x01表示,數據幀用0x02表示;幀結尾兩個字節為0xAA和0x55;
所述步驟STEP3中,先判斷接收到數據的長度RecvLen,設置最少長度為12個字節;當RecvLen大于12個字節時,首先判斷前兩個字節是不是0x55和0xAA,如果不是,則拋棄前兩個字節,重新尋找字節頭0x550xAA,直到尋找到為止;
所述步驟STEP3中,使用內存移動方法memmove()將第三個字節起始的數據移動到緩沖區開頭,然后重新尋找字節頭0x550xAA;
所述步驟STEP4中,尋找到幀頭后,將處理指針TackPtr向后移動兩位,此時TackPtr指向這一幀的長度信息,取第三、四兩個字節數據組成的字,這個字表示這一完整幀的長度FrmLen;
所述步驟STEP5中,校驗數據幀完整性的過程為:
收到一幀完整數據后,根據幀長度FrmLen先判斷結尾是不是0xAA 0x55,如果不是,直接拋棄這一幀,轉到STEP2;在幀頭幀尾都找到的情況下,將處理指針TackPtr移到FrmLen-4的位置,取出這一幀協議中的CRC值crc_get,使用CRC計算方法計算這一幀的crc值,比較crc_get值和crc值,如果一致則轉到STEP6,如果不一致則轉到STEP2;
當設備間通訊功能由一種總線遷移到另一種總線時,修改設備底層的總線驅動函數完成通訊協議相關部分的移植。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于天津津航計算技術研究所,未經天津津航計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011103070.1/1.html,轉載請聲明來源鉆瓜專利網。





