首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» LABVIEW深入探索之如何使多个事件分支执行相同的功能
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
LABVIEW深入探索之如何使多个事件分支执行相同的功能
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2014-5-28 18:29
|
只看该作者
LABVIEW深入探索之如何使多个事件分支执行相同的功能
如何
类似的问题在
论坛
上看到多次了,非常典型,所以汇总几种常见的方法供大家参考。
在实际应用中,经常会遇到多个不同的事件源,需要触发同一事件的问题。最为常见的是程序的菜单项和工具栏的按钮问题。通常情况下,工具栏的按钮对应菜单条的中的某一项,二者的作用是相同的。在C语言编程中,通常为二者注册同一回调函数,这样二者的反应就完全相同了。
在LABVIEW的编程实践中,也会遇到类似的问题,基于LABVIEW事件结构的特殊性,存在几种常见的方法可以解决这个问题。
1、为一个分支静态注册多个事件。
这种方法与其它编程语言类似,类似于为多个事件注册同一回调函数。下面我用四个按钮来举例说明。
显然图中四个按钮的作用是类似的,比如移动图片,包括上下左右四个方向。一般情况下,我们对四个按钮是分别静态注册事件,因此会出现四个事件处理分支,非常繁琐,也容易出现问题。
初学者可能没有注意到一个事件分支可以静态注册多个控件的事件,注册方法如下图所示:
通过事件结构中控件的引用可以区分是那个按钮产生了事件。
2、利用值(信号)属性节点转发事件
如果我们为每个按钮单独注册了事件,可以在一个按钮事件分支中处理所有按钮的响应代码,通过值(信号)属性节点,可以编程实现触发事件,如下图所示:
3、不同事件分支调用同一VI
这种方法使用比较简便,对需要相同功能的事件分支,调用同一函数(VI),因为非常简单,就不举例了。
4、采用生产消费者模式(事件)
使用基于事件的生产消费者模式后,对于不同的事件分支,产生相同的功能就非常容易了,无非是向队列入队相同的数据而已。LABVIEW提供了生产消费者模式的模版,如下图所示:
但是一般都要根据自己的需要,重新
封装
队列,比如下面的例子:
上面介绍了几种常用的方法,如果我们使用了生产消费者模式,结合事件结构,我们就有了自己的消息处理中心,这种方式与WINDOWS的消息机制非常类似,使事件结构的处理更为灵活,重点推荐这种方式。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议