日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

LabVIEW編程技巧:如何實(shí)現(xiàn)子程序前面板的動(dòng)態(tài)加載動(dòng)態(tài)加載、運(yùn)行、顯示及值交互

 lgk88888 2019-03-19

問題提出

在使用LabVIEW軟件編寫大型測(cè)試軟件時(shí),對(duì)于某些子程序,考慮到程序執(zhí)行效率及前面板大小有限等因素,有時(shí)需要在主程序中動(dòng)態(tài)加載運(yùn)行并顯示其前面板,同時(shí)也要實(shí)現(xiàn)主程序與子程序控件之間的值交互,如主程序能夠讀取或修改子程序前面板中某個(gè)控件的值。

那么,如何在LabVIEW平臺(tái)中實(shí)現(xiàn)這種目的呢?實(shí)際上,這兒可以分解為下面兩個(gè)問題:

1. 如何在主程序中動(dòng)態(tài)加載調(diào)用子程序面板?

2. 如何動(dòng)態(tài)設(shè)置(修改)或獲取子程序面板中控件的值?

對(duì)于第1個(gè)問題,在主程序中可以通過子面板控件動(dòng)態(tài)加載調(diào)用子程序。

對(duì)于第2個(gè)問題,通過子程序中控件的名稱可獲取控件的引用,進(jìn)而修改或獲取該控件的值。

對(duì)于上面兩個(gè)問題,下面通過一個(gè)簡(jiǎn)單的例子給出LabVIEW中的解決方法。

實(shí)例說明

該例運(yùn)行前面板如下圖所示,主界面區(qū)域分割成了左右兩部分,右半部分功能是使用子面板控件動(dòng)態(tài)加載并顯示名為“參數(shù)子面板.vi”的子程序前面板,該面板上包含了三個(gè)控件,分別為“控件1”、“控件2”和“控件3”三個(gè)數(shù)值控件;左邊部分功能是通過控件名稱用以讀取或修改子面板上這三個(gè)控件的值。

038-1

程序框圖實(shí)現(xiàn)方法

其程序框圖使用包含2幀的順序結(jié)構(gòu),第1幀目的是在子面板中動(dòng)態(tài)加載運(yùn)行子程序并顯示其前面板,第2幀目的是讀或?qū)懽用姘迥硞€(gè)控件的值。

1幀代碼如下圖所示,在子面板中動(dòng)態(tài)加載子程序前面板并顯示時(shí),分別使用了VI的調(diào)用節(jié)點(diǎn)函數(shù)“Run VI”和子面板的調(diào)用節(jié)點(diǎn)函數(shù)“Insert VI”。另外,該幀中,也將打開的子程序的VI引用通過順序結(jié)構(gòu)的局部變量傳遞給了下一幀。

038-2

在第2幀中使用了事件結(jié)構(gòu),主要完成通過子程序中控件的名稱設(shè)置或獲取某個(gè)參數(shù)的值,代碼如下圖所示:

038-3

2幀中實(shí)現(xiàn)的關(guān)鍵技術(shù)是怎樣得到子程序中被修改控件的引用,為此,本例單獨(dú)寫了一個(gè)子程序,對(duì)應(yīng)上圖中紅色矩形框內(nèi)的圖標(biāo),其實(shí)現(xiàn)代碼如下圖所示。該子程序包含2個(gè)輸入?yún)?shù)ControlNameVIRef,即控件的名稱和其所在的VI引用,1個(gè)輸出參數(shù)“ControlRef”,即根據(jù)名稱查找到的控件的引用。其原理是通過VI的引用得到當(dāng)前VI的面板引用,由面板引用得到當(dāng)前面板上所有控件的引用,然后由控件引用得到每個(gè)控件的名稱,然后在While循環(huán)中逐一與被查找的控件名稱比較,與其相等即為查找到的控件的引用。

在第2幀框圖程序中,得到被設(shè)置或獲取的控件引用后,就可以利用控件的“值”屬性對(duì)其進(jìn)行修改或讀取了。

需要說明的是,這兒得到的控件引用是一個(gè)通用型的引用,在直接使用其“值”屬性時(shí),由于該類型的引用對(duì)應(yīng)的值屬性可能是數(shù)值型的值、布爾型的值或路徑型的值等等,程序本身是無法判斷的,所有對(duì)其“值”屬性讀或?qū)憰r(shí),其輸出或輸入?yún)?shù)都是變體類型的變量。如下圖所示,當(dāng)設(shè)置其值時(shí)(左圖),可以將前面板上的“參數(shù)值”控件的值直接輸入到屬性節(jié)點(diǎn),LabVIEW內(nèi)部自動(dòng)可以將任意的數(shù)據(jù)類型轉(zhuǎn)換為變體類型。但當(dāng)獲取其值時(shí)(右圖),由于其變體類型可以表示任意類型的數(shù)據(jù),需要開發(fā)者顯式的通過“變體至數(shù)據(jù)類型轉(zhuǎn)換”函數(shù)將變體類型的值轉(zhuǎn)換已知類型的值。對(duì)于本例,需將變體類型轉(zhuǎn)換為“雙精度”類型的變量。

038-4

總結(jié)

本文通過一個(gè)具體的例子,詳細(xì)演示了如何在LabVIEW平臺(tái)中實(shí)現(xiàn)子程序前面板的動(dòng)態(tài)加載及主/子程序間控件值的交互功能。通過這個(gè)例子學(xué)到的編程知識(shí)點(diǎn)包括:子面板的使用方法,屬性節(jié)點(diǎn)的使用方法、變體類型的使用等。

如果你覺得這篇文章對(duì)你有用的話,關(guān)注+收藏+點(diǎn)贊吧。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多