搜故事,从300万个故事到海量知识百科的华丽转变!

手把手以实例教你学LabVIEW编程 事件结构框架

时间:2011-10-12

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

提示:本文共有 1664 个字,阅读大概需要 4 分钟。

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循环结构进行结合使用的。

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

看到此处说明本文对你还是有帮助的,关于“手把手以实例教你学LabVIEW编程 事件结构框架”留言是大家的经验之谈相信也会对你有益,推荐继续阅读下面的相关内容,与本文相关度极高!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
LabVIEW编程实例:手把手教你做一个图片浏览器软件

LabVIEW编程实例:手把手教你做一个图片浏览器软件

文件,图片,事件,状态,代码,索引,结构,所示,数组,用户,程序,跳转到,函数,前面板,控件,按钮,机制,如下图,状态下,移位寄存器,作用,分支,格式,标题,程序框图,节点,当前文件,按钮时,运行状态,状态机

2018-11-08 #故事大全

手把手以实例教你学LabVIEW编程 顺序结构用法

手把手以实例教你学LabVIEW编程 顺序结构用法

顺序结构,随机数,时间,平铺,循环,运行,代码,所示,控件,数据,程序框图,过程,设计,如下图,个数,功能,内容,区别,语言,完全相同,局部变量,屏幕,帧数,方式,数值,本例,程序运行,空间,计数器,顺序

2020-09-06 #故事会在线阅读

LabVIEW编程实例:趣味流水灯程序设计

LabVIEW编程实例:趣味流水灯程序设计

流水灯,代码,移位寄存器,函数,数值,控件,状态,结构,移动,板上,小程序,事件,功能,数组,程序,循环,事件中,位数,例子,时候,布尔,所示,设计,运行,退出程序,右移,左移,在事,小伙伴,中实

2012-12-05 #故事会在线阅读

以实例跟我学LabVIEW编程:如何求解1000以内的所有素数

以实例跟我学LabVIEW编程:如何求解1000以内的所有素数

素数,循环,数组,移位寄存器,余数,子程序,整数,符合条件,程序,代码,函数,字符串,根号,自然数,问题,循环结束,个数,思路,条件,框图,结果,一个大,写一个,如何判断,判断是否,看一下,循环次数,转换为,电子表格,图中

2016-08-12 #故事会在线阅读

LabVIEW编程基础:以实例教你学习For循环和移位寄存器的编程

LabVIEW编程基础:以实例教你学习For循环和移位寄存器的编程

移位寄存器,数组,循环,数字,函数,余数,位数,所示,如下图,思路,循环结构,个位,之和,代码,例子,关键点,关键,定义,控件,情况,理出,知识点,结构,语言,能力,参数说明,空数组,选择结构,编程语言,商部

2020-03-20 #故事会在线阅读

如何使用project编制横道图?手把手操作实例!

如何使用project编制横道图?手把手操作实例!

任务,工作任务,工期,样式,鼠标,开始时间,名称,软件,条形图,一行,任务区,内容,天数,标签,编制,菜单,调整,区的,前置任务,完成时间,工作时间,横道图,甘特图,区域,单元格,日期,格式,工作,标签栏,数字

2013-05-07 #故事会在线阅读

手把手教你写用户故事验收标准

手把手教你写用户故事验收标准

用户,故事,验收标准,功能,团队,项目,问题,我应该,定义,任务,名称,实例,标准,模板,清单,示例,细节,视图,评论,和测试,新功能,拆分,测试用例,上下文,东西,事件,义务,价值,催化剂,假设

2020-08-07 #小故事

细思极恐的吸毒实例!手把手教你一眼看出谁是瘾君子

细思极恐的吸毒实例!手把手教你一眼看出谁是瘾君子

吸毒,毒品,吸毒者,特征,警察,冰毒,时候,父亲,吸食者,厕所,个人,人群,瘾君子,可卡因,朋友,海洛因,精神,胳膊,下巴,孩子,尸体,毒瘾,法医,派出所,皮肤,舅舅,鼻子,鼻粘膜,一家,人员

2007-01-13 #故事会在线阅读