日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LabVIEW异步调用VI

發(fā)布時(shí)間:2024/3/24 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LabVIEW异步调用VI 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

LabVIEW異步調(diào)用VI

如通過(guò)子VI節(jié)點(diǎn)或通過(guò)引用調(diào)用節(jié)點(diǎn)以標(biāo)準(zhǔn)調(diào)用方法調(diào)用一個(gè)VI,數(shù)據(jù)流在被調(diào)用節(jié)點(diǎn)處暫停直到子VI返回結(jié)果。然后數(shù)據(jù)流從節(jié)點(diǎn)的輸出端繼續(xù)。

與上述方式不同,異步調(diào)用VI時(shí),子VI運(yùn)行的同時(shí)數(shù)據(jù)流仍然在調(diào)用方VI中繼續(xù)。如調(diào)用方VI不是立即需要子VI的執(zhí)行結(jié)果,就可考慮異步調(diào)用子VI。在這些情況下,異步調(diào)用可使子VI和調(diào)用VI并行運(yùn)行,明顯優(yōu)化調(diào)用方VI的執(zhí)行時(shí)間。關(guān)于異步VI調(diào)用的優(yōu)點(diǎn),請(qǐng)參考下列編程情境范例:

將任務(wù)分配給子VI,主VI繼續(xù)運(yùn)行

將一個(gè)任務(wù)的工作量分散到同一個(gè)VI的各個(gè)實(shí)例,尤其是直到運(yùn)行時(shí)才知道任務(wù)需要的VI實(shí)例的個(gè)數(shù)

打開(kāi)復(fù)雜的用戶界面,界面由若干個(gè)單獨(dú)的VI組成。這些VI必須并行運(yùn)行,同時(shí)收集結(jié)果

關(guān)于同步和異步調(diào)用的比較,請(qǐng)參考labview\examples\ApplicationControl\VI?Server\Asynchronous?Call?By?Reference目錄下的Benchmarking?AsynchronousCalls?VI。

打開(kāi)范例???查找相關(guān)范例

異步VI調(diào)用概述

在LabVIEW中,異步VI調(diào)用包括下列步驟。

準(zhǔn)備異步調(diào)用的VI引用—使用打開(kāi)VI引用函數(shù)獲取VI引用,并通過(guò)異步選項(xiàng)標(biāo)識(shí)(0x80,?0x100)作為選項(xiàng)輸入的一部分。該步驟是讓LabVIEW為異步調(diào)用分配資源。

開(kāi)始異步VI調(diào)用—將VI引用連接至開(kāi)始異步調(diào)用節(jié)點(diǎn),開(kāi)始調(diào)用子VI。當(dāng)子VI運(yùn)行時(shí),數(shù)據(jù)流繼續(xù)在調(diào)用方VI中執(zhí)行。

(可選)獲取異步VI調(diào)用的結(jié)果—如應(yīng)用程序需要異步調(diào)用的子VI的輸出結(jié)果,將VI引用連接至等待異步調(diào)用節(jié)點(diǎn)以收集結(jié)果。等待異步調(diào)用節(jié)點(diǎn)等待相關(guān)子VI執(zhí)行完畢直到超時(shí)。

關(guān)閉VI引用—使用關(guān)閉引用函數(shù)告知LabVIEW使用VI引用已完畢。LabVIEW將釋放相關(guān)資源。

異步VI調(diào)用的類(lèi)型

要進(jìn)行異步VI調(diào)用,必須根據(jù)使用場(chǎng)合決定使用哪種類(lèi)型的調(diào)用方法。關(guān)于每種每種的實(shí)現(xiàn),請(qǐng)參考下列主題:

僅調(diào)用—調(diào)用方VI開(kāi)始調(diào)用子VI,但是不需要子VI的輸出。

調(diào)用和收集—調(diào)用方VI開(kāi)始調(diào)用子VI,稍后收集子VI的執(zhí)行結(jié)果。

可使用上述類(lèi)型異步開(kāi)始對(duì)一個(gè)VI的多個(gè)調(diào)用,實(shí)現(xiàn)并行執(zhí)行。

LabVIEW如何管理異步VI調(diào)用:異步調(diào)用池

使用異步調(diào)用VI方法并不需要了解LabVIEW在后臺(tái)如何管理這些異步VI調(diào)用。但是,了解異步調(diào)用池有助于用戶設(shè)計(jì)確定性應(yīng)用程序和優(yōu)化程序的性能。如將異步選項(xiàng)標(biāo)識(shí)作為“打開(kāi)VI引用”函數(shù)選項(xiàng)輸入端的一部分,將VI引用所指的VI異步運(yùn)行,LabVIEW將創(chuàng)建一個(gè)數(shù)據(jù)空間的池,跟蹤對(duì)VI的各個(gè)調(diào)用。因?yàn)長(zhǎng)abVIEW將一個(gè)數(shù)據(jù)空間池,而不是一個(gè)數(shù)據(jù)空間,與VI引用關(guān)聯(lián),必須通過(guò)一個(gè)VI引用開(kāi)始多個(gè)異步調(diào)用。每次使用“開(kāi)始異步調(diào)用”節(jié)點(diǎn)通過(guò)VI引用開(kāi)始異步調(diào)用時(shí),LabVIEW都會(huì)在池中預(yù)留一個(gè)數(shù)據(jù)空間。VI結(jié)束運(yùn)行后,LabVIEW將把輸出放在數(shù)據(jù)空間中,并將VI調(diào)用標(biāo)識(shí)為結(jié)束。如“等待異步調(diào)用”節(jié)點(diǎn)等待被調(diào)VI的輸出,LabVIEW將從數(shù)據(jù)空間中返回結(jié)果,將數(shù)據(jù)空間釋放給同一VI的其他調(diào)用。

異步調(diào)用池對(duì)性能的影響

對(duì)于各個(gè)VI引用,LabVIEW在終端計(jì)算機(jī)CPU核的異步調(diào)用池中創(chuàng)建一個(gè)數(shù)據(jù)空間。如同時(shí)開(kāi)始的VI調(diào)用超過(guò)了可用的數(shù)據(jù)空間,LabVIEW將分配更多的數(shù)據(jù)空間,以增加調(diào)用池的大小。因?yàn)榉峙鋽?shù)據(jù)空間的過(guò)程所需的時(shí)間是不確定的,調(diào)用方VI在“開(kāi)始異步調(diào)用”節(jié)點(diǎn)觸發(fā)空間分配時(shí),會(huì)有一個(gè)不可預(yù)期的時(shí)間延遲。

在開(kāi)始異步調(diào)用節(jié)點(diǎn)處避免不可預(yù)期的延遲

如VI必須在實(shí)時(shí)操作系統(tǒng)上運(yùn)行,必須避免不可預(yù)期的延遲的話,在調(diào)用PopulateAsynchronous?Call?Pool方法開(kāi)始任何同步之前,應(yīng)對(duì)給定的VI引用預(yù)分配相應(yīng)數(shù)量的數(shù)據(jù)空間。預(yù)分配數(shù)據(jù)空間使時(shí)間延遲在程序開(kāi)始之前,而不是發(fā)生在“開(kāi)始異步調(diào)用”節(jié)點(diǎn)的位置。

關(guān)于異步調(diào)用池影響VI執(zhí)行速度的詳細(xì)信息,請(qǐng)參考labview\examples\ApplicationControl\VI?Server\Asynchronous?Call?By?Reference目錄下的Populatingthe?Asynchronous?Call?Pool?VI。

異步調(diào)用池對(duì)從同一VI的多個(gè)調(diào)用中收集輸出的影響

如要收集異步VI調(diào)用的結(jié)果,必須將被調(diào)用VI的引用傳遞至“等待異步調(diào)用”節(jié)點(diǎn)。因?yàn)椤暗却惒秸{(diào)用”節(jié)點(diǎn)接收VI的引用,而不是特定數(shù)據(jù)空間的引用,節(jié)點(diǎn)無(wú)法收集特定VI調(diào)用的輸出。如對(duì)特定VI的調(diào)用結(jié)束,節(jié)點(diǎn)返回結(jié)束的調(diào)用的輸出。詳細(xì)信息請(qǐng)參考下列程序框圖。

?

如標(biāo)簽所示,當(dāng)多個(gè)“等待異步調(diào)用”節(jié)點(diǎn)使用同一個(gè)VI引用時(shí),不能預(yù)測(cè)哪個(gè)節(jié)點(diǎn)將返回VI引用的某個(gè)調(diào)用的輸出。在上面程序框圖中,頂部的“等待異步調(diào)用”節(jié)點(diǎn)將返回開(kāi)始異步調(diào)用2的輸出,即使它被連線至開(kāi)始異步調(diào)用1。如要對(duì)一個(gè)VI進(jìn)行多個(gè)調(diào)用,還要保持“開(kāi)始異步調(diào)用”節(jié)點(diǎn)與特定的“等待異步調(diào)用”節(jié)點(diǎn)相匹配,可使用下列方法:

為每個(gè)異步VI調(diào)用創(chuàng)建唯一的VI引用。如“等待異步調(diào)用”節(jié)點(diǎn)和“開(kāi)始異步調(diào)用節(jié)點(diǎn)”共享一個(gè)VI引用,則兩個(gè)節(jié)點(diǎn)就保證能指向同一個(gè)VI實(shí)例。該解決方案類(lèi)似于從唯一的VI引用的調(diào)用中收集結(jié)果。

修改被調(diào)用VI,使其接收數(shù)字或字符串標(biāo)識(shí)符作為輸入,返回同樣的標(biāo)識(shí)符作為輸出。異步調(diào)用VI時(shí),將傳遞至“開(kāi)始異步調(diào)用”節(jié)點(diǎn)的標(biāo)識(shí)符與“等待異步調(diào)用”節(jié)點(diǎn)返回的標(biāo)識(shí)符相比較。如二者一致,就可確定“等待異步調(diào)用”節(jié)點(diǎn)返回的是哪一個(gè)調(diào)用。

上文中提到的例子和資料,均在word中的附件里,可點(diǎn)擊下載。

????需要說(shuō)明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開(kāi),其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤(pán)上。這不是圖片,各位小伙伴看到后嘗試一下,這個(gè)問(wèn)題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開(kāi)發(fā)等相關(guān)項(xiàng)目問(wèn)題,可聯(lián)系我們。

?

總結(jié)

以上是生活随笔為你收集整理的LabVIEW异步调用VI的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。