【正文】
插入該函數(shù)時請選擇:LibraryEasyIO For DAQAnalog Input Intermediate Analog InputAI Stop (Required)… (11) nidaqAIDestroyTask (AiTask) 使用該函數(shù)我們可以取消采樣任務(wù)。插入該函數(shù)時請選擇: LibraryEasyIO For DAQAnalog Input Intermediate Analog InputAI Config Buffer… (7) nidaqAIStart(AiTask)使用該函數(shù)我們可以啟動數(shù)據(jù)采集任務(wù)。AiTask) 使用該函數(shù)我們可以創(chuàng)建一個模入采樣任務(wù) AITask(請在該函數(shù)面板中聲明全局整型變量 AITask), 同時該函數(shù)根據(jù) ChanString可以返回一個表示該采樣任務(wù)共有多少個通道的值 NumChan(請在該函數(shù)面板中聲明局部整型變量 NumChan)。插入該函數(shù)時請選擇: LibraryUser Interface Controls/Graph/Strip ChartGeneral FunctionsGet Control Value. (3) GetCtrlVal (panelHandle, PANEL_SCANRATE, amp。 } return 0。 ( 14) nidaqAIRead (AiTask, ChanString, AcqBacklog, , AcqData)。 long AcqState。 break。 } int CVICALLBACK ClearCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: ( 12) DeleteGraphPlot (panelHandle, PANEL_GRAPH, 1, VAL_IMMEDIATE_DRAW)。 ( 11) nidaqAIDestroyTask (AiTask)。 ( 8) SetCtrlAttribute (panelHandle, PANEL_TIMER, ATTR_ENABLED, 1)。 ( 5) nidaqAIConfigScanClockRate (AiTask, ScanRate, amp。ScanRate)。 L a b W i n d o w s / C V I 基礎(chǔ)教程 第 55 頁 switch (event) { case EVENT_VAL_CHANGED: ( 1) GetCtrlVal (panelHandle, PANEL_ACQUIRE, amp。 double ActScanRate。 RunUserInterface ()。 static long AiTask。 第二節(jié) 產(chǎn)生程序代碼與添加函數(shù)代碼 從用戶圖形界面窗口中選擇: CodeGenerateAll Code… 產(chǎn)生源程序框架。該時間間隔你是可以在 Edit Timer 窗中 Contro Settings 的 Inteval(seconds)項中設(shè)定的。 第一節(jié) 創(chuàng)建圖形用戶界面 從 Project 窗中選擇: FileNewUser Interface(*.uir)… 創(chuàng)建一個用戶圖形接口文件( *.uir)。 Clear 項是一按扭,當我們按下該按扭后即可清除 Acquire Wave 上所 畫的波形。在數(shù)采停止時,該項是 可以修改的。 L a b W i n d o w s / C V I 基礎(chǔ)教程 第 45 頁 我們程序運行時的界面如下圖所示: 其中各控件元素的功能說明如下: ChannelSrting 項是一字符串控件,我們通過該項來設(shè)置采集數(shù)據(jù)的 通道(數(shù)采路徑)。 L a b W i n d o w s / C V I 基礎(chǔ)教程 第 44 頁 第四部分 CVI 中數(shù)據(jù)采集的應用 通過前兩部分的學習,讀者應該已掌握了 LabWindows/CVI 程序設(shè)計的基本步驟 , 思路以及編程環(huán)境。 □ 三個主要窗的基本操作。 數(shù)據(jù)采集方面( Data Acquisition) ,7 個庫: Instrument Library: 儀器驅(qū)動庫 GPIB/GPIB Library: 儀器控制函數(shù)庫 Data Acquisition Library: 數(shù)據(jù)采集函數(shù)庫 Easy I/O for DAQ : 易用的數(shù)據(jù)采集函數(shù)庫 RS 232 Library : RS 232 庫 VISA Library : VISA 庫 VXI Library : VXI 庫 請選擇 : HelpCVI LibraryRelated Help…Online Manuals For LabWindows/CVI 請查閱 LabWindows/CVI User Manual Chapter 6 Using Function Panels L a b W i n d o w s / C V I 基礎(chǔ)教程 第 41 頁 第四章 LabWindows/CVI 的函數(shù)庫 (Library) LabWindows/CVI 其強大功能的所在就是基于其非常豐富的庫函數(shù)。 說明: 當你的鼠標落在工具條按扭上時,計算機會自動的顯示該工具按扭的功能。 Panel Handle 是程序運行開始時 UIR 的句柄,是由 LabWindows/CVI 自動生成的是一變量; Number of Points 項需填的是 512,這正是我們在聲明L a b W i n d o w s / C V I 基礎(chǔ)教程 第 40 頁 Wave 時已用過的; Y Array 項所填的是我們已經(jīng)聲明過的變量 —— 數(shù)組Wave; 故當我們填入以上各項時只需將鼠標放在對應項下文本框中,然后用鼠標點擊工具條中的 選擇變量按扭 后, 便彈出一個選擇變量對話框 ,選擇你所需的變量 Wave 即可。當我們在SinePattern 項填入 Wave 后,由于 Wave 是一變量,所以我們需要聲明該變量:讓鼠標指在 Wave 上然后點擊工具條中的 聲明變量按扭 后, 便彈出一個聲明變量對 話框即可聲明 該變量為局域變量或為全局變量。 第四節(jié) 函數(shù)面板( Fuction Panel) 在 LabWindows/CVI 編程環(huán)境下,當你想在源程序某處插入函數(shù)時,你只需從函數(shù)所在的庫中選擇該函數(shù)后便會彈出一個與之對應的函數(shù)面板,你所做的就是:填入該函數(shù)所需的參數(shù)后完成插入即可。 Options: 設(shè)置用接口編輯窗的編輯環(huán)境。 Instrument: 裝入儀器驅(qū)動程序。 Edit: 可用來編輯源代碼文件。 請選擇 : HelpCVI LibraryRelated Help…Online Manuals For LabWindows/CVI 請查閱 LabWindows/CVI User Manual Chapter 4 User Interface Edit window 第三節(jié) 源 代 碼 編 輯 窗(Sourse window) 你可以在源代碼編輯窗中開發(fā)你的 C 語言代 碼文件。 在這種模式下你可以直接修改面板,控件元素的顏色。這是一個大家 L a b W i n d o w s / C V I 基礎(chǔ)教程 第 35 頁 以后在編程中要常用到的技巧,請掌握。 Windows: 用來訪問某個已經(jīng)打開的窗,例如:項目工程窗,用戶 接口編輯窗,源代碼窗 … 。 Run: 運行程序。 說明: 其實我們只需在 Panel 上點擊鼠標右鍵,便會彈出一個快捷菜單,選擇 你所想創(chuàng)建的對象即可(就象編制 FisrtSample 時創(chuàng)建 Graph 和四個 Button 那樣)。 一個圖形用戶接口編輯窗就如下圖所示,下面我們就詳細講講圖形用戶L a b W i n d o w s / C V I 基礎(chǔ)教程 第 34 頁 接口編輯窗各菜單項的功能: File: 創(chuàng)建,保存或打開文件。 請選擇 : HelpCVI LibraryRelated Help…Online Manuals For LabWindows/CVI 請查閱 LabWindows/CVI User Manual Chapter 3 Project window。 Tools: 運行向?qū)В?wizard)或者你添加到 Tools 菜單中的一些 工具。 Edit: 在項目工程中添加或移去文件。 用戶接口編輯窗( User Interface Editor window) 如果你能理解上圖所示的內(nèi)容,那么你就基本理解了 LabWindos/CVI 程序的運作過程。添加函數(shù)代碼,完成 源代碼的編制工作。本章是作者從總體上來談?wù)勛约簩?LabWindows/CVI 程序的理解與認識。本部分就是在第一部分的基礎(chǔ)上進一步講述 LabWindows/CVI 程序設(shè)計及其編程環(huán)境等細節(jié)問題。 □ 簡單的用戶圖形界面( *.uir)的創(chuàng)建。然后點擊 Add 按扭把這些文件方到 Selected Files 框中。點擊 yes 按扭,把該文件命名為 。 } return 0。 到現(xiàn)在為止我們已經(jīng)完成了 AcquireCallback( )函數(shù)的的程序代碼。 switch (event) { case EVENT_COMMIT: SinePattern (512, , , , Wave)。 | break。 LabWindows/CVI 程序中所需的庫函數(shù)都 是你使用函數(shù)面板,填寫參數(shù)然后插入到函數(shù)所需要的位置。 4. QuitCallback( )函數(shù),當 Quit 按扭被點擊之后,該函數(shù)就是響應該消息的函數(shù)。 } return 0。 } int CVICALLBACK ClearCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: break。 L a b W i n d o w s / C V I 基礎(chǔ)教程 第 18 頁 DiscardPanel (panelHandle)。 int main (int argc, char *argv[ ] ) { if (InitCVIRTE (0, argv, 0) == 0) return 1。由于本程序只有一個 Panel 所以該 Panel 就被缺省的作為最初顯示 的面板而不再需要你去選擇。 第二步:完成程序的編制 產(chǎn)生程序代碼: 現(xiàn)在請你讓圖形用戶界面窗口為當前響應狀態(tài),如下圖所示: 從用戶圖形界面窗口中選擇: CodeGenerateAll Code… 然后會顯示出如下的界面: L a b W i n d o w s / C V I 基礎(chǔ)教程 第 16 頁 請用你的鼠標點擊 Select QuituserInterface Callback 中的 QuitCallk 項,確保其前面出現(xiàn)一個小鉤。 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