LabVIEW程序設(shè)計模式—生產(chǎn)者消費者模式(3)_LabVIEW程序的動態(tài)調(diào)用_第1頁
LabVIEW程序設(shè)計模式—生產(chǎn)者消費者模式(3)_LabVIEW程序的動態(tài)調(diào)用_第2頁
LabVIEW程序設(shè)計模式—生產(chǎn)者消費者模式(3)_LabVIEW程序的動態(tài)調(diào)用_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、LabVIEW程序設(shè)計模式(五)一生產(chǎn)者/消費者模式(3)_LabVIEW 程序的 動態(tài)調(diào)用LabVIEW 程序設(shè)計 2009-05-19 17:11:09 閱讀696評論0 字號:大中小 訂閱簡單而言,動態(tài)調(diào)用指的是通過程序控制另外一個程序的運行、停止、賦值 和獲取值等。LabVIEW提供了多種動態(tài)調(diào)用的方式,從底層而言是通過VI Server 技術(shù)實現(xiàn)的。圖31所示為LabVIEW中的Application Control選板,動態(tài)調(diào)用所使用的節(jié) 點都位于這個選板。當調(diào)用一個在硬盤、內(nèi)存甚至是網(wǎng)絡(luò)路徑上的vi時,首先要使用Open VI Referenee以將該VI載入內(nèi)存并獲取VI的“句

2、柄(Referenee ”;然后再使用該句柄進行其它的控制操作;最后再關(guān)閉該 VI的 句柄避免內(nèi)存泄漏,這就完成了一次對 VI的調(diào)用。圖 31 Applieation Control 選板圖32是一個動態(tài)調(diào)用的具體實現(xiàn)代碼,首先使用Open VI Referenee獲取被 動態(tài)調(diào)用 VI 的 Referene(例子中是 C:average.v);再使用 Call By Referenee Node 節(jié)電動態(tài)運行該 VI ;最后關(guān)閉VI的Referenca在使用Call By Referenee Node 時需要事先指定被調(diào)用 VI的輸入輸出接口,也就是說這種動態(tài)調(diào)用的前提是必 須知道被調(diào)用VI

3、的輸入輸出接口,否則無法進行動態(tài)調(diào)用。Open VI Reference Call By Reference ModeClqseReference JiV O ukjd 1 V 11ATST_1 |c a圖32 VI的動態(tài)調(diào)用Ope n VI Refere nee的路徑輸入是一個多態(tài)的輸入口,也可以使用 Stri ng輸 入,如圖33所示。此時被調(diào)用的VI必須在內(nèi)存中,且輸入的是被調(diào)用 VI的文 件名。值得一提的是這種“文件名”調(diào)用方式在可執(zhí)行程序中是無法被調(diào)用的, 因此建議最好采用路徑的調(diào)用方式。rlaversg比VI hOgenvi Reference圖 33 Open VI Refere

4、nee的多態(tài)性 【應(yīng)用5】本例將使用LabVIEW的動態(tài)調(diào)用方式實現(xiàn)斐波那契數(shù)列(Fibonacci數(shù)列)。 斐波那契數(shù)列指的是這樣一個數(shù)列:1,1, 2, 3, 5, 8, 13, 21, 這個數(shù)列 從第三項開始,每一項都等于前兩項之和。在數(shù)學(xué)上表述為:f(n)=f(n-1)+f(n-2), 其中 n=3, f(1)=f(2)=1 0顯然這是一個比較熟悉的遞歸調(diào)用,但是在 LabVIEW中似乎很難實現(xiàn)。由 于LabVIEW不允許同名的VI同時在內(nèi)存中,因此一個 VI是無法VI調(diào)用本身 的。但是,通過VI的可重入技術(shù)和動態(tài)調(diào)用技術(shù)卻可以實現(xiàn) VI的遞歸調(diào)用。圖34所示為Fib on acci數(shù)

5、列在LabVIEW中遞歸的實現(xiàn)方式。case結(jié)構(gòu)有兩 個分支,當n=3時,輸出f(n)=f(n-1)+f(n-2)。此時 需要把VI設(shè)置為可重入狀態(tài)。圖 34 Fib on acci 數(shù)列同理我們也可以使用這種遞歸的方式實現(xiàn) f(n)=n!的算法,從數(shù)學(xué)上可以寫 作f(n)=n*f(n-1),其中n=1, f(0)=1。具體的實例將不再詳述。此外,遞歸算法 的效率比較低,在實際應(yīng)用中應(yīng)謹慎使用。打開Highlight工具,在Call By Referenee Node運行時,程序是處于等待狀 態(tài)的,只有被調(diào)用的VI運行完畢,主程序才會繼續(xù)執(zhí)行。這似乎無法解決在本 節(jié)開頭提到的問題,那么是否存在

6、一種動態(tài)調(diào)用方式使被調(diào)用的VI與主VI之間分別獨立運行呢?答案是肯定的。VI本身是有很多的屬性和方法的,如圖 35所示。使用這些方法就可以動態(tài) 控制VI的運行、停止和賦值,各個屬性節(jié)點和方法的具體含義見 LabVIEW的 幫助文檔。使用這種方式動態(tài)調(diào)用 VI時,并不需要知道VI的輸入輸出接口。:峠譏nS + VI sRun VIFP.OpenFP Close !*Activate State*Ai圖 35 VI Method圖36是該使用“屬性節(jié)點和方法”實現(xiàn)動態(tài)調(diào)用的一個實例。在大多數(shù)應(yīng) 用程序啟動時會顯示一個啟動畫面用來顯示版權(quán)、開發(fā)單位、軟件版本等信息, 等待2秒之后關(guān)閉啟動界面并啟動應(yīng)用程序主界面。圖中使用了動態(tài)調(diào)用的方式啟動主程序(Main.vi)并使主程序獨立運行,首先運行程序后設(shè)置2秒鐘的延時;其次,將啟動畫面的界面設(shè)置為“隱藏”(并沒有退出內(nèi)存,只是隱藏了前 面板),并且使用Open VI Referenee獲取VI的句柄;然后使用FP.Open屬性打 開主程序的前面板(只是打開了前面板并沒有運行);使用 Run VI方法運行主 程序,將 Wait Un til Do ne設(shè)置為false,這樣就可以保證被調(diào)用 VI的獨立運行;最后,關(guān)閉當前VI的前面板田1切 Referrnac Property Nodefp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論