国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法

      文檔序號:40319624發(fā)布日期:2024-12-18 12:56閱讀:3來源:國知局
      一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法

      本發(fā)明涉及一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,屬于數(shù)據(jù)傳輸。


      背景技術:

      1、數(shù)據(jù)流傳輸是指將數(shù)據(jù)以連續(xù)、定序的方式在不同系統(tǒng)或設備之間進行傳遞和處理的過程。隨著信息技術的不斷發(fā)展,數(shù)據(jù)流傳輸已成為現(xiàn)代通信系統(tǒng)中一種重要的技術手段。數(shù)據(jù)流傳輸?shù)囊环N典型形式就是通過串行通信接口進行傳輸。串行通信作為數(shù)據(jù)流傳輸?shù)囊环N具體實現(xiàn)方式,因其接口簡單、使用方便等優(yōu)點,被廣泛應用于各類數(shù)據(jù)通信場合。在實際應用中,數(shù)據(jù)發(fā)送端通常將數(shù)據(jù)封裝成數(shù)據(jù)包,并以數(shù)據(jù)流的形式通過串行通信接口進行傳輸,接收端則需從接收到的數(shù)據(jù)流中準確無誤地提取出完整的數(shù)據(jù)包。因此,如何從這些數(shù)據(jù)流中實時、有效地提取有效數(shù)據(jù)包是一個關鍵問題,尤其是在分布式非同步數(shù)據(jù)采集和控制系統(tǒng)中,由于存在傳輸速率不同步、數(shù)據(jù)包丟失、信號干擾等問題,數(shù)據(jù)的實時性和準確性至關重要。

      2、公布號為cn105022712a的專利公開了一種基于數(shù)據(jù)流傳輸?shù)臄?shù)據(jù)包提取方法,通過判斷解包進度值來執(zhí)行不同的步驟以提取數(shù)據(jù)包。然而,由于需要頻繁的訪問接受隊列和檢查數(shù)據(jù)包的同步字可能導致處理延遲,對于高速數(shù)據(jù)流不夠高效,無法滿足高實時性和高可靠性的要求。公告號為cn107766265b的專利公開了一種支持定長包、變長包、混合包的串口數(shù)據(jù)提取方法,按照已配置的包格式,在緩沖區(qū)中提取一個數(shù)據(jù)包。然而,由于數(shù)據(jù)全部放置在緩沖區(qū)中且每次只讀取一個數(shù)據(jù)包的數(shù)據(jù),會占用大量的系統(tǒng)資源。同時在高數(shù)據(jù)傳輸速率下,可能無法滿足實時性要求。

      3、為了解決上述問題,有必要提出一種高效、可靠、可以保證數(shù)據(jù)的實時性和準確性的數(shù)據(jù)流有效數(shù)據(jù)包提取方法,使系統(tǒng)能夠在復雜通信環(huán)境下確保數(shù)據(jù)的實時性和準確性,提高整個系統(tǒng)的性能和穩(wěn)定性。


      技術實現(xiàn)思路

      1、本發(fā)明提出了一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,通過隊列機制和有效的數(shù)據(jù)包處理流程,能夠可靠、高效、實時地提取和處理數(shù)據(jù)包,同時也能保證數(shù)據(jù)的完整性和系統(tǒng)的穩(wěn)定性。

      2、本發(fā)明的技術解決方案:

      3、(1)周期性訪問數(shù)據(jù)流源,一次性讀取全部數(shù)據(jù)并依次存放到一個數(shù)據(jù)隊列中;

      4、(2)檢查數(shù)據(jù)隊列的長度,若大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(3);若長度不夠則返回步驟(1);

      5、(3)從隊列頭部開始搜索數(shù)據(jù)包頭,丟棄無效字節(jié)直至找到包頭,若此時隊列長度大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(4);否則返回步驟(1);

      6、(4)讀取并校驗數(shù)據(jù)包,若校驗通過,執(zhí)行步驟(5);若校驗失敗,清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù)并進行報警表明系統(tǒng)通信異常,返回步驟(2);

      7、(5)提取有效數(shù)據(jù),并清空隊列,同時表明系統(tǒng)通信正常,返回步驟(1);若同時要求數(shù)據(jù)完整性,則只清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù),返回步驟(2)繼續(xù)解析并提取數(shù)據(jù)。

      8、步驟(1)中,周期性訪問數(shù)據(jù)流源,一次性讀取全部數(shù)據(jù)并依次存放到一個數(shù)據(jù)隊列中,具體包括:設置一個固定的時間間隔來訪問數(shù)據(jù)流源,每次訪問時,從數(shù)據(jù)流源的緩沖區(qū)中讀取當前所有的數(shù)據(jù)并將讀取到的所有數(shù)據(jù)按順序依次存放到一個數(shù)據(jù)隊列(先進先出隊列)中。用于臨時存儲并按時間順序管理接收到的數(shù)據(jù)字節(jié)。

      9、步驟(2)中,檢查數(shù)據(jù)隊列的長度,若大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(3);若長度不夠則返回步驟(1),具體包括:

      10、檢查當前數(shù)據(jù)隊列中的數(shù)據(jù)總長度。如果數(shù)據(jù)隊列中的數(shù)據(jù)長度大于等于一個有效數(shù)據(jù)包的長度,則進入步驟(3),開始搜索有效數(shù)據(jù)包;如果數(shù)據(jù)長度不足,則暫時停止進一步操作,返回步驟(1),等待下一次周期性數(shù)據(jù)讀取。

      11、步驟(3)中,從隊列頭部開始搜索數(shù)據(jù)包頭,丟棄無效字節(jié)直至找到包頭,若此時隊列長度大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(4);否則返回步驟(1),具體包括:

      12、從隊列的頭部字節(jié)(即最早收到的字節(jié))開始逐個檢查數(shù)據(jù)。數(shù)據(jù)包頭通常是一個或多個特定的字節(jié)序列,用于標識數(shù)據(jù)包的開始。根據(jù)協(xié)議定義,這些字節(jié)序列可能是固定值或特定格式。如果當前檢查的字節(jié)序列不是數(shù)據(jù)包頭,則從隊列中丟棄當前頭部的一個或多個無效字節(jié),繼續(xù)向后搜索。一旦找到數(shù)據(jù)包頭,檢查隊列中的數(shù)據(jù)長度是否足夠一個完整的數(shù)據(jù)包。如果長度足夠,進入步驟(4),否則返回步驟(1)。

      13、步驟(4)中,讀取并校驗數(shù)據(jù)包,若校驗通過,執(zhí)行步驟(5);若校驗失敗,清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù)并進行報警表明系統(tǒng)通信異常,返回步驟(2),具體包括:

      14、在找到數(shù)據(jù)包頭后,讀取接下來的數(shù)據(jù),這些數(shù)據(jù)包括包頭后的實際數(shù)據(jù)和校驗數(shù)據(jù)。根據(jù)數(shù)據(jù)包的格式定義,提取必要的字段并進行數(shù)據(jù)包校驗。如果校驗通過,說明數(shù)據(jù)包有效,進入步驟(5);如果校驗失敗,表明數(shù)據(jù)包可能已損壞或數(shù)據(jù)有誤,從隊列中丟棄一個數(shù)據(jù)包長度的數(shù)據(jù),繼續(xù)從步驟(2)開始重新搜索下一個數(shù)據(jù)包頭,同時記錄下校驗失敗的總次數(shù)(每次失敗次數(shù)自加1)。如果總次數(shù)達到設定值,則進行報警表明系統(tǒng)處于異常通信狀態(tài)。

      15、步驟(5)中,提取有效數(shù)據(jù),并清空隊列,同時表明系統(tǒng)通信正常,返回步驟(1);若同時要求數(shù)據(jù)完整性,則只清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù),返回步驟(2)繼續(xù)解析并提取數(shù)據(jù),具體包括:

      16、從通過校驗的數(shù)據(jù)包中提取有效數(shù)據(jù)部分。在隊列中移除整個已處理的數(shù)據(jù)包,釋放空間,以便接收和處理更多的數(shù)據(jù)。將校驗失敗的總次數(shù)清零,以表明系統(tǒng)處于正常通信狀態(tài)。處理完當前數(shù)據(jù)包后,不再繼續(xù)解析后續(xù)的數(shù)據(jù),清空隊列,并返回步驟(1),重新開始周期性讀取數(shù)據(jù)。若要求保證數(shù)據(jù)的完整性,處理完當前數(shù)據(jù)包后,返回步驟(2),在當前周期內(nèi)繼續(xù)解析隊列中剩余的數(shù)據(jù),提取更多的有效數(shù)據(jù)包。



      技術特征:

      1.一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于包括以下步驟:

      2.權利要求1所述的一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于所述步驟(1)中,周期性訪問數(shù)據(jù)流源,一次性讀取全部數(shù)據(jù)并依次存放到一個數(shù)據(jù)隊列中,具體包括:

      3.權利要求1所述的一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于所述步驟(2)中,檢查數(shù)據(jù)隊列的長度,若大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(3);若長度不夠則返回步驟(1),具體包括:

      4.權利要求1所述的一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于所述步驟(3)中,從隊列頭部開始搜索數(shù)據(jù)包頭,丟棄無效字節(jié)直至找到包頭,若此時隊列長度大于等于一個數(shù)據(jù)包長度,執(zhí)行步驟(4);否則返回步驟(1),具體包括:

      5.權利要求1所述的一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于所述步驟(4)中,讀取并校驗數(shù)據(jù)包,若校驗通過,執(zhí)行步驟(5);若校驗失敗,清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù)并進行報警表明系統(tǒng)通信異常,返回步驟(2),具體包括:

      6.權利要求1所述的一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,其特征在于所述步驟(5)中,提取有效數(shù)據(jù),并清空隊列,同時表明系統(tǒng)通信正常,返回步驟(1);若同時要求數(shù)據(jù)完整性,則只清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù),返回步驟(2)繼續(xù)解析并提取數(shù)據(jù),具體包括:


      技術總結
      本發(fā)明公開了一種基于隊列的數(shù)據(jù)流有效數(shù)據(jù)包實時提取方法,包括:(1)周期性訪問數(shù)據(jù)流源,一次性讀取數(shù)據(jù)并存入數(shù)據(jù)隊列;(2)檢查隊列長度,若大于一個數(shù)據(jù)包長度,執(zhí)行步驟(3);否則返回步驟(1);(3)從隊列頭部開始搜索數(shù)據(jù)包頭,丟棄無效字節(jié)直至找到包頭,若此時隊列長度大于一個數(shù)據(jù)包長度,執(zhí)行步驟(4);否則返回步驟(1);(4)讀取并校驗數(shù)據(jù)包,若校驗通過,執(zhí)行步驟(5);若校驗失敗,清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù),返回步驟(2);(5)提取有效數(shù)據(jù),并清空隊列,返回步驟(1);若同時要求數(shù)據(jù)完整性,則只清除一個數(shù)據(jù)包長度的隊列數(shù)據(jù),返回步驟(2)。本發(fā)明提出的方法通過隊列機制和有效的數(shù)據(jù)包處理流程,能夠可靠、高效、實時地提取和處理數(shù)據(jù)包,同時也能保證數(shù)據(jù)的完整性和系統(tǒng)的穩(wěn)定性。

      技術研發(fā)人員:李象府,戢煥成,張郡桐,崔軼博,張?zhí)旌?黃向華
      受保護的技術使用者:南京航空航天大學
      技術研發(fā)日:
      技術公布日:2024/12/17
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1