ActorFrameWork系列教程來到了第二期,大家還記得什么是對象什么是類嗎?還沒有學習過第一期或者忘記了的同學們,請看往期教程回顧學習一下吧!
本文教程:
在LabVIEW中創建Actor Framework的抽象消息及接口
一、為什么要用到抽象消息和接口?
一般情況下,我們在啟動界面使用“啟動根操作者”啟動根操作者,然后在根操作者和其他操作者的適當位置用“啟動嵌套操作者”來啟動其他操作者。就好比一個用戶登錄程序,其根操作者即為Controller,用以控制整體程序的邏輯,它的嵌套操作者可分為:用戶操作界面的VIEW;登錄判斷模塊、用戶管理模塊等Model。這就是所謂的MVC框架,MVC框架的更多內容在后續給大家詳細講解。
上一期我們學會了在同一個操作者中進行消息的傳輸和接收,但在嵌套操作者之間是怎么互相傳消息的呢?對于一個嵌套于跟操作者之下的嵌套操作者,要如何傳消息給根操作者呢?用俗話說,就是小兵要怎么一層層地把前線戰報傳給將軍呢? 接下來本文以NestActor表示嵌套操作者,是被調用的關系。以Root Actor為根操作者,是調用的關系。 由于面向對象需要降低耦合性,那么基于類的操作者也需要考慮如何降低耦合性。當Nest Actor給Root Actor發送消息時,需要調用Root Actor的消息類的Send ***.vi,這就導致了Nest Actor依賴于Root Actor。為了解除這種依賴關系,我們需要對Root Actor和NestActor解耦。這時候我們就需要用到抽象消息或者接口來進行Nest Actor對Root Actor的消息傳輸。
二、 如何創建抽象消息前面我們得知了嵌套操作者傳送消息的方式是抽象消息,那么接下來,小編將手把手教你如何在LavVIEW中創建抽象消息。
1. 創建Actor
創建兩個Actor,分別命名為Root Actor和Nest Actor。
2. 創建抽象消息
在項目資源管理器中右鍵Nest Actor.lvclass → ActorFramework → Create Abstract Message for Caller,輸入消息名稱為New Data,放置一個字符串控件,命名為String Data,點擊Create Message。這時Nest Actor.lvclass的屬性中將新增一個New Data Msg類,用來指定由哪個消息來執行。為這個New Data Msg類創建寫入的方法。
3. 為Root Actor創建一個靜態方法
為Root Actor創建一個靜態方法作為消息執行方法,命名為Update Data.vi。并在前面板放置字符串控件,命名為String Data,并配置接線端。在程序框圖中將String Data連接到單按鈕對話框。
4. 繼承抽象消息
在項目資源管理器中右鍵Update Data.vi→ Actor Framework→Create Child of Abstract Message,選擇Nest Actor的New Data Msg.lvclassx消息類。
5. 重寫Root的Actor Core
為Root Actor重寫Actor Core.vi。在Actor Core.vi中將Root Actor的Update Data Msg.lvclass寫入Nest Actor.lvclass的屬性中,并通過Launch Nested Actor.vi啟用為Root Actor的嵌套操作者。
6. 發送抽象消息
為Nest Actor創建一個靜態方法Write New String Data.vi發送String Data,如下圖所示,將Hello以New Data類型的抽象消息傳送給調用方。
7.重寫Nest Actor的Actor Core
重寫Nest Actor的 Actor Core.vi調用Write New String Data.vi。
8. Launch根操作者
創建一個Launch.vi啟用Root Actor。
啟動Launch后,可以看見彈窗“Hello”。此時一個包含著信息“Hello”的抽象消息就從Nest Actor傳送給了它的調用方Root Actor。
三、如何創建接口
LabVIEW2020以上版本支持利用接口在嵌套操作者之間傳送消息,接口的使用方法比抽象消息要簡單得多。接下來LabVIEW版本足夠的小伙伴們,我們一起來嘗試創建接口吧!
1. 創建Actor
創建兩個Actor,分別命名為Root Actor和Nest Actor。
2. 創建接口
在Nest Actor創建一個接口,命名為Nest Msg Interface.lvclass。
3. 為接口創建動態方法
為Nest Msg Interface.lvclass創建一個動態方法New Data.vi,前面板添加字符串控件String Data,并為該方法創建一個消息。
4.繼承接口
設置Root Actor.lvclass繼承接口Nest Msg Interface.lvclass,并重寫New Data.vi。
5. 重寫接口方法
Root Actor.lvclass重寫Nest Msg Interface.lvclass的New Data.vi方法。
6. 重寫Root Actor的Actor Core
為Root Actor重寫Actor Core.vi。在Actor Core.vi中通過Launch Nested Actor.vi啟用Nest Actor為Root Actor的嵌套操作者。
7. 重寫NestActor的Actor Core
為Nest Actor創建一個靜態方法Write New String Data.vi發送String Data,并重寫 Actor Core.vi調用Write New String Data.vi。
8.Launch 根操作者
創建一個Launch.vi啟用Root Actor。
我們可以看到Hello的彈窗也出現了,通過接口也可以實現嵌套操作者向調用方傳送消息。
怎么樣,接口的使用方法是不是比抽象消息方便呢?而且改變接口的方法只需要修改Root Actor的重寫方法就可以了,而不是像抽象消息那樣需要把消息刪除后重新創建消息。
以上就是如何在LabVIEW中為ActorFramework創建抽象消息和接口的方法,如果想要進一步了解抽象的類和對象是如何通過ActorFramework來實現的話,敬請期待接下來關于ActorFramework的一系列技術分享。
審核編輯 :李倩
-
接口
+關注
關注
33文章
8718瀏覽量
152019 -
LabVIEW
+關注
關注
1977文章
3657瀏覽量
325926 -
華穗科技
+關注
關注
1文章
12瀏覽量
124
原文標題:教程 | ActorFramework的抽象消息和接口
文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
VGA接口在現代設備中的應用
在微機中io接口位于什么之間
嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O
飛凌嵌入式ElfBoard ELF 1板卡-Linux C接口編程入門之文件I/O
labview生成應用程序怎么包括userlist
labview中如何實現字符串選擇輸出
如何在SQL中創建觸發器
如何在Draftsman中創建PCB制造圖紙
![如何在Draftsman<b class='flag-5'>中</b><b class='flag-5'>創建</b>PCB制造圖紙](https://file1.elecfans.com/web2/M00/FC/B5/wKgZomaVzYWASXeSAAIGDcKske8405.png)
評論