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