請問區域變數和廣域變數的不同
它的使用方法和用途比較
該在什麼地方使用區域變數什麼地方使用廣域變數
謝謝
請問區域變數和廣域變數的不同
它的使用方法和用途比較
該在什麼地方使用區域變數什麼地方使用廣域變數
謝謝
轉載「http://stdb.org/forum/forum_posts.asp?TID=1500&PN=2&get=last」的部分內容:
在LabVIEW的環境中,Local Variable區域變數方便程式開發者在設計Block Diagram時,能不需要透過連線就可以進行資料傳遞,並可以將一個元件的資料分別傳送給在同一個Block Diagram的其他元件。至於Global Variable廣域變數則是為了要能將資料在Vi與Vi間傳遞,彌補區域變數只能在相同Vi內進行資料傳遞的不足。
基本上這兩個是違反資料流(data flow)的概念 就NI的角度來講也一直強調要避免 包含LabviewStyleBook一書中也一直強調盡量避免 理由不外乎 程式可讀性 擴充性 避免race condition 及影響效能 不過以一般應用而言 最沒感覺的就是影響效能 因為現在的PC效能很好
Labview的變數除了 Local Variable 及 Global Variable 外 還有 Shared Variable 及 Functional Gloabal Variable
Shared Variable 是LV8.0以後才有的 只存在專案(Project)中 不過講到這個就想兔槽NI一下 不是說Variable 少用嗎? 但是在 RealTime FPGA 及 DSC 用的可多了 原因很簡單 就是現在PC效能夠 就給它用力的操下去吧
不過可以的話 還是把 LabviewStyleBook當聖經膜拜吧 畢竟是幾千個專案開發者的心血結晶 絕對值得借鏡的
[QUOTE=Benjamin]
在LabVIEW的環境中,Local Variable區域變數方便程式開發者在設計Block Diagram時,能不需要透過連線就可以進行資料傳遞,並可以將一個元件的資料分別傳送給在同一個Block Diagram的其他元件。至於Global Variable廣域變數則是為了要能將資料在Vi與Vi間傳遞,彌補區域變數只能在相同Vi內進行資料傳遞的不足。
[/QUOTE]所以意思是說如果電腦配備不錯的話
用很多區域變數或廣域變數也沒關係了喔
只要執行時不會遲鈍就可以了
但是在使用區域變數時我發現有些缺點
因為他在跑程式時
不會按照順序去跑區域變數
所以有時候出來的值就不正確了
會影響的話當然就有關係囉
不然NI也不會費這麼大的勁講這一段
值不正確的話看看是不是產生 Race Condition
建議可以使用QUEUE的功能
會的話就要設法避免了
[QUOTE=wahome]
所以意思是說如果電腦配備不錯的話
用很多區域變數或廣域變數也沒關係了喔
只要執行時不會遲鈍就可以了
但是在使用區域變數時我發現有些缺點
因為他在跑程式時
不會按照順序去跑區域變數
所以有時候出來的值就不正確了
[/QUOTE]
因為我還是新手
對於QUEUE的功能不知道怎麼使用
不懂他的意思
一般Labivew的書沒有介紹
[QUOTE=alabama]
會影響的話當然就有關係囉
不然NI也不會費這麼大的勁講這一段
值不正確的話看看是不是產生 Race Condition
建議可以使用QUEUE的功能
會的話就要設法避免了
[QUOTE=wahome]
所以意思是說如果電腦配備不錯的話
用很多區域變數或廣域變數也沒關係了喔
只要執行時不會遲鈍就可以了
但是在使用區域變數時我發現有些缺點
因為他在跑程式時
不會按照順序去跑區域變數
所以有時候出來的值就不正確了
[/QUOTE][/QUOTE]
http://zone.ni.com/devzone/cda/epd/p/id/3717
這是原廠的說明 ,附件有範例 parallelloop.llb
就說明了local variale、notifier、queue 的差別
其中 notifier 跟 queue 差別在於
queue 有資料暫存功能, notifier 則無
參考參考
或者將您的程式上傳 版上有一些高手會樂意答覆的
[QUOTE=wahome]
因為我還是新手
對於QUEUE的功能不知道怎麼使用
不懂他的意思
一般Labivew的書沒有介紹
[QUOTE=alabama]
會影響的話當然就有關係囉
不然NI也不會費這麼大的勁講這一段
值不正確的話看看是不是產生 Race Condition
建議可以使用QUEUE的功能
會的話就要設法避免了
[QUOTE=wahome]
所以意思是說如果電腦配備不錯的話
用很多區域變數或廣域變數也沒關係了喔
只要執行時不會遲鈍就可以了
但是在使用區域變數時我發現有些缺點
因為他在跑程式時
不會按照順序去跑區域變數
所以有時候出來的值就不正確了
[/QUOTE][/QUOTE][/QUOTE]