請問如何將sub VI同時啟動2次以上

我需要在我的專案裡,同時啟動2次以上同一個副程式,

如附檔,裡面有一個mm.vi為主程式,呼叫led.vi副程式,如果led.vi程式啟動後,再重複呼叫一次,會有錯誤.

附檔:mm.rar

可以將需要同時間啟動兩次的 VI 做以下的設定即可。

  •  勾選 VI Properties -> Execution -> Reentrant execution 選項

不過這樣的 VI 每呼叫一次,就相當於多佔用了一塊該 VI 所使用的記憶體,
所以使用上要注意一下。

另外你又是使用到 Dynamically Calling 的方式來使用之,要更加小心使用,
用完後記得關閉原本使用到的 VI Reference。

Airbolt38730.9189583333

Airbolt您好

我測試過後,還是第二次呼叫時會發生錯誤

 

而且,Show front panel when call,會無法選取,導致無法顯示畫面.

用Dynamically Calling 才會顯示front panel

啊,沒有注意到這一點,真是抱歉。

印象中還有其它方式,不過程式的複雜度會提高不少,而且不容易懂,
我回去再幫你查查。

Airbolt38720.7619328704

麻煩Airbolt大大了.

抱歉,最近工作比較繁忙,讓你久等了。

這個方法的,最主要關鍵是,將 SubVI 儲存為 Template 即可。

 

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

 

上述範例的用法,為了掌控 Dynamically Calling VI ,
必需要在你的程式中到處傳送  VI reference ,而造成 coding 上的一些問題
及不便。

所以當用在大型專案上,常會把 GOOP 的觀念再導入到其中,
(這也是我說讓程式複雜度提高的地方)
不過我想初期,你應該只要單純地使用我上傳的範例所用的方法就可以了,
當然啦,在 VI reference 的掌控上要留意,不要 遺失 或 搞混 了。

Airbolt38730.9183333333

謝謝Airbolt大大的幫忙.

可不可以提供GOOP 的相關資料或書籍.

這樣的Labview就可以更深入的研究了.

我也還在了解中,
核心的架構,目前大概知道怎麼實做完成,
但是在應用上,還不是很了解,
你可以先看一下底下的文章,有提供相關資訊及網站:

或是搜尋一下 GOOP 字樣,不過目前我們網站上這方面的資料不多,
可能得到 LAVA 論壇 上找找了。

大家一起努力吧。

Airbolt38730.7814699074

謝謝Airbolt大大的幫忙.

我會繼續努力的.