
摘 要:通過(guò)引進(jìn)消化吸收開(kāi)發(fā)的方式,研建了AGRSS航測(cè)系統(tǒng)。ADASNT系統(tǒng)控制及數(shù)據(jù)采集軟件是其配套開(kāi)發(fā)的航測(cè)軟件。在WindowsXP操作環(huán)境下,以C++Builder為開(kāi)發(fā)工具,很好地解決了系統(tǒng)訪問(wèn)硬件的一些關(guān)鍵技術(shù),實(shí)現(xiàn)了計(jì)算機(jī)與外設(shè)之間的串口通信、CPU訪問(wèn)I/O端口,以及模擬信號(hào)的輸出等,并實(shí)現(xiàn)了基于WindowsXP平臺(tái)的航空物探數(shù)據(jù)的采集、記錄、顯示等有關(guān)功能。
關(guān)鍵詞:航測(cè)軟件 Windows XP平臺(tái) 數(shù)據(jù)收錄 系統(tǒng)控制
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2015)01(b)-0051-02
在原進(jìn)口設(shè)備逐步進(jìn)入退役的過(guò)程中,核工業(yè)航測(cè)遙感中心通過(guò)進(jìn)口探測(cè)器主要部件、市場(chǎng)采購(gòu)?fù)ㄓ貌考?、委托加工專用部件、自主開(kāi)發(fā)系統(tǒng)控制、數(shù)據(jù)收錄平臺(tái)的方式,研建了AGRSS航測(cè)系統(tǒng)。實(shí)現(xiàn)了具有自主知識(shí)產(chǎn)權(quán)的、高集成度小型化、智能化的航測(cè)系統(tǒng)。該系統(tǒng)以工業(yè)PC機(jī)為基礎(chǔ),附加GPS定位儀、航空多道能譜儀、航空磁力儀、雷達(dá)高度計(jì)、氣壓高度計(jì)、機(jī)外溫度計(jì)等探測(cè)器借口插板,在Windows XP操作環(huán)境下,用C++ BuilderXE語(yǔ)言開(kāi)發(fā)了包括系統(tǒng)控制、數(shù)據(jù)初步分析、數(shù)據(jù)收錄等功能的航空物探測(cè)量軟件,簡(jiǎn)稱ADASNT航測(cè)軟件。
1 軟件設(shè)計(jì)
航測(cè)系統(tǒng)包含放射性伽瑪能譜、磁力、GPS等多種探測(cè)系統(tǒng),并且是動(dòng)態(tài)測(cè)量,航測(cè)軟件必須具備如下功能:
——同步,以系統(tǒng)時(shí)鐘為標(biāo)識(shí),確保記錄數(shù)據(jù)的空間位置吻合;
——系統(tǒng)控制,如能譜儀穩(wěn)譜,確保各個(gè)外設(shè)工作正常;
——數(shù)據(jù)初步分析,確保采集數(shù)據(jù)可信;
——實(shí)時(shí)顯示,為操作員實(shí)時(shí)提供測(cè)量結(jié)果及系統(tǒng)和各個(gè)外設(shè)工作狀態(tài)的模擬和/或數(shù)字顯示;
——記錄數(shù)據(jù),對(duì)采集數(shù)據(jù)進(jìn)行完整記錄;
——記錄結(jié)果校驗(yàn),確保記錄結(jié)果可信;
——數(shù)據(jù)備份,采用雙硬盤(pán)或存儲(chǔ)卡對(duì)記錄數(shù)據(jù)實(shí)時(shí)備份,以防數(shù)據(jù)滅失。
1.1 系統(tǒng)分析
在PC機(jī)上以WindowsXP操作系統(tǒng)為基礎(chǔ),以Borland C++ BuilderXE為軟件開(kāi)發(fā)工具,采用高精度多媒體定時(shí)器進(jìn)行精確定時(shí),用WinIO提供的端口操作函數(shù)進(jìn)行硬件I/O編程,用PComm Pro提供的函數(shù)進(jìn)行串行通信編程,采用多線程編程技術(shù)來(lái)實(shí)現(xiàn)GPIB(General Purpose Interface Bus通用接口總線)數(shù)據(jù)的采集及穩(wěn)譜處理,實(shí)現(xiàn)了以下功能:
GPIB數(shù)據(jù)接收及穩(wěn)譜功能
分辨率計(jì)算及譜線顯示功能
串口數(shù)據(jù)接收功能
AD\DA轉(zhuǎn)換功能
數(shù)據(jù)顯示:測(cè)線號(hào)、基點(diǎn)號(hào)、GPS定位坐標(biāo),系統(tǒng)時(shí)間、磁盤(pán)剩余時(shí)間。
數(shù)據(jù)模擬曲線顯示:屏幕顯示不同變量曲線,每屏顯示選定8條變量曲線。同時(shí)顯示變量名稱、實(shí)時(shí)測(cè)量數(shù)據(jù)。
數(shù)據(jù)模擬曲線滾動(dòng):由于測(cè)量時(shí)間長(zhǎng),記錄曲線要像紙帶卷動(dòng)一樣滾動(dòng)顯示。
數(shù)據(jù)記錄:將數(shù)據(jù)保存到數(shù)據(jù)文件。
幫助。
1.2 系統(tǒng)控制的關(guān)鍵技術(shù)
在Windows XP環(huán)境下,處于Windows用戶狀態(tài)的應(yīng)用程序不能直接對(duì)硬件設(shè)備進(jìn)行操作,必須通過(guò)處于核心態(tài)的設(shè)備驅(qū)動(dòng)程序間接與硬件交互。因此,編制相應(yīng)的設(shè)備驅(qū)動(dòng)程序是進(jìn)行計(jì)算機(jī)硬件設(shè)備開(kāi)發(fā)必須面臨的問(wèn)題。在整個(gè)系統(tǒng)的設(shè)計(jì)過(guò)程中,數(shù)據(jù)的接收和記錄是最為重要的部分,其關(guān)鍵技術(shù)是如何實(shí)現(xiàn)在Windows XP環(huán)境下利用C++Builder編程技術(shù)實(shí)現(xiàn)I/O端口的訪問(wèn)、串口通信的實(shí)現(xiàn)、多線程及多媒體定時(shí)器等編程技術(shù)。
用WinIO函數(shù)實(shí)現(xiàn)C++Builder在WindowsXP下的端口訪問(wèn)技術(shù)。
C++builder在Win95/98的OS可以直接調(diào)用inport和outport等函數(shù),但到Win2000以后,因?yàn)檫@些函數(shù)不能直接進(jìn)入ring0層,所以inport這些端口操作函數(shù)是不能在Win2000以后的OS上直接調(diào)用的。Winio驅(qū)動(dòng)程序通過(guò)使用內(nèi)核模式下設(shè)備驅(qū)動(dòng)程序和其它一些底層編程技巧繞過(guò)Windows安全保護(hù)機(jī)制,這樣應(yīng)用層對(duì)IO端口的訪問(wèn)就不會(huì)導(dǎo)致異常了,允許32位Windows程序直接對(duì)I/O口進(jìn)行操作。
用PCommPro動(dòng)態(tài)連接庫(kù)開(kāi)發(fā)C++Builder在Windows下的串行通信技術(shù)。
PCommPro通訊動(dòng)態(tài)鏈接庫(kù)建立在Win32的通訊API的基礎(chǔ)之上,將Win32的通訊API進(jìn)行包裝,為用戶提供較為高級(jí)的接口。PCommPro提供專為串口通信而設(shè)計(jì)的50多個(gè)API函數(shù),支持VB、C/C++和Delphi等多種編程語(yǔ)言,在功能和應(yīng)用上都不會(huì)像MicrosoftWin32COMMAPI那樣讓開(kāi)發(fā)者感到困擾。因此,在C++Builder中利用PCommPro通訊動(dòng)態(tài)鏈接庫(kù)開(kāi)發(fā)串行程序時(shí)變得非常輕松,大大節(jié)省了開(kāi)發(fā)時(shí)間和成本。
采用多媒體定時(shí)器(MultimediaTimer)技術(shù)。
雖然C++BuilderXE有專用的定時(shí)器控件Timer,而且使用很方便,可以實(shí)現(xiàn)一定的定時(shí)功能,但最小計(jì)時(shí)精度僅為55ms,且定時(shí)器消息在多任務(wù)操作系統(tǒng)中的優(yōu)先級(jí)很低,不能得到及時(shí)響應(yīng),往往不能滿足實(shí)時(shí)控制環(huán)境下的應(yīng)用。采用Windows下提供的多媒體定時(shí)器,優(yōu)先級(jí)別高,其定時(shí)分辨率(Resolution)最高為1ms,遠(yuǎn)遠(yuǎn)高于C++BuilderXE默認(rèn)的Timer定時(shí)器的性能(55ms)。
多線程技術(shù)。
Win32是一種搶占式多任務(wù)操作系統(tǒng),他為每一個(gè)線程輪流分配時(shí)間段,讓線程在分配的時(shí)間段里運(yùn)行。每個(gè)進(jìn)程除了系統(tǒng)自動(dòng)生成的主線程外,還可以創(chuàng)建多個(gè)線程來(lái)協(xié)同完成指定的操作。利用多線程可以大大提高CPU的利用率。對(duì)于該應(yīng)用程序,由于要處理的數(shù)據(jù)量非常大,只有利用多線程才能滿足要求,才能保證數(shù)據(jù)不丟失。
1.3 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
綜合考慮本系統(tǒng)的功能,系統(tǒng)應(yīng)該以數(shù)據(jù)采集為中心。系統(tǒng)主要處理的是一個(gè)數(shù)據(jù)的交互問(wèn)題,即保障PC機(jī)與硬件設(shè)備的通信正常。在通信正常的情況下,PC機(jī)將采集到的數(shù)據(jù)進(jìn)行處理,并通過(guò)對(duì)Windows窗體的設(shè)計(jì),實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行接收、處理、顯示、保存及控制的功能。
1.4 程序結(jié)構(gòu)設(shè)計(jì)
根據(jù)系統(tǒng)要實(shí)現(xiàn)的功能,本著該程序軟件模塊化、可視化、菜單式功能的設(shè)計(jì)理念,整個(gè)系統(tǒng)的程序框架設(shè)計(jì)可分為六個(gè)部分來(lái)完成,即GPIB數(shù)據(jù)接收功能、分辨率計(jì)算及譜線顯示功能、串口數(shù)據(jù)接收功能、模擬輸入/輸出轉(zhuǎn)換功能、測(cè)量數(shù)據(jù)記錄及模擬曲線顯示功能、幫助等。其中每個(gè)部分的模塊再根據(jù)要求詳細(xì)設(shè)計(jì)。
由于整個(gè)設(shè)計(jì)的功能實(shí)現(xiàn)是基于C++BuilderXE環(huán)境下制作的窗體的,因此每個(gè)部分模塊都是以窗體的形式實(shí)現(xiàn)。系統(tǒng)模塊框圖見(jiàn)圖2.1。
1.4.1 主界面設(shè)計(jì)
在一個(gè)應(yīng)用程序中必須對(duì)界面進(jìn)行友好的設(shè)計(jì),使其既能完成程序的功能,又能方便用戶操作。本系統(tǒng)主界面采用通用的MID窗體模式,實(shí)現(xiàn)了實(shí)時(shí)顯示,初步分析處理,記錄及計(jì)算分辨率、參數(shù)設(shè)置、調(diào)用幫助等功能。
該界面中添加了主菜單、快捷欄、狀態(tài)欄、圖形顯示控件,主菜單中囊括了主要功能,快捷欄可方便用戶快速進(jìn)行操作,狀態(tài)欄可用于顯示系統(tǒng)時(shí)間、磁盤(pán)剩余空間、程序工作狀態(tài)等。圖形控件用于繪制選定變量的曲線、顯示變量名稱、實(shí)時(shí)測(cè)量數(shù)值。
1.4.2 參數(shù)設(shè)置界面
該界面主要實(shí)現(xiàn)對(duì)串口參數(shù)及曲線通道參數(shù)的設(shè)置,保存等功能。依次在每個(gè)復(fù)合框中填入數(shù)據(jù),根據(jù)硬件設(shè)備的串口配置參數(shù),選定合適的串口參數(shù)進(jìn)行操作,通過(guò)下拉復(fù)合框可對(duì)參數(shù)進(jìn)行設(shè)置修改,保證串口通信的正常。
1.4.3 分辨率界面
該界面用于將采集到的溫度、濕度、露點(diǎn)存儲(chǔ)在數(shù)據(jù)庫(kù)中,用DataGridview對(duì)數(shù)據(jù)進(jìn)行綁定顯示。然后對(duì)該數(shù)據(jù)庫(kù)進(jìn)行各種操作。點(diǎn)擊”退出”按鈕即可退出數(shù)據(jù)輸入界面。分辨率測(cè)試計(jì)算界面如圖2所示。
1.4.4 幫助界面
幫助用戶了解航測(cè)軟件的功能、操作以及簡(jiǎn)單故障排除的方法。
聯(lián)機(jī)幫助系統(tǒng)是應(yīng)用軟件的重要組成部分,為應(yīng)用軟件的使用提供了極大的方便和幫助。本幫助文件使用HtmlHelp幫助系統(tǒng)采用的統(tǒng)一窗口,其左側(cè)包括目錄、主題索引、查詢等可相互切換的窗格;右側(cè)顯示主題文檔的內(nèi)容。這種布局可使用戶隨意選擇目錄主題進(jìn)行瀏覽,而且隨時(shí)可以知道正在閱讀文檔的哪一部分,就象看書(shū)一樣方便。
2 結(jié)語(yǔ)
高度集成化的AGRSS航測(cè)系統(tǒng)自2011年研制成功后,經(jīng)過(guò)4年的實(shí)踐改進(jìn),目前已有4套投入生產(chǎn),并完成了近60萬(wàn)測(cè)線公里的航測(cè)生產(chǎn);在2013年“基于無(wú)人機(jī)的航空物探(電、磁、放)綜合站測(cè)量技術(shù)研發(fā)與應(yīng)用示范”項(xiàng)目的進(jìn)一步推廣應(yīng)用,數(shù)據(jù)通訊功能得到完善和提升。ADASNT航測(cè)軟件具有運(yùn)行速度快,用戶界面友好,信息豐富,操作簡(jiǎn)單,系統(tǒng)移植性、擴(kuò)充性能良好等優(yōu)點(diǎn);同時(shí)數(shù)據(jù)記錄真實(shí)可靠,可以永久保存。它不但能夠滿足航空綜合找礦、航空環(huán)境監(jiān)測(cè)的需要,而且還適用于地面汽車能譜測(cè)量。
參考文獻(xiàn)
[1]余明興,吳明哲.BorlandC++Builder6程序設(shè)計(jì)經(jīng)典[M].北京:科學(xué)出版社,2004.
[2]譚浩強(qiáng).C語(yǔ)言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[3]雷麗文,朱曉華.微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2001.