摘 要:隨著計算機測控技術的發(fā)展,測試報表的自動化生成已變得相當容易,并成為測控軟件中的一個重要組成部分。它不僅能使測試時間大為縮減從而提高測試速度,而且能避免手工生成報表時的人為錯誤從而提高測試準確度,所以將測試結(jié)果形成報表并存儲成Word或Excel文件,將是最受用戶歡迎的。Labview中有專門的報表模塊,可以實現(xiàn)簡單報表功能,但使用不是很靈活,難以滿足較高的報表要求。文章主要講述了Labview中利用ActiveX技術實現(xiàn)測試報表(Word或Excel格式)的自動化生成功能。
關鍵詞:Labview環(huán)境;ActiveX技術;Word、Excel常見功能
1 概述
1.1 Labview環(huán)境
Labview是一種基于“虛擬儀器”的可視化編程環(huán)境,核心概念是“軟件即儀器”,特別強調(diào)軟件在測控系統(tǒng)中的作用。利用Labview編制的程序包括前面板界面與程序框圖兩部分,其操作和功能模擬了現(xiàn)實世界中的儀器,因此被稱為VI(Virtual Instrument/虛擬儀器)。
Labview的優(yōu)勢主要體現(xiàn)在以下幾個方面:
(1)提供了豐富的圖形控件,并采用圖形化的編程方法,徹底把工程師們從復雜苦澀的文本編程工作中解放出來。
(2)內(nèi)建的編譯器在用戶編寫程序的同時就在后臺自動完成了編譯。因此用戶在編寫程序的過程中如果有語法錯誤,它會被立即顯示出來。
(3)通過應用程序生成器可以輕松地發(fā)布EXE、動態(tài)鏈接庫或安裝包。
(4)由于采用數(shù)據(jù)流模型,它實現(xiàn)了自動的多線程,從而能充分利用處理器尤其是多處理器的處理能力。
(5)通過DLL、CIN節(jié)點、ActiveX、NET或MATLAB腳本節(jié)點等技術,可以輕松實現(xiàn)Labview與其他編程語言混合編程。
(6)提供了大量的驅(qū)動與專用工具,幾乎能與任何接口的硬件輕松連接。
(7)內(nèi)建了600多個分析函數(shù),用于數(shù)據(jù)分析和信號處理。
(8)NI同時提供了豐富的附加模塊,用于擴展Labview在不同領域中的應用。
1.2 ActiveX技術
ActiveX是微軟公司推出的一個技術集的統(tǒng)稱,這項技術可以使用戶重用代碼,并能將多個程序連接在一起實現(xiàn)復雜的計算需求。它基于COM(Component Object Model/組件對象模型)技術。ActiveX是較早的OLE(Object Linking and Embedding)技術的擴展。作為ActiveX核心的COM是一個以處理所有軟件組件開發(fā)阻礙為目的的標準,它希望最終建立一個大型的組件庫,使軟件工程師能像硬件工程師一樣通過搭建組件的辦法開發(fā)應用程序。
在Labview環(huán)境下ActiveX編程基本思路如圖1所示。首先打開ActiveX生成主對象,然后由主對象生成其他所需的子對象,通過設置這些對象的各種屬性、調(diào)用對象的各種方法以及處理對象的各種事件來實現(xiàn)程序所需功能,最后將所有對象關閉,所有的這些操作都通過對象標識關聯(lián)到一起。
打開ActiveX對象、訪問ActiveX對象的屬性方法、注冊事件等都需要利用Labview提供的ActiveX操作函數(shù)(位于程序框圖內(nèi)Functions Palette面板的Communication|ActiveX子菜單)。
其中主要函數(shù)的功能如表1所示。
2 ActiveX編程實例
2.1 調(diào)用Word編程
2.1.1 打開或新建Word文檔
打開Word應用程序?qū)ο螅╓ord._Application)是所有Word相關操作的首要條件。Word._Application對象表達了Word應用程序框架,直接利用Automation Open函數(shù)就可打開Word應用。
程序?qū)ο髲亩蜷_Word應用程序,關鍵是找出Word應用程序?qū)ο髽俗R(Automation Refnum)。首先放置Automation Open函數(shù)在程序框圖中,右鍵單擊該函數(shù)圖標左側(cè)的Automation Refnum端子,選擇Create|Control選項,創(chuàng)建一個Automation Open控件,右鍵單擊該控件并選擇Select ActiveX Class|Browse選項打開如圖2所示的ActiveX對象選擇對話框,在Type Library中選擇Microsoft Word * Object LibraryVersion*,在Objects中選擇Application (Word.Application.*),單擊OK按鈕即可完成了Automation Refnum控件與Word Application的連接。下面只要將Automation Refnum輸出與Property Node或Invoke Node連接就可以獲得該對象的屬性和方法,從而實現(xiàn)對Word的操作:首先通過Word._Application的Visible屬性來使Word程序界面可見,其次通過Word._Application的Documents屬性獲得Word.Documents對象的參考,再次通過Word.Documents對象的不同方法決定是打開還是新建文檔(圖3是通過Documents對象的Open方法打開一個已經(jīng)存在的Word文檔;圖4是通過Documents對象的Add方法新建一個Word文檔)。
2.1.2 添加文本段落
打開或新建一個Word文檔后,就可以對其進行添加文字、插入表格等操作了。Word的操作是在一個Selection對象上進行的,Selection對象相當于光標選取的一段內(nèi)容(文字、圖、表),Selection對象有Start和End屬性,可以對Selection對象的位置定位,也可以通過設置其子對象Range的Start和End屬性達到同樣目的。Range對象和Selection對象的大多屬性和方法通用,一般用Range對象來編程。如果是要在某處添加文本、圖、表等,則需要將Start和End屬性設定為同一值,即將光標定位于某處。
下面在圖3所示的打開一個存在的文檔中添加文本段落,如圖5所示。
添加段落:段落對象為Paragraph,添加段落就是增加一個新的Paragraph對象。在圖5中,首先打開了一個文檔然后在Selection對象上進行添加文字操作,但是在進行Selection操作之前將Documents對象經(jīng)Application應用程序獲得Selection對象??梢钥闯?,通過Selection對象獲得Ranges屬性,然后生成Range對象,調(diào)用其InsertParagraphAfter方法在其后插入一個段落,然后設置Text屬性輸入文本,并對文本段落的格式(圖中為首行縮進位置)和文本字體進行設置,最后將光標定位于末尾。光標定位于末尾的方法就是將文檔對象的End屬性值傳遞給Selection對象的Start屬性。
2.1.3 添加表格
下面生成一個空表格,并可對表格的一些屬性進行調(diào)節(jié),包括允許表格斷頁顯示、表格的行數(shù)和列數(shù)、列寬、邊框是否可見以及表格位置(居左、居中、居右)設置等,如圖6所示。
該程序首先通過Documents對象的Add方法創(chuàng)建一個新文檔,然后在Selection對象上進行添加表格操作,但是在進行Selection操作之前將Documents對象經(jīng)Application應用程序獲得Selection對象。通過Selection對象轉(zhuǎn)換為Word._Document獲得Tables屬性,然后生成Tables對象。利用Tables對象的Add方法,同時設置好行數(shù)、列數(shù),這樣就在文檔上生成了一個表格,最后對表格的寬度和邊框是否可見進行設置。
2.1.4 保存和關閉
文檔的保存通過調(diào)用Document對象的Save As或Save方法實現(xiàn),第一次存盤用Save As,以后的存盤用Save,文檔的關閉則用Close方法完成,如圖7所示。
Save As方法的參數(shù)均有默認值,可以不用設置而直接使用默認值。若需要換名保存則需要設置FileName參數(shù),其含義為文檔名稱(包含路徑),默認值是當前文件夾和文件名,如果從未保存過此文檔,則使用默認的文件名,如果指定路徑和名稱的文檔已存在,則覆蓋此文檔,而且在覆蓋時不提醒。
2.2 調(diào)用Excel編程
下面通過Microsoft Excel 12.0 Object Library提供的Excel ActiveX對象對Excel的操作。首先放置Automation Open函數(shù)在程序框圖中,右擊函數(shù)圖標的Automation Open端子,選擇Create|Control選項,創(chuàng)建一個Automation Open控件,右擊該控件并選擇Select ActiveX Class|Browse選項打開如圖2所示的ActiveX對象選擇對話框。
在該對話框中選擇Microsoft Excel 12.0 Object Library中的Application對象。單擊OK按鈕就完成了Automation Refnum控件與Excel Application的連接。下面只要將Automation Refnum輸出與Property Node或Invoke Node連接就可以獲得該對象的屬性和方法,從而實現(xiàn)對Excel的操作,如圖8所示。
首先通過Excel.Application的Visible屬性來打開Excel程序界面,再通過它的Workbooks屬性獲得Excel.Workbooks對象的參考;再通過該Workbooks對象的Add方法新建一個工作薄,Add方法返回的是新建工作薄的引用,通過該引用的Sheets屬性獲得當前工作薄下的表單對象的引用;通過Excel.Sheets對象的Item方法獲得其中一個表單,該方法返回的變量數(shù)據(jù),需要將其轉(zhuǎn)換為Excel._WorkSheet引用。通過Worksheet對象的Range對象(Range表示一個范圍,可以是一個單元格,也可以是一行、一列、或者多個單元格的集合),然后通過改寫Range對象的Value2屬性實現(xiàn)對該單元格寫入數(shù)據(jù)。
最后以上所有程序都是通過Close Reference函數(shù)關閉所有打開對象的引用。
3 結(jié)束語
文章以圖解實例形式說明了LabVIEW利用ActiveX技術自動化生成測試報表(Excel或Word格式)的典型思路和步驟,所形成的子程序具有通用性。
參考文獻
[1]戴鵬飛,王勝開,王格芳,等.測試工程與LabVIEW應用[Z].
作者簡介:古萍(1983-),女,漢族,本科,工程師,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。
王亮(1980-),男,漢族,本科,工程師,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。
馮磊(1985-),男,漢族,本科,工程師,現(xiàn)在中航工業(yè)洪都集團公司從事飛控專業(yè)的測試工作。
葉一鳴(1985-),男,漢族,本科,工程師,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。
鄭有生(1983-),男,漢族,??疲呒壖紟?,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。
宋志英(1979-),女,漢族,???,技師,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。
張植麗(1989-),男,漢族,本科,助工,現(xiàn)在中航工業(yè)洪都集團公司從事無線電專業(yè)的測試工作。