【LabVIEW学习篇 - 12】:通知器
文章目录
- 通知器
- 案例一
- 案例二
- 案例三(在不同VI中用同一个通知器)
通知器
同步技术:同步技术用来解决多个并行任务之间的同步或通信问题。
通知器比较适合一对多的操作,类似于广播,一点发出的通知消息,
其它多个点可以同时收到这个消息。与设计模式中的“观察者”模式基本一样。
通知器在LabVIEW中,通过名称来区分,这个名称是全局的,所以通知器可以在不同的任务或vi之间传递消息(数据)。

案例一
使用通知器,实现输入字符串时,分别对字符串进行操作,转为大写和反转字符串。
-
在前面板中,放置1个字符串输入控件和2个字符串显示控件,并分别名为为obj1、obj2、obj3,然后在程序框图中设置好while循环结构和事件结构。

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

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

-
再添加事件分支,操作如下,当前面板关闭时,则会释放通知器引用,停止while循环。


Tips:鼠标放入事件、条件等结构中,按住ctrl键,滑动鼠标滚轮,即可切换事件分支。 -
在程序框图中,鼠标右键-同步-通知器操作-获取通知器状态,然后将“通知器”端与“通知器输出”端连接,“错误输出”连接到循环条件,接着鼠标右键-字符串-转换为大写字母,将其与获取通知器状态的“最近一次通知”端连接起来。
当第一个循环停止时,释放通知器引用,则在第二、三个while循环的等待通知器状态的“错误输出”端会输出“T”,循环停止。

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

-
最终的程序

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

案例二
使用通知器,实现点击停止按钮时,波形图表停止。
-
在前面板中放置一个停止按钮和两个波形图表,并在程序框图中设置好对应的while循环结构和事件结构。

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

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

-
运行结果:


案例三(在不同VI中用同一个通知器)
使用通知器,实现在一个VI中输入字符串数据,另一个VI中显示字符串数据,最后点击停止按钮时,两个VI同时停止。
- 创建一个VI,命名为 notifier1.vi (可任意命名),然后在前面板中放置字符串输入控件并设置为“键入时刷新”和停止按钮,在程序框图中创建好while循环结构和事件结构。

- 创建一个通知器,命名为
string,并添加事件分支,为“字符串”:值改变,放置发送通知,将其“通知器”端连接到“通知器输出”端,“通知”连接到“新值”,即当字符串输入控件中的字符串发生改变时,发送通知。

- 再添加一个事件分支,为 “停止”:值改变,在其中放置发送通知,并设置其“通知”端为
stop。
stop作为一个自定义的停止信号,即当点击停止按钮时,发送stop通知,另一个VI收到该stop通知后与stop字符串进行比较,当等于stop,则停止程序。

- 再创建一个VI,命名为 notifier2.vi,在其前面板中放置字符串显示控件,在程序框图中设置好while循环结构。

- 在notifier2.vi中设置与notifier1.vi相同的通知器,并在其中放置等待通知,其“通知”端连接字符串显示控件,即将收到的“通知”信息显示在字符串显示控件上,同时将“通知”端的信息与字符串
stop进行比较,若相同,则停止程序。

- 同时运行两个VI,在 notifier1.vi 中的字符串输入控件中输入字符串时,会在 notifier2.vi 中的字符串显示控件中显示字符串。


相关文章:
【LabVIEW学习篇 - 12】:通知器
文章目录 通知器案例一案例二案例三(在不同VI中用同一个通知器) 通知器 同步技术:同步技术用来解决多个并行任务之间的同步或通信问题。 通知器比较适合一对多的操作,类似于广播,一点发出的通知消息, 其它…...
Oracle一对多(一主多备)的DG环境如何进行switchover切换?
本文主要分享Oracle一对多(一主多备)的DG环境的switchover切换,如何进行主从切换,切换后怎么恢复正常同步? 1、环境说明 本文的环境为一主两备,数据库版本为11.2.0.4,主要信息如下: 数据库IPdb_unique_n…...
【浏览器插件】Chrome扩展V3版本
前言:Chrome从2022年6月开始,新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网(要翻墙): https://developer.chrome.com/docs/extensions/mv3 MDN中文:https:/…...
编码器信号干扰问题、编码器选型
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、屏蔽技术1.静电屏蔽:2.低频磁屏蔽:3.电磁屏蔽:4.减少“天线” 二、增量编码器的信号选择三、信号电缆选择四、…...
Unity入门5——材质
创建材质 点击Assets → Create → Material,得到一个默认材质球的副本。 使用材质 直接把材质球拖拽到物体上,或设置mesh renderer组件下的Materials 数组中第一个元素...
C的温故而知新:存储类别、链接和内存管理(C Primer Plus第十二章)
存储类别、链接和内存管理 这一章主要涉及到的是一些偏概念的东西,基本上偏向于自己去理解这部分内容。很好地理解这一章可以更好地控制程序,合理的利用内存存储数据。 C语言提供了多种不同的模型或存储类别在内存中存储数据。作用域有块作用域、函数作…...
SpringBoot统一功能处理——统一数据返回格式
目录 一、简单使用 二、存在的问题描述 三、优点 一、简单使用 统一的数据返回格式使用 ControllerAdvice 和 ResponseBodyAdvice 的方式实现 ControllerAdvice 表示控制器通知类。 添加类 ResponseAdvice , 实现 ResponseBodyAdvice 接口,并在类上添加 …...
Milvus 实践(2) --- 2.4.x 安装,脚本分析,数据存储解析
目录 背景 Milvus2.4.x安装脚本分析 etcd组件 container_name image 参数 注意问题 environment volumes 实体化 command 参数 注意事项 healthcheck 参数 作用 下载 minio组件 container_name image 参数 注意事项 environment 参数 ports 参数 注…...
【蛋疼c++】千万别用std::wifstream读取Unicode UTF16文件
上当了。 最近程序要和 Jscript / activex 脚本通信。 ActiveX这玩意,导出文件,如果是UTF8导出,会出现莫名异常:写一半直接退出。或许是系统语言设置的问题。 但是切换为utf16(unicode)导出就没有问题&a…...
[算法] 第二集 二叉树中的深度搜索
深度优先遍历(DFS,全称为 Depth First Traversal),是我们树或者图这样的数据结构中常⽤的 ⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分支,直到⼀条路径上的所有节点都被遍历 完毕,然后再回溯到上…...
放弃使用外键时,sequelize 应该怎么使用?
在使用 Sequelize 时,如果想放弃使用外键,但仍然希望在模型之间建立关联,可以通过设置 constraints 选项为 false 来实现。这允许你定义模型之间的关系,而不在数据库中创建外键约束。以下是具体的实现步骤: 定义没有外…...
Microsoft GraphRAG 输出的配置信息
Microsoft GraphRAG 输出的配置信息 {"llm": {"api_key": "REDACTED, length 9","type": "oci_genai_chat","model": "cohere.command-r-plus","max_tokens": 4000,"temperature"…...
怎么判断张量的维度(形状(shape)),即如何定义行数、列数和深度的?
举一个三维张量吧 # 3行4列深度为2 const3 tf.constant([[[1,2],[3,4],[5,6],[7,8]],[[11, 12], [13, 14], [15, 16], [17, 18]],[[21, 22], [23, 24], [25, 26], [27, 28]] ],tf.float16) shape (3,4,2)--借鉴博主奶油松果的图和代码 分析形状 (3, 4, 2) 最外层的括号&…...
AI入门指南(二):算法、训练、模型、大模型是什么?
文章目录 一、前言二、算法是什么?概念实际应用 三、训练是什么?概念实际应用 四、模型是什么?概念实际应用小结 五、大模型是什么?概念大模型和小模型有什么区别?大模型分类实际应用 六、总结七、参考资料 一、前言 …...
CSS已访问链接的隐私保护
摘抄自:《CSS权威指南 第四版》 有超过十年的时间,已访问的链接可以使用任何可用的CSS属性装饰,与未访问链接没有差别。 然而,大约在2005年,有几个人通过示例揭露,通过视觉样式和简单的DOM脚本就可以判断用…...
代码练习12-排序链表
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 归并排序算法核心步骤 归并排序核心步骤如下: 把长度为n的要排序的序列,分成两个长度为n/2的子序列;对这两个子序列,分别采用归并排序;…...
Linux 内核源码分析---套接字
套接字通信 ISO 设计一种参考模型,定义组成网络的各个层,该模型由7层组成,称为OSI(开放 系统互连)模型如下: 应用层:网络服务与最终用户的接口; 表示层:数据的表示、安…...
vscode配置xdebug断点调试详细教程
注:环境为本地windows开发环境,编辑器为vscode,PHP集成环境工具为EServer vscode安装扩展并配置 安装PHP Debug 扩展中搜索 PHP Debug 并安装: 配置PHP Debug 1、点击扩展设置 2、在设置中,点击 setting.json 3、编…...
【人工智能】Transformers之Pipeline(八):文生图/图生图(text-to-image/image-to-image)
目录 一、引言 二、文生图/图生图(text-to-image/image-to-image) 2.1 文生图 2.2 图生图 2.3 技术原理 2.3.1 Diffusion扩散模型原理 2.3.2 Stable Diffusion扩散模型原理 2.4 文生图实战 2.4.1 SDXL 1.0 2.4.2 SD 2.0 2.5 模型排名 三、总…...
AI Agent 工程师认证-学习笔记(1)——【单Agent】ModelScope-Agent
学习链接: 【单Agent】ModelScope-Agent学习指南https://datawhaler.feishu.cn/wiki/GhOLwvAPkiSWmokjUgqc1eGonDf 手把手Agent开发开源教程(觉得不错的话可以star一下)https://github.com/datawhalechina/agent-tutorial 动手学Agent应用…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
