• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      串口數(shù)據(jù)解包方法的研究

      2020-04-11 07:07:24夏志飛趙雷凌云科技集團有限責任公司
      航空維修與工程 2020年2期
      關鍵詞:反推通信協(xié)議校驗

      ■ 夏志飛 趙雷/凌云科技集團有限責任公司

      串口通信常用于計算機及嵌入式設備的數(shù)據(jù)通信,尤其是在遠程控制、測試測量等工業(yè)應用中,數(shù)據(jù)經(jīng)常以數(shù)據(jù)包的形式傳輸,發(fā)送數(shù)據(jù)時需封包,接收數(shù)據(jù)時需解包,準確無誤地解包是一項非常重要的工作。

      1 串口通信

      目前常見的串口通信接口標準有RS-232、RS-422、RS-485等, 其 中,RS-232是美國電子工業(yè)協(xié)會(EIA)在20世紀60年代發(fā)布的通信協(xié)議,方便不同廠家產(chǎn)品之間數(shù)據(jù)的通信;RS-422在RS-232的基礎上提高了傳輸距離和抗干擾能力;RS-485又在RS-422的基礎上增加了多點雙向通信能力[1]。這幾種標準只規(guī)定了通信接口的物理層電氣標準,在此基礎上,用戶可以建立自己的高層通信協(xié)議。

      對于工程應用而言,信息傳輸?shù)姆€(wěn)定性以及正確性非常重要,如果每次傳輸?shù)臄?shù)據(jù)超過一幀,一般就采用數(shù)據(jù)包的形式傳輸。如圖1所示,每個數(shù)據(jù)幀由多個連續(xù)的位(Bite)構成,通常包括起始位、數(shù)據(jù)位、校驗位和停止位,數(shù)據(jù)位長度一般為5~9,每個數(shù)據(jù)包又由多個連續(xù)的數(shù)據(jù)幀構成。串口通信的速率相對較低,一般數(shù)據(jù)量有限,采用單數(shù)據(jù)包機制,少數(shù)也有采用類似網(wǎng)絡通信分層處理方式的,但中間層一般還是采用數(shù)據(jù)包機制。

      2 數(shù)據(jù)包格式分析

      為了避免數(shù)據(jù)傳輸中的混亂與錯誤,便于數(shù)據(jù)的解釋與分析,數(shù)據(jù)包之間必須有明顯的標志,通常基于以下兩種方式。

      1)基于特殊字符

      以特殊字符作為數(shù)據(jù)包的開始,再根據(jù)幀尾或幀長確定整個數(shù)據(jù)包,具體的格式很多,如包頭+數(shù)據(jù)+校驗+包尾、包頭+數(shù)據(jù)長度+數(shù)據(jù)+校驗值等,優(yōu)點是特殊字符識別容易、邏輯簡單,缺點是數(shù)據(jù)域中不能包含包頭、包尾,當然可通過增加轉(zhuǎn)義符的方式來避免,只是要增加額外的處理。

      圖1 數(shù)據(jù)包結構

      2)基于時間

      數(shù)據(jù)包內(nèi)數(shù)據(jù)連續(xù)傳輸,數(shù)據(jù)包間存在一定的間隔時間。優(yōu)點是比較通用,絕大部分串口通信都不是滿負荷傳輸,數(shù)據(jù)包間都存在較大的時間間隙;缺點是處理稍復雜,需要判定時間。

      當然,以上兩種方法經(jīng)常結合在一起使用,可以減少數(shù)據(jù)傳輸中出現(xiàn)的異常,共同保證了數(shù)據(jù)傳輸?shù)目煽俊?/p>

      3 實用解包方法

      串口數(shù)據(jù)包的解包過程通常分為數(shù)據(jù)包分割、數(shù)據(jù)提取與分析兩部分,在不清楚串口通信協(xié)議的情況下,還需反推數(shù)據(jù)幀和數(shù)據(jù)包的格式。

      1)數(shù)據(jù)幀格式反推

      在缺少資料的情況下,可直接基于串口通信物理接口進行分析,采用示波器分析可知串口通信的類型。RS-232一般采用三線制傳輸數(shù)據(jù),少數(shù)采用五線制傳輸數(shù)據(jù),標準RS-232信號電平為±12V;單片機之間的通信有時也采用TTL電平標準。RS-422/RS-485采用四線或雙線差分傳輸,差分電壓一般為±5V。

      確定串口通信標準后,還需確定數(shù)據(jù)幀的格式。采用邏輯分析儀進行分析較為方便,部分邏輯分析儀如Saleae Logic等包含了串行總線數(shù)據(jù)分析功能(見圖2)[2],設定串口數(shù)據(jù)幀的波特率、數(shù)據(jù)位長度、停止位、校驗位等參數(shù)后再分析采樣數(shù)據(jù),嘗試幾次便可確定數(shù)據(jù)幀的格式。

      2)數(shù)據(jù)包分割

      絕大部分數(shù)據(jù)包之間都存在一定的時間間隙,可據(jù)此判定分割。數(shù)據(jù)量較多時,一般需借助計算機程序自動分割,下面介紹一種數(shù)據(jù)包分割識別的方案。

      圖3為數(shù)據(jù)包分割的基本流程,無論是計算機還是單片機都可使用。對于計算機而言,Windows操作系統(tǒng)下定時器精度一般只達到1ms,無數(shù)據(jù)時長(數(shù)據(jù)包間隔)一般要求大于10ms;對于單片機而言,由于不少型號的單片機沒有串口硬件緩存,定時查詢的時間需小于單個數(shù)據(jù)幀傳輸?shù)臅r間。

      依據(jù)數(shù)據(jù)包間隔超時分割數(shù)據(jù)包時,還可同時依據(jù)數(shù)據(jù)包頭、數(shù)據(jù)包尾、校驗等進行判定及篩選,圖4是基于此原理開發(fā)的UART splitter軟件數(shù)據(jù)包分割的設置界面。

      3)數(shù)據(jù)包格式反推

      反推數(shù)據(jù)包格式時,首先確定數(shù)據(jù)包的構成。一般數(shù)據(jù)的包頭、包尾、包長度的位置是固定的,較容易識別;校驗通常有和校驗、CRC校驗等幾種,需要猜測幾次才能確定;余下的一般就是數(shù)據(jù)區(qū)。

      圖2 Saleae Logic邏輯分析儀串口總線分析設置界面

      圖3 數(shù)據(jù)包分割的基本流程

      圖4 UART splitter軟件數(shù)據(jù)包分割設置界面

      確定數(shù)據(jù)包的構成后,需要重點分析的便是數(shù)據(jù)區(qū)。常見的數(shù)據(jù)編碼有BNR(按2的補碼小數(shù)記法表示的二進制)碼、BCD碼或ASCII碼等,少數(shù)采用自定義編碼,或由多個數(shù)據(jù)組合成一個數(shù)據(jù)包,甚至涉及加密,這樣的數(shù)據(jù)需要大量采樣后統(tǒng)計、分析其規(guī)律。

      4)數(shù)據(jù)提取與分析

      數(shù)據(jù)包中的數(shù)據(jù)通常不能直接處理,其處理方式需根據(jù)工程的需求而定,一般需將有效數(shù)據(jù)提取出來并進行一定的轉(zhuǎn)換處理后再進行分析。若數(shù)據(jù)量很大或計算復雜時,Windows操作系統(tǒng)下一般需另開線程處理,單片機中一般需在低級別的中斷中處理,以確保數(shù)據(jù)包分割的實時性。

      4 結束語

      本文主要介紹了串口數(shù)據(jù)解包的基本原理和方法,該方法已應于筆者參與的多個工程中,取得了較好的效果,此外,該方法對 SPI、I2C、CSDB、Manchester等串行總線數(shù)據(jù)的解包也有借鑒意義。

      猜你喜歡
      反推通信協(xié)議校驗
      737NG飛機反推系統(tǒng)故障淺析
      737NG飛機反推燈亮故障分析
      科學與財富(2020年3期)2020-04-02 07:09:52
      基于Z-Stack通信協(xié)議棧的紅外地溫采集電路設計
      爐溫均勻性校驗在鑄鍛企業(yè)的應用
      二元機翼顫振的指令濾波反推自適應約束控制
      基于DMX512通信協(xié)議的多路轉(zhuǎn)發(fā)器設計與研究
      基于NS-3的PLC多頻通信協(xié)議仿真平臺設計與實現(xiàn)
      電測與儀表(2016年2期)2016-04-12 00:24:52
      一種基于開源軟件的OD反推求解算法
      大型電動機高阻抗差動保護穩(wěn)定校驗研究
      電測與儀表(2015年1期)2015-04-09 12:03:02
      基于加窗插值FFT的PMU校驗方法
      会泽县| 瑞安市| 盐池县| 三亚市| 白银市| 安西县| 广东省| 炉霍县| 福鼎市| 磴口县| 来凤县| 吉林市| 周至县| 太仆寺旗| 富锦市| 普定县| 武邑县| 如皋市| 米泉市| 浏阳市| 洪泽县| 宁陵县| 西青区| 方正县| 云林县| 洞头县| 通海县| 故城县| 丹棱县| 子长县| 玛多县| 滨州市| 绥阳县| 若尔盖县| 江城| 房产| 南京市| 镇江市| 新田县| 安西县| 东丰县|