談到動態呼叫,在NI LabVIEW中有兩個比較常見的方法,一個是利用”Call by Reference”另外一個是”Invoked Node”,這篇主要探討這兩者之間的差異,和其應用面。
兩種程式不同:
- 架構靈活性
”Call by Reference”,必須定義VI的型態(Refnum),也就是VI的輸入輸出必須和定義的相同,如下圖表示。
Call By Reference
“Call By Invoke Node”,只須給呼叫VI的路徑,不須定義VI的型態,這相較於Call by Reference的方法,更能發展出彈性的架構和應用。
- 資料傳遞方法
"Call by Reference”,定義了輸入輸出的型態,所以在資料傳遞上面,就較為簡單,只需把定義的接角輸出即可以得到資料。
"Call By Invoke Node”,沒有直接可以做輸入輸出的方法,需要另外透過程式方法做到資料傳遞,通常是搭配其他的Invoke Node來做到。
- 程式互動性
"Call by Reference”,程式互動性較低,在程式運轉中,必須等到整個程式完全結束後才會繼續資料流,移動到下個程式程序。
"Call By Invoke Node”,可以透過” Call asynchronously the target VI”的方法,讓程式運作中繼續完成其他動作,這在不同VI間呼叫時特別能感受到其不同。
最後補上兩個差異表:
|
輸入輸出需定義 |
接角資料輸入輸出 |
程式互動性 |
Call By Reference |
VI (VI Refnum) |
X |
V(Asynchronously) |
Call By Invoke Node |
X |
V |
X |
其他和動態呼叫相關文章連結:
LabVIEW_同步動態呼叫Asynchronously Calling VIs
LabVIEW_動態呼叫程式寫法Calling by Reference
不同動態呼叫VI的方法:Invoke Node V.S. Call by Reference
如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~
學習相關LabVIEW文章:
程式分享相關LabVIEW文章:
考取LabVIEW證照相關:
留言列表