事件(Event Structure)觸發方式:
1.
normal event: 一般用來接收人機介面上的動作,while structure 內部不用放置延遲元件(Wait、Wait until next ms multiple)。圖中箭頭為timeout設定,預設為-1也就是沒有timeout。
2.
call by value(signal) property
node:上一個方法僅能觸發人機介面上的操作,但實際運作中並不一定每次的觸發都是因為人機介面操作所觸發的。如下圖,如果點選start按鈕後就會觸發將下面的迴圈產生的隨機數值加總,此外,如果沒有點選start按鈕,則透過圖中紅圈的value(Signal) property node,每產生二十個隨機數值觸發加總的事件(event)。
PS:不管value(signal) 輸入何值,只要呼叫到該node 都會觸發event事件。
操作說明:在要觸發的按鍵上按右鍵,如圖可選出value(signaling) property node。
3.
dynamic event:雖然說盡量不要在subVI內放置event structure,但是如果一定要放的話,就可以透過此方法來執行。另外,這方法還可以完成程式執行的狀態下改變同一動作觸發狀態(#1) 的功能。
操作說明:
1.
在event structure 上按右鍵點選show dynamic event terminals
2.
然後event structure左邊會出現一個雷達的圖樣,在上面點選右鍵,就會有相關的元件。
4.
user event(#2): 此方法的適用於原本event structure沒有定義的觸發動作與多迴圈的架構,如圖中LOOP2如果發生錯誤就會停止迴圈,並且LOOP1的event structure會觸發自訂的user event 跳出錯誤顯示視窗後停止LOOP1迴圈,避免LOOP2錯誤發生時,無法停止LOOP1的問題。
圖中左邊的紅圈可自訂要傳輸的資料格式,設定好後可以在event structure中觸發user event時,輸出(圖中右邊的紅圈)。
參考程式:
#1. \National Instruments\LabVIEW 2014\examples\Dialog and User
Interface\Events\Dynamic Event Generation.vi
#2. \National Instruments\LabVIEW 2014\examples\Dialog and User
Interface\Events\User Event Generation.vi
謝謝你的備忘錄,讓我更知道事件迴圈的用法☺️
回覆刪除感謝你的備忘錄分享,頓時理解了Dynamic event的用法
回覆刪除