- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
关于事件回调的运用(有关于 中断)
注册VI,在事件发生时调用该VI。该函数用于注册和处理.NET和ActiveX事件。LabVIEW依据连线至各项的输入引用的类型确定可注册的事件。
我理解的就是:注册了事件回调之后,当某些事件发生以后,就会触发程序掉应设置好的子VI,运行子VI,类似于单片机C语言里面的中断处理。
看这样的一个例子(官方原例)
关于通过回调VI修改标题显示的例子。
在VI前面板实现网页浏览的基本功能。
前面板是这样的
程序框图是这样的
事件回调注册事件 用了两个事件。即 Titlechange和BeforeNavigate2.我们以第一个回调事件来进行解释。
当该浏览器控件发生标题改变时间后,就会回调TitleChangeCallback.vi进行某些处理。
我们打开这个子VI进行查看。
程序中 就是 将 事件数据 里面的TEXT 赋值给 我们前面板上的字符串显示控件 Title。
【当浏览器控件的标题发生变化时,事件会存在一个事件数据,这个事件数据当然不会和我们独立创建的字符串显示控件(Title控件)产生关联,于是,我们回调这个子VI将事件的title属性赋值给字符串显示控件】
至于我们应该怎么样创建一个子VI。下面我们进行简单的探索。
我们先 创建一个 事件回调注册 节点(互连接口——.net——事件回调注册)
然后我们将这个节点与 ActiveX控件或.net控件 链接起来。
然后 我们从 第一个选项 “事件”里 选择 TitleChange 事件。就关联了Titlechange事件
右键VI引用端子,创建回调VI。就会创建一个半成型的VI。这个半成型的 VI会根据上一步选择事件的不同而不同。主要是因为用到的参数不同,我们在这个基础之上进行修改。
有的回调VI需要用户参数,有的则不需要。而本例中 我们用到的用户参数就是 我们用到的字符串显示控件Title的引用句柄。
看一下 半成型的回调VI的不同。
Titlechange回调VI是这样的
回调VI
则是这样的:
存在着很大的不同吧!在这个基础上 修改回调VI就相对比较简单了。
语言组织比较乱!我自己能懂。如有不同想法,大家一起留言探讨。
我们可以把这种思维用到 中断程序处理中(例如 串口中断),继续探讨。
需要说明的是:
我们之前创建的半成型的Titlechange回调VI就是这样来的。
上一篇:使用MSCOMM32控件编写串口程序
下一篇:如何在VI中
加载另一个VI的前面板