当前位置: 首页 > news >正文

【LabVIEW学习篇 - 12】:通知器

文章目录

  • 通知器
  • 案例一
    • 案例二
    • 案例三(在不同VI中用同一个通知器)

通知器

同步技术:同步技术用来解决多个并行任务之间的同步或通信问题。

通知器比较适合一对多的操作,类似于广播,一点发出的通知消息,
其它多个点可以同时收到这个消息。与设计模式中的“观察者”模式基本一样。

通知器在LabVIEW中,通过名称来区分,这个名称是全局的,所以通知器可以在不同的任务或vi之间传递消息(数据)。
在这里插入图片描述

案例一

使用通知器,实现输入字符串时,分别对字符串进行操作,转为大写和反转字符串。

  1. 在前面板中,放置1个字符串输入控件和2个字符串显示控件,并分别名为为obj1、obj2、obj3,然后在程序框图中设置好while循环结构和事件结构。
    在这里插入图片描述

  2. 在程序框图中,鼠标右键-同步-通知器操作-获取通知器引用,然后在其名称接线端创建常量,输入notifier text,即设置通知器的名称,并将其连接到元素数据类型,即设置为布尔类型,然后鼠标右键-同步-通知器操作-释放通知器引用,并将其连接好。
    在这里插入图片描述

  3. 添加事件分支,为 “obj1”:值改变 ,然后鼠标右键-同步-通知器操作-发送通知,将“通知”接线端连接到“新值”,即obj1的值发生改变时,则会把改变后的新值通过通知器发送出去。
    在这里插入图片描述

  4. 再添加事件分支,操作如下,当前面板关闭时,则会释放通知器引用,停止while循环。
    在这里插入图片描述
    在这里插入图片描述
    Tips:鼠标放入事件、条件等结构中,按住ctrl键,滑动鼠标滚轮,即可切换事件分支。

  5. 在程序框图中,鼠标右键-同步-通知器操作-获取通知器状态,然后将“通知器”端与“通知器输出”端连接,“错误输出”连接到循环条件,接着鼠标右键-字符串-转换为大写字母,将其与获取通知器状态的“最近一次通知”端连接起来。
    当第一个循环停止时,释放通知器引用,则在第二、三个while循环的等待通知器状态的“错误输出”端会输出“T”,循环停止。
    在这里插入图片描述

  6. 在程序框图中,鼠标右键-字符串-附加字符串函数-反转字符串,然后与第五步的操作相同,设置好第三个循环。
    在这里插入图片描述

  7. 最终的程序
    在这里插入图片描述

  8. 在前面板中,选中字符串输入控件,鼠标右键-键入时刷新,目的是当输入数据时,显示控件同步显示。运行结果如下:
    在这里插入图片描述

案例二

使用通知器,实现点击停止按钮时,波形图表停止。

  1. 在前面板中放置一个停止按钮和两个波形图表,并在程序框图中设置好对应的while循环结构和事件结构。
    在这里插入图片描述

  2. 添加事件分支,为 “停止”:值改变,并设置好通知器,其元素数据类型设置为布尔类型,再放置发送通知,其“通知”端连接“T”,即当按下停止按钮时,会发送“T”。
    在这里插入图片描述

  3. 在程序框图中,鼠标右键-同步-通知器操作-等待通知,然后将其放置到第二个while循环中,其“通知器”端连接到“通知器输出”端,“超时毫秒(-1)”设置为100,“通知”端连接到循环条件,最后设置定时时间为100ms,随机生成数据给波形图表。
    第三个while循环的设置与第二个while循环相同。
    在这里插入图片描述

  4. 运行结果:
    在这里插入图片描述
    在这里插入图片描述

案例三(在不同VI中用同一个通知器)

使用通知器,实现在一个VI中输入字符串数据,另一个VI中显示字符串数据,最后点击停止按钮时,两个VI同时停止。

  1. 创建一个VI,命名为 notifier1.vi (可任意命名),然后在前面板中放置字符串输入控件并设置为“键入时刷新”和停止按钮,在程序框图中创建好while循环结构和事件结构。
    在这里插入图片描述
  2. 创建一个通知器,命名为string,并添加事件分支,为“字符串”:值改变,放置发送通知,将其“通知器”端连接到“通知器输出”端,“通知”连接到“新值”,即当字符串输入控件中的字符串发生改变时,发送通知。
    在这里插入图片描述
  3. 再添加一个事件分支,为 “停止”:值改变,在其中放置发送通知,并设置其“通知”端为stop
    stop作为一个自定义的停止信号,即当点击停止按钮时,发送stop通知,另一个VI收到该stop通知后与stop字符串进行比较,当等于stop,则停止程序。
    在这里插入图片描述
  4. 再创建一个VI,命名为 notifier2.vi,在其前面板中放置字符串显示控件,在程序框图中设置好while循环结构。
    在这里插入图片描述
  5. 在notifier2.vi中设置与notifier1.vi相同的通知器,并在其中放置等待通知,其“通知”端连接字符串显示控件,即将收到的“通知”信息显示在字符串显示控件上,同时将“通知”端的信息与字符串stop进行比较,若相同,则停止程序。
    在这里插入图片描述
  6. 同时运行两个VI,在 notifier1.vi 中的字符串输入控件中输入字符串时,会在 notifier2.vi 中的字符串显示控件中显示字符串。
    在这里插入图片描述
    在这里插入图片描述
http://www.lryc.cn/news/419517.html

相关文章:

  • Oracle一对多(一主多备)的DG环境如何进行switchover切换?
  • 【浏览器插件】Chrome扩展V3版本
  • 编码器信号干扰问题、编码器选型
  • Unity入门5——材质
  • C的温故而知新:存储类别、链接和内存管理(C Primer Plus第十二章)
  • SpringBoot统一功能处理——统一数据返回格式
  • Milvus 实践(2) --- 2.4.x 安装,脚本分析,数据存储解析
  • 【蛋疼c++】千万别用std::wifstream读取Unicode UTF16文件
  • [算法] 第二集 二叉树中的深度搜索
  • 放弃使用外键时,sequelize 应该怎么使用?
  • Microsoft GraphRAG 输出的配置信息
  • 怎么判断张量的维度(形状(shape)),即如何定义行数、列数和深度的?
  • AI入门指南(二):算法、训练、模型、大模型是什么?
  • CSS已访问链接的隐私保护
  • 代码练习12-排序链表
  • Linux 内核源码分析---套接字
  • vscode配置xdebug断点调试详细教程
  • 【人工智能】Transformers之Pipeline(八):文生图/图生图(text-to-image/image-to-image)
  • AI Agent 工程师认证-学习笔记(1)——【单Agent】ModelScope-Agent
  • 【Python机器学习】树回归——将CART算法用于回归
  • 前端(HTML + CSS)小兔鲜儿项目(仿)
  • 【Rust光年纪】构建高效终端用户界面:Rust库全面解析
  • 鼠标滑动选中表格部分数据列(vue指令)
  • “5G+Windows”推动全场景数字化升级:美格智能5G智能模组SRM930成功运行Windows 11系统
  • c语言学习,isupper()函数分析
  • Adnroid 数据存储:SharedPreferences详解【SharedPreferencesUtils,SharedPreferences的ANR】
  • Sentinel 规则持久化到 Nacos 实战
  • 服务器CPU天梯图2024年8月,含EYPC/至强及E3/E5
  • SpringBoot加载dll文件示例
  • 9.C基础_指针与数组