首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LabVIEW编程基础:以实例学编程之事件结构

LabVIEW又称为G语言,简单易学、形象直观,采用图形化的编程方式,是专为测试、测量和控制应用而设计的系统工程软件。

前面几篇文章依次讲解了LabVIEW中顺序顺序结构、条件结构及循环结构的编程方法,下面再讲一种与软件界面响应有关的事件结构的编程方法。

事件结构框架特点

在程序设计中,我们经常需要对用户界面的各种操作(如单击鼠标、按下键盘、改变控件的值等)作出响应,在早期的LabVIEW版本中,是采用轮询方式来检测的,其缺点是不够灵活,占用CPU资源较多,而且操作频率较快时可能会检测不到变化,从而漏掉某个事件的发生。

在LabVIEW6系列版本后,引入了事件结构,这种程序处理结构克服了轮询方式结构的缺点,极大改善了界面处理的运行效率,同时也降低了CPU的占用,提高了软件用户的使用体验。严格意义上来说,事件结构不是纯粹的程序运行控制结构,它是一种监测GUI界面上各种事件发生并采取相应处理措施的一种机制。

事件结构的框架样式如下图所示:

上图中,事件结构框架中包括了事件类型、超时端口、事件附加数据及事件框等要素信息。

下面通过简单的例子,演示LabVIEW中事件结构的编程方法。

示例说明

本例运行界面如下图所示:

实现的功能是,在软件运行过程中监测键盘、鼠标等事件,在“事件信息”字符串显示控件中显示当前的各种运行信息。本例包括了如下事件处理:

1. “键按下”事件:当按下键盘时在界面上显示当前按下的字符。

2. “鼠标按下”事件:当鼠标按下时在界面上显示当前按下的是左、中、右哪个键及当前的鼠标位置信息。

3. “值改变”事件:当点击退出按钮时程序退出运行。

4. “超时”事件:每隔1s显示一次当前的日期时间信息。

程序框图实现过程

本例中涉及到了多种类型事件,主框架采用事件结构配合while循环的方式实现。在事件结构分支中添加各种事件,每响应一次事件执行一次while循环,直到执行退出按钮的值改变事件时退出整个程序,且在while循环中添加了一个移位寄存器,用以保存前面的提示信息。

在程序开始运行时可以作一些初始化工作,本例中在最外层顺序结构的第一帧中初始化“事件信息”的值,其代码如下图所示:

在顺序结构的第2帧中对各种事件分别进行处理,下面依次给出4个事件的处理程序框图代码。

(1)“超时”事件

程序框图代码如下图所示:

“超时”事件中实现每隔1s显示一次当前的日期时间信息,超时时间设置为1000ms,使用“获取日期/时间字符串”函数得到当前的日期时间,使用“连接字符串”函数与移位寄存器中已有的提示信息相连接,送到“事件信息”控件中显示即可。

注意,若超时时间设置为-1,则永不执行该分支代码,这也是其默认值。

(2)“键按下”事件

程序框图代码如下图所示:

“键按下”事件中,当键盘上有按键按下时,可在其附加数据中得到当前按键的“I16”类型字符值,其对应的是该按键的ASCII码,将其转换为U8类型的变量,然后使用LabVIEW内置函数“强制转换类型”将其转换为字符串类型,就可得到该按键对应的具体字符。

(3)“鼠标按下”事件

程序框图代码如下图所示:

“鼠标按下”事件中,当鼠标在窗口主界面上按下时,其附加数据中的“按钮”值包含了当前按下了哪个键的信息,其中1、2、3分别代表了按下了左键、右键及中键。附加数据中的“坐标”则给出了当鼠标按下时当前其所在窗口上的位置信息。

(4)“值改变”事件

程序框图代码分别如下图所示:

“值改变”事件中实现了当按下前面板上的“退出”按钮时,退出该程序。

总结

本文举了一个很简单的例子演示LabVIEW中事件结构的编程方法,当然,在实际软件编程中,不同的事件源(如控件、VI本身等)会产生不同类型的事件,每种事件类型中又会给出其对应的附加数据,根据这些附加数据信息,就可以实现我们的处理目的,其编程方式完全是类似的。

需要注意的是,不同于其它高级编程语言,在LabVIEW平台中事件结构一般不会单独出现,它通常是与while循环结构进行结合使用的。

本文由编码那些事原创,请关注+转发+收藏+点赞,带你一起长知识!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190428A0F4LP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券