【正文】
LabWindows/CVI 基礎教程 L a b W i n d o w s / C V I 基礎教程 第 2 頁 序 言 LabWindows/CVI 是 National Instruments 公司推出的一套面向測控領(lǐng)域的軟件開發(fā)平臺。它以 ANSI C 為核心,將功能強大,使用靈活的 C 語言平臺與數(shù)據(jù)采集,分析和表達的測控專業(yè)工具有機地接和起來。它的集成化開發(fā)平臺,交互式編程方法,豐富的控件和庫函數(shù)大大增強了 C 語言的功能,為熟悉 C 語言的開發(fā)人員建立檢測系統(tǒng),自動測量環(huán)境,數(shù)據(jù)采集系統(tǒng),過程監(jiān)控系統(tǒng) 等提供了一個理想的軟件開發(fā)環(huán)境。 本教程面向的是那些從未使用過 LabWindows/CVI 的讀者,但是假設讀者以有了 C語言的基礎并且熟悉 Windows 2020/9x/NT 操作系統(tǒng)。在每一章節(jié)的學習中,作者都是通過一個具體的實例讓讀者迅速的掌握本章的知識點;而不是長篇大論,述及邊枝細葉,反而使讀者望而卻步,只見樹木,不見森林。 想信通過對本教程的學習,讀者可迅速掌握 LabWindows/CVI 編程思想及步驟,為讀者日后進一步學習打下基礎。 本書約定: “FilePage SetupOptions” File 這一種黑色斜體字是指多級菜單名,按扭名,窗口名或者是關(guān)鍵性詞匯。 “ ” 是指打開一個多級菜單或?qū)υ捒?。如?FilePage SetupOptions 是指你首先打開File 菜單,然后選擇 Page Setup 項,最后從彈出的對話框中選擇 Options 項。 “說明 : 通過這種方式你可以修改 Panel 頂端所顯示的名字。 ” 該種字體所寫的文字是值得讀者注意并記憶的內(nèi)容。 “ ” 該橢圓形框所框住的內(nèi)容是讀者需修改的地方。 L a b W i n d o w s / C V I 基礎教程 第 3 頁 第一部分 CVI 快速入門 本部分通過編制一個簡單的 LabWindows/CVI 程序,使讀者對 CVI 編程環(huán)境,思想及步驟有一初步的認識。 L a b W i n d o w s / C V I 基礎教程 第 4 頁 第一章 初步認識 CVI 程序設計 —— 從一個例子開始 我們的第一個示例將很簡單,我們所要做的是創(chuàng)建一個如下的圖形用戶界面( User Interface)。 當我們按下 Acquire 按扭,計算機會自動產(chǎn)生一個正弦波形并 畫在圖形顯示區(qū)中;當按下 Clear 按扭后則清除正弦波形;當按下 Quit 按扭后退出該程序。 L a b W i n d o w s / C V I 基礎教程 第 5 頁 現(xiàn)在我們就開使創(chuàng)建該程序。首先按下面步驟起動 CVI: 開始 程序 National Instrument CVICVI IDE 或者直接從桌面起動 CVI 的快捷方式,雙擊桌面 National Instrument CVI 圖標 當 LabWindows/CVI 打開后你就會見到如下所示的一個空的項目( Project)窗: 第一步:創(chuàng)建用戶界面 創(chuàng)建控件元素: 從 Project 窗中選擇: FileNewUser Interface(*.uir)… 創(chuàng)建一個用戶接口文件( *.uir), CVI 會自動彈出如下所示的窗口: L a b W i n d o w s / C V I 基礎教程 第 6 頁 在該窗中 Untitled Panel 的灰色區(qū)域中單擊鼠標右鍵,變會彈出一個快捷菜單如下所示: 從該菜單中選擇: Command ButtonSquare Command Button L a b W i n d o w s / C V I 基礎教程 第 7 頁 點擊左鍵后便會創(chuàng)建一個方形的按扭。 由于本程序總共需要三個按扭,所以按照上面的步驟再創(chuàng)建兩個方形按扭。從該菜單中選擇: GraphGraph ,創(chuàng)建一個用于圖形顯示的 Graph。 現(xiàn)在我們已經(jīng)建好了用戶界面所需的控件元素,請使用鼠標把它們拖到如下圖所示的位置。 修改用戶界面中各控件元素的屬性: 1. 修改 Panel 的屬性: 在 Untitled Panel 中雙擊一下,便會彈出 Panel 的一個 Edit Panel 窗,如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 8 頁 a. 將 Panel Title 項中的 Untitled Panel 改為 Demo Panel. 說明 : 通過這種方式你可以修改 Panel 頂端所顯示的名字。 b. 將 AutoCenter Vertically(when loaded)項 與 AutoCenter Horizontally( when loaded) 項前的矩形框選中。 說明: 當選中后,程序運行時,面板會自動居中。 修改后的 Edit Panel 應如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 9 頁 點擊 OK 按扭,完成對 Panel 屬性的修改。 2. 修改 Graph 的屬性: 在 Untitled Control 的藍色區(qū)域中雙擊一下,便會彈出 Graph 的一個Edit Graph 窗,如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 10 頁 a. 將 Label 項中的 Untitled Control 改為 ShowWave. 說明: 通過這種方法可以修改 Graph 的標簽名。 點擊 OK 按扭,完成對 Graph 屬性的修改。 Command 按扭的屬性: (1)Acquire 按扭: 雙擊左上方的 OK 按扭,便會彈出 Command 的一個 Edit Command窗,如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 11 頁 a. 將 Constant Name 項改為 ACQUIRE 說明: Constant Name 是程序中用來標識該控件元素的常量,在后面的編程中會用到。 b. 將 Callback Function 項改為 AcquireCallback 說明: Callback Function(回調(diào)函數(shù))是程序中用來響應界面中的 Windows 消息, 也就是說:當 該按扭被點擊之后,程序會調(diào)用 AcquireCallback 函數(shù)來作為 對按扭被按下這一消息的響應。 c. 將 Label 項改為 Acquire 說明: 通過這種方法可以修改按扭名字, Acquire 中 A 字母前有下畫線,是指可 以通過 Alt + A 即可達到按下該按扭的效果 (即熱鍵 )。 修改后的 Edit Command Button 窗應如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 12 頁 點擊 OK 按扭,完成對 Command Button 屬性的修改。 ( 2) Clear 按扭: 與以上步驟相同,雙擊左下方的 OK 按扭,彈出 Command 的一個Edit Command 窗。 a. 將其 Constant Name 改為 CLEAR b. 將 Callback Function 項改為 ClearCallback c. 將 Label 項改為 Clear 修改后的 Edit Command Button 窗應如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 13 頁 點擊 OK 按扭,完成 Command Button 屬性的修改。 (3) Quit 按扭: 與以上步驟相同,雙擊右方的 OK 按扭,彈出 Command 的一個 Edit Command 窗。 a. 將其 Constant Name 改為 QUIT b. 將 Callback Function 項改為 QuitCallback c. 將 Label 項改為 Quit 修改后的 Edit Command Button 窗應如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 14 頁 點擊 OK 按扭,完成 Command Button 屬性的修改。 當完成以上工作后, Panel 應該如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 15 頁 選擇: FileSave 保存 UIR 文件,命名為 。 到目前為止我們已經(jīng)完成了用戶界 面( user interface)的設計,當程序運行時所顯示的界面就是我們剛才上圖看到的那樣。 下面我們要做的就是真正的程序編制工作,其實 CVI 可以自動生成許多的代碼以及缺省消息的處理函數(shù),你只需添加一些你自己所需的一些代碼。 第二步:完成程序的編制 產(chǎn)生程序代碼: 現(xiàn)在請你讓圖形用戶界面窗口為當前響應狀態(tài),如下圖所示: 從用戶圖形界面窗口中選擇: CodeGenerateAll Code… 然后會顯示出如下的界面: L a b W i n d o w s / C V I 基礎教程 第 16 頁 請用你的鼠標點擊 Select QuituserInterface Callback 中的 QuitCallk 項,確保其前面出現(xiàn)一個小鉤。 說明: 1。當你想讓你的程序的主函數(shù)為 Win Main 而不是 Main 時你可以選擇 Generate WinMian( ) instead of Main( )項前的矩形框。 2. Select panels to load and display at startup 項是指你選擇那一個 Panel 作為最初 裝入并顯示的 Panel,當你創(chuàng)建多個 Panel 時你就需要選擇 一個 Panel 作為最初顯 示的面板。由于本程序只有一個 Panel 所以該 Panel 就被缺省的作為最初顯示 的面板而不再需要你去選擇。 3. Select QuituserInterface Callback 項是指你選擇那一個函數(shù)作為退出程序的終 止函數(shù)。本程序是讓 QuitCallback 作為退出函數(shù)的。 L a b W i n d o w s / C V I 基礎教程 第 17 頁 點擊 OK 按扭,便會彈出如下圖所示的源代碼 (Code)窗: 其窗中的程序代碼如下所示: include include include static int panelHandle。 int main (int argc, char *argv[ ] ) { if (InitCVIRTE (0, argv, 0) == 0) return 1。 /* out of memory */ if ((panelHandle = LoadPanel (0, , PANEL)) 0) return 1。 DisplayPanel (panelHandle)。 RunUserInterface ()。 L a b W i n d o w s / C V I 基礎教程 第 18 頁 DiscardPanel (panelHandle)。 return 0。 } int CVICALLBACK AcquireCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case