当前课程知识点:测试系统集成技术 > 第五章:虚拟仪器软件架构 > 5.4:自动测试系统软件设计综合实验 > Video
前面通过4个例程,已经能够实现编写基于VISA的测试应用程序,
使控制机程控仪器完成相关测试任务,大家感觉十分简单是吧?
但是,是不是所有测试任务都这么简单呢?
是不是所有测试指令发给仪器后,都能立即执行完毕呢?
当然不是,很多测试任务执行是需要时间的,这种情况下发送命令
给仪器后并不能立即得到测试结果,此时怎么办呢?
最简单的方式就是查询等待,直到有测试结果为止
但是这样做浪费了控制机资源,同时不断的查询,仪器会花费
更多的时间来响应查询,给仪器带来更多负担,影响测试任务的完成
在VISA中提供了事件通信机制
启用事件后,控制机发送测试命令给仪器,并不能立即得到测试结果
但是控制机并不需要不断的查询,而是仪器在完成测试任务得到
测试结果后通过事件通知控制机,告诉控制机等待的测试任务完成了
在VISA中,事件响应机制有两种,分别是:队列方式和回调方式
下面分别通过两个例程讲解基于队列的事件响应和基于回调的事件响应
现在打开基于队列的事件响应例程
这是程序源代码,要使用事件必须是能事件,事件处理完毕要使事件无效
在VISA中通过viEnableEvent(instr, VI_EVENT_SERVICE_REQ, VI_QUEUE, VI_NULL);使能事件
通过viDisableEvent(instr, VI_EVENT_SERVICE_REQ, VI_QUEUE); 使事件无效
VISA支持的事件在规范里有规定
在本例程里,使用服务请求事件VI_EVENT_SERVICE_REQ,
当仪器完成指令后会发送服务请求事件给控制机
为了能够在指令完成后能够发送服务请求,除了使能事件外,
在仪器端必须进行设置,使仪器在事件完成时能够产生服务请求
请看IEEE488.2中的标准状态数据结构图
标准状态数据结构图
要产生服务请求,必须打开标准事件使能寄存器中的相关位
标准事件状态使能寄存器
标准事件状态寄存器
当有事件发生时,相关的位会置位
只有把标准事件状态使能寄存器对应位打开,事件和使能位一起才能产生事件请求
服务请求寄存器
服务请求发送给控制机端,控制机接收请求,执行后续操作
对上述两个寄存器的操作,通过命令*ESE,和*SRE来完成
在本例程中打开标准事件状态使能寄存器的操作完成位bit0,
打开服务请求使能寄存器的事件状态位bit5
使能标准事件状态使能寄存器的bit0,使能服务请求使能寄存器
的bit5,到此对仪器端的设置完成
接着使能事件,发送测试命令
由于命令执行完毕需要一定的时间,此时控制机在什么时候去读取测试结果呢?
在这里采用队列机制,在测试结果没有完成的情况下,只能等待,如何等待呢?
通过调用viWaitOnEvent(instr, VI_EVENT_SERVICE_REQ, VI_TMO_INFINITE, &eventType, &event);
等待仪器方发送服务请求事件
在事件没有到来时,测试程序将在此处阻塞,直到收到仪器
发送事件服务请求,测试程序才从阻塞态退出,继续执行下面的程序
所有的操作循环执行,要退出执行,由程序设计人员
来确定,这里由变量quit来定
调用viDisableEvent,让事件无效,程序退出
下面来看下程序的执行情况:
打开资源管理器
打开仪器会话
使仪器复位
清除状态信息
对仪器进行相应的设置
标准事件状态寄存器使能,服务请求寄存器使能
使能服务请求事件
发送命令给仪器,命令仪器完成相关操作
调用事件等待函数,等待仪器端执行完毕
读取状态位,完成测量
总共执行10次测试
这是10次的测试结果
程序执行完毕,退出前,要关闭事件,关闭资源管理器
最后总结一下,基于队列的事件处理,必须注意的
使能事件viEnableEvent
结束时使事件无效viDisableEvent
事件没有产生时等待viWaitOnEvent
根据不同事件,对通信的另一方做相应设置
-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程序设计基础实验