馬志剛,劉文怡
(1.中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,電子測(cè)試技術(shù)重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051;2.山西農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院,山西 太谷 030801)
在各類工業(yè)控制、工程測(cè)試領(lǐng)域中經(jīng)常需要采集、傳輸、存儲(chǔ)、處理大量數(shù)據(jù)。例如,在航天測(cè)試領(lǐng)域的各類電壓、緩變、速變、振動(dòng)、沖擊、溫度、液位、高速圖像等數(shù)據(jù),它們有的具有很高的采樣率和較長(zhǎng)的采集時(shí)間。因此,需要處理的數(shù)據(jù)量非常大。同時(shí),人們很難直接通過原始數(shù)據(jù)理解問題的實(shí)質(zhì);如果將這些數(shù)據(jù)轉(zhuǎn)化為生動(dòng)形象的數(shù)據(jù)曲線或圖像,將有助于分析和解決問題。
數(shù)據(jù)曲線是對(duì)連續(xù)變化物理量參數(shù)最直觀的處理和描述方法。數(shù)據(jù)曲線一般分為實(shí)時(shí)曲線和歷史曲線。實(shí)時(shí)曲線可以反映監(jiān)控參數(shù)在當(dāng)前或最近時(shí)刻的測(cè)量值和變化趨勢(shì),是測(cè)量系統(tǒng)當(dāng)前工作狀態(tài)的直觀描述,實(shí)時(shí)性要求非常高。歷史曲線是將存儲(chǔ)在數(shù)據(jù)文件中的歷史數(shù)據(jù)用曲線形式顯示,以反映系統(tǒng)在過去一段時(shí)間內(nèi)的運(yùn)行情況,在對(duì)系統(tǒng)進(jìn)行故障診斷時(shí)具有重要作用[1]。本文僅就歷史曲線繪制問題做探討。
在計(jì)算機(jī)編程應(yīng)用中,圖形程序設(shè)計(jì)曾經(jīng)是一項(xiàng)比較復(fù)雜的工作。例如用匯編語言、C語言等繪圖就很繁瑣,在真正繪圖前需要做大量準(zhǔn)備工作。20世紀(jì)末,隨著計(jì)算機(jī)應(yīng)用技術(shù)的迅速發(fā)展,出現(xiàn)大量軟件開發(fā)工具、套件、第三方控件[2]可用于繪圖軟件的研制,例如LabWindows、Visual Basic(VB)、Visual C++(VC)等。使用VB繪制圖形比較簡(jiǎn)單,在數(shù)據(jù)量較小的場(chǎng)合應(yīng)用此方法比較方便、有效。當(dāng)數(shù)據(jù)量較大時(shí),使用VB繪圖會(huì)出現(xiàn)困難,因?yàn)槔L制曲線時(shí)使用“Line”方法的次數(shù)太多,且VB本身的執(zhí)行效率較低。因此,VB適合于數(shù)據(jù)量較小且對(duì)實(shí)時(shí)性要求不高的應(yīng)用環(huán)境。采用VB調(diào)用API繪圖函數(shù)來繪制曲線能在一定程度上提高繪圖效率,但由于受VB本身性能所限,效果依然不理想。此外,在繪圖時(shí)經(jīng)常會(huì)遇到屏幕閃爍的問題,這會(huì)嚴(yán)重影響視覺效果。很對(duì)研究者均對(duì)閃爍問題及其解決方法作了研究[3-7],但鮮有將該問題結(jié)合“提高程序執(zhí)行效率問題”來討論。原因在于:上述文獻(xiàn)大都僅針對(duì)小容量數(shù)據(jù)處理,并不十分注重效率問題;而對(duì)于大容量數(shù)據(jù)[8],效率問題就顯得比較突出了。
程序執(zhí)行效率除了與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、程序的控制結(jié)構(gòu)、所處理的數(shù)據(jù)量等因素有關(guān)外,開發(fā)工具的選擇也很重要。在常用的編程語言和程序開發(fā)工具中,C++語言及其開發(fā)環(huán)境(VC++、C++ Builder等)被普遍認(rèn)為具有較高的執(zhí)行效率[9],再結(jié)合調(diào)用微軟基礎(chǔ)類庫 (microsoft foundation classes, MFC)中的應(yīng)用程序接口(application program interface, API)相關(guān)函數(shù),應(yīng)該會(huì)在很大程度上改善程序執(zhí)行效率。本文討論的大容量數(shù)據(jù)大都超過了2 GB,一般都在4 GB左右,數(shù)據(jù)量較大。為保證軟件在繪圖時(shí)有較高的執(zhí)行效率,綜合各方面因素,采用VC++6.0設(shè)計(jì)繪圖軟件。
繪制曲線之前,必須先將各通道數(shù)據(jù)從原始數(shù)據(jù)文件中提取出來,這就涉及到文件操作。此外,還應(yīng)充分考察數(shù)據(jù)文件中數(shù)據(jù)的組織方式。從文件中提取數(shù)據(jù)并繪制曲線的一般過程如圖1所示。
圖1 繪制曲線的一般過程
文件是存儲(chǔ)在計(jì)算機(jī)外部介質(zhì)上數(shù)據(jù)信息的集合,分為文本文件和二進(jìn)制文件。本文討論的測(cè)試數(shù)據(jù)文件屬于二進(jìn)制文件。Win32 API提供大量用于文件操作的函數(shù),主要包括:CreateFile、ReadFile、WriteFile、FindFirstFile等;其中,CreateFile函數(shù)用于打開或創(chuàng)建文件;通過WriteFile函數(shù)可以向指定文件中寫入數(shù)據(jù);ReadFile函數(shù)可以從指定文件中讀取數(shù)據(jù)。調(diào)用FindFirstFile函數(shù),可獲得文件的詳細(xì)信息,其原型為:
函數(shù)執(zhí)行后,變量lpFindFileData返回一個(gè)WIN32_FIND_DATA型結(jié)構(gòu)體,它包含的文件信息較多,其中:nFileSizeHigh和nFileSizeLow分別表示文件大小(以字節(jié)為單位)的高32位和低32位。可見,調(diào)用該函數(shù)可以獲得不超過16 EB(16 MTB)文件的大小。利用FindFirstFile函數(shù),本文設(shè)計(jì)了獲取大容量(超過 4 GB)數(shù)據(jù)文件大小的函數(shù):Get4GFileSize,該函數(shù)的入口參數(shù)為包含完整路徑的文件名;返回值是文件的大小,類型為ULONGLONG型(64位無符號(hào)整型),相關(guān)代碼如下:
不同種類的測(cè)試數(shù)據(jù)均有其特定的數(shù)據(jù)組織方式,一般將這種數(shù)據(jù)組織方式稱為“編幀”,編幀得到的一幀數(shù)據(jù)稱為“幀結(jié)構(gòu)”,測(cè)試數(shù)據(jù)就是由一系列“幀結(jié)構(gòu)”組成的。要從數(shù)據(jù)文件中提取有效數(shù)據(jù),必須明確數(shù)據(jù)的存儲(chǔ)和編幀格式。表1給出了某類測(cè)試數(shù)據(jù)的幀結(jié)構(gòu)。
表1 某類測(cè)試數(shù)據(jù)的幀結(jié)構(gòu)
表1所示測(cè)試數(shù)據(jù)的幀結(jié)構(gòu)分為4部分:①幀頭(0X''DC92'')表示一幀數(shù)據(jù)的開始;②數(shù)據(jù)內(nèi)容是數(shù)據(jù)幀中的有效數(shù)據(jù)部分,一幀數(shù)據(jù)中的“數(shù)據(jù)內(nèi)容”可長(zhǎng)可短,其長(zhǎng)度設(shè)置一般需考慮采樣路數(shù)、采樣率、采集時(shí)序等因素,該幀結(jié)構(gòu)中包括n路模擬量數(shù)據(jù);③幀計(jì)數(shù)相當(dāng)于數(shù)據(jù)幀的編號(hào),以遞增方式設(shè)計(jì),用于判斷相鄰幀是否連續(xù),如不連續(xù),則說明存在數(shù)據(jù)幀丟失的情況;④幀尾(0X''EB90'')表示該幀結(jié)束。
以表1所示幀結(jié)構(gòu)數(shù)據(jù)為例,提取通道數(shù)據(jù)是指將每幀數(shù)據(jù)中的n路通道數(shù)據(jù)分別存入各自的通道數(shù)據(jù)文件,以備后續(xù)繪制曲線使用。在提取通道數(shù)據(jù)的同時(shí),還應(yīng)判斷原始數(shù)據(jù)是否完整,理論上講應(yīng)該考察所有數(shù)據(jù)幀的長(zhǎng)度是否正確、幀計(jì)數(shù)是否連續(xù)??紤]到原始數(shù)據(jù)容量較大,無法將所有數(shù)據(jù)一次性讀入內(nèi)存進(jìn)行處理。本文采取“分塊讀取”的處理方式,具體過程為:
(1) 讀出一塊數(shù)據(jù),進(jìn)行數(shù)據(jù)處理;并將該塊剩余的未處理部分存至臨時(shí)空間;
(2) 讀出下一塊數(shù)據(jù),將上一塊剩余部分與該塊數(shù)據(jù)銜接后,再進(jìn)行數(shù)據(jù)處理;同樣將剩余數(shù)據(jù)緩存;
(3) 依此類推,直至全部數(shù)據(jù)被處理完畢。其中,“數(shù)據(jù)處理”是指找到該塊數(shù)據(jù)中所有的有效數(shù)據(jù)幀,并提取各通道數(shù)據(jù)寫入各自文件。
提取數(shù)據(jù)時(shí),“一塊數(shù)據(jù)”的大小并無嚴(yán)格限定,應(yīng)根據(jù)計(jì)算機(jī)硬件配置,尤其是內(nèi)存的情況進(jìn)行選擇。經(jīng)測(cè)試,當(dāng)塊大小在256 KB~64 MB范圍內(nèi)取值時(shí),程序執(zhí)行效率較高,但該值不宜超過64 MB。
VC是一種基于Windows用戶界面的、面向?qū)ο蟪绦蛟O(shè)計(jì)開發(fā)工具,由于其功能強(qiáng)大,幾乎無所不能。VC的編程方式有兩種:一種是直接調(diào)用API函數(shù);另一種是使用MFC類庫。前者是傳統(tǒng)的Windows編程方式,還帶有面向過程的特征。第二種方式下,MFC把相關(guān)的API函數(shù)封裝到各種類中,是面向?qū)ο笈cWindows編程的有機(jī)結(jié)合,真正體現(xiàn)了VC面向?qū)ο蟮木幊烫攸c(diǎn)。
MFC中提供了大量封裝好的類,其中包含豐富的繪圖工具和方法。MFC提供的繪圖工具類封裝了繪圖中用到的畫筆、畫刷、位圖等。包括:CGdiObject(圖形設(shè)備接口對(duì)象類)、CPen(畫筆類)、CBrush(畫刷類)、CBitmap(位圖類)等。應(yīng)用程序中需要哪種繪圖工具,就用對(duì)應(yīng)的繪圖工具類生成相應(yīng)的對(duì)象,然后調(diào)用SelectObject函數(shù)將其選入設(shè)備描述表中,使其生效。
曲線繪制的數(shù)據(jù)來源于各個(gè)通道數(shù)據(jù)文件。本文要處理的數(shù)據(jù)文件容量較大,數(shù)據(jù)曲線不可能一次性顯示,只能以分塊、分屏方式顯示。以一個(gè)8 GB的通道數(shù)據(jù)文件為例,假定每路數(shù)據(jù)均按照16位采樣,則每個(gè)數(shù)據(jù)點(diǎn)將占兩個(gè)字節(jié),所以總的數(shù)據(jù)點(diǎn)數(shù)為4 G個(gè);如果每屏一次顯示2048個(gè)數(shù)據(jù)點(diǎn),則需分成2048塊。
顯示曲線時(shí),給定要顯示數(shù)據(jù)在文件中的起始位置和需一次顯示的數(shù)據(jù)點(diǎn)數(shù)后,就可以通過移動(dòng)文件指針定位到文件的相應(yīng)位置并讀出一塊數(shù)據(jù)存入數(shù)組。根據(jù)上述功能要求,編寫了函數(shù)GetDataFromFile。其入口參數(shù)FileName為包含完整路徑的文件名;StartPos用于設(shè)置文件指針的位置;GetLen表示要讀取的數(shù)據(jù)量;Dat指定函數(shù)執(zhí)行成功后存放數(shù)據(jù)的數(shù)組首地址。函數(shù)的返回值為實(shí)際讀取到的數(shù)據(jù)量。
在VC中使用MFC繪制曲線,一般需要以下幾個(gè)步驟:①確定繪圖區(qū)域;②創(chuàng)建設(shè)備描述表;③準(zhǔn)備繪圖工具,包括:畫刷、畫筆、字體、顏色等;④調(diào)用API函數(shù)繪制曲線;⑤釋放設(shè)備描述表等資源。其一般流程如圖2所示。
圖2 VC中使用MFC繪制曲線的一般流程
本文設(shè)計(jì)的繪圖函數(shù)包含兩個(gè)入口參數(shù):①數(shù)據(jù)內(nèi)容;②一次顯示的數(shù)據(jù)點(diǎn)數(shù)。該函數(shù)的核心代碼如下:
以上代碼僅給出了繪圖函數(shù)的核心部分,一些輔助代碼并未列出。其中:(X1, Y1)和(X2, Y2)分別是繪圖區(qū)域左上角和右下角的坐標(biāo),二者共同確定了繪圖區(qū)域范圍;變量dW表示PlotCnt個(gè)數(shù)據(jù)點(diǎn)將繪圖區(qū)域水平均分后相鄰兩點(diǎn)的距離,它用于定位數(shù)據(jù)點(diǎn)在繪圖區(qū)域中的橫坐標(biāo);變量dH表示將繪圖區(qū)域垂直平分為65536(每個(gè)數(shù)據(jù)點(diǎn)占2個(gè)字節(jié))份后的單位高度,它用于定位數(shù)據(jù)點(diǎn)在繪圖區(qū)域中的縱坐標(biāo)。
繪制曲線的思路為:先調(diào)用MoveTo函數(shù)將畫筆定位到第一個(gè)數(shù)據(jù)點(diǎn)處(PlotDat[0]);再調(diào)用LineTo函數(shù)將剩余的(PlotCnt-1)個(gè)數(shù)據(jù)點(diǎn)依次用直線相連。另外,繪圖區(qū)的縱坐標(biāo)走向是自上而下遞增的,這與常用的平面直角坐標(biāo)系縱坐標(biāo)自下而上遞增不同。因此,數(shù)據(jù)點(diǎn)的縱坐標(biāo)需經(jīng)過換算(Y2 - PlotDat[i]* dH)才能轉(zhuǎn)化為平面直角坐標(biāo)系下的形式。
圖形程序設(shè)計(jì)是Windows應(yīng)用程序的重要組成部分。有過開發(fā)圖形界面軟件經(jīng)驗(yàn)的程序設(shè)計(jì)人員都有這樣的體會(huì):①顯示的數(shù)據(jù)量較大或伴隨有復(fù)雜計(jì)算時(shí),CPU占用率就會(huì)很高,繪圖的效率極低,甚至?xí)?dǎo)致程序崩潰;②在曲線或圖形繪制過程中,如果過于頻繁地刷新或切換,顯示屏幕將出現(xiàn)閃爍現(xiàn)象,影響視覺效果。
程序執(zhí)行效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)、程序的控制結(jié)構(gòu)、所處理的數(shù)據(jù)量、采用的算法等因素有關(guān)。實(shí)際上,本文在編寫繪圖函數(shù)時(shí)已經(jīng)在算法、數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)等方面做了優(yōu)化設(shè)計(jì),但是實(shí)際效果依然不佳。表現(xiàn)在:需繪制的數(shù)據(jù)點(diǎn)數(shù)越多,程序運(yùn)行越慢,甚至有卡機(jī)情況出現(xiàn)。例如:繪圖時(shí)每次顯示的數(shù)據(jù)點(diǎn)數(shù)超過512 K(524288)時(shí),就會(huì)出現(xiàn)比較明顯的畫面停頓。
經(jīng)過分析,繪圖時(shí)間大都花費(fèi)在LineTo操作上,點(diǎn)數(shù)越多,調(diào)用LineTo的次數(shù)就越多,不斷累積的時(shí)間將非??捎^。為縮短繪圖時(shí)間、提高程序執(zhí)行效率,可以調(diào)用MFC中的Polyline函數(shù),該函數(shù)可以將一組點(diǎn)一次性顯示在繪圖區(qū)域,其原型為:
BOOL Polyline(LPPOINT lpPoints, int nCount);
參數(shù)lpPoints用來指出CPoint對(duì)象數(shù)組的首地址,而CPoint對(duì)象數(shù)組中存放的正是需要依次連接形成曲線的數(shù)據(jù)點(diǎn),lpPoints.x和lpPoints.y為每個(gè)數(shù)據(jù)點(diǎn)的橫、縱坐標(biāo);nCount參數(shù)用來指定數(shù)據(jù)點(diǎn)數(shù),即lpPoints數(shù)組中的元素個(gè)數(shù)。這樣一來,CurvePlot函數(shù)可以改為如下代碼:
表2是兩類方法的繪圖時(shí)間與數(shù)據(jù)點(diǎn)數(shù)的關(guān)系比較。經(jīng)過比較,采用Polyline方法繪圖比LineTo方法在時(shí)間上平均縮短了93.566%,從很大程度上提高了程序執(zhí)行效率。
在進(jìn)行歷史曲線回放時(shí),經(jīng)常會(huì)發(fā)現(xiàn)程序所繪制的曲線在顯示屏幕閃爍,特別是一次顯示的數(shù)據(jù)量很大時(shí),該現(xiàn)象尤為嚴(yán)重。實(shí)際上,顯示閃爍是由VC繪圖機(jī)制引起的,這一情況在VB或其他編程工具中同樣存在,只是在多數(shù)情況下閃爍并不明顯而不易被人眼發(fā)覺。而在圖形被頻繁切換或有較大反差時(shí),如動(dòng)畫、游戲等,往往會(huì)出現(xiàn)較為明顯的閃爍。
表2 兩類方法繪圖時(shí)間與顯示數(shù)據(jù)點(diǎn)數(shù)的關(guān)系比較
在VC中,界面每次被刷新時(shí),系統(tǒng)都將自動(dòng)利用背景色填充繪圖區(qū)域;填充完畢后,系統(tǒng)才會(huì)重新調(diào)用繪圖函數(shù)對(duì)繪圖區(qū)域進(jìn)行重繪。因此每次重繪時(shí),就相當(dāng)于在兩次繪圖間插入一幅背景色圖,而背景色可能與繪圖顏色反差很大。所以繪圖頻率越快,反差也就越明顯,于是就出現(xiàn)了閃爍現(xiàn)象。
實(shí)際應(yīng)用中有許多消除圖形閃爍的方法,其中的雙緩沖法是使用較為普遍的一種。雙緩沖法的基本思想是:在內(nèi)存中有兩塊緩存,除了顯示區(qū)域設(shè)備描述表(前端緩沖區(qū))外,還有一塊需要手動(dòng)建立的與設(shè)備描述表兼容的內(nèi)存設(shè)備描述表(后備緩沖區(qū))。繪圖時(shí),先將圖形繪制在后備緩沖區(qū)中,然后將后備緩沖區(qū)中的圖像拷貝到前端緩沖區(qū)中進(jìn)行顯示[3,7]。其過程可概括為以下幾步:
(1) 創(chuàng)建與顯示區(qū)域設(shè)備描述表兼容的內(nèi)存設(shè)備描述表;
(2) 創(chuàng)建與內(nèi)存設(shè)備描述表相兼容的臨時(shí)位圖并將該位圖選入內(nèi)存設(shè)備描述表中;
(3) 將圖形繪制在內(nèi)存設(shè)備描述表中;
(4) 將內(nèi)存設(shè)備描述表中的圖形拷貝到顯示區(qū)域設(shè)備描述表中;
(5) 釋放設(shè)備描述表句柄、臨時(shí)位圖等資源。
拷貝圖形可直接調(diào)用BitBlt函數(shù),其原型為:
經(jīng)過充分測(cè)試,采用雙緩沖法可以有效消除繪圖時(shí)出現(xiàn)的顯示區(qū)域閃爍現(xiàn)象。與此同時(shí),采用該方法能進(jìn)一步提高程序執(zhí)行效率。表3列出了采用雙緩沖法與非雙緩沖法的繪圖時(shí)間與顯示數(shù)據(jù)點(diǎn)數(shù)的關(guān)系比較。從表中統(tǒng)計(jì)數(shù)據(jù)可以看到,采用雙緩沖法后,繪圖時(shí)間平均縮短了10%左右。由此可見,采用雙緩沖法既可消除繪圖閃爍,還有助于進(jìn)一步縮短繪圖時(shí)間。這對(duì)大容量數(shù)據(jù)處理具有重要意義。
表3 雙緩沖法和非雙緩沖法的繪圖時(shí)間與顯示數(shù)據(jù)點(diǎn)數(shù)的關(guān)系比較
本文使用VC++ 6.0設(shè)計(jì)了“航天測(cè)試系統(tǒng)大容量數(shù)據(jù)曲線繪制軟件”,其界面效果如圖3所示。圖中曲線對(duì)應(yīng)的是一個(gè)通道數(shù)據(jù)文件,大小為3.26 GB(3510750168 B),當(dāng)前顯示的點(diǎn)數(shù)為32768。該通道數(shù)據(jù)的采樣率為270 kHz,曲線橫坐標(biāo)為根據(jù)數(shù)據(jù)點(diǎn)和采樣率換算的時(shí)間(s);縱坐標(biāo)是采集的模擬量對(duì)應(yīng)的電壓值(0~5 V)。
圖3 曲線繪制軟件界面
數(shù)據(jù)是考核設(shè)備工作狀態(tài)和系統(tǒng)性能的重要指標(biāo),而曲線則是測(cè)試數(shù)據(jù)最直觀的表現(xiàn)方式。本文的主要工作在于:基于MFC對(duì)圖形編程的支持,利用VC++ 6.0設(shè)計(jì)了一種大容量數(shù)據(jù)曲線繪制軟件,并著力解決繪圖軟件的執(zhí)行效率和顯示閃爍問題。為解決第一個(gè)問題,本文直接采用Polyline函數(shù)繪圖,該方法比傳統(tǒng)的LineTo函數(shù)繪圖法在時(shí)間上縮短了九成以上。對(duì)于第二個(gè)問題,采用雙緩沖方法,不但解決了圖形顯示閃爍的問題,還進(jìn)一步提高了軟件的執(zhí)行效率。本文選用VC++ 6.0作為軟件開發(fā)工具,它僅能較好地支持用戶在Windows 7以下版本操作系統(tǒng)中進(jìn)行編程。如果選擇高版本操作系統(tǒng)進(jìn)行軟件設(shè)計(jì),VC++ 6.0下的程序可以很方便地被移植到諸如VC++ 2008、VC++2010或更高版本中。
除了歷史曲線繪制,還有一類應(yīng)用較廣的實(shí)時(shí)曲線繪制問題[10-11]。相比之下,實(shí)時(shí)曲線繪制對(duì)時(shí)間的要求更高,它要求在特定時(shí)間內(nèi)(例如:25 ms或100 ms)將最近接收的數(shù)據(jù)以曲線的形式體現(xiàn)在顯示屏上,因此留給曲線繪制的時(shí)間非常短。而在這段極其有限的時(shí)間內(nèi)還要完成數(shù)據(jù)接收、分析、存盤等操作。軟件設(shè)計(jì)一旦在時(shí)間上控制不好,實(shí)時(shí)系統(tǒng)就可能出現(xiàn)丟數(shù)、無法存盤、顯示時(shí)滯等問題[9]。隨著計(jì)算機(jī)或所采用的嵌入式系統(tǒng)性能逐步提升,這從一定程度上節(jié)省了部分時(shí)間;而與之對(duì)應(yīng)的是對(duì)測(cè)試系統(tǒng)提出的更高要求:?jiǎn)挝粫r(shí)間內(nèi)要處理成倍增加的數(shù)據(jù)、實(shí)時(shí)性要求不斷提升等。因此,必須從程序或算法本身入手,降低其時(shí)間和空間復(fù)雜度、不斷優(yōu)化算法。
曲線繪制在各領(lǐng)域均有廣泛應(yīng)用。本文設(shè)計(jì)的算法和軟件在多項(xiàng)航天測(cè)試項(xiàng)目中得到了成功應(yīng)用,并取得了較為理想的效果。雖然不同的測(cè)試領(lǐng)域?qū)?shù)據(jù)曲線的顯示要求各有差異,但本文設(shè)計(jì)的軟件具備一定的通用性,可經(jīng)過適應(yīng)性修改應(yīng)用到其他測(cè)試領(lǐng)域。
[1]趙衛(wèi)強(qiáng), 魯墨武.基于VB6.0的監(jiān)控系統(tǒng)軟件中數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)曲線實(shí)現(xiàn)方法的研究[J].沈陽航空工業(yè)學(xué)院學(xué)報(bào), 2003, 20(1): 31-34.
[2]王瑾琦, 王紅亮.某遙測(cè)系統(tǒng)數(shù)據(jù)記錄設(shè)備軟件設(shè)計(jì)[J].傳感器與微系統(tǒng), 2011, 30(9): 128-130.
[3]焦景欣, 代 亮, 胡含凱, 司昕璐.采用雙緩存的視景仿真圖像顯示效果改善方法[J].探測(cè)與控制學(xué)報(bào),2010, 32(5): 92-95.
[4]葉林瓚, 雷小永, 戴樹嶺.飛行仿真系統(tǒng)數(shù)據(jù)可視化設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)仿真, 2012, 29(3): 141-144, 197.
[5]王 艷, 張禮君, 韓 嘯.數(shù)字超聲輪軸探傷儀軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表, 2011, 26(7): 21-25.
[6]郭振華, 江亞群, 楊帥雄, 梁勇超, 黃 純.故障錄波器后臺(tái)分析軟件關(guān)鍵問題研究[J].電力系統(tǒng)保護(hù)與控制, 2011, 39(19): 73-78.
[7]唐海全, 邵才瑞, 李洪強(qiáng).隨鉆測(cè)井曲線無閃爍繪制技術(shù)[J].測(cè)井技術(shù), 2010, 34(5): 479-482.
[8]李 河, 王祝文, 李舟波, 王朝輝.大數(shù)據(jù)量地球物理測(cè)井繪圖關(guān)鍵技術(shù)研究[J].地球物理學(xué)進(jìn)展, 2005,20(1): 71-77.
[9]劉文怡, 甄國(guó)涌.高速測(cè)控系統(tǒng)中實(shí)時(shí)數(shù)據(jù)處理軟件技術(shù)研究[J].華北工學(xué)院學(xué)報(bào), 2004, 25(3): 191-193.
[10]吳建飛, 程明霄.嵌入式Linux圖形系統(tǒng)實(shí)時(shí)采樣曲線繪制的實(shí)現(xiàn)[J].計(jì)算機(jī)工程, 2007, 33(19): 259-261.
[11]王 澍, 林 輝, 張海濤.應(yīng)用C++ Builder 6.0的串口數(shù)據(jù)實(shí)時(shí)曲線繪制方法研究[J].電光與控制, 2008,15(7): 93-96.