自學(xué)LabVIEW的Actor FrameWork的消息與抽象消息的時(shí)候肯定會(huì)覺(jué)得非常模糊。小編將給大家?guī)?lái)一個(gè)有關(guān)抽象消息的教程,分為上下兩期,本期將帶領(lǐng)大家創(chuàng)建Actor中的方法并為方法創(chuàng)建對(duì)應(yīng)的消息。
下面請(qǐng)跟隨小編一起來(lái)學(xué)習(xí)一下吧!
本文教程:
LabVIEW抽象消息
一、步驟: 1、初始項(xiàng)目解釋
初始項(xiàng)目中包含一個(gè)”對(duì)話場(chǎng)景.vi”以及兩個(gè)Actor(操作者)分別是:人物A、人物B。
對(duì)話場(chǎng)景.vi:該VI的前面板設(shè)有一個(gè)“關(guān)閉 Actor”按鈕,用于關(guān)閉已啟動(dòng)的 Actor。
在對(duì)話場(chǎng)景.vi的程序框圖中,編寫了啟動(dòng)和停止人物A的邏輯,包括關(guān)閉前面板和停止按鈕的響應(yīng)。
人物A擁有一個(gè)私有屬性,內(nèi)容為Actor Enqueuer(操作者隊(duì)列)。
同時(shí)人物A還繼承了Actor類的Actor Core,其中含有調(diào)用嵌套Actor的邏輯與將嵌套Actor隊(duì)列寫入私有屬性的邏輯。
2、創(chuàng)建一個(gè)方法并使用
創(chuàng)建方法
首先,我們需為人物 B 創(chuàng)建一個(gè)方法并使用該方法。具體步驟如下: 打開(kāi)項(xiàng)目中的 人物B.lvib。右擊人物B.lvclass,選擇New(新建)。在彈出的菜單中選擇 VI from Static Dispatch Template(創(chuàng)建靜態(tài)調(diào)用)。
此時(shí),LabVIEW會(huì)自動(dòng)彈出一個(gè)VI。按Ctrl+S保存該VI。
將保存路徑選擇為“人物B”下的Method文件夾,并將文件命名為“關(guān)燈”。
至此,我們已成功為“人物B”創(chuàng)建了一個(gè)“關(guān)燈”方法。為了使該方法更加直觀,我們可以在程序框圖中創(chuàng)建一個(gè)對(duì)話框,并在對(duì)話框上添加“人物B把燈關(guān)了”的文本。
在前面板中,按 Ctrl+E 進(jìn)入程序框圖,創(chuàng)建一個(gè)對(duì)話框函數(shù),保存后關(guān)閉該方法。
接下來(lái),我們需要為“人物 B”重寫一個(gè) Actor Core,并將其保存在“人物 B” 的 Override 文件夾下。具體步驟與創(chuàng)建靜態(tài)調(diào)用類似,但選擇的是 VI for Override(重寫 VI)。
在彈出的對(duì)話框中選擇“Actor Core”并單擊”O(jiān)K”。
此時(shí)同樣會(huì)跳出一個(gè)VI,請(qǐng)直接保存在Override文件夾下。由于 Actor Core 是重寫父類(Actor)的方法,因此不要更改名稱。
現(xiàn)在,所有準(zhǔn)備工作已經(jīng)完成,讓我們調(diào)用這個(gè)方法。
進(jìn)入”人物B”的Actor Core程序框圖,將剛剛創(chuàng)建的”關(guān)燈.vi”拖入Actor Core,并連接。
完成后,運(yùn)行 對(duì)話場(chǎng)景.vi 以查看效果。我們的對(duì)話框應(yīng)能順利彈出。
PS:當(dāng)我們的Actor被Launch的時(shí)候會(huì)去執(zhí)行Actor Core,因此我們先將方法放在人物B的Actor Core中,當(dāng)人物B被人物A Launch的時(shí)“關(guān)燈”Method就會(huì)被執(zhí)行。
3、對(duì)方法創(chuàng)建消息并使用
在理解了方法的創(chuàng)建與使用之后,我們接下來(lái)學(xué)習(xí)如何為 Actor 的方法創(chuàng)建消息以及如何使用這些消息。
首先,我們先為”關(guān)燈.vi”創(chuàng)建一個(gè)消息,右擊“關(guān)燈Msg.lvclass”,選擇Actor Framework,然后選擇Create Message(創(chuàng)建消息)。
LabVIEW腳本自動(dòng)執(zhí)行完畢后,我們會(huì)發(fā)現(xiàn)”人物B”下多了一個(gè)”關(guān)燈Msg.lvclass”(關(guān)燈消息類)。該類包含兩個(gè)VI“Send關(guān)燈.vi”以及“Do.vi”。
其中”Do.vi”調(diào)用了”關(guān)燈.vi”,還在外層加了一些查找子類的邏輯。當(dāng)我們的Method擁有一些輸入接線柱的時(shí)候,OBJ還會(huì)解綁一些數(shù)據(jù)連接至”關(guān)燈.vi”(這里沒(méi)有,后面會(huì)有)。
而”Send關(guān)燈.vi”則是將“關(guān)燈Msg.lvclass”入隊(duì),并在Actor Core中出隊(duì)(紅圈的部分)并調(diào)用”Do.vi”。
打開(kāi)“人物B”的 Actor Core。刪除之前在程序框圖上放置的“關(guān)燈.vi”。通過(guò) Read Self Enqueuer 獲取“人物B”自己的消息隊(duì)列并進(jìn)行連接。
完成后,運(yùn)行“對(duì)話場(chǎng)景.vi”以查看效果。
我們的對(duì)話框應(yīng)能成功彈出。與上一節(jié)相同,我們將發(fā)送消息的邏輯放在 Actor Core 后面,以觀察現(xiàn)象和運(yùn)行結(jié)果。
4、直接使用方法與通過(guò)消息使用方法的區(qū)別
直接調(diào)用方法就和LabVIEW使用Class的方法是一致的,輸入的是類。
通過(guò)消息使用方法:通過(guò)將消息傳入Actor的隊(duì)列,然后通過(guò)Actor Core將“消息類”出隊(duì)列并執(zhí)行對(duì)應(yīng)的“Do.vi”達(dá)到調(diào)用方法的目的,輸入的是Actor的隊(duì)列。
以上就是LabVIEW抽象消息教程(上)的所有內(nèi)容啦,下一期將繼續(xù)介紹普通消息的調(diào)用和抽象消息。歡迎大家留言討論,交流分享!
以上內(nèi)容就是本期的全部?jī)?nèi)容,更多關(guān)于測(cè)試系統(tǒng)中的實(shí)際軟硬件應(yīng)用知識(shí),可關(guān)注本公眾號(hào)/下方合集,敬請(qǐng)期待!
對(duì)LabVIEW編程技巧和相關(guān)內(nèi)容感興趣的工程師們,歡迎持續(xù)關(guān)注、留言和點(diǎn)贊,也可以私信小編各位的技術(shù)困惑和技術(shù)需求,以獲取參加免費(fèi)線下培訓(xùn)和技術(shù)交流的機(jī)會(huì)哦。
-
LabVIEW
+關(guān)注
關(guān)注
1990文章
3668瀏覽量
331580 -
編程
+關(guān)注
關(guān)注
88文章
3673瀏覽量
94692
原文標(biāo)題:教程 | LabVIEW抽象消息使用教程(上)
文章出處:【微信號(hào):華穗科技,微信公眾號(hào):華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
看LabVIEW之父談?wù)撐磥?lái)LabVIEW的軟件架構(gòu)
硬件抽象層的設(shè)置
抽象工廠模式的創(chuàng)建
抽象接口不是通過(guò)底層模塊的來(lái)實(shí)現(xiàn)嗎
JAVA語(yǔ)言的抽象封裝與類
基于平臺(tái)抽象層的進(jìn)程虛擬機(jī)設(shè)計(jì)與實(shí)現(xiàn)
網(wǎng)絡(luò)講壇:LabVIEW Scripting(上)--lab
網(wǎng)絡(luò)講壇:面向?qū)ο蟮木幊?上)-labview視頻教程
LabVIEW上實(shí)現(xiàn)虛擬示波器_labview程序案例
LabVIEW上實(shí)現(xiàn)網(wǎng)絡(luò)通信_(tái)labview程序案例
在LabVIEW上實(shí)現(xiàn)網(wǎng)絡(luò)通信【集合】_程序案例
分析java接口和抽象類區(qū)別
通過(guò)抽象程序證明復(fù)雜具體程序

評(píng)論