請問有關local variable的問題

小弟有用迴圈寫程式加上東西拉滿多的,為了避免畫面都是滿滿的連接線,所以滿習慣使用local variable,但最近發現local variable好像有個缺點,剛剛去重拉線也確定這個問題,假如小弟在迴圈run第一次得到一個數值,然後建立一個local variable,但是這 local variable卻跑不出數值,直到我迴圈run第二次且得到第二筆數值,這時local variable才有數值,不過local variable的數值卻是迴圈run第一次出來的結果,請問這是我哪裡設定錯誤,還是local variable的功能類似一個暫存器呢~~~~現在程式又是滿滿的線,看了好煩好亂

無法刪除這回覆,請見諒

Moci38680.9815625

Local Variable 就是你在 Block Diagram 上看到的 Controller 的分身。

在同時間裡,由同一個 Controller 所製造出來的所有 Local Variable 的值是一樣的。

無論你去改變 其中一個 Local Variable 或是其所對應的 Controller 的值,
所有該 Controller 及其所製造出來的 Local Variable 都會跟著改變。

每當你用了一個 Local Variable 時,就跟佔用了一份記憶體,
所以用 Local Variable 來使 Block Diagram 變得簡潔是滿多人使用 LabVIEW 來
撰寫程式時,常做的不好的動作,因為會讓程式變得佔記憶體且沒效率。

有關 Local Variable 請參考:
http://www.labview.com.tw/forum/forum_posts.asp?TID=1555

程式顯得雜亂無章 是很多人在一開始接觸 LabVIEW 最頭痛的問題,
但是 用 Local Variable 不是個很好辦法,而是該從程式架構上去改善。

這一點,剛好最近有人提出:「關於大程式之整理與設計技巧?」
個人覺得滿重要的,希望有更多人能提出自己的見解。
http://www.labview.com.tw/forum/forum_posts.asp?TID=4443&FID=23

你好,今天我的程式架構是在while loop裡面還有一個for loop,由for loop算出來的數值我有拉indicator(1)來顯示,但我對indicator(1)多拉一個local variable再接一個indicator(2)來顯示時,卻發現indicator(1),indicator(2)顯示的數值不一樣,差了一次的while loop迴圈,而whole loop裡面也有幾個local variable,但我驗證過那幾個數值都沒問題,就只有一個local variable,不過也謝謝你提供寫程式的方法,原來最好的方法就是使用"拉線"就好,不過小弟對那local variable真的好有疑問阿

在 LabVIEW 中程式碼主要是由 dataflow 來控制執行順序。

如果你的程式碼有數個獨立的區塊 (即之間沒有 dataflow 來控制其順序)
而且沒有 sequence 來規劃其執行順序的話,那麼這些獨立的 程式區塊,
無法知道其執行順序為何!!!

我想,你所提到的問題應該就是這個問題所引發的。
可能 indicator(2) 已經讀取了 indicator(1) 的值 (上一個 loop) ,
而在此時,indicator(1) 才做更新數值的動作,如此一來便可能造成了不一致
的問題。

另外,建議你把程式碼貼上來,雖然你敘述還滿詳細的,不過有時因為 Controller
及 Local Variable 所放致的位置不同,造成的結果也會不同,尤其是在有迴圈的
情況下。

嗯嗯,感謝你的建議,我可能會用拉線來解決問題,程式可能無法上傳,但十分謝謝你的好意^^