LabVIEW的動(dòng)態(tài)事件注冊(cè)
動(dòng)態(tài)事件注冊(cè)可完全控制LabVIEW產(chǎn)生的事件的類型和時(shí)間。動(dòng)態(tài)事件可使事件僅在應(yīng)用程序的某個(gè)部分發(fā)生,也可在應(yīng)用程序運(yùn)行時(shí)改變產(chǎn)生事件的VI或控件。使用動(dòng)態(tài)注冊(cè),可在子VI中處理事件而不是僅在產(chǎn)生事件的VI中處理事件。
處理動(dòng)態(tài)注冊(cè)的事件主要包括以下4個(gè)步驟。
· 第1步:獲取要處理的事件對(duì)象的VI服務(wù)器引用;
· 第2步:將VI服務(wù)器引用連接至“注冊(cè)事件”函數(shù)以注冊(cè)對(duì)象的事件;
· 第3步:將事件結(jié)構(gòu)放在While循環(huán)中,處理對(duì)象事件直至出現(xiàn)終止條件為止;
· 第4步:通過(guò)取消注冊(cè)事件函數(shù)以停止事件發(fā)生。
要?jiǎng)討B(tài)注冊(cè)對(duì)象事件,必須先獲取該對(duì)象的VI服務(wù)器引用??赏ㄟ^(guò)打開(kāi)應(yīng)用程序引用和打開(kāi)VI引用函數(shù)來(lái)獲取應(yīng)用程序和VI的引用。要獲取控件引用,可使用屬性節(jié)點(diǎn)查詢VI的控件,或右鍵單擊該控件、從彈出的快捷菜單中選擇“創(chuàng)建→引用”來(lái)創(chuàng)建控件引用常量。
使用注冊(cè)事件函數(shù)可動(dòng)態(tài)注冊(cè)事件,注冊(cè)事件函數(shù)位于函數(shù)選板的“編程→對(duì)話框與用戶界面一事件”,拖動(dòng)上下箭頭可調(diào)整“注冊(cè)事件”函數(shù)的大小以顯示一個(gè)或多個(gè)事件源輸入端。將應(yīng)用程序、VI或控件引用連接到每一個(gè)事件源輸入端,右鍵單擊每一個(gè)輸入端,從快捷菜單的“事件”中選擇想要注冊(cè)的事件。所能選擇的事件取決于連接到事件源輸入端的VI服務(wù)器引用類型。
“事件”快捷菜單上的事件與靜態(tài)注冊(cè)事件時(shí)在“編輯事件”對(duì)話框出現(xiàn)的事件相同。“注冊(cè)事件”函數(shù)執(zhí)行時(shí),LabVIEW將對(duì)每個(gè)事件源輸入引用句柄相關(guān)聯(lián)的對(duì)象上的事件進(jìn)行注冊(cè)。一旦注冊(cè)了事件,LabVIEW將按事件發(fā)生的順序?qū)⑹录湃腙?duì)列,直到事件結(jié)構(gòu)來(lái)處理這些事件。除非有另一對(duì)象在函數(shù)執(zhí)行之前己經(jīng)注冊(cè)了事件,否則將不會(huì)產(chǎn)生事件。
動(dòng)態(tài)事件接線端類似于移位寄存器,可右鍵單擊事件結(jié)構(gòu)并從彈出的快捷菜單中選擇“顯示動(dòng)態(tài)事件接線端”來(lái)獲取。左接線端接受事件注冊(cè)引用句柄或事件注冊(cè)引用句柄的簇;如果不連接內(nèi)部的右接線端,右接線端的數(shù)據(jù)將與左接線端相同。但是,可通過(guò)“注冊(cè)事件”函數(shù)將事件注冊(cè)引用句柄或事件注冊(cè)引用句柄的簇連接至內(nèi)部的右接線端并動(dòng)態(tài)地修改事件注冊(cè)。
要停止產(chǎn)生事件,可將事件結(jié)構(gòu)右側(cè)的動(dòng)態(tài)事件接線端連接至位于“注冊(cè)事件”函數(shù)左上角的“事件注冊(cè)引用句柄”輸入端?!叭∠?cè)事件”函數(shù)位于函數(shù)選板的“編程→對(duì)話框與用戶界面→事件”,其處于含有該事件結(jié)構(gòu)的While循環(huán)外?!叭∠?cè)事件”函數(shù)執(zhí)行時(shí),
LabVIEW將把該事件注冊(cè)引用句柄所指定的一切事件注冊(cè)取消,銷毀與該事件注冊(cè)引用句柄相關(guān)的事件隊(duì)列,同時(shí)放棄任何尚在隊(duì)列中的事件。如果用戶不取消注冊(cè)事件,而包含事件結(jié)構(gòu)的While循環(huán)執(zhí)行結(jié)束后用戶叉執(zhí)行了可產(chǎn)生事件的操作,那么LabVIEW將無(wú)限地查詢事件。如果事件已配置為將前面板鎖定,則此時(shí)Ⅵ無(wú)響應(yīng)。在這種情況下,LabVIEW將在Ⅵ空閑時(shí)銷毀事件隊(duì)列。
來(lái)源:ks991次