2015-10-22 39 views
0

Labview對於我以前使用C/Java非常不滿。從循環的輸出創建子文件

我有一個簡單的問題,我不知道如何解決。

我的程序在循環中執行一些操作並更新循環內的指示器。我想將這個循環(以及它需要的輸入)放到一個VI中,但我不知道如何使該指示器成爲VI的輸出。

我希望能夠重用這個VI,連接一個指示器,並讓它自動更新,而不會在VI之外創建任何循環。

在C中,我可以通過返回指針或通過引用傳遞函數來完成此操作。

回答

1

A)下圖顯示瞭如何做到這一點以外的值機制。 B)這種編程風格適用於小型應用程序,但隨着應用程序規模越來越大,我鼓勵您探索一種實際的架構,以便在一個層次結構中生成數據並在另一個層次結構中使用它(正如本問題的其他答案所暗示的那樣) 。特別是,請執行File >> Create Project並選擇Producer/Consumer模板,以探索此類體系結構的良好起點。有更復雜的,但這是一個很好的開始。 Diagram transformations from original that updates a front panel terminal in a loop to the final that is a reusable subVI using a reference

+1

順便說一句:通過右鍵點擊FP終端並選擇創建>>參考創建對Current的引用。 – srm

2

你也可以爲labview指標做一個參考,但是你需要把它作爲一個全局變量或者傳入調用vi的引用。

至於你的挫折,你應該知道,你幾乎可以做在Labview中任何東西,你可以在C

2

用做隊列在框圖環路之間的數據移動。

producer/consumer圖案使用隊列來移動相同圖上兩個環路之間的數據,但隊列是全局的,VI層次結構,並通過naming it when you create it,第二VI可以通過使用相同的獲得對它的引用名稱。

注:隊列爲1:1且無損;如果您需要1:N數據傳輸,請使用notifier(這是最新的有損耗)。

3

在LabVIEW while循環中條件簡單。只有當我們滿足條件時,該值才能超出循環。循環右下角有一個條件終端。

在一般:

1)當true標誌將被設置在那裏(如果停止真),那麼該值將在循環外傳遞。

2)當假標誌將被設置在那裏(如果爲true,則繼續),則該值將在循環外部傳遞。

3)當環路出現錯誤時,您可以始終在條件終端中使用錯誤導線,然後環路停止。

你的情況: 始終嘗試使用while循環量最小,因爲它是可能的,因爲optimalization原因。

1)你可以在你的主VI中使用while循環,而所有的子VI都將在這個循環中,並且所有的值(指標)都將被更新。

2)您可以嘗試使用,而裏面的子VI循環,但你必須提供將輸送循環如queueslocal variables