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

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

3天内不再提示

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

倩倩 来源:华穗科技 作者:华穗科技 2022-09-23 10:51 次阅读

ActorFrameWork系列教程来到了第二期,大家还记得什么是对象什么是类吗?还没有学习过第一期或者忘记了的同学们,请看往期教程回顾学习一下吧!

本文教程:

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

一、为什么要用到抽象消息和接口?

一般情况下,我们在启动界面使用“启动根操作者”启动根操作者,然后在根操作者和其他操作者的适当位置用“启动嵌套操作者”来启动其他操作者。就好比一个用户登录程序,其根操作者即为Controller,用以控制整体程序的逻辑,它的嵌套操作者可分为:用户操作界面的VIEW;登录判断模块、用户管理模块等Model。这就是所谓的MVC框架,MVC框架的更多内容在后续给大家详细讲解。

306390fe-3ae5-11ed-9e49-dac502259ad0.png

上一期我们学会了在同一个操作者中进行消息的传输和接收,但在嵌套操作者之间是怎么互相传消息的呢?对于一个嵌套于跟操作者之下的嵌套操作者,要如何传消息给根操作者呢?用俗话说,就是小兵要怎么一层层地把前线战报传给将军呢? 接下来本文以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类创建写入的方法。

30c0a55a-3ae5-11ed-9e49-dac502259ad0.png

312c5368-3ae5-11ed-9e49-dac502259ad0.png

3. 为Root Actor创建一个静态方法

为Root Actor创建一个静态方法作为消息执行方法,命名为Update Data.vi。并在前面板放置字符串控件,命名为String Data,并配置接线端。在程序框图中将String Data连接到单按钮对话框。

3166eb4a-3ae5-11ed-9e49-dac502259ad0.png

3199b390-3ae5-11ed-9e49-dac502259ad0.png

4. 继承抽象消息

在项目资源管理器中右键Update Data.vi→ Actor Framework→Create Child of Abstract Message,选择Nest Actor的New Data Msg.lvclassx消息类。

31df1606-3ae5-11ed-9e49-dac502259ad0.png

320c8b22-3ae5-11ed-9e49-dac502259ad0.png

32476c88-3ae5-11ed-9e49-dac502259ad0.png

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的嵌套操作者。

3298df5a-3ae5-11ed-9e49-dac502259ad0.png

32c63234-3ae5-11ed-9e49-dac502259ad0.png

6. 发送抽象消息

为Nest Actor创建一个静态方法Write New String Data.vi发送String Data,如下图所示,将Hello以New Data类型的抽象消息传送给调用方。

32e35b2a-3ae5-11ed-9e49-dac502259ad0.png

7.重写Nest Actor的Actor Core

重写Nest Actor的 Actor Core.vi调用Write New String Data.vi。

33006972-3ae5-11ed-9e49-dac502259ad0.png

8. Launch根操作者

创建一个Launch.vi启用Root Actor。

33173f44-3ae5-11ed-9e49-dac502259ad0.png

启动Launch后,可以看见弹窗“Hello”。此时一个包含着信息“Hello”的抽象消息就从Nest Actor传送给了它的调用方Root Actor。

33382b5a-3ae5-11ed-9e49-dac502259ad0.png

三、如何创建接口

LabVIEW2020以上版本支持利用接口在嵌套操作者之间传送消息,接口的使用方法比抽象消息要简单得多。接下来LabVIEW版本足够的小伙伴们,我们一起来尝试创建接口吧!

1. 创建Actor

创建两个Actor,分别命名为Root Actor和Nest Actor。

2. 创建接口

在Nest Actor创建一个接口,命名为Nest Msg Interface.lvclass。

336c5060-3ae5-11ed-9e49-dac502259ad0.png

3. 为接口创建动态方法

为Nest Msg Interface.lvclass创建一个动态方法New Data.vi,前面板添加字符串控件String Data,并为该方法创建一个消息。

339f84f8-3ae5-11ed-9e49-dac502259ad0.png

4.继承接口

设置Root Actor.lvclass继承接口Nest Msg Interface.lvclass,并重写New Data.vi。

33ca1646-3ae5-11ed-9e49-dac502259ad0.png

5. 重写接口方法

Root Actor.lvclass重写Nest Msg Interface.lvclass的New Data.vi方法。

33f09514-3ae5-11ed-9e49-dac502259ad0.png

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。

34458808-3ae5-11ed-9e49-dac502259ad0.png

8.Launch 根操作者

创建一个Launch.vi启用Root Actor。

3466d148-3ae5-11ed-9e49-dac502259ad0.png

我们可以看到Hello的弹窗也出现了,通过接口也可以实现嵌套操作者向调用方传送消息。

怎么样,接口的使用方法是不是比抽象消息方便呢?而且改变接口的方法只需要修改Root Actor的重写方法就可以了,而不是像抽象消息那样需要把消息删除后重新创建消息。

以上就是如何在LabVIEW中为ActorFramework创建抽象消息和接口的方法,如果想要进一步了解抽象的类和对象是如何通过ActorFramework来实现的话,敬请期待接下来关于ActorFramework的一系列威廉希尔官方网站 分享。

审核编辑 :李倩

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

    关注

    33

    文章

    8633

    浏览量

    151366
  • LabVIEW
    +关注

    关注

    1974

    文章

    3656

    浏览量

    324241
  • 华穗科技
    +关注

    关注

    1

    文章

    12

    浏览量

    117

原文标题:教程 | ActorFramework的抽象消息和接口

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

收藏 人收藏

    评论

    相关推荐

    LabVIEW抽象消息使用教程(上)

    自学LabVIEWActor FrameWork的消息与抽象消息的时候肯定会觉得非常模糊。小编将给大家带来一个有关抽象消息的教程,分为上下
    的头像 发表于 01-03 14:22 137次阅读
    <b class='flag-5'>LabVIEW</b><b class='flag-5'>抽象</b>消息使用教程(上)

    labview创建DIAdem报表的具体方法

    求一份用labview创建DIAdem报表的具体方法
    发表于 11-27 14:31

    VGA接口现代设备的应用

    信号。这种模拟信号传输方式长距离传输时容易受到干扰,导致图像质量下降。尽管如此,VGA接口因其简单、成本低廉和兼容性好的特点,某些场合仍然被广泛使用。 2. VGA接口
    的头像 发表于 11-08 10:31 1053次阅读

    YOLOv6LabVIEW的推理部署(含源码)

    相关介绍文章,所以笔者实现YOLOv6 ONNX LabVIEW的部署推理后,决定和各位读者分享一下如何使用LabVIEW实现YOLO
    的头像 发表于 11-06 16:07 325次阅读
    YOLOv6<b class='flag-5'>在</b><b class='flag-5'>LabVIEW</b><b class='flag-5'>中</b>的推理部署(含源码)

    微机io接口位于什么之间

    I/O接口(输入/输出接口)是计算机硬件系统的重要组成部分,它连接了计算机的内部组件和外部设备。微机(微型计算机),I/O
    的头像 发表于 10-14 14:03 653次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-Linux C接口编程入门之文件I/O

    了操作系统的设计和管理,提供了一种统一的抽象模型,使得应用程序可以使用相同的方法和工具来处理各种文件和资源。Linux,不仅普通文件(如文本文件、图像文件等)被视为文件,还有其他类型的实体也被当作
    发表于 10-09 15:38

    labview生成应用程序怎么包括userlist

    1. 准备工作 开始之前,确保你已经安装了LabVIEW,并且熟悉基本的LabVIEW编程概念。 2. 创建用户界面 2.1 设计界面 打开Lab
    的头像 发表于 09-04 17:28 518次阅读

    labview如何实现字符串换行

    1. 字符串换行的基本概念 LabVIEW,字符串换行通常指的是字符串插入换行符,使得字符串
    的头像 发表于 09-04 15:47 1795次阅读

    labview如何实现字符串选择输出

    LabVIEW实现字符串选择输出是一项常见的任务,它涉及到字符串处理、条件判断和用户界面设计等多个方面。由于LabVIEW是一种图形化编程语言,其编程方式与传统的文本编程语言有所不
    的头像 发表于 09-04 15:44 979次阅读

    labview实现DBC界面加载配置

    labview实现DBC界面加载配置
    发表于 08-19 14:27 27次下载

    如何在Draftsman创建PCB制造图纸

    制作PCB的过程,绘制面板制造图纸是不可或缺的一步。单个PCB的制造图纸只显示单个PCB的钻孔和板特征,但这些需要合并到整个面板的一张图纸。根据不同公司或制造商的具体需求,一些设计团队需要接手
    的头像 发表于 07-16 09:30 603次阅读
    如何在Draftsman<b class='flag-5'>中</b><b class='flag-5'>创建</b>PCB制造图纸

    Framework获1800万美元融资,将拓展电子产品领域

    自种子轮起,框架已累计获得900万美元(约合人民币6525万元)投资,主要用于FrameWork 13的研发。2022年,该公司再次获得1800万美元(约合人民币1.3亿元)A轮融资,用于推进FrameWork 16项目。
    的头像 发表于 04-24 15:28 371次阅读

    labview 创建mysql 表时 设置时间 怎么mysql是格式是date 而不是datetime?

    选择 时间日期 但是mysql是date而不是datetime类型 ,除了sql语句创建表 ,怎么能实现创建数据为datetime类
    发表于 02-04 09:46

    FreeRTOS如何删除clib支持和抽象rtos?

    我目前我的项目中使用FreeRTOS,但只使用了其最少的功能。 我需要删除 clib 支持和抽象 rtos,只保留 FreeRTOS。 这是为了实现更轻的应用程序并最大限度地减少依赖关系。 我怎么能那样做?
    发表于 01-25 06:19

    微软Fluid Framework 2.0开启公测 将于今夏正式发布

    据了解,Fluid Framework 2.0的主要创新点在于引入了新的数据结构SharedTree Distributed Data Structure(简称DDS)。这种威廉希尔官方网站 突破性的设计,旨在通过简化的接口方式,让开发者更加方便地理解和运用共享、同步和分布式的数据。
    的头像 发表于 01-11 11:26 539次阅读