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

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

3天内不再提示

教程|创建你的第一个Actor Framework

华穗科技 来源:华穗科技 2022-12-26 17:00 次阅读

你是否知道“对象”是什么? 当然此对象非彼对象,对于计算机来说对象是对客观事物的抽象,类是对对象的抽象。如此抽象的概念,在LabVIEW中以Actor Framework的形式来解决多线程的各种复杂问题。 想要了解什么是Actor Model,具体的内容请参照以前发表过的文章:

Actor Model --AgileT硬件模块的管理员

本文小编将手把手教你如何在LabVIEW中创建你的第一个Actor Framework,跟着搭建并感受对象和类的神奇吧!

本文教程

了解并在LabVIEW中创建Actor Framework

一、什么是模块化设计?

95d7ead0-82bf-11ed-bfe3-dac502259ad0.png

以一个数据采集测试系统为例,我们设计程序的时候一般会将程序分为上图中的高内聚、低耦合的四个模块,分别为:用户界面模块、数据采集模块、数据分析模块、文件I/O模块。 高内聚是指每个模块都有自己明确的功能,并且只负责一件工作。 低耦合是指模块之间不互相依赖,每个模块都可以不依赖其它模块独立运行。 这四个模块中有什么需要重复编写的相似代码吗? 状态机框架、初始化、错误处理等代码都可以将其抽象,将这四个模块进行打散又重组。 是不是有些难以理解呢?没关系,拿一个简单的例子来讲解对象和类的关系。

96029230-82bf-11ed-bfe3-dac502259ad0.png

如上图所示是一个车辆的类。无论是小汽车、跑车、大卡车、赛车,都需要燃油来驱动车辆运行(当然电动的除外啦),也可以通过仪表盘来获取剩余燃油、得知当前车速。我们可以将所有能够称之为汽车的东西都看作拥有同一个父类,这个父类拥有着属性:燃油、最大速度等,也拥有着获取燃油存量、获取目前速度的方法。 那么如何把这些抽象出来的属性和方法通过程序来实现呢?接下来我们先学习一些操作者框架的基本知识,或许会有新的见解。

二、 操作者框架

操作者框架主要由操作者Actor和消息Message构成: ·操作者(Actor):拥有数据状态的模块; ·消息(Message): 消息在操作者间传递用来触发状态改变。 操作者框架拥有着以下特点: ·消息驱动–Actor之间的消息通信是异步的,即使Actor在发送消息后也无需阻塞或者等待就能够处理其他事情; ·强隔离性–Actor中的方法不能由外部直接调用,所有的一切都通过消息传递进行的,从而避免了Actor之间的数据共享,想要观察到另一个Actor的状态变化只能通过消息传递进行询问; ·面向对象编程-由于采用LabVIEW Class编写,可将面向对象编程思想运用到LabVIEW编程中。

LabVIEW中操作者框架的核心就需要通过Launch Actor Core.vi来实现。

96222d52-82bf-11ed-bfe3-dac502259ad0.png

Actor Core为操作者框架的核心vi,该vi接收消息、执行消息和错误处理。 显然,Actor Framework中的消息就是用来传送消息并执行方法的,而操作者中所包含的各种属性就是类的属性。利用Actor Framework的操作者和消息就可以实现面向对象的编程啦。 接下来跟着小编搭建一个简单的Actor,先了解一下如何构建Actor Framework的架构吧~

三、创建你的第一个Actor

作为操作者架构,必不可少的就是操作者和消息。所以先跟着小编尝试搭建以消息为媒介的“Hello World”弹窗吧!

1. 创建Actor

新建一个LabVIEW空白项目,右键项目下My Computer ->New →Actor,弹出创建Actor面板,填写Actor名称、选择父类、选择保存路径。

96507e64-82bf-11ed-bfe3-dac502259ad0.png

9671991e-82bf-11ed-bfe3-dac502259ad0.png

你可以在这个项目创建出的Actor下新建一些虚拟文件夹,用以存放不同类型的方法。例如可重写方法Override、私有方法Private以及功能方法Method。

2. 创建静态方法

在项目资源管理器中右键My First Actor.lvclass → New → VI from Static Dispatch Template创建静态方法,保存命名为Pop Up.vi。并在前面板添加字符串控件,连接接线板;在程序框图连接单按钮对话框。

968dd354-82bf-11ed-bfe3-dac502259ad0.png

96b5618a-82bf-11ed-bfe3-dac502259ad0.png

3. 为静态方法创建消息

在项目资源管理器中右键Pop Up.vi → Actor Framework → Create Message。等待消息创建完成后,展开Messages for this Actor虚拟文件夹,可以看到消息创建完成。

96d5ce3e-82bf-11ed-bfe3-dac502259ad0.png

4. 发送消息

第一步,项目资源管理器中新建Launcher.vi;

第二步,在Launcher.vi程序框图中添加Launch Root Actor.vi;

位置:程序框图 → Data Communication → Actor Framework → Launch Root Actor.vi。

第三步,创建一个My First Actor.class实例,并连接到 Launch Root Actor.vi;

第四步,添加Send Pop Up.vi,并连接到Launch Root Actor.vi;

第五步,添加Send Normal Stop.vi;

位置:程序框图 → Data Communication → Actor Framework → Send Normal Stop.vi;

第六步,为Send Pop Up.vi连接字符串常量输入。

96fe5fac-82bf-11ed-bfe3-dac502259ad0.png

5. 启动程序

运行Launcher.vi。可以看到“Hello World”已经通过Actor的消息发送给了Send Pop Up.vi,而这个vi里实现的功能就是弹出一个对话框,并显示发来的消息。

97148ba6-82bf-11ed-bfe3-dac502259ad0.jpg

以上就是如何在LabVIEW中构建一个简单的Actor Framework的基本步骤啦,如果想要进一步了解抽象的类和对象是如何通过Actor Framework来实现的话,敬请期待接下来关于Actor Framework的一系列技术分享。

下一期我们将分享Actor Framework中抽象消息的运用。

审核编辑:汤梓红

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

    关注

    1918

    文章

    3619

    浏览量

    316989
  • 对象
    +关注

    关注

    1

    文章

    38

    浏览量

    17291
  • Actor Framework
    +关注

    关注

    0

    文章

    2

    浏览量

    1720

原文标题:教程 | 创建你的第一个Actor Framework

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

收藏 人收藏

    评论

    相关推荐

    [每周练]Actor Framework框架(1125-1201)

    。Creat Project里面就大不相同。当时也创建Actor Framework,体验了下,感觉看不懂就渐渐淡忘了,也没有注意这个框架的名字(因为不了解)。今年有
    发表于 11-25 00:04

    sushu---Actor Framework基本介绍

    开始介绍Actor Framework。都在附件的PDF文档中了,18页,想着也算详细了。这个只是初步介绍。接下来帖子介绍点升级版的,更方便编程。软件版本为:LV2014附件包含:AF的
    发表于 01-03 20:05

    sushu---Actor Framework种使用方式

    :2016-02-27------------------------------在未使用AF之前做了ERP系统,新建了顶层类ERP.lvclass.从13年就知晓
    发表于 02-28 20:40

    Labview Actor Framework 框架使用例子(反馈式蒸发器)

    global中的Fan A Fault 赋值。 其实Actor Framework的难点我觉得还是在类的关系处理上,就像这个项目中,类之间关系处理的很好(毕竟是NI的例子),希望想学这个框架的人可以好好看看这个项目,最好是自己跟着写
    发表于 11-17 19:36

    actor framework 学习

    本帖最后由 yingtn 于 2018-2-27 11:47 编辑 各位前辈:小弟在学习 actor framework 时遇到了问题:在右击类新建时“重写的VI项”是灰色的
    发表于 02-27 11:44

    Actor Framework -- Test Sequence

    本帖最后由 shenjianym 于 2019-10-29 08:13 编辑 用Actor Framework框架写了关于测试序列(生成随机数并判断)的程序。该程序使用的是L
    发表于 10-28 15:28

    LabVIEW Actor Framework学习之八皇后

    大家好,我是Richie,为什么把贴子给我删除了呢,我再试试重新发次。本期重点:以LabVIEW OOP为基础,使用AF(Actor Framework)框架来编写程序,对八皇后问题进行求解。欢迎
    发表于 05-30 20:08

    Actor Framework学习之路记录【

    项目中的工作;2、掌握Actor Framework框架,将最近完成的测试项目进行重构;学习内容:1、学习面向对象的基础知识:封装、继承、多态、组合2、学习Labview中的面向对
    发表于 04-14 17:03

    荣小菜补钙记第33期:基于LabVIEW Actor Framework的连续测量和记录系统1

    写个小系列,基于LabVIEW Actor Framework来搭建数据连续采集处理系统,最终看看它能承受多大的数据量冲击。本期先从基础
    发表于 05-29 15:32

    荣小菜补钙记第35期:基于LabVIEW Actor Framework的连续测量和记录系统3

    讲解嵌套操作者的消息上传方式。1.简介上期我们介绍了创建调用者抽象消息的优缺点,并在总结部分说明了缺点的规避方法。但是说的比较笼统,本期额外用Demo来进行专门演示说明。下面先看
    发表于 06-08 18:59

    荣小菜补钙记第42期:基于LabVIEW Actor Framework的连续测量和记录系统6(Part1 End)

    ,代码主要获取调用方和本身的消息队列,并创建用于停止Actor的Stop用户事件(顺利停止的关键)。很明显,本Vi本质上是其它子Function用来继承使用的。 PFA PreL
    发表于 08-15 09:49

    怎样用CubeMX创建第一个project

    如何去安装CubeMX?怎样用CubeMX创建第一个project?
    发表于 09-28 06:15

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

    由于面向对象需要降低耦合性,那么基于类的操作者也需要考虑如何降低耦合性。当Nest Actor给Root Actor发送消息时,需要调用Root Actor的消息类的Send ***.vi,这就导致了Nest
    的头像 发表于 09-23 10:51 5385次阅读

    在LabVIEW中创建Actor Framework的同步消息

    首先,第一次使用Reply Msg时,继承关系中是没有Reply Msg的,因为默认Reply Msg不包含在Actor Framework.lvlib中的,需要手动添加。
    的头像 发表于 11-04 10:33 2654次阅读

    基于Actor Framework仿真线性编码器

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