国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 用DLL實現(xiàn)自動測試存儲數(shù)據(jù)的糾錯處理

用DLL實現(xiàn)自動測試存儲數(shù)據(jù)的糾錯處理

作者: 時間:2017-02-27 來源:網(wǎng)絡(luò) 收藏
光纖光柵傳感器具有波長編碼特性,不受光源功率波動和系統(tǒng)損耗的影響,因而在傳感領(lǐng)域得到了廣泛的應(yīng)用[1,2]。多波長計是一種能對光纖光反射波長進(jìn)行測試的儀器,可以實現(xiàn)對光柵傳感陣列的一次性測量,但其測量數(shù)據(jù)靠人工讀取,不便于實際應(yīng)用。采用LabVIEW儀器控制技術(shù)對多波長計串口進(jìn)行了開發(fā),通過在軟件中執(zhí)行遠(yuǎn)程命令控制儀器進(jìn)行測量,并將測量結(jié)果自動存入指定的EXCEL文件中。

在進(jìn)行文件存儲的過程中,因為某些因素可能會導(dǎo)致個別傳感器沒有返回信號,此時直接存儲必然會導(dǎo)致測量結(jié)果文件的數(shù)據(jù)混亂。為解決此問題,本文提出通過調(diào)用DLL對測量結(jié)果的合理性進(jìn)行檢驗和處理。該研究可以有效避免發(fā)生大數(shù)據(jù)量下測量結(jié)果文件中的數(shù)據(jù)錯位現(xiàn)象,使得測試系統(tǒng)在獲得傳感信號同時,還具有識別錯誤信號并進(jìn)行自動處理的功能,提高了系統(tǒng)的可靠性。

2 LabVIEW與DLL接口技術(shù)

美國NI公司開發(fā)的LabVIEW是一種功能強大的圖形化編程語言[3,4],用之來實現(xiàn)計算機對可編程儀器的控制[5],可以很大程度地提高編程效率。此外,由于LabVIEW所提供的圖標(biāo)功能是有限的,實際系統(tǒng)中仍然有某些功能是無法或難以實現(xiàn)的。針對此問題,LabVIEW提供了調(diào)用Windows動態(tài)鏈接庫(DLL)函數(shù)的功能。從而可以彌補其自身的不足,實現(xiàn)更多、更強大的功能。

動態(tài)鏈接庫(Dynamic Link Library, DLL)是基于Windows程序設(shè)計的一個非常重要的組成部分。當(dāng)應(yīng)用程序被裝入內(nèi)存并開始運行時,在Windows的管理下,在應(yīng)用程序與相應(yīng)的DLL之間建立鏈接關(guān)系。當(dāng)要執(zhí)行DLL中的函數(shù)時,根據(jù)鏈接產(chǎn)生重定位信息,Windows轉(zhuǎn)去執(zhí)行DLL中相應(yīng)的函數(shù)代碼。因而,DLL是一個位于應(yīng)用程序外部的過程庫,它可以從應(yīng)用程序中調(diào)用,在運行時被動態(tài)鏈接,。DLL的編制與具體的編程語言及編譯器無關(guān),只要遵守DLL的開發(fā)規(guī)范和編程策略,并安排正確的調(diào)用接口,不管用何種編程語言編制的DLL都具有調(diào)用性。

3 測量返回結(jié)果的存儲和錯位問題

通過在LabVIEW中開發(fā)測試控制軟件,可以控制光纖光柵測量儀器按預(yù)定程序自動執(zhí)行測量工作。在計算機控制軟件中發(fā)出遠(yuǎn)程測量命令“:MEAS:ARR:POW:WAV?”[6]后,儀器返回的結(jié)果如圖1所示,其中的第一個值為返回波長的個數(shù),后面為相應(yīng)的光纖光柵反射波長值。在所有光柵傳感器都完好且能返回傳感數(shù)據(jù)的情況下,可以直接將測量結(jié)果保存分析。測量結(jié)果文件如圖2所示,每行測量結(jié)果包括進(jìn)行測量的日期、時間,峰值波長個數(shù)及各個返回峰值波長值。




在保存的EXCEL文件中,每次測量結(jié)果存為一行,執(zhí)行一次測量,存入一行數(shù)據(jù),每列數(shù)據(jù)對應(yīng)一個光柵傳感器。但在實際工程應(yīng)用中,由于某些因素可能使得其中某個光柵傳感器沒有返回傳感信號,此時若將測量返回結(jié)果直接寫入EXCEL文件的一行中,就會使該光柵之后的數(shù)據(jù)錯位,不能對應(yīng)其應(yīng)該所處的列,尤其在數(shù)據(jù)量眾多的情況下,更會造成測量結(jié)果的混亂,如圖3所示。為解決此問題,需對每次返回的測量結(jié)果進(jìn)行分析,若出現(xiàn)上述情況,則在無信號光柵位置數(shù)據(jù)補零。



4 利用DLL實現(xiàn)對返回數(shù)據(jù)的合理性檢驗和自動處理

為實現(xiàn)對測量數(shù)據(jù)的檢驗和處理,在VC++6.0編程環(huán)境下開發(fā)Win32 DLL。一個完整的DLL項目需要模塊定義文件,用戶程序頭文件和C++源程序文件。模板定義文件名后綴為def,是由一個或多個用于描述DLL屬性的語句組成的文本文件。在模板定義文件中,LIBRARY聲明庫文件名check;EXPORTS聲明中列出了DLL中輸出函數(shù)的名稱modifyResult,如下所示:



頭文件中包含用戶所要輸出的所有函數(shù),每個輸出函數(shù)前都要有關(guān)鍵字_declspec (dllexport)。頭文件是可選的,若用戶把其內(nèi)容放在源程序文件中,作為源程序的一部分,則可省去頭文件。



源程序文件對modifyResult函數(shù)進(jìn)行實現(xiàn)。該函數(shù)的三個參數(shù)的含義分別是:previousData數(shù)組存放每個光纖光柵傳感器的上次測量結(jié)果;maxDifference數(shù)組存放每個傳感器本次測量結(jié)果與其上次測量結(jié)果允許的最大差值;currentData存放本次測量結(jié)果。對于第i個數(shù)據(jù),如果|currentData-previousData|>maxDifference,則認(rèn)為其是第i+1個傳感器返回的數(shù)據(jù),第i個傳感器沒有返回數(shù)據(jù),應(yīng)該在該位置補0,主要算法如下:





在LabVIEW中,用戶對DLL的調(diào)用,可通過LabVIEW提供的調(diào)用庫函數(shù)[7](Call Library Function)來實現(xiàn)。對CLF節(jié)點的配置情況如圖4所示,在所顯示的對話框中輸入庫文件名、所調(diào)用函數(shù)名、調(diào)用規(guī)程以及函數(shù)的返回類型、所有輸入?yún)?shù)及其數(shù)據(jù)類型。

在配置好CLF節(jié)點后,即可在LabVIEW程序中進(jìn)行直接應(yīng)用。圖5所示為由測試儀器串口通信→字符串轉(zhuǎn)換→調(diào)用CLF節(jié)點處理數(shù)據(jù)→文件存儲的測量結(jié)果的完整處理過程。在所有光纖光柵傳感器都完好的情況下,由串口通信模塊讀出的結(jié)果在轉(zhuǎn)換為數(shù)值型數(shù)據(jù)后可以直接存儲或顯示。然而若返回波長數(shù)N小于初始個數(shù)N0,則說明有傳感器無返回數(shù)據(jù),此時可以通過調(diào)用庫函數(shù)CLF節(jié)點調(diào)用包含有處理函數(shù)的DLL,對返回數(shù)據(jù)進(jìn)行檢驗處理,在無返回信號光柵相應(yīng)位置補零,從而保證后續(xù)數(shù)據(jù)與其正確位置的對應(yīng),然后再進(jìn)入文件存儲或顯示模塊。



5結(jié)論

本文的創(chuàng)新點在于通過CLF節(jié)點調(diào)用DLL,對通過LabVIEW獲取的多波長計測量結(jié)果進(jìn)行分析處理,避免發(fā)生大數(shù)據(jù)量下測量結(jié)果文件中的數(shù)據(jù)錯位現(xiàn)象。由于DLL只有在程序執(zhí)行時才將代碼載入內(nèi)存,并且多個程序使用相同的DLL時,內(nèi)存中只裝載一次,所以在LabVIEW開發(fā)中使用DLL,可以使代碼更簡潔,內(nèi)存資源的使用更經(jīng)濟(jì)。用戶只要編寫一次DLL,就可以多次調(diào)用。實驗證明:這種方法簡單、方便、可滿足測試要求。


評論


技術(shù)專區(qū)

關(guān)閉