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