Functional Global Variable & 從sub vi控制main vi的控制項

不好意思, 請教各位大大幾個LabView使用上的問題.

  1.  如果今天我要將原本所寫的global variable改成functional global variable, 由於項目很多, 那這樣是不是要定義很多state enum來區分今天是要讀取或者設定那個variable?
  2. 如果main vi有一個字串的indicator, 我要如何從sub vi來改變它的值?

       先感謝各位大大的任何協助.

1.不懂意思,可否舉例

2.可用global variable或queue的方式

感謝大大的回覆.

     我會試著作一個例子來說明第一個問題, 而關於第二個問題, 請教一下, 用global variable的方式是用一個while loop來定時更新這個字串indicator的內容嗎? 用大大建議的queue會比較省資源嗎?

省資源與否我無法確定,重點是何者可以達到你的需求,另外global variable的範例在Example Finder搜尋global有範例可參考

第一題可能明白在講甚麼…
小弟也遇到貌似類似的困擾,日前曾經發瘋將程式7x個全域變數散佈在程式5xx多處全部改寫成FunctionGlobal…改到快死掉…
因為一組FunctionGlobal最少有三種動作…Init…Read…Write…
雖然能分類就分類、有關連性的就綑綁在一起,但是Enum還真是連到手指很痛…滑鼠又換了一顆…有時候Copy上,線卻沒跟著複製上.或者是Enum選錯動作…就Error狂跳囉。

遇到一個問題
假設全域變數以類別來區分~可能某個功能設定需要用到20種變數,想將它整理起來,應該會共用一個FunctionGlobal…
因為這20個變數可能需要個別在不同時機點進行寫入或讀取,因此要建一個FunctionGlobalVI 拉20條Input 和 20條Output 分別代表輸入輸出,然後再列舉定義這20個變數,各有三個種基本動作,所以定義了60個動作在這個Enum。所以彈跳出來的清單還真是比信用卡還長阿…(其實定義到2x個我就放棄了…
後來是藉由VI的封裝,整理各功能的資料共用分享區(位移佔存器),盡可能以拉線的方式傳遞資料,如果需要跨越兩層以上,才用FunctionGlobal。

不過小弟我還是不太懂FunctionGlobal的使用時機…一個VI上有Input, Output,可是讀或寫都只會用到其中之一,以同類型被捆綁好的Cluster為例,大部分讀寫都是一整個Cluster來進行動作,但有時候需要單一重寫Cluster內的element,但是我這個Element的值存在這FunctionGlobal,要讀也是只能找他拿,這時候怎麼辦?
因為不想將這個程式碼表面直接放FunctionGlobal拉一個Read出來讀取整個Cluster所有的值,然後使用BoundleByName重寫整個Cluster;所以只好在這個FunctionGlobal內又加了幾個Input和幾個動作,令他可以單獨寫入Element的值(內部也適用BlundleByName來處理).,但表面上就不會這麼多FunctionGlobal的VI…不然弄下去感覺就像是X+1=X的感覺…把FunctionGlobal當作區域變數在用…
不過這些弄下去真的比純用Global還要花功夫…

如何正確應用FunctionGlobal…還真是頭痛阿~Lovesmartx41003.0415162037

1.基本上Functional Global Variable的方式我很少在使用,NI的教學文件或相關文章會提到和property node和local variable的使用效能,如果可以的話當然是遵守這些規則,但是如果說使用時機還真的是一門學問,只能多看看別人的程式,附件是Functional Global Variable的範例,我覺得不錯,提供給大家參考

StopWatch_LV2009.zip

2.程式當然是用拉線是最好,但是有些情況大都沒有辦法允許我們這樣做,資料變數多時使用cluster也是種不錯的方式,把它變成Type Def.也會好維護,最後,我常看到國外所寫的程式有些都是OOP的方式,這點是我較弱的地方,我覺得寫"好"的程式是要朝這個方向,但是我目前不得其門而入,只能說coding還真是條不歸路

我個人認為FGV的使用,與資料規劃有關,在LabVIEW Core3的課程上就有一些討論,如果預算許可的話,我會建議去NI 上Core 3的課程,對未來開發程式會有一定的幫助。

感謝兩位大大提點...OOP我也想學阿...但小弟現在連UserEvent都沒辦法靈活運用...還活在石器時代~用Labview實現C語言.....

LabVIEW Core3的課程大綱看完真的好心動喔....=口=...

嗯...
FGV的寫法,小弟也比較少用
不過有聽過這樣的寫法在撰寫大型程式與專案上可是常用的工具
同時如Marco大所說的
必預要先規劃好程式再來撰寫程式

小弟曾經為了寫一個測試程式
不斷的改cluster與define功能
再加上後續功能增加,所以很多程式又重新作苦工重拉...
@[email protected]

elvistu41004.9960185185

的確, 我與5樓的前輩遇到同樣的問題, 總覺得FGV似乎比GV更難用, 雖然省資源, 不過似乎會搞的挺複雜...><

不過我想我還只是初入門, 還有很多要學習的, 雖然說在撰寫的過程中, 一直砍掉重練, 不過也累積了許多的錯誤學習經驗...^^