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

    文章

    7640

    浏览量

    148496
  • LabVIEW
    +关注

    关注

    1918

    文章

    3619

    浏览量

    316997
  • 华穗科技
    +关注

    关注

    1

    文章

    8

    浏览量

    46

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    基于Actor Framework仿真线性编码器

    在学习LabView面向对象编程过程中,相信大家也都接触到了Actor Framework。该框架于2010年NI Week首次公布,经过多年不断迭代更新,逐渐成为LabVIEW中最为
    的头像 发表于 12-22 10:15 285次阅读
    基于<b class='flag-5'>Actor</b> <b class='flag-5'>Framework</b>仿真线性编码器

    java抽象类可以有构造函数吗

    。在 Java 中,抽象类是一种不能直接实例化的类,它通常用作其他类的父类或接口的实现类。抽象类可以包含抽象方法和非抽象方法,
    的头像 发表于 11-21 10:23 368次阅读

    java抽象类可以有普通方法吗

    Java中的抽象类可以有普通方法,但它也可以有抽象方法。抽象类是一种中间状态,介于普通类和接口之间。它允许定义方法的具体实现,同时也可以定义一些没有具体实现的
    的头像 发表于 11-21 10:22 594次阅读

    如何理解java中的抽象

    Java中的抽象类是一种特殊的类,无法被实例化,只能被继承。它是一个中间层的类,位于具体类和接口之间,用于定义通用的属性和方法,并提供一些默认的实现。抽象类经常被用来作为其他类的基类,以提供一些通用
    的头像 发表于 11-21 10:16 278次阅读

    java接口是特殊的抽象类吗

    Java接口是一种特殊的抽象类吗? 在Java编程语言中,接口(interface)与抽象类(abstract class)是两种不同的概念,尽管它们之间存在一些相似之处,但在设计和使
    的头像 发表于 11-21 10:07 271次阅读

    抽象类可以实现接口

    抽象类是一种特殊的类,在面向对象编程中起到了很重要的作用。同时,接口也是面向对象编程中的一个重要概念,用于定义类的契约和行为。抽象类和接口的设计和使用有很多相似之处,但也有一些区别。在
    的头像 发表于 11-21 09:49 446次阅读

    Java中抽象类和接口的介绍

    Java是一种面向对象的编程语言,提供了抽象类和接口两种机制来帮助开发人员组织和管理代码。本文将详细介绍Java语言中抽象类和接口的概念、特点、使用方式以及它们之间的区别和联系。
    的头像 发表于 11-21 09:47 226次阅读

    java接口抽象类的区别

    Java中的接口(Interface)和抽象类(Abstract class)都是抽象的概念,它们可以用来定义类的行为和特征。虽然它们具有一些相似之处,但也存在一些重要的区别。本文将详尽介绍Java
    的头像 发表于 11-21 09:45 279次阅读

    Actor Frame Work 学习笔记分享

    的几个项目中,体会到了两个架构的好处,和灵活性。编程水平得到了一点点质的提升。 将学习笔记无私分享,希望labview的学习环境越来越好。有一起学习的伙伴也可留言讨论。 文章的最后部分,本人根据
    发表于 11-10 13:03

    framework框架流程 模块绑定

    framework初始化流程图如下: module对外接口 在scp代码中,所有的功能都由一个个模块提供。每个模块以api枚举及其结构体的方式对外提供该模块的功能,并在模块通用结构体fwk_module中提
    的头像 发表于 11-02 17:24 318次阅读
    <b class='flag-5'>framework</b>框架流程 模块绑定

    SystemC TLM中的接口

    SystemC TLM中的接口 在SystemC TLM中,接口是一个C++的抽象类。抽象类中的所有方法都是用“=0”标识表示的纯虚函数。C++不允许
    的头像 发表于 11-02 15:54 324次阅读

    wakeup events framework三大功能介绍

    wakeup events framework 就包括 3 大功能: 1. 解决内核空间同步问题(framework 的核心功能)        2. 解决用户空间同步问题的情景1(wakeup
    的头像 发表于 09-11 16:21 394次阅读

    Linux驱动中创建debugfs接口的方法

    上篇介绍了procfs接口创建,今天再介绍一种debugfs接口创建
    发表于 05-31 16:53 732次阅读
    Linux驱动中<b class='flag-5'>创建</b>debugfs<b class='flag-5'>接口</b>的方法

    Linux驱动中创建procfs接口的方法

    上篇介绍了Linux驱动中sysfs接口创建,今天介绍procfs接口创建
    发表于 05-31 16:48 569次阅读
    Linux驱动中<b class='flag-5'>创建</b>procfs<b class='flag-5'>接口</b>的方法