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

    文章

    9444

    浏览量

    156139
  • LabVIEW
    +关注

    关注

    2013

    文章

    3681

    浏览量

    344285
  • 华穗科技
    +关注

    关注

    2

    文章

    15

    浏览量

    233

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    求助:错误1003发生于actor framework;导出EXE后,无法正常运行。。。

    程序导出为EXE后,调试监控了一下,类进入launch root actor后报错,错误如图,求大神指点!
    发表于 12-06 17:02

    激光焊接技术焊接脑机接口工艺的应用

    激光焊接技术脑机接口制造工艺扮演着关键角色。脑机接口作为一种连接大脑与外部设备的先进技术,其核心部件通常包括微型电极、传感器和植入式装置。这些元件对焊接工艺的要求极高,需要实现精密
    的头像 发表于 11-20 16:58 372次阅读
    激光焊接技术<b class='flag-5'>在</b>焊接脑机<b class='flag-5'>接口</b>工艺<b class='flag-5'>中</b>的应用

    深度剖析Nios II 处理器的硬件抽象

    硬件抽象层(Hardware Abstraction Layer, HAL)是一个轻量级嵌入式运行时环境,它为用户应用程序和底层硬件提供了一个简单的设备驱动程序接口。HAL应用程序接口(API
    的头像 发表于 10-31 15:25 4507次阅读
    深度剖析Nios II 处理器的硬件<b class='flag-5'>抽象</b>层

    CANdelaStudio如何配置OBD服务?

    创建01/02服务及PID1、首先在CDDT文件添加对应的DiagnosticClass,即可激活对应的OBD诊断服务;2、举例:CDD创建
    的头像 发表于 10-31 11:19 1310次阅读
    <b class='flag-5'>在</b>CANdelaStudio<b class='flag-5'>中</b>如何配置OBD服务?

    Labview技巧合集】16 labview嵌入python做的界面

    labview嵌入python做的GUI界面 无所不能的labview
    发表于 09-22 05:30

    labview的AF架构的VI文件

    C:\\\\Program Files (x86)\\\\National Instruments\\\\LabVIEW 2024\\\\resource\\\\Framework
    发表于 08-18 13:10

    打开lvpro缺少vi文件,寻求VIPM来源!!!!

    1.resources:Framework\\\\Providers\\\\AFQ_Helper\\\\ActorRegister\\\\Methods\\\\Unregister
Actor
    发表于 07-17 13:43

    有可能在 FX3 GPIF2 创建两个独立的状态机吗?

    我想,如果我想通过 FX3 GPIF2 创建两个独立的传输流接口,我需要在 GPIF2 设计器创建两个独立的状态机,我是否有可能在 GPIF2 设计器
    发表于 05-20 06:14

    [Actor] 通过actor创建控制中心与数据采集工作站来看操作者架构

    。///) 2)创建方法后,利用actor框架自带的“创建消息”功能,右击方法VI,选择创建消息,labview会自动生成一个针对该方法的消
    发表于 05-14 18:44

    [Actor]程序框图编程时,如何操作消息和方法对应的VI

    actor应用的关键: 当在程序框图编程时,核心是针对“消息”vi 进行操作,并不操作消息对应的方法vi(具体要实现的功能)。 调用的消息vi时,后台自动调用对应方法vi。 相当于队列状态机,队列元素的进、出操作 与 该元素
    发表于 05-13 18:10

    为什么SDK 1.3.5创建的配置文件是SDK 1.3.4创建的 打不开?

    为什么 SDK 1.3.5 创建的配置文件是 SDK 1.3.4 创建的 打不开?
    发表于 05-13 07:22

    Framework召开第二代产品发布会,新品抢先看!

    2025年2月25日,Framework美国旧金山召开了盛大的第二代产品发布会。Framework发布了有史以来最大规模的一系列新品,包括Framework台式机
    的头像 发表于 03-19 17:55 1209次阅读
    <b class='flag-5'>Framework</b>召开第二代产品发布会,新品抢先看!

    RCA接口音频设备的应用

    RCA接口音频设备的应用非常广泛,其历史可以追溯到近一个世纪以前,最初是由美国无线电公司(RCA)开发并命名的。以下是对RCA接口音频
    的头像 发表于 02-17 15:42 3241次阅读

    无缝连接Labview——国产DAQ软件 #电路知识 #DAQ #Labview

    LabVIEW
    西安阿尔泰电子科技发展有限公司
    发布于 :2025年01月21日 13:46:29

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

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