labview从入门到出家4--用事件结构实现运算功能
使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件。基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的。一个好的状态机可以帮助我们搭建一个好的程序框架,这将非常有利于我们以后写一些大型程序。在此前,我们先用之前的加减乘除运算熟悉一下事件结构。
1、同样的,按上一章节的操作,或者直接拷贝上一章的程序。新建工程->新建calc主VI->新建子VI,这里把主VI打回原型,把之前的条件结构减掉(其实就是用事件结构代替里面的条件结构,但只是介绍事件结构的使用,不是说事件结构可以取代条件结构)。

2、添加事件结构

我们可以看到事件结构的第一个默认事件是超时事件(目前只有一个事件),左上角那个沙漏状的是超时时间设定,相当于单片机里面的定时中断,我们后面可以右键新建一个数值常量用于设定超时时间。如果没设定超时时间,则在没有其他事件产生或触发前,整个while循环就卡在超时事件这边等待超时事件的发生,因为没有设定超时时间,所以程序一直等待,不响应事件之外的其他操作。

只有一个超时事件

3、添加“布尔”按键的事件,鼠标移到事件结构上方的事件显示图标,右键选择“添加事件分支”。

选择布尔,选择值改变,点击确定就添加了我们的布尔按键的事件了。

鼠标点击事件结构上方的黑下三角,显示有超时和布尔值改变两个事件分支,我们选中布尔值改变的事件分支,在该分支添加相关的程序逻辑。

4、将上一次章条件结构中的程序直接拷贝或者重新编写至事件分支中

5、运行程序试一下功能(后面会出一章讲程序调试操作,我们到时候可以用调试工具查看事件功能的响应情况)。我们发现基本功能和上一章的一致,但是会发现一个问题,点击退出按键的时候界面不响应退出的功能。这时因为while循环中我们添加的是事件结构,也就是程序只有识别到事件发生时,才会执行一次while循环,没事件发生的话,则不会运行其他操作,也就不响应按键的执行了。大家是否还记得那个超时事件呢?

当其他事件不发生时,我们又希望程序继续执行事件结构之外或事件之外的逻辑的话,我们可以在事件机构左侧输入超时时间,一旦超过这个时间程序没有执行其他操作的话,则执行一次超时事件,这样在事件响应超时的情况下就可以执行一次while循环了。

现在再试一下,退出功能是不是恢复了呢!
原创不易,一键三连啦,若有不对或者讲解不到位的地方,欢迎在下方评论,我会及时更改!
labview从入门到出家4--用事件结构实现运算功能的更多相关文章
- labview从入门到出家5(进阶篇)--程序调试以及labview函数库的运用
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...
- labview从入门到出家6(进阶篇)--移位寄存器的使用
前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...
- labview从入门到出家3--制作和调用子VI
当程序越写越大的时候,我们会发现代码界面会比较乱(线太多),那要怎么做可以让代码更简洁一点,我只管直接调用某个功能函数,而不需要在一个VI上面去实现这个功能函数呢?--子VI.好比C语言里面的Main ...
- labview从入门到出家8(进阶篇)--简单好用的状态机
labview的状态机类似于一个软件框架的基本单元,好的软件框架和软件思路采用一个好的状态机,就如虎添翼了.这章给大家讲一个本人常用的一个状态机,基本上以前的项目都是建立在这个状态机上完成的,当然网上 ...
- labview从入门到出家1--第一个加法程序
概述: Labview在众多编程语言中排名靠后,显然在当今互联网,物联网时代并非主流语言.但是俗话说行行 出状元,即便不是立身于某个主流的领域,用好了依旧可以独领风骚,而且Labview对于硬件出身的 ...
- labview从入门到出家9(进阶篇)--串口通讯
Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多.(很 ...
- labview从入门到出家7(进阶篇)--队列的使用
本节简单讲解队列在Labview中的使用,队列你可以认为就是一组先进先出的数据列表,在Labview中常用来缓存和传递数据.用了这么久的队列,个人认为有个方便的地方在于数据传递的把控,不管是局部变量还 ...
- labview从入门到出家2--将“加法程序”制作成“exe应用程序”
1.上一章主要讲了如何跑我们的第一个加法程序(这里向第一个程序的鼻祖"hello world"致敬),这一章我们直接进入主题,将我们写的程序生成exe文件放桌面运行. 2.要生成e ...
- [Labview资料] labview事件结构学习
编程的主要目的是为了实现用户的某种功能,用户通过用鼠标.键盘.程序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW中相应这些事件最常用的结构就是“事件结构”.事件结 ...
随机推荐
- CUDA02 - 访存优化和Unified Memory
CUDA02 - 的内存调度与优化 前面一篇(传送门)简单介绍了CUDA的底层架构和一些线程调度方面的问题,但这只是整个CUDA的第一步,下一个问题在于数据的访存:包括数据以何种形式在CPU/GPU之 ...
- js数组操作集合
1. join() 功能:将数组中所有元素都转化为字符串并连接在一起. 2. reverse() 功能:将数组中的元素颠倒顺序. 3. concat() 功能:数组拼接的功能 ,返回新数组,原数组不受 ...
- springmvc03-restful和控制器
一.控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含 ...
- Prim 最小生成树 图解
什么是生成树 子图:G=<V,E>,G'=<V', E'>,为两个图(V为点集,即图中点的集合,E为边集),如果V'是V的子集且E'是E的子集,则G'是G的子图. 如果V' ...
- k8s和Docker关系简单说明
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有需要的同学可以 ...
- Docker系列教程05-Docker数据卷(Data Volume)学习
引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...
- css的flex布局调试
学习经验-css的flex布局 今天遇到一个小问题 在给三个div布局时,设置父元素display:flex 此时三个div的宽度均为50%,他们并没有超出屏幕的宽度,还是撑满了父元素. 为什么呢? ...
- psexec.py规避杀软
前言 在内网渗透中,当获取到一个账号密码后,经常会使用impacket套件中的psexec.py进行远程连接并执行命令,但是因为用的人多了,杀软也对psexec.py特征进行了拦截,也就导致了如果使用 ...
- Python版本共存、语法、变量和数据类型
python多版本共存 主要是把两个版本的python解释器的所在路径都加入环境变量当中,之后重新命名python解释器文件名称就好 先拷贝一个启动程序,在进行改名就好 python.exe pyth ...
- Asp.Net Core 7 preview 4 重磅新特性--限流中间件
前言 限流是应对流量暴增或某些用户恶意攻击等场景的重要手段之一,然而微软官方从未支持这一重要特性,AspNetCoreRateLimit这一第三方库限流库一般作为首选使用,然而其配置参数过于繁多,对使 ...