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

电子说

1.3w人已加入

描述

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. 重写Nest Actor的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中为Actor Framework创建抽象消息和接口的方法,如果想要进一步了解抽象的类和对象是如何通过Actor Framework来实现的话,敬请期待接下来关于Actor Framework的一系列技术分享。  

审核编辑 :李倩

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分