当前课程知识点:测试系统集成技术 > 第五章:虚拟仪器软件架构 > 5.4:自动测试系统软件设计综合实验 > Video
前一个例程讲解了基于队列的事件处理,
下面来看一下基于回调的事件处理
打开例程,先来浏览一下源代码
打开资源管理器,打开仪器会话,仪器复位,清除仪器的状态信息
对事件状态使能寄存器和服务请求使能寄存器进行设置,
使能事件,结束时无效事件
上述操作都是一样的,不同在哪里呢?
这个程序里没有等待事件viWaitOnEvent,但是增加了调用
viInstallHandler该调用将服务请求事件和一个函数mySrqHdlr关联
起来
还有一个函数是卸载回调函数
事件处理函数在前面定义的
当即收到服务请求事件时,控制机会自动进入回调函数,执行回调函数中的操作
安装回调函数,使能事件,发送命令给仪器,
仪器执行命令并不是立即就能执行完毕
因此在程序代码中大家注意在前面的初始化和发送指令后,
代码中有个while( !quit );循环,quit初始值是为0的,主程序会一直等待,阻塞在这里
每当有服务请求时,会执行哪些操作,程序会自动
进入回调函数里,完成回调函数中的相关操作
在回调函数里,当指定的10次操作完毕时,quit为1,
当quit为1时跳出while,程序执行完毕
程序退出前,使事件无效
卸载掉回调函数,程序执行完毕
整个main函数再执行的过程中在while处阻塞的,但是回调函数是起作用的,
每当有服务请求时,就自动进入回调函数响应
下面看下程序的执行:
打开资源管理器
建立和仪器的会话
使仪器复位,发送仪器复位命令
清除以前的状态信息
设置事件状态使能寄存器bit0位,服务请求使能寄存器bit5位
安装回调函数
使能服务请求事件
发送自动捕获信号的命令,启动信号幅度测试
回调函数里设断点
信号捕获到后,进入回调函数
再次发送相关命令
下面看下连续的执行过程
最后总结一下,基于回调的事件处理,必须注意:
使能事件viEnableEvent
结束时使事件无效viDisableEvent
把事件到来时执行的操作封装到回调函数中
安装回调函数viInstallHandler
要对通信的另一方做相应的设置
-1.1:自动测试系统的出现及意义
--Video
--Video
--附件
-1.2:测试系统体系结构
--Video
--Video
--Video
-第一章:绪论--1.3:课堂实验:网络化仪器控制
-2.1:GPIB总线技术、VXI总线技术、LXI总线技术
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-第二章:接口总线--2.2:课堂实验:示波器程控
-3.1:消息交换控制协议
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.2:程控消息句法
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-第三章:消息交换控制协议--3.3:课堂实验:信号源程控
-4.1:SCPI的目标及主要内容
--Video
--Video
--Video
--Video
-4.2:SCPI语法与风格
--Video
--Video
--Video
--Video
-4.3:标准命令
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-第四章:可程控仪器标准命令--4.4:课堂实验:频谱仪程控、数字多用表程控
-5.1:VISA概述
--Video
--Video
-5.2:VISA库构成
--Video
-5.3:VISA程序基本结构
--Video
-5.4:自动测试系统软件设计综合实验
--Video
--Video
--Video
--Video
--Video
-第五章:虚拟仪器软件架构--5.4:课堂实验:VISA程序设计基础实验
-6.1:IVI概述
--Video
-6.2:IVI程序设计基础实验
--Video
-第六章:可互换虚拟仪器技术--6.2:IVI程序设计基础实验