LabWindows/CVI的應(yīng)用特點(diǎn)
LabWindows/CVI的應(yīng)用特點(diǎn)
摘 要:LabWindows/CVI是一個(gè)完全的標(biāo)準(zhǔn)C開發(fā)環(huán)境,用于開發(fā)虛擬儀器應(yīng)用系統(tǒng)。Labwindows/CVI將源代碼編輯、32位ANSI C編譯、聯(lián)結(jié)、調(diào)試以及標(biāo)準(zhǔn)ANSI C庫等集成在一個(gè)交互式開發(fā)環(huán)境中。編程技術(shù)方面主要采用事件驅(qū)動(dòng)方式與回調(diào)函數(shù)方式,編程方法簡(jiǎn)單易學(xué)。同時(shí)Labwindows/CVI對(duì)每一個(gè)函數(shù)都提供一個(gè)函數(shù)面板,可進(jìn)行交互式編程,大大減少了源碼語句的鍵入量,減少了程序語法錯(cuò)誤,提高了工程設(shè)計(jì)的效率和可靠性。
關(guān)鍵字:LabWindows/CVI;ANSI C;事件驅(qū)動(dòng);回調(diào)函數(shù);函數(shù)面板
一、LabWindows/CVI簡(jiǎn)介
LabWindows/CVI是一個(gè)完全的標(biāo)準(zhǔn)C開發(fā)環(huán)境,用于開發(fā)虛擬儀器應(yīng)用系統(tǒng)。LabWindows/CVI提供內(nèi)置式函數(shù)庫用于完成數(shù)據(jù)采集、分析、和顯示任務(wù);它還提供簡(jiǎn)單的拖放式用戶界面編輯器以及自動(dòng)代碼生成工具。利用這些功能,您可以在將代碼加入到某項(xiàng)目之前,先對(duì)其進(jìn)行互動(dòng)式的測(cè)試。可以利用LabWindows/CVI定義和建立用戶界面,生成或運(yùn)行ActiveX組件,及開發(fā)多線程應(yīng)用。如果把您掌握的C語言編程知識(shí)與LabWindows/CVI簡(jiǎn)單易用的特性結(jié)合在一起,您將以不可思議地速度開發(fā)出復(fù)雜的測(cè)量應(yīng)用系統(tǒng)。
LabWindows/CVI的應(yīng)用領(lǐng)域極其廣泛,涵蓋了軍工,電訊,工業(yè)生產(chǎn)和航天等各種行業(yè)。
二、Labwindows/CVI的特點(diǎn)
LabWindows/CVI是一個(gè)完全集成式的開發(fā)環(huán)境,特別為建立以GPIB,PXI,VXI和插入式數(shù)據(jù)采集板卡為基礎(chǔ)的測(cè)量系統(tǒng)而設(shè)計(jì)。該環(huán)境將互動(dòng)性、簡(jiǎn)單易用的開發(fā)方式與ANSI C編譯代碼所特有的.強(qiáng)大編程功能和靈活性有機(jī)地結(jié)合在一起。LabWindows/CVI提供了許多實(shí)用的特性,使您無需犧牲C代碼的運(yùn)行速度或源代碼可管理性,便能引人注目地改進(jìn)工作效率。
Labwindows/CVI將源代碼編輯、32位ANSI C編譯、聯(lián)結(jié)、調(diào)試以及標(biāo)準(zhǔn)ANSI C庫等集成在一個(gè)交互式開發(fā)環(huán)境中。因此,用戶可以快速方便地編寫、調(diào)試和修改應(yīng)用程序,形成可執(zhí)行文件在Windows和Sun Solaris操作系統(tǒng)中運(yùn)行。
由于Labwindows/CVI的編程技術(shù)主要采用事件驅(qū)動(dòng)方式與回調(diào)函數(shù)方式,編程方法簡(jiǎn)單易學(xué),為用戶在原來C語言開發(fā)的基礎(chǔ)上建立新一代的虛擬儀器系統(tǒng)提供了完善的兼容性和很大的靈活性。
由于Labwindows/CVI對(duì)每一個(gè)函數(shù)都提供一個(gè)函數(shù)面板,采用它用戶可進(jìn)行交互式編程,大大減少了源碼語句的鍵入量,減少了程序語法錯(cuò)誤,提高了工程設(shè)計(jì)的效率和可靠性。
三、CVI中的事件一覽
LabWindows/CVI所寫的應(yīng)用程序是基于事件驅(qū)動(dòng)的。事件驅(qū)動(dòng)的程序通過響應(yīng)用戶界面所發(fā)生的“事件”來執(zhí)行代碼、調(diào)用回調(diào)函數(shù)。這些事件可以是發(fā)生在面板上的對(duì)象或者是面板自身。使用LabWindows/CVI進(jìn)行編程,可以生成事件驅(qū)動(dòng)的代碼。通過事件驅(qū)動(dòng)代碼,可以將用戶界面中的控件連接到代碼中的函數(shù)。每次對(duì)用戶界面進(jìn)行操作都會(huì)產(chǎn)生一個(gè)事件,LabWindows/CVI就會(huì)確定在何控件上發(fā)生了什么事件,如果對(duì)該控件有一個(gè)相應(yīng)的回調(diào)函數(shù),就會(huì)激活并運(yùn)行該回調(diào)函數(shù)中的代碼。
CVI中主要包括了面板事件,控件事件,鼠標(biāo)事件。其中面板事件主要有:
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:
鼠標(biāo)事件:
EVENT_RIGHT_CLICK
EVENT_RIGHT_DOUBLE_CLICK,
EVENT_LEFT_CLICK,
EVENT_LEFT_DOUBLE_CLICK
除此之外,還可以在程序里添加擴(kuò)展的鼠標(biāo)事件。
可以通過EnableExtendMouseEvents函數(shù)來響應(yīng)
EVENT_MOUSE_MOVE,
EVENT_LEFT_MOUSE_UP,
EVENT_RIGHT_MOUSE_UP等事件。
然后使用DisableExtendedMouseEvents函數(shù)關(guān)閉該功能
四、回調(diào)函數(shù)類型
在CVI中完成軟件交互的主要有控件,面板,菜單。對(duì)于不同的交互方式,CVI里對(duì)應(yīng)了不同的回調(diào)函數(shù)。主要表現(xiàn)在回調(diào)函數(shù)的參數(shù)不一樣。
控件回調(diào)函數(shù):QuitCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
面板回調(diào)函數(shù):Test(int panel, int event, void *callbackData,
int eventData1, int eventData2)
菜單回調(diào)函數(shù):MenuCallback(int menubar,int menuitem,void *callbackData,int panel)
五、函數(shù)面板
CVI中另一個(gè)最大的優(yōu)點(diǎn)就是為每一個(gè)函數(shù)都提供一個(gè)函數(shù)面板,用戶可以利用函數(shù)面板進(jìn)行交互式編程,從而避免了記憶很多函數(shù)和手工輸入很多源代碼。同時(shí)在函數(shù)面板中也提供了詳細(xì)的在線幫助,大大方便了程序的編寫,提高了編程效率。
六、結(jié)束語
我們通過對(duì)Labwindows/CVI的簡(jiǎn)單介紹,以及應(yīng)用特點(diǎn)的介紹和講解,使大家對(duì)Labwindows/CVI區(qū)別于其它C語言開發(fā)環(huán)境的特點(diǎn),以及明顯的編程優(yōu)勢(shì)有了初步的了解,從而對(duì)CVI的認(rèn)識(shí)和學(xué)習(xí)提供了一個(gè)良好的開端。
參考文獻(xiàn):
[1]張鳳均等編著.Labwindows/CVI開發(fā)入門和進(jìn)階.北京航空航天大學(xué)出版.
[2]劉君華等編著.虛擬儀器編程語言:LabWindows/CVI教程.電子工業(yè)出版社.
[3]張毅剛 主編.虛擬儀器軟件開發(fā)環(huán)境Lab Windows/CVI6.0編程指南.機(jī)械工業(yè)出版社
[4]zone.ni.com/devzone/cda/main.
[5]www.pansino.com.cn.
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 yyfangchan@163.com (舉報(bào)時(shí)請(qǐng)帶上具體的網(wǎng)址) 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除