Event Structure是不是不可用在subVI的呼叫

Event Structure是不是不可用在subVI的呼叫,我的subVI功能是正常的但是,

當做副程式被哷叫確有問題,請問大家有沒有相同的經驗

主程式

![](upload://zp64rxaTjw1cVsJFqlNgaGrs6Ke.jpeg)

副程式
![](upload://qRFnIdmB177aiIJIP8tz7w2QuC0.jpeg)
好意思忘了附上程式 2004-06-19_145205_4.vi2004-06-19_145214_Untitled3.vi

http://labview.com.tw/forum/forum_posts.asp?TID=1360&KW= yao

此篇討論應該可以對你有些幫助,雖然是while loop的討論,不過原因是一樣的

我剛好去上完LabView Advanced的課程,課程中有介紹Event的使用及限制,Event是屬於等待結構,當執行到Event時如果沒有事件觸 發,則就會像死當一樣一直等待,到事件觸發後執行完後才會再繼續執行其他程序。

所以Event用sub的方式去call,會一直等待事件觸發結果就像死當,其他程序都不行執行了,最好是在主程序中另外單獨放 while loop去執行Event會比較恰當。

請問什麼是在主程序中另外單獨放 while loop去執行Event會比較恰當。

可以說明一下,如果如yao的結論"SubVI內不要有需要按鈕控制的While Loop(應該沒錯吧)"

我只好把sbu vi的功能放在主程式來狸,這樣請問有沒有其方式可停止while loop(sub vi的功能但已放在主程),再去執行主程式其它的功能或是其它的while loop嗎?

如果你的程式是有一個程序需要一直去執行,就在主程序旁邊再放一個while loop去執行event的結構,就變成兩個while loop(執行緒)一起執行。

不好意思會錯意,我有下載看過你寫的程式,這樣執行沒問題啊....![](upload://bYCGLVQ2xYCkY6TSDzv2PwwNXoA.gif)

 

Tomado38159.7955324074

這樣做行不行?

![|431x363](upload://9r2Q6u1gMNy8lUKW0qg8tB4dhXI.jpeg)

不是很了解為何用兩個case,我想重點是在如何在停止最外頭的while loop(當用SUB VI哷叫)。在用event structure下,為何要用event structure目的是因為,MOUSE LEAVE的功能我要用到或是MOUSE ENTER的功能

我一直不敢說不行,是因為我認為可以,但是我現在還不知道怎麼做

所以建議你現在在subvi內最好還是不要有while loop和event這兩種structure

我想你找遍ni的example應該也找不到有一個範例內的subvi有這兩種結構的

不過,如果你真的try出來了,教我一下啊![](upload://oJFZ9b0JZRtluEbdgsUHBv9yLzB.gif)

在SubVi的規劃裡,我會把在While Loop裡的SubVi利用For Loop每次只執行一次,而不用While Loop一直執行.基本上在While Loop內的SubVi如果還用While Loop一直執行的話,個人覺得沒有意義.

而在While Loop外的SubVi,我就會利用While Loop一直執行.

可以用個單例子來說明,for loop執行一次的while loop是什麼呢?

以下是NI工程回答

Event structure 基本上是去抓 panel 上的事件.
所以在 subVI 中使用時, 是去抓 subVI 的 panel 的事件, 而不是主 VI 上的事件.
因此最好將 event structure 放在主 VI, 而用 subVI 處理其中的運算.
謝謝!

NI 應用工程師 郭宗廷

[QUOTE=Buu]Event structure 基本上是去抓 panel 上的事件.
所以在 subVI 中使用時, 是去抓 subVI 的 panel 的事件, 而不是主 VI 上的事件.
[/QUOTE]

可是用dynamic register好像可以不用是panel上的事件

可以透過creat event來產生,不過我不太會用

所以我才覺得在subvi內用event structure好像可以