ActorFrameWork系列教程来到了第二期,大家还记得什么是对象什么是类吗?还没有学习过第一期或者忘记了的同学们,请看往期教程回顾学习一下吧!
本文教程:
在LabVIEW中创建Actor Framework的抽象消息及接口
一、为什么要用到抽象消息和接口?
一般情况下,我们在启动界面使用“启动根操作者”启动根操作者,然后在根操作者和其他操作者的适当位置用“启动嵌套操作者”来启动其他操作者。就好比一个用户登录程序,其根操作者即为Controller,用以控制整体程序的逻辑,它的嵌套操作者可分为:用户操作界面的VIEW;登录判断模块、用户管理模块等Model。这就是所谓的MVC框架,MVC框架的更多内容在后续给大家详细讲解。

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


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


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



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


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

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

8. Launch根操作者
创建一个Launch.vi启用Root Actor。

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

三、如何创建接口
LabVIEW2020以上版本支持利用接口在嵌套操作者之间传送消息,接口的使用方法比抽象消息要简单得多。接下来LabVIEW版本足够的小伙伴们,我们一起来尝试创建接口吧!
1. 创建Actor
创建两个Actor,分别命名为Root Actor和Nest Actor。
2. 创建接口
在Nest Actor创建一个接口,命名为Nest Msg Interface.lvclass。

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

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

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

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。

8.Launch 根操作者
创建一个Launch.vi启用Root Actor。

我们可以看到Hello的弹窗也出现了,通过接口也可以实现嵌套操作者向调用方传送消息。
怎么样,接口的使用方法是不是比抽象消息方便呢?而且改变接口的方法只需要修改Root Actor的重写方法就可以了,而不是像抽象消息那样需要把消息删除后重新创建消息。
以上就是如何在LabVIEW中为ActorFramework创建抽象消息和接口的方法,如果想要进一步了解抽象的类和对象是如何通过ActorFramework来实现的话,敬请期待接下来关于ActorFramework的一系列技术分享。
审核编辑 :李倩
-
接口
+关注
关注
33文章
9444浏览量
156139 -
LabVIEW
+关注
关注
2013文章
3681浏览量
344285 -
华穗科技
+关注
关注
2文章
15浏览量
233
原文标题:教程 | ActorFramework的抽象消息和接口
文章出处:【微信号:华穗科技,微信公众号:华穗科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
求助:错误1003发生于actor framework;导出EXE后,无法正常运行。。。
激光焊接技术在焊接脑机接口工艺中的应用
深度剖析Nios II 处理器的硬件抽象层
找labview的AF架构中的VI文件
打开lvpro缺少vi文件,寻求VIPM来源!!!!
有可能在 FX3 GPIF2 中创建两个独立的状态机吗?
[Actor] 通过actor创建控制中心与数据采集工作站来看操作者架构
[Actor]在程序框图编程时,如何操作消息和方法对应的VI
为什么在SDK 1.3.5中创建的配置文件是在SDK 1.3.4中创建的 打不开?
Framework召开第二代产品发布会,新品抢先看!
RCA接口在音频设备中的应用

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