摘 要:LabWindows/CVI是一個完全的標準C開發環境,用於開發虛擬儀器應用系統。Labwindows/CVI將原始碼編輯、32位ANSI C編譯、聯結、除錯以及標準ANSI C庫等整合在一個互動式開發環境中。程式設計技術方面主要採用事件驅動方式與回撥函式方式,程式設計方法簡單易學。同時Labwindows/CVI對每一個函式都提供一個函式面板,可進行互動式程式設計,大大減少了原始碼語句的鍵入量,減少了程式語法錯誤,提高了工程設計的效率和可靠性。
關鍵字: LabWindows/CVI;ANSI C;事件驅動;回撥函式;函式面板
一、LabWindows/CVI簡介
LabWindows/CVI是一個完全的標準C開發環境,用於開發虛擬儀器應用系統。LabWindows/CVI提供內建式函式庫用於完成資料採集、分析、和顯示任務;它還提供簡單的拖放式使用者介面編輯器以及自動程式碼生成工具。利用這些功能,您可以在將程式碼加入到某專案之前,先對其進行互動式的測試。可以利用LabWindows/CVI定義和建立使用者介面,生成或執行ActiveX元件,及開發多執行緒應用。如果把您掌握的C語言程式設計知識與LabWindows/CVI簡單易用的特性結合在一起,您將以不可思議地速度開發出複雜的測量應用系統。
LabWindows/CVI的應用領域極其廣泛,涵蓋了軍工,電訊,工業生產和航天等各種行業。
二、Labwindows/CVI的特點
LabWindows/CVI是一個完全整合式的開發環境,特別為建立以GPIB,PXI,VXI和插入式資料採集板卡為基礎的測量系統而設計。該環境將互動性、簡單易用的開發方式與ANSI C編譯程式碼所特有的強大程式設計功能和靈活性有機地結合在一起。LabWindows/CVI提供了許多實用的特性,使您無需犧牲C程式碼的執行速度或原始碼可管理性,便能引人注目地改進工作效率。
Labwindows/CVI將原始碼編輯、32位ANSI C編譯、聯結、除錯以及標準ANSI C庫等整合在一個互動式開發環境中。因此,使用者可以快速方便地編寫、除錯和修改應用程式,形成可執行檔案在Windows和Sun Solaris作業系統中執行。
由於Labwindows/CVI的程式設計技術主要採用事件驅動方式與回撥函式方式,程式設計方法簡單易學,為使用者在原來C語言開發的基礎上建立新一代的虛擬儀器系統提供了完善的相容性和很大的靈活性。
由於Labwindows/CVI對每一個函式都提供一個函式面板,採用它使用者可進行互動式程式設計,大大減少了原始碼語句的鍵入量,減少了程式語法錯誤,提高了工程設計的效率和可靠性。
三、CVI中的事件一覽
LabWindows/CVI所寫的應用程式是基於事件驅動的。事件驅動的.程式通過響應使用者介面所發生的“事件”來執行程式碼、呼叫回撥函式。這些事件可以是發生在面板上的物件或者是面板自身。使用LabWindows/CVI進行程式設計,可以生成事件驅動的程式碼。通過事件驅動程式碼,可以將使用者介面中的控制元件連線到程式碼中的函式。每次對使用者介面進行操作都會產生一個事件,LabWindows/CVI就會確定在何控制元件上發生了什麼事件,如果對該控制元件有一個相應的回撥函式,就會啟用並執行該回調函式中的程式碼。
CVI中主要包括了面板事件,控制元件事件,滑鼠事件。其中面板事件主要有:
EVENT_LEFT_CLICK:
EVENT_LEFT_DOUBLE_CLICK:
EVENT_RIGHT_CLICK:
EVENT_RIGHT_DOUBLE_CLICK:
EVENT_KEYPRESS:
EVENT_GOT_FOCUS:
EVENT_LOST_FOCUS:
EVENT_DISCARD:
EVENT_CLOSE:
EVENT_PANEL_SIZE:
EVENT_PANEL_MOVE:
控制元件事件:
EVENT_COMMIT:
EVENT_LEFT_CLICK:
EVENT_LEFT_DOUBLE_CLICK:
EVENT_RIGHT_CLICK:
EVENT_RIGHT_DOUBLE_CLICK:
EVENT_KEYPRESS:
EVENT_GOT_FOCUS:
EVENT_LOST_FOCUS:
EVENT_DISCARD:
滑鼠事件:
EVENT_RIGHT_CLICK
EVENT_RIGHT_DOUBLE_CLICK,
EVENT_LEFT_CLICK,
EVENT_LEFT_DOUBLE_CLICK
除此之外,還可以在程式裡新增擴充套件的滑鼠事件。
可以通過EnableExtendMouseEvents函式來響應
EVENT_MOUSE_MOVE,
EVENT_LEFT_MOUSE_UP,
EVENT_RIGHT_MOUSE_UP等事件。
然後使用DisableExtendedMouseEvents函式關閉該功能
四、回撥函式型別
在CVI中完成軟體互動的主要有控制元件,面板,選單。對於不同的互動方式,CVI裡對應了不同的回撥函式。主要表現在回撥函式的引數不一樣。
控制元件回撥函式:QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
面板回撥函式:Test(int panel, int event, void *callbackData,
int eventData1, int eventData2)
選單回撥函式:MenuCallback(int menubar,int menuitem,void *callbackData,int panel)
五、函式面板
CVI中另一個最大的優點就是為每一個函式都提供一個函式面板,使用者可以利用函式面板進行互動式程式設計,從而避免了記憶很多函式和手工輸入很多原始碼。同時在函式面板中也提供了詳細的線上幫助,大大方便了程式的編寫,提高了程式設計效率。
六、結束語
我們通過對Labwindows/CVI的簡單介紹,以及應用特點的介紹和講解,使大家對Labwindows/CVI區別於其它C語言開發環境的特點,以及明顯的程式設計優勢有了初步的瞭解,從而對CVI的認識和學習提供了一個良好的開端。
參考文獻:
[1]張鳳均等編著indows/CVI開發入門和進階.北京航空航天大學出版.
[2]劉君華等編著.虛擬儀器程式語言:LabWindows/CVI教程.電子工業出版社.
[3]張毅剛 主編.虛擬儀器軟體開發環境Lab Windows/CVI6.0程式設計指南.機械工業出版社