LabVIEW专栏七、队列

news2024/10/7 16:16:41

目录

  • 一、队列范例
  • 二、命令簇
  • 三、队列应用
    • 1.1、并行循环队列
    • 1.2、命名队列和匿名队列
      • 1.2.1、命名队列
      • 1.2.2、匿名队列
    • 1.3、长度为1的队列

队列是一种特殊的线性表,就是队列里的元素都是按照顺序进出。
队列的数据元素又称为队列元素。在队列中插入一个队列元素称为 入队,从队列中删除一个队列元素称为 出队

  • 队列元素遵循先进先出的原则,先进去的元素会先出来。
  • 在LabVIEW中队列是引用,即在创建队列后,可以得到队列引用。
    直观点来说,LabVIEW的子VI里的输入端子,如果是传普通变量,无论在子VI里怎样操作都不会 影响这个变量本身,但如果是传引用,子VI里的操作会影响到引用本身。在例子中有直观体现。

一、队列范例

LabVIEW有自带的队列范例可参考
①帮助→查找范例
在这里插入图片描述
②搜索"队列"→双击"队列"
在这里插入图片描述
③双击"简易队列"
在这里插入图片描述
④前面板如下,此范例用于演示怎样在两个并行的循环检传输数据。

  • 在创建队列引用后,有可能循环A入队列,另外循环B出队列,这样循环A就能专门用于接收外部信号,循环B则专注于处理需要时间的事务。在项目上,循环A可以用于接收PLC等外部信号,然后让循环B处理具体事务。
    在这里插入图片描述
    ⑤程序框图如下:
    在这里插入图片描述
  • 示例图片:获取队列引用,也叫做创建队列,接线端可以接受名称和数据类型,和队列最大值,此处名称接线端为空,数据类型接线端为"布尔量",队列最大值默认为-1(无限大)。这里的数据类型决定了这个队列无论在入队列还是在出队列都只能接受"布尔量"。
  • 示例图片:元素入队列,调用这个入队列之后,在队列元素缓存就会多一个元素,这个时候如果有出队列在等待,就会把元素弹出。
  • 示例图片:元素出队列,只有一个"超时毫秒"接线端。
    如果不接,那么默认就是-1,就是永不超时,会一直等待,直到队列被释放。
    如果设置了超时,假设设置了100,经过100ms没有元素可以弹出(也就是没元素入队列),“元素出队列"会执行完一次,输出的是控件的默认值,此处是"布尔量"的默认值,也就是"假”。
  • 示例图片:释放队列引用,调用这个后,队列就被释放了,正在使用这个队列的"元素入队列"和"元素出队列"都会报错,该范例利用了这个报错来退出循环,也是项目上比较常用的退出办法。
  • 所有队列相关的VI在"程序框图"→"函数"→"同步"→"队列操作"
    在这里插入图片描述

二、命令簇

队列是可以指定数据类型的。在LabVIEW中,一般会使用"簇"来传递数据。"簇"相当于一个容器,可以把各种类型都放到"簇"里。

  • 程序框图拉出"簇"
    在这里插入图片描述
  • 前面板拉出"簇"
    在这里插入图片描述
  • 如果要添加变量,直接把变量拉进去"簇"里面就行。常量在程序框图里面添加,变量(控件)在前面板添加。此处新建一个比较常用的"命令簇",里面包含一个"字符串",标签为cmd,一个"变体",标签为data。字符串作为命令,变体作为数据。
    在这里插入图片描述
  • 程序框图中,簇比较多用到的是"按名称接触捆绑",“按名称捆绑”,“接触捆绑”,“捆绑”
    在这里插入图片描述
    “按名称接触捆绑”/“按名称捆绑”:必须要簇里所有元素都有对应的标签。
    “接触捆绑”/“捆绑”:不需要标签,簇内元素从上到下排列。

三、队列应用

1.1、并行循环队列

比较典型的做法有两种
①通过簇让并行两个循环传递命令和数据,运行会弹窗"测试",然后结束程序。
在这里插入图片描述
②消息循环队列
在范例中有个"队列消息处理器",双击打开
在这里插入图片描述
程序框图如下:
在这里插入图片描述

  • 在事件处理循环中的事件结构里,点击"动作 1"按钮,可以让命令簇入队列
  • 在消息处理循环中,有对应的出队列,可以处理具体事务。在实际应用中,由于事件结构如果卡住,会导致界面无法再响应外部输入(包括鼠标点击和键盘输入),所以耗时的操作一般放到另外一个循环中处理

1.2、命名队列和匿名队列

1.2.1、命名队列

创建队列的时候,可以在"名称"接线端输入对应名称。
同样名称的队列引用,共用一个内存。
创建一个新的vi,程序框图如下:
在这里插入图片描述

  • 在开始新建了一个"test"名称的队列引用,然后在程序框图中,用"test"名称来再"创建"一次队列引用,再把"测试"字符串入队列。在循环结构里,出队列可以把"test"名称的队列元素弹出,也就是"测试"字符串。

1.2.2、匿名队列

创建队列的时候,没有在"名称"接线端输入对应的名称,这里称为"匿名队列",这种用得较多,可以保证每个匿名队列都是独立的。在使用队列比较多的程序里,可以直接使用匿名队列,这样不用花费时间来起名。

在这里插入图片描述

1.3、长度为1的队列

长度为1的队列,就是创建队列的时候,队列最大值为1,数据类型可以是任何类型,这里是字符串
在这里插入图片描述
由于队列中只有一个元素,并且队列作为引用,因此,在队列里唯一的元素就可以用来充当全局变量。
在写法上还要保证,队列里唯一的元素不能删除掉,因此,在操作该队列的时候
在这里插入图片描述

  • 读取元素:预览队列元素,意思是不弹出队列里的元素,仅预览一次。
  • 修改元素:有损耗元素入队列,意思就是队列里面的元素先弹出,然后再插入。
    在这里插入图片描述
  • 注意在创建队列的时候,要先插入一个元素。保证在该队列始终有一个元素在内。

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

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

相关文章

mysql reset slave reset master

mysql reset slave reset master 1、问题背景2、问题分析3、解决方法3.1、锁定主库,手动同步主库数据到从库,使得主从数据库数据一致3.1、从机执行stop slave、reset slave3.2、从机上再次指定主机的binlog文件名和偏移量3.3、从机执行 start slave3.4、…

蓝牙低能耗安全连接 – 数值比较

除了 LE Legacy 配对之外,LE Secure Connections 是另一种配对选项。 LE 安全连接是蓝牙 v4.2 中引入的增强安全功能。它使用符合联邦信息处理标准 (FIPS) 的算法(称为椭圆曲线 Diffie Hellman (ECDH))来生成密钥。对于 LE 安全连接&#xff…

MMSeg搭建模型的坑

Input type(torch.suda.FloatTensor) and weight type (torch.FloatTensor) should be same 自己搭建模型的时候,经常会遇到二者不匹配,以这种情况为例,是因为部分模型没有加载到CUDA上面造成的。 注意搭建模型的时候,所有层都应…

汽车企业安全上网解决方案

需求背景 成立于1866年的某老牌汽车服务独立运营商,目前已经是全球最大的独立汽车服务网络之一,拥有95年的历史,在全球150多个国家拥有17,000多个维修站,始终致力于为每一位车主提供高品质,可信赖的的专业汽车保养和维…

win10加入域环境

win10加入域环境 导航 文章目录 win10加入域环境导航一、关闭防火墙二、使客户端的电脑指向于域控服务器三、检验是否加入了域 一、关闭防火墙 在进行加入域服务之前,我们需要先关闭防火墙(为了不必要的麻烦) 按 winr调出运行窗口,输入 control打开控制面板 点击系统和安全点…

42. UE5 RPG 实现火球术伤害

上一篇,我们解决了火球术于物体碰撞的问题,现在火球术能够正确的和攻击目标产生碰撞。接下来,我们要实现火球术的伤害功能,在火球术击中目标后,给目标造成伤害。 实现伤害功能的思路是给技能一个GameplayEffect&#x…

JAVA毕业设计136—基于Java+Springboot+Vue的房屋租赁管理系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootVue的房屋租赁管理系统(源代码数据库)136 一、系统介绍 本项目前后端分离,分为管理员、用户、工作人员、房东四种角色 1、用户/房东: …

正态性检验

t检验、方差分析(ANOVA)等参数检验都有一个共同的前提条件:样本数据必须服从正态分布,即样本数据必须来源于一个正态分布的总体,若样本数据不服从正态分布,就不能用以上参数检验对数据进行分析,…

OpenCV鼠标绘制线段

鼠标绘制线段 // 鼠标回调函数 void draw_circle(int event, int x, int y, int flags, void* param) {cv::Mat* img (cv::Mat*)param;if (event cv::EVENT_LBUTTONDBLCLK){cv::circle(*img, cv::Point(x, y), 100, cv::Scalar(0, 0, 255), -1);} }// 鼠标回调函数 void dra…

.NET 个人博客-添加RSS订阅功能

个人博客-添加RSS订阅功能 前言 个人博客系列已经完成了 留言板文章归档推荐文章优化推荐文章排序 博客地址 然后博客开源的原作者也是百忙之中添加了一个名为RSS订阅的功能,那么我就来简述一下这个功能是干嘛的,然后照葫芦画瓢实现一下。 RSS简述…

SpringBoot+RabbitMQ实现MQTT协议通讯

一、简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。此…

阿斯达年代记游戏下载教程 阿斯达年代记下载教程

《阿斯达年代记:三强争霸》作为一款气势恢宏的MMORPG大作,是Netmarble与STUDIO DRAGON强强联合的巅峰创作,定于4月24日迎来全球玩家热切期待的公测。游戏剧情围绕阿斯达大陆的王权争夺战展开,三大派系——阿斯达联邦、亚高联盟及边…

浅谈菊风实时音视频 (RTC)与实时操作系统 (RTOS) 在智能硬件领域应用

近年来,菊风通过实时音视频赋能智能手表、智能门禁、智能门锁/门铃、智能眼镜等数十种智能硬件,与一众合作伙伴共同探索在IoT智能硬件领域的不同场景应用,积累了丰富的实践经验。在智能硬件中,RTOS因其轻量化的系统内核&#xff0…

使用Mybatis映射时间 DateTime ==> LocalDateTime

首先查看,数据库字段: 书写映射实体类对象VO: Data public class OrderListVO implements Serializable {private Integer orderId;private String memberName;private String orderNumber;private BigDecimal orderPrice;private String l…

element-ui upload 组件 手动多次出发 submit

element 上传组件 upload 上传成功以后,想重新 调用 submit()函数,发现是不可以进行多次触发的,。 直接上解决方法,在上传成功后的钩子函数里添加:fileList[0l.status ready fileList是文件列表,status是单文件的状态改成ready就…

全栈从0到1 3D旅游地图标记和轨迹生成

功能演示 演示视频 体验地址 Vercel App 开发技术栈: NextJs(前端框架)React(前端框架)TailwindCSS (CSS样式)echart echart gl (地图生成)shadui(UI组件…

机器视觉系统-工业光源什么是无影光

光路描述:通过结构或漫射板改变光路,最终发光角度包含了高角度 和低角度。 效果分析:兼具了高角度光和低角度光的效果,使被测物得到了多角度的照射,表面纹理、皱褶被弱化, 图像上整体均匀。 主要应用&#…

linux 上 jps 列出一堆 jar,如何快速定位 jar 文件启动位置?

例如,在 /data下有一个 xxx.jar ,如果是通过 "java -jar /data/xxx.jar" 方式启动,则 jps会列出的名字中带 xxx.jar,这时再 "ps -ef | grep xxx.jar" 就会列出 更详细的信息,例如 "java -ja…

Spring Kafka——基于 Spring Kafka 实现动态管理 Kafka 连接和 topic 的监听

文章目录 使用 Spring Kafka 动态管理 Kafka 连接和主题监听1. 前言2. 简单的消费程序配置3. Spring Kafka 主要的相关类的说明4. KafkaListener 注解的加载执行流程解析5. 动态监听消费订阅的设计与实现 使用 Spring Kafka 动态管理 Kafka 连接和主题监听 文章内容较长&#x…

Windows电脑中护眼(夜间)模式的开启异常

我的电脑是联想小新16pro,Windows11版本。之前一直可以正常使用夜间模式,但是经过一次电脑的版本更新之后,我重启电脑发现我的夜间模式不能使用了。明明显示开启状态,但是却不能使用,电脑还是无法显示夜间模式。 询问…