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

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

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

求一種Actor Framework中MVC架構(gòu)的子面板設(shè)計(jì)方案

華穗科技 ? 來源:華穗科技 ? 2023-02-06 09:20 ? 次閱讀

一、什么是子面板?

子面板是LabVIEW中的一種容器類型控件,借助這個(gè)控件可以在當(dāng)前VI前面板上動(dòng)態(tài)加載并運(yùn)行另一個(gè)VI的前面板。它和選項(xiàng)卡類似,但又不同于選項(xiàng)卡控件,如子面板控件沒有選項(xiàng)卡控件的頁選擇器,一次只能顯示一個(gè)頁面,但它可以在內(nèi)存中動(dòng)態(tài)加載已運(yùn)行的子程序,且一個(gè)在內(nèi)存中被加載的子程序(模板程序)可以被多個(gè)子面板控件同時(shí)加載運(yùn)行。

6c946e3c-a556-11ed-bfe3-dac502259ad0.png

如上圖所示,子面板的使用方法其實(shí)就是主界面先獲取到各子界面的VI引用,然后利用子面板插入子界面的VI前面板。這樣一來主界面不僅可以用來響應(yīng)所有用戶操作,還能顯示各個(gè)子界面狀態(tài),并且各個(gè)子界面是相互獨(dú)立的,可以劃分為不同的模塊進(jìn)行開發(fā)。

二、為什么用子面板?

在MVC架構(gòu)中使用子面板主要有以下兩點(diǎn)原因:

1、使用子面板可以實(shí)現(xiàn)主面板程序與子面板程序的分離編寫,便于大型軟件、復(fù)雜軟件的多人協(xié)作分工完成,符合AF架構(gòu)模塊化和多人協(xié)作的編程思路;

2、MVC架構(gòu)中規(guī)定要把所有和界面顯示相關(guān)的工作都放到View中實(shí)現(xiàn),這就注定了View必須處理所有的界面,但是各個(gè)子界面其實(shí)都在它本身所在的Actor中,這就需要將各個(gè)Actor中的界面?zhèn)鞯絍iew中結(jié)合子面板進(jìn)行處理。

三、設(shè)計(jì)實(shí)現(xiàn)

1、創(chuàng)建操作者

6cba43e6-a556-11ed-bfe3-dac502259ad0.png

如上圖所示,該項(xiàng)目創(chuàng)建了一個(gè)Control,一個(gè)View,三個(gè)Module。其中View是主界面,用來做所有和界面顯示相關(guān)的工作;三個(gè)Module分別是實(shí)現(xiàn)不同功能的模塊,并且它們都擁有自己的界面;而Control是根操作者,也是整個(gè)項(xiàng)目的控制器,用來控制界面顯示和各模塊功能執(zhí)行。

6cd77f24-a556-11ed-bfe3-dac502259ad0.png

如上圖所示,該UML圖展示了這些操作者之間的邏輯關(guān)系。Control作為根操作者,嵌套調(diào)用了三個(gè)Module和一個(gè)View。嵌套操作者給根操作者發(fā)送消息使用接口(發(fā)送方只需要向接口中寫消息,而接收方只要繼承接口就可以通過實(shí)例化接口消息以實(shí)現(xiàn)消息的傳遞,這樣做可以消除消息發(fā)送方和接收方的耦合關(guān)系)。每個(gè)操作者都擁有自己的一些私有屬性和方法,感興趣的小伙伴們可以閱讀UML圖并結(jié)合源代碼了解此項(xiàng)目的設(shè)計(jì)功能。

2、Module功能設(shè)計(jì)

操作者“M-Hello Word”實(shí)現(xiàn)顯示“Hello Word”并不斷變換文本顏色。

6cedee76-a556-11ed-bfe3-dac502259ad0.png

操作者“M-LED閃爍”實(shí)現(xiàn)LED燈的顏色變換。

6d035f5e-a556-11ed-bfe3-dac502259ad0.png

操作者“M-波形顯示”實(shí)現(xiàn)波形圖表顯示隨機(jī)數(shù)。

6d6f4a02-a556-11ed-bfe3-dac502259ad0.png

每個(gè)Actor的功能都在自己的Actor中獨(dú)立實(shí)現(xiàn),不依賴于其他模塊。

3、使用接口消息傳遞VI引用

三個(gè)Module分別使用接口消息給Control發(fā)送自己Actor Core的VI引用,Control接收到接口消息后立即將VI引用以消息的方式傳遞給View。

下圖為某個(gè)Module的Actor Core,紅色框部分代碼就是當(dāng)此操作者啟動(dòng)后使用接口消息給它的根操作者(Control)傳遞Actor Core VI引用。

6e0d9450-a556-11ed-bfe3-dac502259ad0.png

下圖為Control實(shí)例化(重寫)接口消息的程序框圖,可以看到Control將Module傳遞來的VI引用直接通過View的消息隊(duì)列傳遞給了View,并且在傳遞消息的同時(shí)還告訴它這個(gè)VI引用來自于哪個(gè)Module。

6e45aae8-a556-11ed-bfe3-dac502259ad0.png

下圖為View從Control接收到傳遞VI引用的消息后,先判斷這個(gè)VI引用屬于哪個(gè)子界面,然后分別將各個(gè)子界面的VI引用放到自己的私有屬性中,方便后續(xù)使用子面板切換操作子界面。

6e564d12-a556-11ed-bfe3-dac502259ad0.png

4、View主界面設(shè)計(jì)

如下圖所示,先看前面板,主界面由一個(gè)樹形控件和一個(gè)子面板控件組成,設(shè)計(jì)功能為通過選定樹形控件來控制子面板切換顯示不同的子界面。再看程序框圖,當(dāng)發(fā)生樹形控件值改變事件時(shí)給自己發(fā)送一個(gè)消息,去執(zhí)行對(duì)應(yīng)的“切換子面板”功能代碼。

6e698710-a556-11ed-bfe3-dac502259ad0.png

“切換子面板”功能代碼如下圖所示,在使用子面板插入VI時(shí)需要注意在插入前先刪除當(dāng)前子面板上的VI界面,然后再插入新的VI界面。該VI根據(jù)“樹選擇”的不同值選擇插入不同Module的界面。

6e9453c8-a556-11ed-bfe3-dac502259ad0.png6ec94ccc-a556-11ed-bfe3-dac502259ad0.png6ee105ba-a556-11ed-bfe3-dac502259ad0.png

5、Control控制器設(shè)計(jì)

如下圖所示,Control是根操作者,紅色框圖部分代碼是它嵌套調(diào)用了其他操作者并且將View的消息隊(duì)列存入自己的私有屬性中,方便給View發(fā)送消息。

6f164770-a556-11ed-bfe3-dac502259ad0.png ?







審核編輯:劉清

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

    關(guān)注

    112

    文章

    16045

    瀏覽量

    176812
  • LabVIEW
    +關(guān)注

    關(guān)注

    1959

    文章

    3651

    瀏覽量

    321621
  • UML
    UML
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

    30837
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13828

原文標(biāo)題:教程 | Actor Framework中MVC架構(gòu)的子面板設(shè)計(jì)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    sushu---Actor Framework基本介紹

    練]Actor Framework框架(1125-1201)2016-02-28 20:15:20新寫的篇帖子:sushu---Actor Fra
    發(fā)表于 01-03 20:05

    sushu---Actor Framework一種使用方式

    -----------------------sushu---LabVIEW基本介紹--------------------------------------正貼-----------------------這里僅僅是介紹了一種Actor
    發(fā)表于 02-28 20:40

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

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

    Actor Framework的定時(shí)結(jié)構(gòu) (LabVIEW的定時(shí)結(jié)構(gòu)詳解----終)

    了兩個(gè)方案實(shí)現(xiàn)Actor Framework的定時(shí)結(jié)構(gòu)1.使用上定時(shí)類,做定時(shí)結(jié)構(gòu),這個(gè)
    發(fā)表于 06-26 01:18

    Actor Framework -- Test Sequence

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

    大神分享一種PPSM嵌入式RTOS的窗口系統(tǒng)設(shè)計(jì)方案

    大神分享一種PPSM嵌入式RTOS的窗口系統(tǒng)設(shè)計(jì)方案
    發(fā)表于 04-27 06:20

    一種智能物品清點(diǎn)系統(tǒng)的設(shè)計(jì)方案

    一種智能物品清點(diǎn)系統(tǒng)的設(shè)計(jì)方案
    發(fā)表于 05-20 07:29

    一種新型WCDMA直放站PA的設(shè)計(jì)方案

    一種新型WCDMA直放站PA的設(shè)計(jì)方案
    發(fā)表于 05-26 06:14

    大佬分享一種小型通信系統(tǒng)的設(shè)計(jì)方案

    大佬分享一種小型通信系統(tǒng)的設(shè)計(jì)方案
    發(fā)表于 05-28 06:13

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

    寫個(gè)小系列,基于LabVIEW Actor Framework來搭建個(gè)數(shù)據(jù)連續(xù)采集處理系統(tǒng),最終看看它能承受多大的數(shù)據(jù)量沖擊。本期先從基礎(chǔ)點(diǎn)的開始講,畢竟整個(gè)系統(tǒng)涉及執(zhí)行速度優(yōu)化、
    發(fā)表于 05-29 15:32

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

    Hadle我們使用該函數(shù)更新項(xiàng)目樹,程序很簡(jiǎn)單,就是清空項(xiàng)目樹后按名稱重新添加項(xiàng)。通過Glyph Index我們可以選擇各種項(xiàng)目符號(hào),我這里默認(rèn)設(shè)為5。 項(xiàng)目樹更新5.面板更新最后介紹
    發(fā)表于 07-17 12:06

    一種基于openmv競(jìng)速小車的設(shè)計(jì)方案

    一種基于openmv競(jìng)速小車的設(shè)計(jì)方案
    發(fā)表于 03-01 07:16

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

    首先,第次使用Reply Msg時(shí),繼承關(guān)系是沒有Reply Msg的,因?yàn)槟J(rèn)Reply Msg不包含在Actor Framework.lvlib
    的頭像 發(fā)表于 11-04 10:33 ?3626次閱讀

    教程|基于Actor FrameworkMVC設(shè)計(jì)實(shí)現(xiàn)

    MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。
    的頭像 發(fā)表于 12-26 16:48 ?3674次閱讀

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

    本文小編將手把手教你如何在LabVIEW創(chuàng)建你的第個(gè)Actor Framework,跟著搭建并感受對(duì)象和類的神奇吧!
    的頭像 發(fā)表于 12-26 17:00 ?3402次閱讀