劉 杰 常興山 孫 鋒 石 好 周建輝
(1.武漢理工大學船海與能源動力工程學院 湖北武漢 430063;2.中國艦船研究設計中心 湖北武漢 430064)
油液分析在船舶動力系統狀態監測與故障診斷中得到廣泛的應用[1],通過油液分析儀器獲取相關檢測樣品的分析數據是油液分析的基礎。油液分析儀器按數據接口和控制方法可以分為接口型儀器和自帶計算機類儀器。接口型儀器的接口主要包括RS232/RS485等串行傳輸接口、網絡接口、USB接口等類型;自帶計算機類儀器是指油液分析儀器設備硬件和軟件系統集成在一起。為了將油液分析儀器數據進行采集和傳輸,對于接口型儀器多采用串口協議轉換、設備聯網等方式。如劉杰等人[2]針對油液監測等儀器構建基于協議轉換的設備聯網方案,實現對儀器數據集中管理和設備監控;唐勇等人[3]利用NPort 5110系列的串口設備服務器實現對顆粒計數器自動測控和數據傳輸。而自帶計算機儀器則通過配置化方法、文件內容解析方法等實現數據采集和傳輸。如劉杰等人[4]提出基于配置信息方法,實現儀器數據的來源格式變動、數據的精度位數調整等情況下的自動適配采集數據;吳煒等人[5]根據浮點數與英文字母在儀器數據文件中的存儲特征,利用API函數等實現從儀器數據文件中自動獲取需要的數據信息。
上述方案多是針對簡單的文本類型分析數據采集、傳輸與集成,且只能采集當前檢測樣品的分析數據內容,缺乏對油液分析儀器歷史數據、其他輔助性文件等復雜數據內容的采集與傳輸處理方法;且對于涉密場景下的油液分析儀器采用現有方案存在一定信息安全問題;同時,現有解決方法還未形成平臺化的解決方法,需要大量的定向開發。而二維碼因其具有數據密度高、編解碼速度快、無附加協議、獨立于操作系統和應用環境等特征,使其成為一種安全、高效的信息傳輸方式[6-7],且滿足涉密信息安全傳輸所要求的中斷直接連接、不依賴通用傳輸協議、僅支持原始數據交互等條件[8]。二維碼的研究在身份信息標示[9]、物品朔源[10]等多個領域得到了廣泛應用,研究人員利用二維碼進行數據交換,取得了一些典型的研究成果。如韓林等人[11]提出使用二維碼來解決內外網物理隔離環境下的數據交換;陶孫杰和余濤[12]基于二維碼技術構建了面向涉密場景的數據傳輸系統,實現涉密與非涉密信息系統之間的數據雙向傳輸;WANG等[13]提出將二維碼隱藏在視頻中用以傳輸大信息量數據并驗證了其可行性。大量應用證明二維碼進行數據傳輸的速度[14-15]與可靠性[16-18]滿足工程需要。
本文作者針對目前油液分析儀器數據采集和傳輸方案所存在的問題,構建基于二維碼的油液分析儀器數據采集與傳輸方法,實現油液分析儀器復雜數據內容的采集與傳輸,同時支持涉密場景下的應用。該方法利用操作系統API函數、Hook等技術,應用平臺化的理念開發數據發送端和數據接收端程序,通過所開發的程序與油液分析儀器原有軟件相互協作,完成油液分析儀器數據采集并進行數據結構定義、壓縮、加密、切片、編排等預處理操作;然后對預處理后的數據信息進行二維碼編碼,生成分析數據二維碼以承載數據,由二維碼掃描器和數據接收端程序實現分析數據傳輸。通過一套整體性的基于二維碼的油液分析儀器數據采集與傳輸解決方法,為油液分析儀器數據采集與安全傳輸提供新的方案。
基于二維碼的油液分析儀器數據采集與傳輸方法,使用二維碼圖像作為分析數據的編碼和承載方式,通過二維碼圖像編碼、掃描與解碼實現分析數據的采集與傳輸。該方法模型由數據發送端、拍攝掃描和數據接收端3部分組成,如圖1所示。

圖1 基于二維碼的油液分析儀器數據采集與傳輸方法模型
圖1中,數據發送端由油液分析儀器硬件設備和操作系統軟件、油液分析專業軟件和數據發送端程序(即儀器端軟件)構成,可完成數據采集、自定義預處理和二維碼編碼等工作。其中對于串口型儀器,數據發送端程序安裝在與油液分析儀器通過串口相連接的計算機操作系統中,而對于自帶計算機儀器,數據發送端程序則直接安裝在儀器自帶的計算機操作系統中。拍攝掃描設備由二維碼掃描器或攝像頭構成,完成對監測數據二維碼圖像的采集,并傳輸至數據接收端。數據接收端程序(即接收端軟件)完成二維碼譯碼、數據分析處理等操作。數據接收端包括工作站、計算機、智能手機等設備及相應的數據接收端程序。此外,二維碼掃碼器可以集成到數據接收端,如智能手機作為數據接收端時,可以通過調用智能手機的攝像頭完成油液分析儀器數據二維碼的拍攝掃描工作。
采用二維碼作為數據的承載方式,實現通過光學圖像完成油液分析儀器數據采集與傳輸,其流程可劃分為數據準備、二維碼編碼、圖像掃描、二維碼解碼、數據接收5個階段。其中,數據準備階段通過對油液分析儀器數據的采集、預處理等步驟獲得二維碼編碼數據對象(即二維碼所承載的數據信息)。二維碼編碼階段完成數據準備階段獲得的二維碼編碼數據對象的二維碼編碼,包括確定所傳輸的數據字符類型,選擇二維碼糾錯級別,將字符轉換為位流并構成碼字序列,生成糾錯碼,將碼字序列和糾錯碼合并,構造二維碼矩陣、掩膜、格式和版本信息設置等操作。圖像掃描階段采用攝像頭或二維碼掃描器等圖像掃描設備拍攝掃描二維碼圖像,并將拍攝掃描得到的二維碼圖像傳輸至計算設備。二維碼解碼階段通過對二維碼圖像進行圖像預處理、定位與校正、讀取數據、數據糾錯、數據碼字譯碼等解碼算法處理,獲得二維碼所承載的數據。數據接收階段首先將二維碼所承載的數據內容進行解壓縮、解密等操作,然后按照所定義的數據傳輸格式協議進行格式解析,最后得到所采集傳輸的油液分析數據。
基于二維碼的數據采集與傳輸過程中,二維碼編碼、圖像掃描、二維碼解碼3個階段目前已有成熟的技術方案,而考慮到油液分析儀器數據的存儲、結構、類型等特征,需要對數據準備階段和數據接收階段進行針對性的研究。其中數據準備階段需要重點解決油液分析儀器數據獲取、預處理,數據結構定義、壓縮、加密、切片、編排等工作;而數據接收階段則根據數據采集階段所定義的各種協議,進行相應的算法設計并完成軟件開發即可,關鍵技術集中在由數據發送端程序實現的數據采集階段,其技術原理如圖2所示。
如圖2所示,數據采集階段通過采用API函數、文件夾監控等技術,獲取分析儀器數據內容,并進行用戶自定義預處理、數據結構定義、數據壓縮與加密等操作,得到被傳輸數據內容;然后進行數據拆分與編排,得到數據切片并對每個切片附加上數據編排序號;最后將每一個數據切片經二維碼編碼轉換成二維碼圖像并在儀器的屏幕上顯示。
2.2.1 被傳輸數據內容獲取及預處理
被傳輸的數據內容包括數據信息和數據結構兩方面。數據信息包括分析儀器數據內容和自定義預處理操作帶來的數據變化;數據結構指的是廣義上的結構,包括數據組織形式、加密協議、壓縮協議等內容。
(1) 獲取分析儀器數據內容
不同型號的油液分析儀器其數據傳輸方式相異,串口型儀器的數據傳輸方式分為主動向串口發送數據和響應串口指令請求發送數據;自帶計算機儀器的分析數據文件保存方式包括分散式和集中式2種,前者的分析數據分散保存在軟件系統或采用特殊文件格式保存,后者則采用常規格式文件類型集中保存在特定文件夾中。
數據發送端程序根據不同型號的油液分析儀器采用相應的技術方案實現對指定數據內容的獲取,如采用網絡異步Socket技術監聽串口數據,采用操作系統API函數獲取油液分析專業軟件界面控件中的分析結果數據,基于文件夾監控手段獲取油液分析儀器產生的樣本測試數據文件等方案。所獲取的數據內容除簡單的文本數據內容之外,還包括復雜數據對象,如圖片等特殊格式文件內容等。
(2) 自定義預處理
對所獲取的分析儀器數據自定義預處理包括增添、刪除、修改、壓縮、加密等操作。其中數據增添實現對油液分析儀器數據補充工作,如附加標識編碼,將油液分析儀器編碼、樣本編碼等附加到數據中。數據刪減,一方面完成剔除油液分析儀器數據中非用戶所需數據內容;另一方面可以實現對分析儀器的敏感數據刪除,避免在數據傳輸過程中泄露隱私數據。數據修改,油液分析儀器的數據不直接傳輸到數據接收端,而是通過將配置化數據監測、配置化數據提取等算法集成到數據發送端程序,實現類似邊緣計算操作。對所采集到的分析數據先通過計算處理獲取需要的數據信息,然后再通過二維碼進行封裝傳輸,如可以通過集成文獻中報道的基于配置思想的油液分析儀器數據提取方式方法,實現從儀器的分析數據字符串中提取出有意義的分析數據值。
(3) 數據結構形式
包括被傳輸數據內容的組織形式、數據加密與解密協議、壓縮與解壓協議等。該部分需要數據接收端程序配合實現。結構形式的定義,同時也保證了二維碼數據的安全性,只有具備數據接收端程序的二維碼掃描設備才可能識別所傳輸的數據內容、確定數據所代表的含義。
2.2.2 基于二維碼組合的數據表示與傳輸
當被傳輸的數據內容信息量經壓縮處理后大于單張二維碼所能承載的最大信息量時,需要采用二維碼組合實現數據表示與傳輸,其關鍵技術點是數據的拆分與編排。
如圖2所示,將被傳輸的數據內容根據設定的信息量大小進行切片處理,然后給每一個切片按切片順序進行編排標號處理,要求每一個數據切片的信息量控制在單張二維碼所能承載最大信息量之內。對于每一個帶有編排序號的數據切片,經二維碼編碼處理后生成二維碼,從而所有切片構成二維碼組合。同時需要將生成的數據二維碼在分析儀器顯示屏上顯示并保持顯示狀態(如位置、大小等)最優化。數據接收端掃描二維碼組合,對二維碼組合中的每一張二維碼進行編譯,從而獲得被傳輸的所有數據切片;根據數據切片的編排序號對數據切片進行重組,構成切片前的被傳輸數據內容,從而完成基于二維碼組合的數據表示與傳輸。
油液分析儀器啟動后,數據發送端程序自啟動并在后臺運行,可以通過快捷鍵調出進行參數設置或調試;在檢測到所需的油液分析數據后自動彈出二維碼顯示窗體及相應的數據二維碼,二維碼顯示窗體也可以通過快捷鍵調出。其中關于二維碼顯示界面的設計,支持以下內容:(1) 二維碼的掃描順序不做限定,由數據接收端程序自動完成接收到的數據編排工作;(2) 二維碼顯示窗體位置及尺寸優化,保持對油液分析儀器操作界面的遮擋和影響最小;(3) 二維碼顯示時長優化,對于二維碼組合的掃描,需要一定的掃描時長,根據二維碼數量優化二維碼切換時長,同時具備歷史二維碼查看功能;(4) 快捷鍵設置,通過快捷鍵來控制二維碼窗體界面的顯示、關閉等操作。
在檢測分析一批樣本時,光譜儀上會逐個產生檢測數據信息,要求光譜儀在每產生一條檢測數據時,在儀器的顯示屏上產生一個二維碼,然后操作人員在實驗室局域網外的計算機上,通過掃描槍識讀二維碼所承載的數據,完成對光譜儀數據的采集。
為此設計基于二維碼的光譜儀數據采集與傳輸系統,數據發送端軟件在儀器的Windows7系統后臺運行,監視每次樣本檢測的數據;同時按照指定的規則獲取用戶需要的分析數據,將采集到的數據進行預處理操作并轉換成二維碼,然后在儀器的屏幕上顯示。數據接收端通過二維碼掃描器拍攝掃描二維碼,經數據接收端程序處理后,獲得分析數據內容。其中數據發送端和數據接收端的二維碼數據傳輸效果如圖3所示。
3.2.1 數據加密與壓縮處理
對于分析儀器數據涉密或安全級別較高的情況,為避免二維碼圖像所傳輸的分析數據泄露,可以將所需要傳輸的分析數據加密后再生成二維碼,在數據接收端用相應的解密程序解密即可。此外對于所要傳輸的分析數據也可以進行壓縮處理,以提高單張二維碼所傳輸的有效數據信息量。二維碼數據的加密處理實現效果如圖4所示,其所傳輸的數據內容為二維碼圖片下方字符所示。另外對比圖3(a),二維碼呈現方式支持顯示所承載的數據內容與不顯示所承載的數據內容2種形式。

圖4 二維碼數據的加密與壓縮處理示例
3.2.2 基于多個二維碼組合的復雜數據組織與傳輸
當所傳輸的數據信息量經壓縮處理后仍大于單張二維碼所能承載最大信息量時,可以將所傳輸數據進行切片操作,并保證每一個數據切片的信息量控制在單張二維碼所能承載最大信息量之內,然后通過二維碼組合實現數據表示與傳輸。該方法可以實現大量文本數據、復雜文件類型數據等內容的采集與傳輸工作,基于多個二維碼組合實現的磨粒分析圖像數據組織與傳輸實現效果如圖5所示,同樣,采用該方法所傳輸的數據也可以進行前文所述的加密、壓縮處理。

圖5 基于多個二維碼組合的復雜數據組織與傳輸
(1)提出了基于二維碼的油液分析儀器數據采集與傳輸方法。該方法利用操作系統API函數、Hook等技術,采用平臺化的理念設計并開發數據發送端程序和數據接收端程序;通過集成的數據格式解析等算法,實現油液分析儀器指定數據內容獲取并進行增添、刪除、修改、壓縮、加密等處理操作;再通過二維碼編碼技術生成相應的二維碼圖像從而實現油液分析儀器的分析數據傳輸。對于所傳輸的數據信息量大于單張二維碼圖像所能承載的最大信息量的情況,提出數據切片和編排處理方法,實現通過二維碼組合來傳輸復雜類型數據內容。
(2)以光譜檢測數據、磨粒分析圖像等復雜數據的采集與內外網之間傳輸為例進行了工程應用可行性驗證。該研究可以作為一種通用性的功能模塊,由油液分析儀器廠商集成到新設計的設備中,提供統一數據導出交換功能。