0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

求一种Actor Framework中MVC架构的子面板设计方案

华穗科技 来源:华穗科技 2023-02-06 09:20 次阅读

一、什么是子面板?

子面板是LabVIEW中的一种容器类型控件,借助这个控件可以在当前VI前面板上动态加载并运行另一个VI的前面板。它和选项卡类似,但又不同于选项卡控件,如子面板控件没有选项卡控件的页选择器,一次只能显示一个页面,但它可以在内存中动态加载已运行的子程序,且一个在内存中被加载的子程序(模板程序)可以被多个子面板控件同时加载运行。

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

如上图所示,子面板的使用方法其实就是主界面先获取到各子界面的VI引用,然后利用子面板插入子界面的VI前面板。这样一来主界面不仅可以用来响应所有用户操作,还能显示各个子界面状态,并且各个子界面是相互独立的,可以划分为不同的模块进行开发。

二、为什么用子面板?

在MVC架构中使用子面板主要有以下两点原因:

1、使用子面板可以实现主面板程序与子面板程序的分离编写,便于大型软件、复杂软件的多人协作分工完成,符合AF架构模块化和多人协作的编程思路;

2、MVC架构中规定要把所有和界面显示相关的工作都放到View中实现,这就注定了View必须处理所有的界面,但是各个子界面其实都在它本身所在的Actor中,这就需要将各个Actor中的界面传到View中结合子面板进行处理。

三、设计实现

1、创建操作者

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

如上图所示,该项目创建了一个Control,一个View,三个Module。其中View是主界面,用来做所有和界面显示相关的工作;三个Module分别是实现不同功能的模块,并且它们都拥有自己的界面;而Control是根操作者,也是整个项目的控制器,用来控制界面显示和各模块功能执行。

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

如上图所示,该UML图展示了这些操作者之间的逻辑关系。Control作为根操作者,嵌套调用了三个Module和一个View。嵌套操作者给根操作者发送消息使用接口(发送方只需要向接口中写消息,而接收方只要继承接口就可以通过实例化接口消息以实现消息的传递,这样做可以消除消息发送方和接收方的耦合关系)。每个操作者都拥有自己的一些私有属性和方法,感兴趣的小伙伴们可以阅读UML图并结合源代码了解此项目的设计功能。

2、Module功能设计

操作者“M-Hello Word”实现显示“Hello Word”并不断变换文本颜色。

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

操作者“M-LED闪烁”实现LED灯的颜色变换。

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

操作者“M-波形显示”实现波形图表显示随机数。

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

每个Actor的功能都在自己的Actor中独立实现,不依赖于其他模块。

3、使用接口消息传递VI引用

三个Module分别使用接口消息给Control发送自己Actor Core的VI引用,Control接收到接口消息后立即将VI引用以消息的方式传递给View。

下图为某个Module的Actor Core,红色框部分代码就是当此操作者启动后使用接口消息给它的根操作者(Control)传递Actor Core VI引用。

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

下图为Control实例化(重写)接口消息的程序框图,可以看到Control将Module传递来的VI引用直接通过View的消息队列传递给了View,并且在传递消息的同时还告诉它这个VI引用来自于哪个Module。

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

下图为View从Control接收到传递VI引用的消息后,先判断这个VI引用属于哪个子界面,然后分别将各个子界面的VI引用放到自己的私有属性中,方便后续使用子面板切换操作子界面。

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

4、View主界面设计

如下图所示,先看前面板,主界面由一个树形控件和一个子面板控件组成,设计功能为通过选定树形控件来控制子面板切换显示不同的子界面。再看程序框图,当发生树形控件值改变事件时给自己发送一个消息,去执行对应的“切换子面板”功能代码。

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

“切换子面板”功能代码如下图所示,在使用子面板插入VI时需要注意在插入前先删除当前子面板上的VI界面,然后再插入新的VI界面。该VI根据“树选择”的不同值选择插入不同Module的界面。

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

5、Control控制器设计

如下图所示,Control是根操作者,红色框图部分代码是它嵌套调用了其他操作者并且将View的消息队列存入自己的私有属性中,方便给View发送消息。

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







审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177803
  • LabVIEW
    +关注

    关注

    1970

    文章

    3654

    浏览量

    323305
  • UML
    UML
    +关注

    关注

    0

    文章

    122

    浏览量

    30858
  • MVC
    MVC
    +关注

    关注

    0

    文章

    73

    浏览量

    13852

原文标题:教程 | Actor Framework中MVC架构的子面板设计

文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    sushu---Actor Framework基本介绍

    练]Actor Framework框架(1125-1201)2016-02-28 20:15:20新写的篇帖子:sushu---Actor Fra
    发表于 01-03 20:05

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

    -----------------------sushu---LabVIEW基本介绍--------------------------------------正贴-----------------------这里仅仅是介绍了一种Actor
    发表于 02-28 20:40

    actor framework 学习

    本帖最后由 yingtn 于 2018-2-27 11:47 编辑 各位前辈:小弟在学习 actor framework 时遇到了个问题:在右击类新建时“重写的VI项”是灰色的,不可选 ,求教?我用的是 labview
    发表于 02-27 11:44

    Actor Framework的定时结构 (LabVIEW的定时结构详解----终)

    了两个方案实现Actor Framework的定时结构1.使用上定时类,做定时结构,这个
    发表于 06-26 01:18

    Actor Framework -- Test Sequence

    本帖最后由 shenjianym 于 2019-10-29 08:13 编辑 用Actor Framework框架写了个关于测试序列(生成随机数并判断)的程序。该程序使用的是LabVIEW2017版本,加2017版JKL
    发表于 10-28 15:28

    大神分享一种PPSM嵌入式RTOS的窗口系统设计方案

    大神分享一种PPSM嵌入式RTOS的窗口系统设计方案
    发表于 04-27 06:20

    一种智能物品清点系统的设计方案

    一种智能物品清点系统的设计方案
    发表于 05-20 07:29

    一种新型WCDMA直放站PA的设计方案

    一种新型WCDMA直放站PA的设计方案
    发表于 05-26 06:14

    大佬分享一种小型通信系统的设计方案

    大佬分享一种小型通信系统的设计方案
    发表于 05-28 06:13

    荣小菜补钙记第33期:基于LabVIEW Actor Framework的连续测量和记录系统1

    写个小系列,基于LabVIEW Actor Framework来搭建个数据连续采集处理系统,最终看看它能承受多大的数据量冲击。本期先从基础点的开始讲,毕竟整个系统涉及执行速度优化、
    发表于 05-29 15:32

    荣小菜补钙记第40期:基于LabVIEW Actor Framework的连续测量和记录系统4

    Hadle我们使用该函数更新项目树,程序很简单,就是清空项目树后按名称重新添加项。通过Glyph Index我们可以选择各种项目符号,我这里默认设为5。 项目树更新5.面板更新最后介绍
    发表于 07-17 12:06

    一种基于openmv竞速小车的设计方案

    一种基于openmv竞速小车的设计方案
    发表于 03-01 07:16

    在LabVIEW创建Actor Framework的同步消息

    首先,第次使用Reply Msg时,继承关系是没有Reply Msg的,因为默认Reply Msg不包含在Actor Framework.lvlib
    的头像 发表于 11-04 10:33 3988次阅读

    教程|基于Actor FrameworkMVC设计实现

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
    的头像 发表于 12-26 16:48 3904次阅读

    教程|创建你的第Actor Framework

    本文小编将手把手教你如何在LabVIEW创建你的第Actor Framework,跟着搭建并感受对象和类的神奇吧!
    的头像 发表于 12-26 17:00 3604次阅读