请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 950|回复: 0

[转帖] LabVIEW技巧系列—事件结构

[复制链接]

6

主题

0

回帖

13

E币

技术员

Rank: 2

积分
12
发表于 2017-4-5 14:07:20 | 显示全部楼层 |阅读模式
事件结构,是LV编程结构的精髓所在。它类似于单片机的中断功能,优点在于不占用CPU资源。比如按键按下串口发送数据,以及设置键盘快捷键等等功能,事件结构比查询结构要节省很多系统资源。下面我介绍一下利用事件结构的关键点,基础的自己去看帮助吧。
1,关于事件结构超时连线的问题:事件结构有一个超时事件的输入,当不连接时代表永不超时。这点要十分注意,因为有时候你的事件就够会和其他结构放在一个while循环里,比如下图:
562514385049603.jpg
我们理想的情况是,其他服务程序正常循环运行(小灯闪烁),而鼠标按下后,处理事件结构。但是如果这样写的话,由于事件结构永不超时,while循环只会运行一次,只有当鼠标按键按下后,才会开始第二次循环。这个程序的运行结果是,按一下鼠标,小灯变化一次。
   要解决这个问题有两个办法:一个是给事件结构的延时输入处添加延时时间,比如5ms,这样循环就会5ms运行一次,不会影响其他服务程序的正常运行。二个就是把其他服务程序放到另外一个while循环中,事件结构单独一个循环。个人建议选择第二个方法。

2,关于事件结构软触发的问题:前面板有一个按钮,按下后触发很简单,也很常用。不过有时候要涉及到软触发的问题,就是利用程序(而不是前面板的控件)去触发一个事件。先看下面这个例子:
562514395052485.jpg

"服务程序"软件改变“软触发”的值,我们的理想目标是,每次改变服务程序的值为真时,标志小灯会改变一次。但是实际程序运行结果是,无论按多少次,小灯都不变。因为直接赋值只能改变变量的值,而不能引起次变量的事件触发。

解决办法就是:要软件触发事件,必须对变量右键->创建->属性节点->值(信号)进行赋值,这样才能触发事件结构。例如下图。 562514395093536.jpg
(事件结构设置时要把锁定前面板勾掉)程序运行结果:当“服务程序”弹起时,小灯不变,但是事件会一直触发,用高亮模式可以看见,连续两次给“软触发”赋F,事件同样会触发,换句话说,只要赋值,就会触发事件,而不是值改变才会触发。所以在事件结构里加了一个条件结构。当“服务程序”按下时,不停的给“软触发”赋T,事件结构不停运行,小灯闪烁。

事件结构是LV的精髓
积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-3-29 22:24 , Processed in 0.041441 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表