回调函数是WINDOWS编程(API编程)的核心内容之一,在许多高级编程语言,如VB,VC(MFC)中已经封装了回调函数,取而代之的是事件响应函数,但是,追溯其本质,实际就是回调函数.

所谓WINDOWS回调函数,就是按照WINDOWS的规范,编写的(CALLBACK)函数,当WINDOWS检测到事件发生时,自动调用的函数,WINDOWS是通过函数指针调用的,因此,回调函数的内容是由用户决定的,而何时调用是由操作系统决定的.

我们看一下CVI中的一般回调函数的定义

int callback aaaa(int panel,int control,int event1,int event2,callbackdata *data);

回调函数的参数是有操作系统提供的,比如上面的回调函数,

panel---表示的哪个面板(窗口)发生的事件

control---表示的面板上哪个控件发生的事件

event1 event2 表示事件的类型和相应数据,比如鼠标坐标等

回调函数是一般高级编程语言的基本功能,但是,在LABVIEW8.X之前是不支持的,这极大限制了LABVIEW功能的扩展,因为ACTIVEX,.NET都需要回调函数.

8.X中,增加了回调函数的功能,主要用于ACTIVE,.NET和LABVIEW自身控件,LABVIEW例子程序中提供了几个例子,是有关ACTIVEX和.NET调用的,下面,我们通过LABVIEW自身控件说明一下回调函数的使用方法.
Picture
在.NET摸板中也提供了这个节点,从分类上就可以看出,注册回调函数主要是用于ACTIVEX和.NET的.

下面我们做一个简单的回调函数的程序,有两个功能,返回当前值的变化和记录控件被点击的次数
Picture
注册回调函数需要三个参数:控件参考,用户参数和自动生成的回调函数,有了控件参考,我们就可以选择事件的类型,用户参数主要是用于返回结果,因为回调函数是由操作系统调用的,没有办法通过数据流返回处理结果.

添加了这两个参数后,就可以自动生成回调函数了
Picture
回调函数如下图所示
Picture
简单编程,CONTROL的值传递给INDICATOR
Picture
这样值变化的回调函数完成了,下面我们通过鼠标UP事件来记录被点击的次数
Picture
可以看出,这次,我们注册的是鼠标抬起事件,因此,系统传递了鼠标的坐标等信息
Picture
最后看一下主程序框图
Picture
在主程序循环中,没有对控件和指示器做任何操作,所有操作响应都是通过回调函数完成的
Picture
Picture



Leave a Reply.