陳淑敏,郭獻崇
(張家口職業技術學院信息工程系,河北張家口 075051)
虛擬儀器面板的設計主要是利用控件的屬性以及用戶界面函數庫(User Interface Library)中提供的函數,設計符合需求的儀器面板。通過這些控件屬性和函數的調用,可以非常容易地把采集或仿真的波形進行處理后,顯示在Panel的Graph控件或其他控件中。同時,通過這些函數可編輯與改變某個控件的屬性值。
在LabWindows/CVI集成開發環境中設計虛擬汽車儀表盤的步驟如下:
(1)通過模-數轉換實現傳感器和微處理機接口。
(2)指示每小時公里數、行駛的里程、耗油量。
(3)顯示發動機轉速。
(4)如果車速超過一個限定值(限定值可調節),則發出警報。
(5)油量低于某一限定值(限定值可調節),則發出報警。
當儀器運行時,通過函數產生數據流,運行結果在儀器面板上顯示。
當關閉儀器時,選擇“關閉”按鈕將結束操作,關閉儀器,并退出該程序。
虛擬汽車儀表盤用戶界面:
具體的虛擬儀器設計包括如下三個步驟。
(1)創建用戶界面
創建用戶界面的實質就是生成*.uir文件。包括建立儀器面板(panel),在面板中加入控件,修改儀器面板(panel)和控件屬性,保存*.uir文件等過程。
(2)程序源代碼的設計
完成完整的C語言程序源代碼設計包括形成源代碼和框架,添加程序代碼,保存程序代碼等過程,最終形成*.c文件。
(3)形成工程文件并運行
將*.uir、*.c以及*.h文件合成在一起形成工程文件(*.prj)。包括形成工程文件,保存工程文件及運行工程文件等過程。
創建用戶界面包括創建控件和修改控件屬性兩個過程。當LabWindows/CVI啟動后,選擇File-New,將出現空白工程窗口。
(1)創建控件
本設計包括鈕類控件、定時器控件、顯示控件、Numeric控件、指示燈控件等。每個控件有名稱等屬性。創建控件就是在儀器面板(panel)上添加控件的過程。
首先,需要創建儀器面板。在工程窗口中,選擇File-New-Userface(*.uir),創建一個用戶界面(*.uir),然后打開用戶界面編輯窗口。需要在用戶界面編輯窗口中,選擇Create-Panel建立儀器面板。
根據設計所要實現的功能在儀器面板中逐個創建控件,用鼠標把它們拖到相應的位置,建立好虛擬面板。
(2)修改用戶界面中各控件元素的屬性
通過上述步驟建立的控件屬性還沒有設置,例如圓形按鈕顯示的文字為系統的默認值“OK”,而要求顯示的是漢字“點火”。通過控件元素屬性的設置,完成所要求的用戶界面。
◎修改Panel的屬性
雙擊Untitled Panel ,彈出Edit Panel窗口。本設計中,儀器面板需要設置的屬性為標題文字的設置。在“Panel Title”屬性文字框中輸入“汽車數字儀表面板”,這時,右邊編輯窗口中的標題隨之改變。設計完畢后,單擊“OK”按鈕,完成Panel屬性的設置。
◎按鈕控件屬性的設置
按鈕控件屬性的設置包括控件回調函數、空間名稱、控件標題屬性的設置。雙擊相應按鈕控件將會彈出按鈕控件屬性設置窗口。在“Source Code Connection”欄內的回調函數“Callback Function”一欄中輸入相應的回調函數名稱。在“Lable”一欄中輸入控件按鈕標題屬性,完成按鈕控件屬性的設置。
◎顯示控件Numeric Meter屬性的設置
雙擊顯示控件Numeric Meter,出現設置面板。一般情況下,需要設置的屬性有:默認值的設置(在Default Value欄中輸入);數據類型屬性的設置(在Date Type欄中選擇);標題屬性的設置(在Label欄中輸入相應的文字);表盤刻度屬性的設置:選擇“Range Values”按照要求進行選擇,以改變刻度盤的刻度值。
◎定時器控件Timer屬性的設置
定時器控件Timer所要設置的屬性包括回調函數名稱和定時間隔時間屬性兩部分。
控件回調函數的設置:在“Source Code Connection”欄內的回調函數“Callback Function”一欄中輸入回調函數的名稱。
定時間隔時間屬性的設置:將“Control Settings”欄中輸入數值,此數值根據需要多少時間調用一次回調函數來確定。
當上述控件屬性設置完畢之后,單擊“OK”按鈕,完成控件屬性的修改。
◎將Untitled.uir文件存盤
選擇File-Save As將Untitled.uir文件另存,系統自動生成(.h)文件。
至此,用戶界面文件的設計結束。
下面要做的是程序編寫工作。由于LabWindows/CVI可自動生成程序代碼框架及默認的處理函數,只添加一些必須的代碼即可完成程序的設計編寫。
(1)產生程序源代碼框架
(2)添加程序代碼
(3)保存編輯好的C文件
(1)保存工程文件
選擇Edit-Add-Files To Project依次將*.uir、*.c以及*.h文件加入,完畢后再選擇File-Save將工程文件(*.prj)保存。
(2)運行工程文件
選擇Run-Run Proj]ect來運行工程文件。
(1)接口程序
double sensor (void)
{ char RecieveData[9];
char SendData[4];
OpenComConfig (1, "", 9600, 0, 8, 1, 512, 512);
SendData[0]='#';
SendData[1]='0';
SendData[2]='1';
SendData[3]=' ';
ComWrt (1, SendData, 4);
ComRd (1, RecieveData, 9);
data=(RecieveData[2]-RecieveData[2])*100+(RecieveData[3]-RecieveData[2])*10+(RecieveData[4]-RecieveData[2])+(RecieveData[6]-RecieveData[2])*0.1;
return data;
}
(2)*.h文件C語言說明部分程序
/*******************************************/
/* LabWindows/CVI User Interface Resource (UIR) Include File
*/
/* Copyright (c) National Instruments 2004. All Rights Reserved.
*/
/*
*/
/* WARNING: Do not add to, delete from, or otherwise modify the contents
*/
/* of this include file.
*/
/*******************************************/
#include
#ifdef __cplusplus
extern "C" {
#endif
/* Panels and Controls: */
#define PANEL 1 /? callback function: PanelCallback ?/ #define PANEL_SHISU 2 #define PANEL_LICHENG 3 #define PANEL_YOULIANG 4 #define PANEL_LED_chaosu 5 #define PANEL_LED_meiyou 6 #define PANEL_CLOSE 7 /? callback function: Close ?/ #define PANEL_DIANHUO 8 /? callback function: Dianhuo ?/ #define PANEL_TOGGLEBUTTON_3 9 /? callback function: Togglebutton_3 ?/ #define PANEL_TOGGLEBUTTON_2 10 /? callback function: Togglebutton_2 ?/ #define PANEL_TOGGLEBUTTON_1 11 /? callback function: Togglebutton_1 ?/ #define PANEL_YOUXIAN 12 #define PANEL_XIANSU 13 #define PANEL_F_ZHUANSU 14 #define PANEL_TIMER_1 15 /? callback function: Timer_1 ?/ #define PANEL_TIMER_2 16 /? callback function: Timer_2 ?/ #define PANEL_TIMER_3 17 /? callback function: Timer_3 ?/ #define PANEL_TIMER_dianhuo 18 /? callback function: Timer_dianhuo ?/ #define PANEL_TIMER 19 /? callback function: TimerCallback ?/ 。。。。。。。。。。。
參考文獻:
[1]劉君華.基于LabWindows/CVI的虛擬儀器設計[M]. 電子工業出版社,2003.
[2]雷振山.LabVIEW 7 Express實用技術教程[M]. 機械工業出版社,2004.
[3]馬法成.LabVIEW入門培訓教材. 天津中德職業技術學院,2001.
[4]張毅剛 等.虛擬儀器軟件開發環境[M]. 機械工業出版社,2002.