動態載入且與我的主VI平行執行另一個VI

更新 Nov 15, 2019

產品資訊

Software

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

問題敘述

當我使用Call By Reference node從我的主VI動態載入和執行彈出式VI。當彈出的VI正在執行時,主VI並沒有平行運作,且它似乎因為依賴於Call By Reference node而被卡住。如何在不停止主VI執行的情況下動態載入和執行另一個VI,使其與主VI同時並行?

解決方案

當您使用「Call By Reference node」執行VI時,該VI並不會自主運行。主VI將依賴Call By Reference Node,且亦不會並行運作。

LabVIEW 2011及更高的版本:
在LabVIEW 2011中,您可以使用Start Asynchronous Call和Wait On Asynchronous Call node輕易地讓主VI與子VI並行運作。有關其他詳細資訊和範例,請參閱Asynchronously Calling VIs

LabVIEW 2010及更早的版本:
在LabVIEW 2010及更早的版本中,欲動態載入並執行與主VI並行運作的第二支VI,該VI必須使用選擇Run Method的Invoke Node。您必須將Wait until done選項設置為FALSE以消除此VI的資料依賴性,如下方鏈結的討論區範例所示。若是要顯示被呼叫VI的Front Panel,則必須使用帶有Front Panel Open property的property node。這樣就能允許主VI在彈出VI並執行後,繼續並行運作。

您還可以使用Set Control ValueGet Control Value的方法在主VI以及彈出的VI之間來回傳遞數據資料。

Related Links中的討論區範例展示了使用Invoke Nodes、Methods,以及Property Nodes來並行調用與執行子VI。