关于Labview队列的理解及使用
本文非常详细的介绍队列的底层理解思路和使用。
题主非常详细的介绍了队列的原理及使用方法,帮助读者在原理上深刻理解队列的底层逻辑,并介绍了队列使用时的注意事项。后续将更新更多相关文章记得点赞加关注,谢谢~
文章中所有程序已上传云端,无需提取码,下载地址(建议先转存):
链接:https://pan.quark.cn/s/0388fbda0193
程序为2020版,如有其他版本需求,请直接私聊题主,题主会尽快回复~
一、队列
言归正传,我们该如何理解什么是队列呢?
顾名思义:既然是队,那么他一定具有将数据整理整齐的顺序,也就是说队列内部的数据是排好队的,我们可以将它理解为—数据整齐的进入该函数,并整齐的在该函数里面出来,有一定的顺序。
其实Labview提供了强大的队列操作指令,该指令可以简单理解为程序向上位机寄存器申请了一部分内存用于存储和传递数据,数据传入队列及传出队列的过程如下图所示:
上图表达的意义可以说是队列向寄存器申请到的该部分内存类似于一个容器,入队列数据类似于进入容器的水,出队列数据类似于在从另一端流出的水,进入队列的数据暂存在寄存器中,当数据在出队列被取出后,这个数据就在队列中消失,也就是说,队列中的数据是定量的,不可重复使用的,取出后便消失了。其执行步骤可以表述为以下图片。
那么基于该思路,Labview中如何对队列数据进行编程呢?
请看下一章中的三要素:
二、队列基本构成
接下来记住队列操作的三个要素:①队列名称,②数据类型,③生产和消费。这三点非常重要,不知道各位是否理解。
不理解也没关系,我下面将通过程序向大家更完整的展示这三个要素,强调三要素的重要性。关于使用,应首先建立一个基础的队列程序,包含下面三个要素点,这种结构的程序记住就可以。
他有两个并行的while循环组成,其中一个while循环一直向队列写数据,另一个向队列读数据,并且写进去的数据,只能读出一次,通过大量实例可以发现,许多开发人员的数据采集程序多采用这种形式的队列用法。这里需要提一句,上图中引入队列中的②点是队列传输的数据类型,当该节点链接整数时,后面元素入队列及元素出队列输入输出的均为整形常量。如果是输入数组时,后面对列输出也应该是数组以此类推。
接下来我们看前面板显示,上面生产的字符串文本,通过队列传到了下方while循环的元素控件中。
那么,这到底有什么用呢?我本来可以直接让他显示出来啊,何必费这个劲去写个这么复杂的程序,完成这么简单的操作。请看下面。
三、队列应用场景
1.复杂事件结构的处理
基于以上第二节中提到的队列组成三要素,复杂程序如果在同一vi中处理大量事件时,程序往往冗余繁琐。若使用上while循环生产事件,下while循环处理事件的方式,往往可以节省大量精力,下图为一个复杂事件处理结构,上while循环套事件结构,下while循环套分支选择器,分支选择器根据不同事件产生的队列元素对应不同分支处理相关事件。如下图①②所示。
2.实现vi间数据传递
建立名称相同的vi队列程序,产生的数据在第一个vi入队列后,第二个vi出队列拿取数据。用例程序如下图所示:
vi的队列操作应用场景众多,可通过项目实践或查找labview相关范例来提升使用水平。
具体地址为软件的状态栏“下拉状态栏–帮助–范例”来学习。
程序不只在了解的多,而且要多加练习,仿照实例去写自己的程序,慢慢就会发现之前一直不通的知识点迎刃而解喽,加油。
我是一名开发四年开发经验的工程师, 希望有帮到大家,相关问题可私信喔。后续题主将更新更多软件开发相关知识及经验分享,欢迎点赞加关注讨论技术问题~~