0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教程|創(chuàng)建你的第一個(gè)Actor Framework

華穗科技 ? 來(lái)源:華穗科技 ? 2022-12-26 17:00 ? 次閱讀

你是否知道“對(duì)象”是什么? 當(dāng)然此對(duì)象非彼對(duì)象,對(duì)于計(jì)算機(jī)來(lái)說(shuō)對(duì)象是對(duì)客觀事物的抽象,類(lèi)是對(duì)對(duì)象的抽象。如此抽象的概念,在LabVIEW中以Actor Framework的形式來(lái)解決多線程的各種復(fù)雜問(wèn)題。 想要了解什么是Actor Model,具體的內(nèi)容請(qǐng)參照以前發(fā)表過(guò)的文章:

Actor Model --AgileT硬件模塊的管理員

本文小編將手把手教你如何在LabVIEW中創(chuàng)建你的第一個(gè)Actor Framework,跟著搭建并感受對(duì)象和類(lèi)的神奇吧!

本文教程

了解并在LabVIEW中創(chuàng)建Actor Framework

一、什么是模塊化設(shè)計(jì)?

95d7ead0-82bf-11ed-bfe3-dac502259ad0.png

以一個(gè)數(shù)據(jù)采集測(cè)試系統(tǒng)為例,我們?cè)O(shè)計(jì)程序的時(shí)候一般會(huì)將程序分為上圖中的高內(nèi)聚、低耦合的四個(gè)模塊,分別為:用戶界面模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)分析模塊、文件I/O模塊。 高內(nèi)聚是指每個(gè)模塊都有自己明確的功能,并且只負(fù)責(zé)一件工作。 低耦合是指模塊之間不互相依賴,每個(gè)模塊都可以不依賴其它模塊獨(dú)立運(yùn)行。 這四個(gè)模塊中有什么需要重復(fù)編寫(xiě)的相似代碼嗎? 狀態(tài)機(jī)框架、初始化、錯(cuò)誤處理等代碼都可以將其抽象,將這四個(gè)模塊進(jìn)行打散又重組。 是不是有些難以理解呢?沒(méi)關(guān)系,拿一個(gè)簡(jiǎn)單的例子來(lái)講解對(duì)象和類(lèi)的關(guān)系。

96029230-82bf-11ed-bfe3-dac502259ad0.png

如上圖所示是一個(gè)車(chē)輛的類(lèi)。無(wú)論是小汽車(chē)、跑車(chē)、大卡車(chē)、賽車(chē),都需要燃油來(lái)驅(qū)動(dòng)車(chē)輛運(yùn)行(當(dāng)然電動(dòng)的除外啦),也可以通過(guò)儀表盤(pán)來(lái)獲取剩余燃油、得知當(dāng)前車(chē)速。我們可以將所有能夠稱之為汽車(chē)的東西都看作擁有同一個(gè)父類(lèi),這個(gè)父類(lèi)擁有著屬性:燃油、最大速度等,也擁有著獲取燃油存量、獲取目前速度的方法。 那么如何把這些抽象出來(lái)的屬性和方法通過(guò)程序來(lái)實(shí)現(xiàn)呢?接下來(lái)我們先學(xué)習(xí)一些操作者框架的基本知識(shí),或許會(huì)有新的見(jiàn)解。

二、 操作者框架

操作者框架主要由操作者Actor和消息Message構(gòu)成: ·操作者(Actor):擁有數(shù)據(jù)狀態(tài)的模塊; ·消息(Message): 消息在操作者間傳遞用來(lái)觸發(fā)狀態(tài)改變。 操作者框架擁有著以下特點(diǎn): ·消息驅(qū)動(dòng)–Actor之間的消息通信是異步的,即使Actor在發(fā)送消息后也無(wú)需阻塞或者等待就能夠處理其他事情; ·強(qiáng)隔離性–Actor中的方法不能由外部直接調(diào)用,所有的一切都通過(guò)消息傳遞進(jìn)行的,從而避免了Actor之間的數(shù)據(jù)共享,想要觀察到另一個(gè)Actor的狀態(tài)變化只能通過(guò)消息傳遞進(jìn)行詢問(wèn); ·面向?qū)ο?a target="_blank">編程-由于采用LabVIEW Class編寫(xiě),可將面向?qū)ο缶幊趟枷脒\(yùn)用到LabVIEW編程中。

LabVIEW中操作者框架的核心就需要通過(guò)Launch Actor Core.vi來(lái)實(shí)現(xiàn)。

96222d52-82bf-11ed-bfe3-dac502259ad0.png

Actor Core為操作者框架的核心vi,該vi接收消息、執(zhí)行消息和錯(cuò)誤處理。 顯然,Actor Framework中的消息就是用來(lái)傳送消息并執(zhí)行方法的,而操作者中所包含的各種屬性就是類(lèi)的屬性。利用Actor Framework的操作者和消息就可以實(shí)現(xiàn)面向?qū)ο蟮木幊汤病?接下來(lái)跟著小編搭建一個(gè)簡(jiǎn)單的Actor,先了解一下如何構(gòu)建Actor Framework的架構(gòu)吧~

三、創(chuàng)建你的第一個(gè)Actor

作為操作者架構(gòu),必不可少的就是操作者和消息。所以先跟著小編嘗試搭建以消息為媒介的“Hello World”彈窗吧!

1. 創(chuàng)建Actor

新建一個(gè)LabVIEW空白項(xiàng)目,右鍵項(xiàng)目下My Computer ->New →Actor,彈出創(chuàng)建Actor面板,填寫(xiě)Actor名稱、選擇父類(lèi)、選擇保存路徑。

96507e64-82bf-11ed-bfe3-dac502259ad0.png

9671991e-82bf-11ed-bfe3-dac502259ad0.png

你可以在這個(gè)項(xiàng)目創(chuàng)建出的Actor下新建一些虛擬文件夾,用以存放不同類(lèi)型的方法。例如可重寫(xiě)方法Override、私有方法Private以及功能方法Method。

2. 創(chuàng)建靜態(tài)方法

在項(xiàng)目資源管理器中右鍵My First Actor.lvclass → New → VI from Static Dispatch Template創(chuàng)建靜態(tài)方法,保存命名為Pop Up.vi。并在前面板添加字符串控件,連接接線板;在程序框圖連接單按鈕對(duì)話框。

968dd354-82bf-11ed-bfe3-dac502259ad0.png

96b5618a-82bf-11ed-bfe3-dac502259ad0.png

3. 為靜態(tài)方法創(chuàng)建消息

在項(xiàng)目資源管理器中右鍵Pop Up.vi → Actor Framework → Create Message。等待消息創(chuàng)建完成后,展開(kāi)Messages for this Actor虛擬文件夾,可以看到消息創(chuàng)建完成。

96d5ce3e-82bf-11ed-bfe3-dac502259ad0.png

4. 發(fā)送消息

第一步,項(xiàng)目資源管理器中新建Launcher.vi;

第二步,在Launcher.vi程序框圖中添加Launch Root Actor.vi;

位置:程序框圖 → Data Communication → Actor Framework → Launch Root Actor.vi。

第三步,創(chuàng)建一個(gè)My First Actor.class實(shí)例,并連接到 Launch Root Actor.vi;

第四步,添加Send Pop Up.vi,并連接到Launch Root Actor.vi;

第五步,添加Send Normal Stop.vi;

位置:程序框圖 → Data Communication → Actor Framework → Send Normal Stop.vi;

第六步,為Send Pop Up.vi連接字符串常量輸入。

96fe5fac-82bf-11ed-bfe3-dac502259ad0.png

5. 啟動(dòng)程序

運(yùn)行Launcher.vi。可以看到“Hello World”已經(jīng)通過(guò)Actor的消息發(fā)送給了Send Pop Up.vi,而這個(gè)vi里實(shí)現(xiàn)的功能就是彈出一個(gè)對(duì)話框,并顯示發(fā)來(lái)的消息。

97148ba6-82bf-11ed-bfe3-dac502259ad0.jpg

以上就是如何在LabVIEW中構(gòu)建一個(gè)簡(jiǎn)單的Actor Framework的基本步驟啦,如果想要進(jìn)一步了解抽象的類(lèi)和對(duì)象是如何通過(guò)Actor Framework來(lái)實(shí)現(xiàn)的話,敬請(qǐng)期待接下來(lái)關(guān)于Actor Framework的一系列技術(shù)分享。

下一期我們將分享Actor Framework中抽象消息的運(yùn)用。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • LabVIEW
    +關(guān)注

    關(guān)注

    1971

    文章

    3654

    瀏覽量

    323567
  • 對(duì)象
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    17389
  • Actor Framework
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    1752

原文標(biāo)題:教程 | 創(chuàng)建你的第一個(gè)Actor Framework

文章出處:【微信號(hào):華穗科技,微信公眾號(hào):華穗科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [每周練]Actor Framework框架(1125-1201)

    。Creat Project里面就大不相同。當(dāng)時(shí)也創(chuàng)建Actor Framework,體驗(yàn)了下,感覺(jué)看不懂就漸漸淡忘了,也沒(méi)有注意這個(gè)框架的名字(因?yàn)椴涣私猓=衲暧?/div>
    發(fā)表于 11-25 00:04

    sushu---Actor Framework基本介紹

    開(kāi)始介紹Actor Framework。都在附件的PDF文檔中了,18頁(yè),想著也算詳細(xì)了。這個(gè)只是初步介紹。接下來(lái)帖子介紹點(diǎn)升級(jí)版的,更方便編程。軟件版本為:LV2014附件包含:AF的
    發(fā)表于 01-03 20:05

    sushu---Actor Framework種使用方式

    :2016-02-27------------------------------在未使用AF之前做了個(gè)ERP系統(tǒng),新建了個(gè)頂層類(lèi)ERP.lvclass.從13年就知曉
    發(fā)表于 02-28 20:40

    actor framework 學(xué)習(xí)

    本帖最后由 yingtn 于 2018-2-27 11:47 編輯 各位前輩:小弟在學(xué)習(xí) actor framework 時(shí)遇到了個(gè)問(wèn)題:在右擊類(lèi)新建時(shí)“重寫(xiě)的VI項(xiàng)”是灰色的
    發(fā)表于 02-27 11:44

    Actor Framework -- Test Sequence

    本帖最后由 shenjianym 于 2019-10-29 08:13 編輯 用Actor Framework框架寫(xiě)了個(gè)關(guān)于測(cè)試序列(生成隨機(jī)數(shù)并判斷)的程序。該程序使用的是L
    發(fā)表于 10-28 15:28

    LabVIEW Actor Framework學(xué)習(xí)之八皇后

    大家好,我是Richie,為什么把貼子給我刪除了呢,我再試試重新發(fā)次。本期重點(diǎn):以LabVIEW OOP為基礎(chǔ),使用AF(Actor Framework)框架來(lái)編寫(xiě)程序,對(duì)八皇后問(wèn)題進(jìn)行求解。歡迎
    發(fā)表于 05-30 20:08

    Actor Framework學(xué)習(xí)之路記錄【

    項(xiàng)目中的工作;2、掌握Actor Framework框架,將最近完成的個(gè)測(cè)試項(xiàng)目進(jìn)行重構(gòu);學(xué)習(xí)內(nèi)容:1、學(xué)習(xí)面向?qū)ο蟮幕A(chǔ)知識(shí):封裝、繼承、多態(tài)、組合2、學(xué)習(xí)Labview中的面向?qū)?/div>
    發(fā)表于 04-14 17:03

    榮小菜補(bǔ)鈣記第33期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)1

    寫(xiě)個(gè)小系列,基于LabVIEW Actor Framework來(lái)搭建個(gè)數(shù)據(jù)連續(xù)采集處理系統(tǒng),最終看看它能承受多大的數(shù)據(jù)量沖擊。本期先從基礎(chǔ)
    發(fā)表于 05-29 15:32

    榮小菜補(bǔ)鈣記第35期:基于LabVIEW Actor Framework的連續(xù)測(cè)量和記錄系統(tǒng)3

    講解嵌套操作者的消息上傳方式。1.簡(jiǎn)介上期我們介紹了創(chuàng)建調(diào)用者抽象消息的優(yōu)缺點(diǎn),并在總結(jié)部分說(shuō)明了缺點(diǎn)的規(guī)避方法。但是說(shuō)的比較籠統(tǒng),本期額外用個(gè)Demo來(lái)進(jìn)行專(zhuān)門(mén)演示說(shuō)明。下面先看
    發(fā)表于 06-08 18:59

    怎樣用CubeMX創(chuàng)建第一個(gè)project

    如何去安裝CubeMX?怎樣用CubeMX創(chuàng)建第一個(gè)project?
    發(fā)表于 09-28 06:15

    如何獲得第一個(gè)代幣

    加密貨幣長(zhǎng)期以來(lái)直是科技界的熱門(mén)詞匯。但比特幣是大多數(shù)人聽(tīng)說(shuō)過(guò)的第一種也是唯一一種貨幣,很少有人真正嘗試過(guò)使用它。人們普遍認(rèn)為,獲取和使用加密貨幣需要某種專(zhuān)業(yè)知識(shí)。在這篇文章中,我想打破這個(gè)神話,告訴如何獲得
    發(fā)表于 05-29 10:42 ?1244次閱讀

    單片機(jī)之創(chuàng)建第一個(gè)項(xiàng)目

    在這之前,我們已經(jīng)學(xué)過(guò)了部分的工程了,有了定的代碼解讀能力,那我們就要學(xué)會(huì)自己創(chuàng)建個(gè)屬于自己的項(xiàng)目了,然后實(shí)現(xiàn)更多新鮮的功能那我們就開(kāi)始創(chuàng)建
    發(fā)表于 11-21 15:36 ?9次下載
    單片機(jī)之<b class='flag-5'>創(chuàng)建</b><b class='flag-5'>第一個(gè)</b>項(xiàng)目

    制作第一個(gè)電路來(lái)學(xué)習(xí)焊接

    電子發(fā)燒友網(wǎng)站提供《制作第一個(gè)電路來(lái)學(xué)習(xí)焊接.zip》資料免費(fèi)下載
    發(fā)表于 08-01 10:30 ?2次下載
    制作<b class='flag-5'>你</b>的<b class='flag-5'>第一個(gè)</b>電路來(lái)學(xué)習(xí)焊接

    在LabVIEW中創(chuàng)建Actor Framework的抽象消息及接口

    由于面向?qū)ο笮枰档婉詈闲?,那么基于?lèi)的操作者也需要考慮如何降低耦合性。當(dāng)Nest Actor給Root Actor發(fā)送消息時(shí),需要調(diào)用Root Actor的消息類(lèi)的Send ***.vi,這就導(dǎo)致了Nest
    的頭像 發(fā)表于 09-23 10:51 ?7237次閱讀

    在LabVIEW中創(chuàng)建Actor Framework的同步消息

    首先,第一次使用Reply Msg時(shí),繼承關(guān)系中是沒(méi)有Reply Msg的,因?yàn)槟J(rèn)Reply Msg不包含在Actor Framework.lvlib中的,需要手動(dòng)添加。
    的頭像 發(fā)表于 11-04 10:33 ?4007次閱讀