新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 關(guān)于事件回調(diào)的運用(有關(guān)于 中斷)

關(guān)于事件回調(diào)的運用(有關(guān)于 中斷)

作者: 時間:2017-01-09 來源:網(wǎng)絡(luò) 收藏
關(guān)于事件回調(diào) 的解釋 ,官方的是這樣的:

注冊VI,在事件發(fā)生時調(diào)用該VI。該函數(shù)用于注冊和處理.NET和ActiveX事件。LabVIEW依據(jù)連線至各項的輸入引用的類型確定可注冊的事件。

本文引用地址:http://butianyuan.cn/article/201701/337120.htm

我理解的就是:注冊了事件回調(diào)之后,當(dāng)某些事件發(fā)生以后,就會觸發(fā)程序掉應(yīng)設(shè)置好的子VI,運行子VI,類似于單片機C語言里面的中斷處理。

看這樣的一個例子(官方原例)

關(guān)于通過回調(diào)VI修改標題顯示的例子。

在VI前面板實現(xiàn)網(wǎng)頁瀏覽的基本功能。

前面板是這樣的


程序框圖是這樣的



事件回調(diào)注冊事件 用了兩個事件。即 Titlechange和BeforeNavigate2.我們以第一個回調(diào)事件來進行解釋。

當(dāng)該瀏覽器控件發(fā)生標題改變時間后,就會回調(diào)TitleChangeCallback.vi進行某些處理。

我們打開這個子VI進行查看。





程序中 就是 將 事件數(shù)據(jù) 里面的TEXT 賦值給 我們前面板上的字符串顯示控件 Title。

【當(dāng)瀏覽器控件的標題發(fā)生變化時,事件會存在一個事件數(shù)據(jù),這個事件數(shù)據(jù)當(dāng)然不會和我們獨立創(chuàng)建的字符串顯示控件(Title控件)產(chǎn)生關(guān)聯(lián),于是,我們回調(diào)這個子VI將事件的title屬性賦值給字符串顯示控件】

至于我們應(yīng)該怎么樣創(chuàng)建一個子VI。下面我們進行簡單的探索。

我們先 創(chuàng)建一個 事件回調(diào)注冊 節(jié)點(互連接口——.net——事件回調(diào)注冊)

然后我們將這個節(jié)點與 ActiveX控件或.net控件 鏈接起來。

然后 我們從 第一個選項 “事件”里 選擇 TitleChange 事件。就關(guān)聯(lián)了Titlechange事件

右鍵VI引用端子,創(chuàng)建回調(diào)VI。就會創(chuàng)建一個半成型的VI。這個半成型的 VI會根據(jù)上一步選擇事件的不同而不同。主要是因為用到的參數(shù)不同,我們在這個基礎(chǔ)之上進行修改。

有的回調(diào)VI需要用戶參數(shù),有的則不需要。而本例中 我們用到的用戶參數(shù)就是 我們用到的字符串顯示控件Title的引用句柄。

看一下 半成型的回調(diào)VI的不同。

Titlechange回調(diào)VI是這樣的

回調(diào)VIBeforeNavigate2.VI

則是這樣的:





存在著很大的不同吧!在這個基礎(chǔ)上 修改回調(diào)VI就相對比較簡單了。

語言組織比較亂!我自己能懂。如有不同想法,大家一起留言探討。

我們可以把這種思維用到 中斷程序處理中(例如 串口中斷),繼續(xù)探討。

需要說明的是:在回調(diào)VI中,用戶參數(shù)一般都是 變體數(shù)據(jù)類型的。如果我們想改變回調(diào)參數(shù)的數(shù)據(jù)類型,在創(chuàng)建回調(diào)VI之前,連線用戶參數(shù)端子,如連線的是字符串引用句柄,則回調(diào)VI中的用戶參數(shù)為字符串型引用。

我們之前創(chuàng)建的半成型的Titlechange回調(diào)VI就是這樣來的。



關(guān)鍵詞: 事件回調(diào)中

評論


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

關(guān)閉