Sirs
有人開多個VI視窗並同時執行的經驗嗎?
我是用event structure來開啟某功能的vi視窗,但是這event structure又是包在sequence structure內,所以還是要等到執行到此sequence structure在會開啟對應的視窗,如果期間在某個sequence 執行太久則會感覺視窗開的速度太慢。有沒有什麼功能可以像VB按一 個按鈕直接就開啟對應的視窗不用等其它的程式是不是執行完了。
如下圖,偵測如果有按下OPEN V的按鈕則開啟Immediate_value.vi這個視窗,但是如果前面的sequence 執行太久那這視窗就會感覺開很慢。

多用幾個WLoop,將Event structure獨立用
我記得希望Event不受到其他結構&CODE執行而產生Delay,
就是把While+Event的架構獨立出來,Code太大的事件也獨立出來,
才不會受到執行的順序產生慢一拍,
或者某個事件執行太久,其它事件只能排隊的情況。
只是怕說你這個事件放在這個順序結構,是考量到有些CODE或判斷是必須取決這個事件是否發生,才能作用。
另外想請教一下
這是傳說中的動態調用嗎
可以請教各位大大會習慣把這一串東西包成一個SubVI嗎?
想請問動態調用的優點在哪裡?
目前只理解到:
直接放SubVI會在主程式一執行就載入到記憶體。
動態調用是在呼叫的時候才載入記憶體,結束後卸載。
所以...這樣是在省記憶體? 在程式開始的時候載入比較快,可以比較快看到畫面?
Lovesmartx40694.3578819444
Sirs
各位的說法是如以下的結構嗎
這看起來應該是可行的,有人有試過嗎? 我的疑問是如果另一個while loop忙碌工作時cup的資源被佔用這樣會不會影響另一whileloop的工作。有人有經驗或測試過的可以談談經驗。
另外提到的動態調適,就是我用EVENT的原因,當按下某一按扭時開啟對應功能的VI,使用都可以隨時關閉這子VI,但是會不會減少記憶體的用量或釋放原佔有的記憶體這我就不太清楚了。這也是我提的另一個問題"記憶體不足"。程式執行2小時後就出現記憶體不足的訊息,整個測試資料完全沒存檔,這2小時等於是白做了當場傻眼,這問題不知道是不是因為我用了很多很大的陣列來存資料而用完2G的記憶體。有興趣或有這方面經驗的可以幫忙了解一下看看有沒有方法可以解決這問題。

的確 EVENT LOOP 像 #4 那樣分開的設置是一般的用法 , 除非你有意限製 EVENT LOOP 的觸發 , 不過記緊設好 end loop 的條件 , 不然 main loop 是 quit 了, 但 event loop 還沒 quit 會當掉
另外, 如果是指佔用資源的情況, 其中最容易想像的有兩個原因:
1: global variables, labview 的 GV 是一向是有點問題的 , 似乎不懂將記憶體釋放的樣子, 我不知道09 和 10 有沒有改善 , 起碼 8.X 板本是這樣, 才會出現 functional GV 的做法
2: loop delay time, 我不知道你整個sequence是怎樣 , 但是應該習慣每個 loop 都有一個 delay, 就算是 10 ms 也好(我看你#1的圖沒用), 通常我都用 100ms 或 200ms, 再快點就用 50 ms , 如果不是太過注重反應時間 , 可以每個 process 都加上 , 不然運行程式時會很吃資源
如果不是以上兩個情況 , 就要看看會不會是某個 process 的問題 , 試試把那部份 disable 了, 看看會不會再當掉
下面3個程式Event是當在數字上按滑鼠,數字就加1,希望布林OFF時不要加,1.vi在布林OFF時在數字上按滑鼠==>當機,2.vi在布林OFF時在數字上按滑鼠,不會當機,但是將布林ON時之前案的就加上去==>NG,3.vi才是正常的.
所以,不要以為將Event放到case就可限制Event.
1.vi
2.vi
3.vi