NI產品與技術 討論區

取消
顯示結果 
搜尋替代 
您的意思是: 

Event structure Blocking function until event registered or time-out.

已解決!
前往解決方案

請教各位先進:
最近在看Application Architecture and Design Patterns in LabVIEW(投影片請參考附件)
其中的Event 結構的章節提到一點

•Blocking function until event registered or timeout

不是很明白這點想表示的意思,想請教這是表示Event的哪種特性?
僅有在事件註冊或Timeout才限制功能,感覺很抽象,不知是否能舉個例子?
0 積分
1 條訊息(共 3 條)
5,918 檢視
解決方案
由主題作者所接受 Alex_Yung

Blocking的意思是說資料流不會實際進到Event中,除非你有設定一個Timeout Event Case。

 

舉例來說,以下這個event有設定100 ms的Timeout

TimeoutEvent.png

這個程式一執行的話,迴圈會以100 ms的速度跑並且進入到Timeout這個Case當中執行程式。

 

但是假設我們把Timeout Case拿掉,也不要在Event Case前設定Timeout的時間,如下圖。

 

BlockingEvent.png

 

那麼當程式開始執行,資料流進入迴圈之後馬上就會"Block"在進入Event Case之前,導致程式現在卡在Event發生前,

直到使用者按下Stop,Value Change這個事件才會發生,資料流才會進到Event中,否則程式就會像當機一樣被Block住。

 

不知道這樣解釋有沒有清楚。

 

2 條訊息(共 3 條)
5,915 檢視

非常清楚
感謝大大解答

確實會有這個現象,如果在有Enent的Loop使用移位暫存器做為區域資料保存,如果未設定Timout,則在下一次Event執行時,移位暫存器傳遞到Event上的資料通道的Data可能未更新,當事件發生時,想取為上一次移位暫存器所保留的資料便會有問題,實際上取回資料為上上次的結果。



更正~~我講錯實現的方法了,應該是Event會先執行內部程式碼,才更新資料通道。
實現此現象的方法可以參考附件。

0 積分
3 條訊息(共 3 條)
5,908 檢視