[發明專利]一種串口通訊的數據傳輸方法、系統及存儲介質有效
| 申請號: | 202011015112.6 | 申請日: | 2020-09-24 |
| 公開(公告)號: | CN112181883B | 公開(公告)日: | 2022-11-08 |
| 發明(設計)人: | 張友明 | 申請(專利權)人: | 深圳市樂唯科技開發有限公司 |
| 主分類號: | G06F13/38 | 分類號: | G06F13/38 |
| 代理公司: | 深圳市海順達知識產權代理有限公司 44831 | 代理人: | 歐陽士 |
| 地址: | 518000 廣東省深圳*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 串口 通訊 數據傳輸 方法 系統 存儲 介質 | ||
1.一種串口通訊的數據傳輸方法,其特征在于,包括如下步驟:
步驟1:約定收發雙方的傳送波特率、校驗位和停止位;
步驟2:打開某個連接好的串口;
步驟3:發送方按編碼方的算法來計算得到要發送數據,通過串口寫出,并將這個原始數據緩存起來;
步驟4:接收方收到協議數據后,將收到的數據按接收方解碼方式進行解碼并校驗,將接收方收到的數據稱為第一數據;
步驟5:判斷校驗是否通過,若是,那么執行步驟6,否則丟棄第一數據,返回執行步驟4;
步驟6:按協議數據進行操作,將操作的結果加上本條命令對應的seqID,按編碼方的算法進行編碼作為應答進行發送,將按編碼方的算法進行編碼作為應答的數據稱為第二數據,第二數據不用存緩存;
步驟7:發送方收到應答,進行解碼校驗;
步驟8:判斷是否通過校驗,如是,那么執行步驟9,否則丟棄第二數據,返回執行步驟4;
步驟9:判斷seqID對應的消息在發送緩存是否存在,若是,那么執行步驟10,否則丟棄第二數據,返回執行步驟4;
步驟10:從緩存中刪除已經發送成功的數據;
步驟11:發送方檢查發送緩存,如果有超時沒有應答的消息,則重發步驟3中緩存的原始數據,然后返回執行步驟3;
所述編碼方的算法包括如下步驟:
步驟S1:將原始數據拷貝到一個數組中,并創建一個長度為第一設定值的輸出數組;
步驟S2:輸出數組第一個字節是0xF0,輸出數組的第二個字節是數據長度,輸出數組的第二個字節的數值是原始數據長度+第二設定值;
步驟S3:發送方計算本地的SeqID,從0開始,每次發送成功一條命令,累加值加1,一直累加到255,255之后重新置為0,按0到255循環,SeqID放在原始數據之后的一個字節;
步驟S4:將第二個字節、原始數據、SeqID進行異或,計算得到一個字節的校驗和;
步驟S5:對第一字節之后的每一字節進行編碼;
步驟S6:判斷編碼后的數值是否為0xf0,如果是,那么將0xf0轉化為0xE0和0xEF,然后執行步驟S8,如果編碼后的數值不是0xf0,那么執行步驟S7;
步驟S7:判斷編碼后的數值是否為0xE0,如果是,那么將0xE0轉化為0xE0和0xDF,然后執行步驟S8,如果編碼后的數值不是0xE0,那么執行步驟S8;
步驟S8:將數據按字節存儲到輸出數組;
步驟S9:最后得到輸出數組和對應的編碼后的長度,通過串口寫出去,同時將該數據存儲到本地發送緩存中,記錄本地的發送時間;
步驟S10:發送方定時檢查本地發送緩存,如果存在超過第三設定值沒有回復的數據,重新發送本地發送緩存中的消息。
2.根據權利要求1所述的數據傳輸方法,其特征在于,在所述步驟S1中,第一設定值為512字節;在所述步驟S2中,第二設定值為3。
3.根據權利要求1所述的數據傳輸方法,其特征在于,在所述步驟6中,按協議數據進行操作,將操作的結果加上本條命令對應的seqID,按步驟S1至步驟S8進行編碼作為應答進行發送,第二數據不用存緩存。
4.根據權利要求1所述的數據傳輸方法,其特征在于,在所述S10中,發送方定時1秒檢查本地發送緩存,所述第三設定值為2秒。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳市樂唯科技開發有限公司,未經深圳市樂唯科技開發有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202011015112.6/1.html,轉載請聲明來源鉆瓜專利網。





