<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

教程|創建你的第一個Actor Framework

華穗科技 ? 來源:華穗科技 ? 2022-12-26 17:00 ? 次閱讀

你是否知道“對象”是什么? 當然此對象非彼對象,對于計算機來說對象是對客觀事物的抽象,類是對對象的抽象。如此抽象的概念,在LabVIEW中以Actor Framework的形式來解決多線程的各種復雜問題。 想要了解什么是Actor Model,具體的內容請參照以前發表過的文章:

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

本文小編將手把手教你如何在LabVIEW中創建你的第一個Actor Framework,跟著搭建并感受對象和類的神奇吧!

本文教程

了解并在LabVIEW中創建Actor Framework

一、什么是模塊化設計?

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

以一個數據采集測試系統為例,我們設計程序的時候一般會將程序分為上圖中的高內聚、低耦合的四個模塊,分別為:用戶界面模塊、數據采集模塊、數據分析模塊、文件I/O模塊。 高內聚是指每個模塊都有自己明確的功能,并且只負責一件工作。 低耦合是指模塊之間不互相依賴,每個模塊都可以不依賴其它模塊獨立運行。 這四個模塊中有什么需要重復編寫的相似代碼嗎? 狀態機框架、初始化、錯誤處理等代碼都可以將其抽象,將這四個模塊進行打散又重組。 是不是有些難以理解呢?沒關系,拿一個簡單的例子來講解對象和類的關系。

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

如上圖所示是一個車輛的類。無論是小汽車、跑車、大卡車、賽車,都需要燃油來驅動車輛運行(當然電動的除外啦),也可以通過儀表盤來獲取剩余燃油、得知當前車速。我們可以將所有能夠稱之為汽車的東西都看作擁有同一個父類,這個父類擁有著屬性:燃油、最大速度等,也擁有著獲取燃油存量、獲取目前速度的方法。 那么如何把這些抽象出來的屬性和方法通過程序來實現呢?接下來我們先學習一些操作者框架的基本知識,或許會有新的見解。

二、 操作者框架

操作者框架主要由操作者Actor和消息Message構成: ·操作者(Actor):擁有數據狀態的模塊; ·消息(Message): 消息在操作者間傳遞用來觸發狀態改變。 操作者框架擁有著以下特點: ·消息驅動–Actor之間的消息通信是異步的,即使Actor在發送消息后也無需阻塞或者等待就能夠處理其他事情; ·強隔離性–Actor中的方法不能由外部直接調用,所有的一切都通過消息傳遞進行的,從而避免了Actor之間的數據共享,想要觀察到另一個Actor的狀態變化只能通過消息傳遞進行詢問; ·面向對象編程-由于采用LabVIEW Class編寫,可將面向對象編程思想運用到LabVIEW編程中。

LabVIEW中操作者框架的核心就需要通過Launch Actor Core.vi來實現。

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

Actor Core為操作者框架的核心vi,該vi接收消息、執行消息和錯誤處理。 顯然,Actor Framework中的消息就是用來傳送消息并執行方法的,而操作者中所包含的各種屬性就是類的屬性。利用Actor Framework的操作者和消息就可以實現面向對象的編程啦。 接下來跟著小編搭建一個簡單的Actor,先了解一下如何構建Actor Framework的架構吧~

三、創建你的第一個Actor

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

1. 創建Actor

新建一個LabVIEW空白項目,右鍵項目下My Computer ->New →Actor,彈出創建Actor面板,填寫Actor名稱、選擇父類、選擇保存路徑。

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

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

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

2. 創建靜態方法

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

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

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

3. 為靜態方法創建消息

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

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

4. 發送消息

第一步,項目資源管理器中新建Launcher.vi;

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

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

第三步,創建一個My First Actor.class實例,并連接到 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. 啟動程序

運行Launcher.vi??梢钥吹健癏ello World”已經通過Actor的消息發送給了Send Pop Up.vi,而這個vi里實現的功能就是彈出一個對話框,并顯示發來的消息。

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

以上就是如何在LabVIEW中構建一個簡單的Actor Framework的基本步驟啦,如果想要進一步了解抽象的類和對象是如何通過Actor Framework來實現的話,敬請期待接下來關于Actor Framework的一系列技術分享。

下一期我們將分享Actor Framework中抽象消息的運用。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • LabVIEW
    +關注

    關注

    1930

    文章

    3620

    瀏覽量

    318328
  • 對象
    +關注

    關注

    1

    文章

    38

    瀏覽量

    17302
  • Actor Framework
    +關注

    關注

    0

    文章

    2

    瀏覽量

    1729

原文標題:教程 | 創建你的第一個Actor Framework

文章出處:【微信號:華穗科技,微信公眾號:華穗科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

    。Creat Project里面就大不相同。當時也創建Actor Framework,體驗了下,感覺看不懂就漸漸淡忘了,也沒有注意這個框架的名字(因為不了解)。今年有
    發表于 11-25 00:04

    sushu---Actor Framework基本介紹

    開始介紹Actor Framework。都在附件的PDF文檔中了,18頁,想著也算詳細了。這個只是初步介紹。接下來帖子介紹點升級版的,更方便編程。軟件版本為:LV2014附件包含:AF的
    發表于 01-03 20:05

    sushu---Actor Framework種使用方式

    :2016-02-27------------------------------在未使用AF之前做了ERP系統,新建了頂層類ERP.lvclass.從13年就知曉
    發表于 02-28 20:40

    Labview Actor Framework 框架使用例子(反饋式蒸發器)

    global中的Fan A Fault 賦值。 其實Actor Framework的難點我覺得還是在類的關系處理上,就像這個項目中,類之間關系處理的很好(畢竟是NI的例子),希望想學這個框架的人可以好好看看這個項目,最好是自己跟著寫
    發表于 11-17 19:36

    actor framework 學習

    本帖最后由 yingtn 于 2018-2-27 11:47 編輯 各位前輩:小弟在學習 actor framework 時遇到了問題:在右擊類新建時“重寫的VI項”是灰色的
    發表于 02-27 11:44

    Actor Framework -- Test Sequence

    本帖最后由 shenjianym 于 2019-10-29 08:13 編輯 用Actor Framework框架寫了關于測試序列(生成隨機數并判斷)的程序。該程序使用的是L
    發表于 10-28 15:28

    LabVIEW Actor Framework學習之八皇后

    大家好,我是Richie,為什么把貼子給我刪除了呢,我再試試重新發次。本期重點:以LabVIEW OOP為基礎,使用AF(Actor Framework)框架來編寫程序,對八皇后問題進行求解。歡迎
    發表于 05-30 20:08

    Actor Framework學習之路記錄【

    項目中的工作;2、掌握Actor Framework框架,將最近完成的測試項目進行重構;學習內容:1、學習面向對象的基礎知識:封裝、繼承、多態、組合2、學習Labview中的面向對
    發表于 04-14 17:03

    榮小菜補鈣記第33期:基于LabVIEW Actor Framework的連續測量和記錄系統1

    寫個小系列,基于LabVIEW Actor Framework來搭建數據連續采集處理系統,最終看看它能承受多大的數據量沖擊。本期先從基礎
    發表于 05-29 15:32

    榮小菜補鈣記第35期:基于LabVIEW Actor Framework的連續測量和記錄系統3

    講解嵌套操作者的消息上傳方式。1.簡介上期我們介紹了創建調用者抽象消息的優缺點,并在總結部分說明了缺點的規避方法。但是說的比較籠統,本期額外用Demo來進行專門演示說明。下面先看
    發表于 06-08 18:59

    榮小菜補鈣記第42期:基于LabVIEW Actor Framework的連續測量和記錄系統6(Part1 End)

    ,代碼主要獲取調用方和本身的消息隊列,并創建用于停止Actor的Stop用戶事件(順利停止的關鍵)。很明顯,本Vi本質上是其它子Function用來繼承使用的。 PFA PreL
    發表于 08-15 09:49

    怎樣用CubeMX創建第一個project

    如何去安裝CubeMX?怎樣用CubeMX創建第一個project?
    發表于 09-28 06:15

    在LabVIEW中創建Actor Framework的抽象消息及接口

    由于面向對象需要降低耦合性,那么基于類的操作者也需要考慮如何降低耦合性。當Nest Actor給Root Actor發送消息時,需要調用Root Actor的消息類的Send ***.vi,這就導致了Nest
    的頭像 發表于 09-23 10:51 ?5674次閱讀

    在LabVIEW中創建Actor Framework的同步消息

    首先,第一次使用Reply Msg時,繼承關系中是沒有Reply Msg的,因為默認Reply Msg不包含在Actor Framework.lvlib中的,需要手動添加。
    的頭像 發表于 11-04 10:33 ?2977次閱讀

    基于Actor Framework仿真線性編碼器

    在學習LabView面向對象編程過程中,相信大家也都接觸到了Actor Framework。該框架于2010年NI Week首次公布,經過多年不斷迭代更新,逐漸成為LabVIEW中最為重要的并發開發框架。
    的頭像 發表于 12-22 10:15 ?380次閱讀
    基于<b class='flag-5'>Actor</b> <b class='flag-5'>Framework</b>仿真線性編碼器
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>