關(guān)于事件回調(diào)的運(yùn)用(有關(guān)于 中斷)
注冊(cè)VI,在事件發(fā)生時(shí)調(diào)用該VI。該函數(shù)用于注冊(cè)和處理.NET和ActiveX事件。LabVIEW依據(jù)連線至各項(xiàng)的輸入引用的類型確定可注冊(cè)的事件。
本文引用地址:http://2s4d.com/article/201701/337120.htm我理解的就是:注冊(cè)了事件回調(diào)之后,當(dāng)某些事件發(fā)生以后,就會(huì)觸發(fā)程序掉應(yīng)設(shè)置好的子VI,運(yùn)行子VI,類似于單片機(jī)C語言里面的中斷處理。
看這樣的一個(gè)例子(官方原例)
關(guān)于通過回調(diào)VI修改標(biāo)題顯示的例子。
在VI前面板實(shí)現(xiàn)網(wǎng)頁瀏覽的基本功能。
前面板是這樣的
程序框圖是這樣的
事件回調(diào)注冊(cè)事件 用了兩個(gè)事件。即 Titlechange和BeforeNavigate2.我們以第一個(gè)回調(diào)事件來進(jìn)行解釋。
當(dāng)該瀏覽器控件發(fā)生標(biāo)題改變時(shí)間后,就會(huì)回調(diào)TitleChangeCallback.vi進(jìn)行某些處理。
我們打開這個(gè)子VI進(jìn)行查看。
程序中 就是 將 事件數(shù)據(jù) 里面的TEXT 賦值給 我們前面板上的字符串顯示控件 Title。
【當(dāng)瀏覽器控件的標(biāo)題發(fā)生變化時(shí),事件會(huì)存在一個(gè)事件數(shù)據(jù),這個(gè)事件數(shù)據(jù)當(dāng)然不會(huì)和我們獨(dú)立創(chuàng)建的字符串顯示控件(Title控件)產(chǎn)生關(guān)聯(lián),于是,我們回調(diào)這個(gè)子VI將事件的title屬性賦值給字符串顯示控件】
至于我們應(yīng)該怎么樣創(chuàng)建一個(gè)子VI。下面我們進(jìn)行簡(jiǎn)單的探索。
我們先 創(chuàng)建一個(gè) 事件回調(diào)注冊(cè) 節(jié)點(diǎn)(互連接口——.net——事件回調(diào)注冊(cè))
然后我們將這個(gè)節(jié)點(diǎn)與 ActiveX控件或.net控件 鏈接起來。
然后 我們從 第一個(gè)選項(xiàng) “事件”里 選擇 TitleChange 事件。就關(guān)聯(lián)了Titlechange事件
右鍵VI引用端子,創(chuàng)建回調(diào)VI。就會(huì)創(chuàng)建一個(gè)半成型的VI。這個(gè)半成型的 VI會(huì)根據(jù)上一步選擇事件的不同而不同。主要是因?yàn)橛玫降膮?shù)不同,我們?cè)谶@個(gè)基礎(chǔ)之上進(jìn)行修改。
有的回調(diào)VI需要用戶參數(shù),有的則不需要。而本例中 我們用到的用戶參數(shù)就是 我們用到的字符串顯示控件Title的引用句柄。
看一下 半成型的回調(diào)VI的不同。
Titlechange回調(diào)VI是這樣的
回調(diào)VI
則是這樣的:
存在著很大的不同吧!在這個(gè)基礎(chǔ)上 修改回調(diào)VI就相對(duì)比較簡(jiǎn)單了。
語言組織比較亂!我自己能懂。如有不同想法,大家一起留言探討。
我們可以把這種思維用到 中斷程序處理中(例如 串口中斷),繼續(xù)探討。
需要說明的是:
我們之前創(chuàng)建的半成型的Titlechange回調(diào)VI就是這樣來的。
評(píng)論