【正文】
程序代碼及回調(diào)函數(shù) 的基本框架。 L a b W i n d o w s / C V I 基礎教程 第 29 頁 第二章 LabWindows/CVI 程序剖析 通過例程 FirstSample 的編制,大家已對 LabWindows/CVI 編程有了初步的認識。 L a b W i n d o w s / C V I 基礎教程 第 28 頁 第二部分 CVI 環(huán)境下程序設計 通過編制第一章的 FirstSample 程序,讀者已對 LabWindows/CVI 編程有一定了解。 通過本部分的學習,你是否已經(jīng)掌握? □ LabWindows/CVI 程序編制的基本步驟。退出程序后,從源代碼 (Code)窗中選擇: WindowProject L a b W i n d o w s / C V I 基礎教程 第 26 頁 現(xiàn)在項目 (Project)窗為當前響應狀態(tài),請選擇: EditAdd Files to Project…All Files(*.*) 便會彈出如下圖所示的對話框: 請你按住 Ctrl鍵,點擊 , , 。 第四步 運行程序完成項目文件 現(xiàn)在請你讓源代碼 (Code)窗為當前響應狀態(tài),選擇: RunDebug 便會彈出一個對話框,詢問你是否在編譯前為該文件命名并添加到工程文件中去。 break。 } return 0。 2) . 請選擇: LibraryUser Interface 在彈出的對話框中選擇: Controls/Graph/Strip ChartGraph and Strip ChartGraph Plotting and DeletingPlot Waveform 把函數(shù)面板中的對應各項填寫成如下所示: PanelHandle: panelHandele Control ID : PANEL_GRAPH Y Array: Wave Number of Points: 512 L a b W i n d o w s / C V I 基礎教程 第 23 頁 選擇 CodeInsert Function Call 完成函數(shù)的插入,這時 Code 窗中的AcquireCallback( )函數(shù)應如下所示: CVICALLBACK AcquireCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double Wave[512]。 switch (event) { case EVENT_COMMIT: SinePattern (512, , , , Wave)。 現(xiàn)在請將鼠標放在 AcquireCallback( )函數(shù) Event_Commit: 下面的空 白行上,如下圖所示: 說明 : 你鼠標所放位置,就是函數(shù)插入的位置。 3. ClearCallback( )函數(shù),當 Clear 按扭被點擊之后,該函數(shù)就是響應該消息的函數(shù)。 break。 } return 0。 RunUserInterface ()。 L a b W i n d o w s / C V I 基礎教程 第 17 頁 點擊 OK 按扭,便會彈出如下圖所示的源代碼 (Code)窗: 其窗中的程序代碼如下所示: include include include static int panelHandle。 2. Select panels to load and display at startup 項是指你選擇那一個 Panel 作為最初 裝入并顯示的 Panel,當你創(chuàng)建多個 Panel 時你就需要選擇 一個 Panel 作為最初顯 示的面板。 下面我們要做的就是真正的程序編制工作,其實 CVI 可以自動生成許多的代碼以及缺省消息的處理函數(shù),你只需添加一些你自己所需的一些代碼。 (3) Quit 按扭: 與以上步驟相同,雙擊右方的 OK 按扭,彈出 Command 的一個 Edit Command 窗。 c. 將 Label 項改為 Acquire 說明: 通過這種方法可以修改按扭名字, Acquire 中 A 字母前有下畫線,是指可 以通過 Alt + A 即可達到按下該按扭的效果 (即熱鍵 )。 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 的標簽名。 修改用戶界面中各控件元素的屬性: 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 頂端所顯示的名字。首先按下面步驟起動 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)建一個方形的按扭。 L a b W i n d o w s / C V I 基礎教程 第 3 頁 第一部分 CVI 快速入門 本部分通過編制一個簡單的 LabWindows/CVI 程序,使讀者對 CVI 編程環(huán)境,思想及步驟有一初步的認識。如: FilePage SetupOptions 是指你首先打開File 菜單,然后選擇 Page Setup 項,最后從彈出的對話框中選擇 Options 項。在每一章節(jié)的學習中,作者都是通過一個具體的實例讓讀者迅速的掌握本章的知識點;而不是長篇大論,述及邊枝細葉,反而使讀者望而卻步,只見樹木,不見森林。 LabWindows/CVI 基礎教程 L a b W i n d o w s / C V I 基礎教程 第 2 頁 序 言 LabWindows/CVI 是 National Instruments 公司推出的一套面向測控領域的軟件開發(fā)平臺。 本教程面向的是那些從未使用過 LabWindows/CVI 的讀者,但是假設讀者以有了 C語言的基礎并且熟悉 Windows 2020/9x/NT 操作系統(tǒng)。 “ ” 是指打開一個多級菜單或?qū)υ捒颉? “ ” 該橢圓形框所框住的內(nèi)容是讀者需修改的地方。 L a b W i n d o w s / C V I 基礎教程 第 5 頁 現(xiàn)在我們就開使創(chuàng)建該程序。 現(xiàn)在我們已經(jīng)建好了用戶界面所需的控件元素,請使用鼠標把它們拖到如下圖所示的位置。 修改后的 Edit Panel 應如下圖所示: L a b W i n d o w s / C V I 基礎教程 第 9 頁 點擊 OK 按扭,完成對 Panel 屬性的修改。 b. 將 Callback Function 項改為 AcquireCallback 說明: Callback Function(回調(diào)函數(shù))是程序中用來響應界面中的 Windows 消息, 也就是說:當 該按扭被點擊之后,程序會調(diào)用 AcquireCallback 函數(shù)來作為 對按扭被按下這一消息的響應。 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 屬性的修改。 到目前為止我們已經(jīng)完成了用戶界 面( user interface)的設計,當程序運行時所顯示的界面就是我們剛才上圖看到的那樣。當你想讓你的程序的主函數(shù)為 Win Main 而不是 Main 時你可以選擇 Generate WinMian( ) instead of Main( )項前的矩形框。本程序是讓 QuitCallback 作為退出函數(shù)的。 DisplayPanel (panelHandle)。 } int CVICALLBACK AcquireCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: break。 } int CVICALLBACK QuitCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: QuitUserInterface (0)。 2. AcquireCallback( )函數(shù),當 Acquire 按扭被點擊之后,該函數(shù)就是響應該消息的函數(shù)。 添加程序代碼: 1.添加 AcquireCallback( )函數(shù)的程序代碼: AcquireCallback( )函數(shù)完成以下功能:從高級分析庫( Advanced Ananysis… )中產(chǎn)生一個正弦波,放在 Wave 數(shù)組中。 返回到函數(shù)面板后,選擇 CodeInsert Function Call 完成函數(shù)的插入,這時 Code 窗中的 AcquireCallback( )函數(shù)應如下所示: int CVICALLBACK AcquireCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { double Wave[512]。 } 我們已 經(jīng)的得到了正弦信號,現(xiàn)在需要將該信號畫到 Graph 上去: 1).請將鼠