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

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

3天内不再提示

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

华穗科技 来源:华穗科技 2025-01-03 14:22 次阅读

自学LabVIEWActor FrameWork的消息与抽象消息的时候肯定会觉得非常模糊。小编将给大家带来一个有关抽象消息的教程,分为上下两期,本期将带领大家创建Actor中的方法并为方法创建对应的消息。

下面请跟随小编一起来学习一下吧!

本文教程:

LabVIEW抽象消息

一、步骤: 1、初始项目解释

初始项目中包含一个”对话场景.vi”以及两个Actor(操作者)分别是:人物A、人物B。

d47dab3e-c972-11ef-9310-92fbcf53809c.png

对话场景.vi:该VI的前面板设有一个“关闭 Actor”按钮,用于关闭已启动的 Actor。

d491fbe8-c972-11ef-9310-92fbcf53809c.png

在对话场景.vi的程序框图中,编写了启动和停止人物A的逻辑,包括关闭前面板和停止按钮的响应。

d4a954be-c972-11ef-9310-92fbcf53809c.png

人物A拥有一个私有属性,内容为Actor Enqueuer(操作者队列)。

d4ba336a-c972-11ef-9310-92fbcf53809c.png

同时人物A还继承了Actor类的Actor Core,其中含有调用嵌套Actor的逻辑与将嵌套Actor队列写入私有属性的逻辑。

d4c4a23c-c972-11ef-9310-92fbcf53809c.png

2、创建一个方法并使用

创建方法

首先,我们需为人物 B 创建一个方法并使用该方法。具体步骤如下: 打开项目中的 人物B.lvib。右击人物B.lvclass,选择New(新建)。在弹出的菜单中选择 VI from Static Dispatch Template(创建静态调用)。

d4d8b790-c972-11ef-9310-92fbcf53809c.png

此时,LabVIEW会自动弹出一个VI。按Ctrl+S保存该VI。

d4f467a6-c972-11ef-9310-92fbcf53809c.png

将保存路径选择为“人物B”下的Method文件夹,并将文件命名为“关灯”。

d4ff7d8a-c972-11ef-9310-92fbcf53809c.png

至此,我们已成功为“人物B”创建了一个“关灯”方法。为了使该方法更加直观,我们可以在程序框图中创建一个对话框,并在对话框上添加“人物B把灯关了”的文本。

在前面板中,按 Ctrl+E 进入程序框图,创建一个对话框函数,保存后关闭该方法。

d509dd20-c972-11ef-9310-92fbcf53809c.png

接下来,我们需要为“人物 B”重写一个 Actor Core,并将其保存在“人物 B” 的 Override 文件夹下。具体步骤与创建静态调用类似,但选择的是 VI for Override(重写 VI)。

d5258764-c972-11ef-9310-92fbcf53809c.png

在弹出的对话框中选择“Actor Core”并单击”OK”。

d546e0e4-c972-11ef-9310-92fbcf53809c.png

此时同样会跳出一个VI,请直接保存在Override文件夹下。由于 Actor Core 是重写父类(Actor)的方法,因此不要更改名称。

d55c67ca-c972-11ef-9310-92fbcf53809c.png

d57b5ca2-c972-11ef-9310-92fbcf53809c.png

现在,所有准备工作已经完成,让我们调用这个方法。

进入”人物B”的Actor Core程序框图,将刚刚创建的”关灯.vi”拖入Actor Core,并连接。

d59b0340-c972-11ef-9310-92fbcf53809c.gif

完成后,运行 对话场景.vi 以查看效果。我们的对话框应能顺利弹出。

d5c2b494-c972-11ef-9310-92fbcf53809c.png

PS:当我们的Actor被Launch的时候会去执行Actor Core,因此我们先将方法放在人物B的Actor Core中,当人物B被人物A Launch的时“关灯”Method就会被执行。

3、对方法创建消息并使用

在理解了方法的创建与使用之后,我们接下来学习如何为 Actor 的方法创建消息以及如何使用这些消息。

首先,我们先为”关灯.vi”创建一个消息,右击“关灯Msg.lvclass”,选择Actor Framework,然后选择Create Message(创建消息)。

d5dc8950-c972-11ef-9310-92fbcf53809c.png

LabVIEW脚本自动执行完毕后,我们会发现”人物B”下多了一个”关灯Msg.lvclass”(关灯消息类)。该类包含两个VI“Send关灯.vi”以及“Do.vi”。

d5f6455c-c972-11ef-9310-92fbcf53809c.png

其中”Do.vi”调用了”关灯.vi”,还在外层加了一些查找子类的逻辑。当我们的Method拥有一些输入接线柱的时候,OBJ还会解绑一些数据连接至”关灯.vi”(这里没有,后面会有)。

d60e2e1a-c972-11ef-9310-92fbcf53809c.png

而”Send关灯.vi”则是将“关灯Msg.lvclass”入队,并在Actor Core中出队(红圈的部分)并调用”Do.vi”。

d6195b00-c972-11ef-9310-92fbcf53809c.png

d6238f94-c972-11ef-9310-92fbcf53809c.png

打开“人物B”的 Actor Core。删除之前在程序框图上放置的“关灯.vi”。通过 Read Self Enqueuer 获取“人物B”自己的消息队列并进行连接。

d6361998-c972-11ef-9310-92fbcf53809c.gif

完成后,运行“对话场景.vi”以查看效果。

d6719ae0-c972-11ef-9310-92fbcf53809c.png

我们的对话框应能成功弹出。与上一节相同,我们将发送消息的逻辑放在 Actor Core 后面,以观察现象和运行结果。

4、直接使用方法与通过消息使用方法的区别

直接调用方法就和LabVIEW使用Class的方法是一致的,输入的是类。

通过消息使用方法:通过将消息传入Actor的队列,然后通过Actor Core将“消息类”出队列并执行对应的“Do.vi”达到调用方法的目的,输入的是Actor的队列。

以上就是LabVIEW抽象消息教程(上)的所有内容啦,下一期将继续介绍普通消息的调用和抽象消息。欢迎大家留言讨论,交流分享!

以上内容就是本期的全部内容,更多关于测试系统中的实际软硬件应用知识,可关注本公众号/下方合集,敬请期待!

对LabVIEW编程技巧和相关内容感兴趣的工程师们,欢迎持续关注、留言和点赞,也可以私信小编各位的技术困惑和技术需求,以获取参加免费线下培训和技术交流的机会哦。

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

    关注

    1974

    文章

    3656

    浏览量

    324131
  • 编程
    +关注

    关注

    88

    文章

    3621

    浏览量

    93785

原文标题:教程 | LabVIEW抽象消息使用教程(上)

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

收藏 人收藏

    评论

    相关推荐

    LabVIEW之父谈论未来LabVIEW的软件架构

    日前,在 NIWEEK 2018, NI 共同创始人、Fellow、有着 LabVIEW 之父称号的Jeff Kodosky做了主题演讲,他畅谈了未来LabVIEW的软件架构。 未来
    的头像 发表于 05-26 09:25 1.8w次阅读

    硬件抽象层的设置

    我在进行PCI板的开发时经常能够遇到硬件抽象层这个概念,不知道这个硬件抽象层是在PCI板设置还是在软件中设置的,用什么软件设置
    发表于 07-21 12:06

    抽象工厂模式的创建

    抽象工厂模式(Abstract Factory Pattern)提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。抽象工厂模式 问题引入
    发表于 11-04 06:13

    抽象接口不是通过底层模块的来实现吗

    依赖于底层模块呀!这是怎么回事呢?区分设计模块的依赖与物理功能上的依赖的语义不同现实中抽象模块功能是通过低层模块实现的(继承实现),但从依赖关系上讲是低层模块依赖于抽象模块,因为父类或接口类
    发表于 09-17 07:25

    JAVA语言的抽象封装与类

    JAVA语言的抽象封装与类5.1 抽象与封装5.2 Java的类5.3 类的修饰符5.4 域5.5 方法5.6 访问控制符面向对象的程序设计有四大特点:抽象、封装、继承和多态性。一
    发表于 12-14 20:33 45次下载

    基于平台抽象层的进程虚拟机设计与实现

    分析WINE虚拟机响应缓慢的根源,提出平台抽象层(PAL)的概念,设计并实现了基于PAL的进程虚拟机Elavm。在Linux, Windows和WinCE,完成了Elavm PAL的硬件抽象模块、操作系统
    发表于 04-23 10:09 18次下载

    网络讲坛:LabVIEW Scripting()--lab

    网络讲坛:LabVIEW Scripting()--labview视频教程
    发表于 03-26 16:38 122次下载

    网络讲坛:面向对象的编程()-labview视频教程

    网络讲坛:面向对象的编程()-labview视频教程
    发表于 03-26 16:41 252次下载

    LabVIEW实现虚拟示波器_labview程序案例

    程序案例LabVIEW实现虚拟示波器,喜欢的朋友可以下载来学习。
    发表于 01-13 16:12 839次下载

    LabVIEW实现网络通信_labview程序案例

    程序案例LabVIEW实现网络通信,喜欢的朋友可以下载来学习。
    发表于 01-13 16:12 86次下载

    LabVIEW基于声卡实现虚拟示波器【集合】

    LabVIEW基于声卡实现虚拟示波器【集合】
    发表于 01-13 16:21 225次下载

    LabVIEW实现网络通信【集合】_程序案例

    程序案例 在LabVIEW实现网络通信【集合】
    发表于 01-13 16:21 38次下载

    分析java接口和抽象类区别

    一。抽象类 二。接口 三。抽象类和接口的区别 一。抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象
    发表于 09-27 16:40 0次下载

    通过抽象程序证明复杂具体程序

    描述了证明抽象程序和具体程序满足一致性关系的方法.抽象程序使用抽象数据结构(ADTs),如set,list,map及其的操作,具体程序使用类C语言中的类型.
    发表于 12-29 16:17 0次下载
    通过<b class='flag-5'>抽象</b>程序证明复杂具体程序

    探讨一下基于符号抽象的程序分析

    抽象解释是静态分析的核心理论,其关键想法是对程序的可达状态做一个近似。
    的头像 发表于 12-30 14:29 819次阅读