labview的深入探索----labview與回調(diào)函數(shù)
所謂WINDOWS回調(diào)函數(shù),就是按照WINDOWS的規(guī)范,編寫(xiě)的(CALLBACK)函數(shù),當(dāng)WINDOWS檢測(cè)到事件發(fā)生時(shí),自動(dòng)調(diào)用的函數(shù),WINDOWS是通過(guò)函數(shù)指針調(diào)用的,因此,回調(diào)函數(shù)的內(nèi)容是由用戶(hù)決定的,而何時(shí)調(diào)用是由操作系統(tǒng)決定的.
我們看一下CVI中的一般回調(diào)函數(shù)的定義
int callback aaaa(int panel,int control,int event1,int event2,callbackdata *data);
回調(diào)函數(shù)的參數(shù)是有操作系統(tǒng)提供的,比如上面的回調(diào)函數(shù),
panel---表示的哪個(gè)面板(窗口)發(fā)生的事件
control---表示的面板上哪個(gè)控件發(fā)生的事件
event1 event2 表示事件的類(lèi)型和相應(yīng)數(shù)據(jù),比如鼠標(biāo)坐標(biāo)等
回調(diào)函數(shù)是一般高級(jí)編程語(yǔ)言的基本功能,但是,在LABVIEW8.X之前是不支持的,這極大限制了LABVIEW功能的擴(kuò)展,因?yàn)锳CTIVEX,.NET都需要回調(diào)函數(shù).
8.X中,增加了回調(diào)函數(shù)的功能,主要用于A(yíng)CTIVE,.NET和LABVIEW自身控件,LABVIEW例子程序中提供了幾個(gè)例子,是有關(guān)ACTIVEX和.NET調(diào)用的,下面,我們通過(guò)LABVIEW自身控件說(shuō)明一下回調(diào)函數(shù)的使用方法.
在.NET摸板中也提供了這個(gè)節(jié)點(diǎn),從分類(lèi)上就可以看出,注冊(cè)回調(diào)函數(shù)主要是用于A(yíng)CTIVEX和.NET的.
下面我們做一個(gè)簡(jiǎn)單的回調(diào)函數(shù)的程序,有兩個(gè)功能,返回當(dāng)前值的變化和記錄控件被點(diǎn)擊的次數(shù)
注冊(cè)回調(diào)函數(shù)需要三個(gè)參數(shù):控件參考,用戶(hù)參數(shù)和自動(dòng)生成的回調(diào)函數(shù),有了控件參考,我們就可以選擇事件的類(lèi)型,用戶(hù)參數(shù)主要是用于返回結(jié)果,因?yàn)榛卣{(diào)函數(shù)是由操作系統(tǒng)調(diào)用的,沒(méi)有辦法通過(guò)數(shù)據(jù)流返回處理結(jié)果.
添加了這兩個(gè)參數(shù)后,就可以自動(dòng)生成回調(diào)函數(shù)了
回調(diào)函數(shù)如下圖所示
簡(jiǎn)單編程,CONTROL的值傳遞給INDICATOR
這樣值變化的回調(diào)函數(shù)完成了,下面我們通過(guò)鼠標(biāo)UP事件來(lái)記錄被點(diǎn)擊的次數(shù)
評(píng)論