贊助商連結

目前分類:專題學習_動態載入 (3)

瀏覽方式: 標題列表 簡短摘要

首先,需要先解釋什麼是"動態呼叫",當LabVIEW中如果主程式呼叫其他的副程式(SubVI)時,會使用兩種方法,一種是"靜態呼叫"、另外一種為"動態呼叫",這兩種的差異主要是運行主程式時有沒有載入副程式到記憶體裡。動態呼叫方法通常有兩種: 一個是利用”Call by Reference”另外一個是”Invoked Node”,這篇主要介紹Call by Reference中的"Asynchronous Call"同步呼叫"方法。Call by Reference”另外一個是”Invoked Node”兩者之間的差異和應用面,可以參考另外一篇不同動態呼叫VI的方法:Invoke Node V.S. Call by Reference

動態呼叫中Call By Reference最基本的方法,就是使用Call by Reference Node,直接呼叫SubVI,使用時,直到SubVI結束主程式才會接續資料流。

另外一種稱為”Asynchoronous”同步呼叫,這讓主程式和副程式都能同是運行,而不受資料流的影響。

Asynchoronous Call VI主要為Start Asynchronous CallWait On Asychornous Call

Programming --> Application Control

Asynchronous Call最簡單的應用,使用此方法主程式能夠繼續執行,且不受副程式影響。

可以參考NI Example中的:Asynchronous Call and Collect.vi更能明瞭Asynchronous Call的運行方法

 

其他和動態呼叫相關文章連結:

LabVIEW_同步動態呼叫Asynchronously Calling VIs

LabVIEW_動態呼叫程式寫法Calling by Reference

不同動態呼叫VI的方法:Invoke Node V.S. Call by Reference

 

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

 

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

 

 

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

動態呼叫方法通常有兩種: 一個是利用”Call by Reference”另外一個是”Invoked Node”這篇主要探討這兩者之間的差異,和其應用面。可以參考另外一篇不同動態呼叫VI的方法:Invoke Node V.S. Call by Reference

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

首先,需要先解釋什麼是"動態呼叫",當LabVIEW中如果主程式呼叫其他的副程式(SubVI)時,會使用兩種方法,一種是"靜態呼叫"、另外一種為"動態呼叫",這兩種的差異主要是運行主程式時有沒有載入副程式到記憶體裡。

  • 靜態的 subVI 是主程式在開始運行時,就會載入(load) SubVI,而且直到主程式結束,都不會釋放副程式的記憶體;換而言之,即使這一個 subVI 只會執行一次,但是 SubVI 也會一直佔用記憶體空間,直到主程式結束為止。
  • 動態呼叫,就是當程式執行到 SubVI 之前,電腦的記憶體都不會載入 subVI 程式,等到執行到需要的SubVI 時,程式才會載入此SubVI,這樣可以大大節省記憶體的使用。

使用方法:

Programming->Application Control -> Open VI Reference

在接角type specifier VI Refnum(for type only)創建一個Control

利用Front Panel->Select VI Server Class-->Browse選擇需要的型態

Block Diagram中加入”Call By Reference””Close Reference”

Block Diagram接角串起來,並將VI 名稱建置。

這樣即完成一個簡單的Call by Reference 的程式。

 

其他和動態呼叫相關文章連結:

LabVIEW_同步動態呼叫Asynchronously Calling VIs

LabVIEW_動態呼叫程式寫法Calling by Reference

不同動態呼叫VI的方法:Invoke Node V.S. Call by Reference

 

如果覺得文章有幫助,請不要吝嗇按下側邊的廣告唷~ 謝謝~

 

學習相關LabVIEW文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(0) 人氣()

談到動態呼叫,在NI LabVIEW中有兩個比較常見的方法,一個是利用”Call by Reference”另外一個是”Invoked Node”,這篇主要探討這兩者之間的差異,和其應用面。

兩種程式不同:

  1. 架構靈活性

”Call by Reference”,必須定義VI的型態(Refnum),也就是VI的輸入輸出必須和定義的相同,如下圖表示。

Call By Reference

“Call By Invoke Node”,只須給呼叫VI的路徑,不須定義VI的型態,這相較於Call by Reference的方法,更能發展出彈性的架構和應用

  1. 資料傳遞方法

"Call by Reference”,定義了輸入輸出的型態,所以在資料傳遞上面,就較為簡單,只需把定義的接角輸出即可以得到資料。

"Call By Invoke Node”,沒有直接可以做輸入輸出的方法,需要另外透過程式方法做到資料傳遞,通常是搭配其他的Invoke Node來做到。

  1. 程式互動性

"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文章:

進階程式學習

基礎程式學習

專題學習_LVOOP

專題學習_動態載入

程式分享相關LabVIEW文章:

基礎程式分享

進階程式分享

股票程式分享

考取LabVIEW證照相關:

CLAD

CLD

CLA準備CLA考題分析

文章標籤

安伯伯 發表在 痞客邦 留言(1) 人氣()

Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼