新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview的深入探索----labview與回調(diào)函數(shù)

labview的深入探索----labview與回調(diào)函數(shù)

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
回調(diào)函數(shù)是WINDOWS編程(API編程)的核心內(nèi)容之一,在許多高級(jí)編程語(yǔ)言,如VB,VC(MFC)中已經(jīng)封裝了回調(diào)函數(shù),取而代之的是事件響應(yīng)函數(shù),但是,追溯其本質(zhì),實(shí)際就是回調(diào)函數(shù).

所謂WINDOWS回調(diào)函數(shù),就是按照WINDOWS的規(guī)范,編寫的(CALLBACK)函數(shù),當(dāng)WINDOWS檢測(cè)到事件發(fā)生時(shí),自動(dòng)調(diào)用的函數(shù),WINDOWS是通過函數(shù)指針調(diào)用的,因此,回調(diào)函數(shù)的內(nèi)容是由用戶決定的,而何時(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 表示事件的類型和相應(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ù)的功能,主要用于ACTIVE,.NET和LABVIEW自身控件,LABVIEW例子程序中提供了幾個(gè)例子,是有關(guān)ACTIVEX和.NET調(diào)用的,下面,我們通過LABVIEW自身控件說(shuō)明一下回調(diào)函數(shù)的使用方法.



在.NET摸板中也提供了這個(gè)節(jié)點(diǎn),從分類上就可以看出,注冊(cè)回調(diào)函數(shù)主要是用于ACTIVEX和.NET的.

下面我們做一個(gè)簡(jiǎn)單的回調(diào)函數(shù)的程序,有兩個(gè)功能,返回當(dāng)前值的變化和記錄控件被點(diǎn)擊的次數(shù)


注冊(cè)回調(diào)函數(shù)需要三個(gè)參數(shù):控件參考,用戶參數(shù)和自動(dòng)生成的回調(diào)函數(shù),有了控件參考,我們就可以選擇事件的類型,用戶參數(shù)主要是用于返回結(jié)果,因?yàn)榛卣{(diào)函數(shù)是由操作系統(tǒng)調(diào)用的,沒有辦法通過數(shù)據(jù)流返回處理結(jié)果.

添加了這兩個(gè)參數(shù)后,就可以自動(dòng)生成回調(diào)函數(shù)了



回調(diào)函數(shù)如下圖所示



簡(jiǎn)單編程,CONTROL的值傳遞給INDICATOR


這樣值變化的回調(diào)函數(shù)完成了,下面我們通過鼠標(biāo)UP事件來(lái)記錄被點(diǎn)擊的次數(shù)

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: labview回調(diào)函

評(píng)論


技術(shù)專區(qū)

關(guān)閉