【LabVIEW学习篇 - 14】:信号量、集合点、事件发生

news2024/9/22 6:41:24

信号量

信号量技术是用来限制同时访问共享资源的数量。当访问量达到信号量设定的数量之后,其它任务只能等待,直到有任务释放访问权限。
比如打印机打印任务、银行办理业务时的叫号排队等等。
在这里插入图片描述
案例:使用信号量,实现两个波形图表轮流显示数据。例如:当CH1获取该信号量时,CH2处于等待状态,当CH1释放信号量时,CH2获取信号量,CH1处于等待状态。

  1. 在前面板中,放置两个波形图表,分别命名为CH1、CH2,放置两个圆形指示灯,分别命名为访问循环1、访问循环2,再放置一个停止按钮。最后在程序框图中,都取消控件的显示为图标,再放置两个while循环和条件结构。
    在这里插入图片描述
  2. 在程序框图中,鼠标右键-同步-信号量-获取信号量引用鼠标右键-同步-信号量-获取信号量,将其连接起来,最后将获取信号量的“信号量输出”和“错误输出”分别连接到条件结构上,“错误输出”连接到选择器端时会自动生成“无错误”和“错误”两个分支。
    在这里插入图片描述
  3. 在该条件结构中放置平铺式顺序结构,添加在其后添加一帧,第一帧给访问循环1赋值为“T”,访问循环2赋值为“F”,即表示当前信号量被CH1使用,第二帧则放置一个for循环,给CH1传入数据,最后释放信号量
    在这里插入图片描述

在这里插入图片描述

  1. 第2个while循环的设置与第一个while循环相同,不同的是赋值的对象为CH2。
    在这里插入图片描述

  2. 最后创建事件结构,设置 “停止”:值改变 事件,即点击停止按钮时,释放信号量引用,以上两个循环的获取信号量的“错误输出”端就会输出“T”,停止while循环。最终的程序如下:
    在这里插入图片描述

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

集合点

集合点技术可以使多个并行的任务同步执行。在到达集合点的任务数量与预先规定的数量不一致时,每个到达了集合点的任务都将等待,直到任务数量达到时,所有的任务才开始同步执行。
在这里插入图片描述
案例:使用集合点,在波形图表中绘制曲线,当第一个波形图表已经绘制完成时,第二个波形图表还未绘制完成,则第一个波形图表等待第二个波形图表,当第二个波形图标绘制完成后,两个波形图表同一时刻开始绘制曲线,循环以上操作。

  1. 基本设置如下,"等待循环1"或“等待循环2”亮起时,表示当前循环已结束,处于等待状态,等待循环1或2结束时,再一起开始执行;“绘制点数1”和“绘制点数2”即表示循环的次数。
    在这里插入图片描述

  2. 在程序框图中放置两个while循环和条件结构,鼠标右键-同步-集合点-创建集合点,并在其“大小”端创建常量为2,表示等待的数量为2,接着放置等待集合点,将其连接起来。
    在这里插入图片描述

  3. 完善第一个while循环,开始时两个圆形指示灯灭,然后给波形图标传入数据,最后结束时点亮“等待循环1?”或“等待循环2?”,若第一个while循环结束,则点亮“等待循环2?”,表示第一个循环结束,正在等待第二个while循环。
    在这里插入图片描述
    在这里插入图片描述

  4. 第二个while循环与第一个while循环中的设置相似。
    在这里插入图片描述

  5. 添加事件结构,添加事件分支为 “停止”:值改变 事件,在其中放置销毁集合点。最终程序如下:
    在这里插入图片描述

  6. 运行结果:
    因为第一个while循环中的for循环次数为1,小于第二个while循环中for循环的次数,所以第一个while循环停止,亮起圆形指示灯,处于等待状态,这个时候第二个波形图标还在绘制曲线。
    在这里插入图片描述
    在这里插入图片描述

事件发生

顾名思义就是产生事件,它和用户事件很像,但不能像用户事件一样传递数据,它可以用来在While循环和VI之间传递触发事件。
在这里插入图片描述
案例:使用事件发生,实现温度计的监控,当温度计超过80℃时,报警指示灯亮,进行报警计数。

  1. 在前面板中,鼠标右键-数值-温度计,再鼠标右键-数值-垂直指针滑动杆,选中垂直指针滑动杆,鼠标右键-属性,在属性界面的标尺部分设置刻度范围的最大值为100,将其值拉到80,作为报警上限,最后放置圆形指示灯、数值显示控件、停止按钮。
    在这里插入图片描述
    在这里插入图片描述
  2. 在程序框图中,放置获取通知器引用while循环事件结构。while循环设置超时时间为300ms,主要是为了在300ms后给温度计赋值。
    在这里插入图片描述
  3. 如下图所示。在超时时间段内没有时间发生就为传T,否则穿F。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  4. 总程序如下:
    在这里插入图片描述
    在这里插入图片描述
  5. 运行结果:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2037177.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在ubuntu、centos、openEuler安装Docker、构建一个简单的 Nginx 镜像

目录 ubuntu、centos、openEuler安装Docker 1.在 Ubuntu 上安装 Docker 1. 1 更新软件包 1. 2 安装必要的依赖 1.3 添加 Docker 的 GPG 密钥 1.4 添加 Docker 仓库 1.5 更新软件包 1.6 安装 Docker 1.7 启动并启用 Docker 服务 1.8 验证安装 1.9 运行测试容器 1.10…

【NXP-MCXA153】SPI驱动移植

介绍 SPI总线由摩托罗拉公司开发,是一种全双工同步串行总线,由四个IO口组成:CS、SCLK、MISO、MOSI;通常用于CPU和外设之间进行通信,常见的SPI总线设备有:TFT LCD、QSPI FLASH、时钟模块、IMU等&#xff1b…

假如萝卜快跑撞了人,谁来负责?

引言 自动驾驶时代来临,司机的身影消失。但没有了司机,交通事故谁来负责?在AI刚爆火时,有个半调侃的笑话很出名:AI肯定不能替代会计和律师,因为一旦出了事,AI负不了责,但会计和律师…

Nest.js 实战 (九):使用拦截器记录用户 CURD 操作日志

前言 有一天,公司的产品经理提了一个需求:系统需要记录每个用户的 CURD 操作,也就是说用户新增、编辑或者删除了什么数据,都需要记录下来,这个在 Nest.js 中如何实现呢? 这时候我们可以考虑使用 拦截器 来…

《书生大模型实战营第3期》进阶岛 第一关: 探索 InternLM 模型能力边界

文章大纲 OpenCompass 评测体验大模型对比评测 - Bad caseBad Case 1Bad Case 2Bad Case 3Bad Case 4Bad Case 5 大模型对比评测 - Good caseGood case 1Good Case 2 任务其他学习内容参考文献本人学习系列笔记第二期第三期 课程资源论文其他参考 OpenCompass 评测体验 https:…

opencv-python图像增强七:图像亮度对比度饱和度调整

文章目录 一,简介二,图像亮度对比度修改三,对比度增强: 一,简介 在图像处理领域,对比度、亮度和饱和度是影响图像视觉效果的重要因素。合理调整这三个参数,可以使图像更具表现力,满…

北斗短报文通信原理

短报文通信原理主要基于北斗卫星导航系统,其过程可以分为以下几个步骤:用户机将包含接收方ID号和通讯内容的通讯申请信号加密后通过卫星转发入站;地面中心站接收到通讯申请信号后,进行脱密和再加密处理,然后将其加入持续广播的出站…

WindowsAPI 查阅笔记:线程、多个线程互同步

1. 线程的创建 HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, //线程安全属性 SIZE_T dwStackSize, //线程堆栈大小 LPTHREAD_START_ROUTINE lpStartAddress, //重要: 线程函数指针 LPVOID lpParameter, //重要: 启动线程函数 DWORD dwC…

分布式知识总结(一致性Hash算法)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…

若依项目改造-sqlserver(2)

目前启动时,不需要配置数据库 1、启动时,不用检查数据库连接 2、可以在线导出数据库备份bak文件 3、实现不用配置jdk环境启动 4、实现启动没有控制台窗口

排序【归并排序和计数排序】

1.归并排序 1.1 基本思想 并归排序:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序&#x…

【代理模式】设计模式系列:实现与最佳实践(掌控访问的艺术)

文章目录 Java中的代理模式引言1. 代理模式概念1.1 代理模式定义1.2 代理模式的参与者1.3 代理模式的基本工作原理1.4 代理模式的优点与缺点 2. Java代理模式实现方式2.1 静态代理2.2 动态代理2.2.1 JDK动态代理2.2.2 CGLIB动态代理 2.3 两者之间的区别与选择 3. 使用案例分析3…

Mariadb数据库本机无密码登录的问题解决

Mariadb数据库本机无密码登录的问题解决 安装了mariadb后,发现Mariadb本机无密码才能登录 百度了很多文章,发现很多人是因为root的plugin设置的值不正确导致的,unix_socket可以不需要密码,mysql_native_password 是正常的。 解…

Codeforces Round 965 (Div. 2)

前言 有人在过七夕,我在打 cf ,还有某人独自一人在学校机房,凌晨一点骑上共享单车回宿舍欣赏沿途的秋风扫落叶。 Standings:2166 题目链接:Dashboard - Codeforces Round 965 (Div. 2) - Codeforces A. Find K Distin…

未来能源技术

未来能源技术正处于全球焦点的中心,旨在应对气候变化、资源枯竭和能源安全的挑战。未来能源技术的发展方向集中在可再生能源、能源储存技术、智能电网、核聚变以及新材料的应用等多个领域。 1. 可再生能源技术 1.1 太阳能技术 太阳能技术是未来能源发展的核心领域之…

精密Δ-Σ ADC的有效噪声带宽

1 简介 即使对最有经验的模拟设计工程师来说,理解ADC噪声也是一项挑战。Δ-Σ ADC具有量化噪声和热噪声,其变化取决于ADC的分辨率、参考电压和输出数据速率。在系统层面上,噪声分析因附加的信号链组件而变得更加复杂,这些组件中的…

NLP_情感分类_序列模型方案

文章目录 项目背景代码导包读取数据文本预处理举例查看分词器数据集调整进一步剖析:对应Step [{i1}/{len(train_loader)}] 里的train_loader进一步剖析:Step [{i1}/{len(train_loader)}] 里的train_loader,原始的train_df 计算数据集中最长文…

Java 并发(四)—— volatile 和 synchronized

一、volatile 关键字 1.概念 如果我们将一个变量使用 volatile 修饰,这就指示 编译器,这个变量是共享且不稳定的,每次使用它都到主存中进行读取。 2.作用 保证变量对所有线程的可见性。但不能保证数据的原子性。因此不能完全保证线程安全…

STP(生成树)的概述和工作原理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

PHPStorm 环境配置与应用详解

​ 大家好,我是程序员小羊! 前言: PHPStorm 是 JetBrains 出品的一款专业 PHP 集成开发环境(IDE),凭借其智能的代码补全、调试功能、深度框架支持和前端开发工具,为用户提供了丰富的功能和工具…