当前课程知识点:测试系统集成技术 > 第五章:虚拟仪器软件架构 > 5.2:VISA库构成 > Video
规范中VISA库主要包括四个部分:资源模板,
资源管理器,资源类,资源相关操作。
VISA资源模板
在VISA库里,器件的功能封装在特定的资源中
在VISA中每种资源都可以为应用或其他资源提供服务,
这就要求在操作VISA资源时在高层次接口上保持一致
如何才能实现一致性?VISA中引入了资源模板,
在模板中精确定义了可扩展接口
通过接口提供一系列服务,VISA中的每一个资源都通过
模板导出接口,这样在操作VISA资源时保持了调用的一致性。
VISA资源模板的基本功能提供两类服务:控制服务和通信服务
控制服务包括:生命期控制服务,属性控制服务,
异步操作控制服务,访问控制服务
应用程序可通过打开会话访问资源
除此之外应用程序也可以通过资源模板中的通信服务(事件机制)来交换信息。
生命期控制服务
相关接口:viClose(vi) 关闭特定会话,事件和查找表
应用程序通过会话访问资源,会话一旦建立,
应用程序可调用viClose(vi)关闭会话
如应用对资源进行了查找或正在等待某个事件,
也可调用viClose(vi)来关闭该事件和查找表
关闭会话,事件和查找表时将释放所有相关数据结构
当一个应用程序发生错误时,VISA也将释放应用程序相关资源
属性控制服务
相关接口:
设置或获得资源属性值,获得状态代码的文本描述
viGetAttribute(vi, attribute, attrState) 获得属性状态
viSetAttribute(vi, attribute, attrState) 设置属性状态
viStatusDesc(vi, status, desc) 返回状态代码的文本描述
资源都具有与之相关的属性
有些属性描述资源的瞬时状态
有些属性是可变参数,通过修改可变参数可以改变资源的操作状态
属性控制服务提供属性操作函数来设置/获得资源状态
如:viSetAttribute(),viGetAttribute()函数
属性控制服务还提供函数来获得特定状态代码意义的
文本描述如:viStatusDesc()函数
异步操作控制服务
相关接口:viTerminate()
资源具有与之对应的异步操作
该操作的调用方式和其他操作的调用方式相同
在异步操作调用中,一旦调用成功就立即返回,而不用等待异步操作完成
当异步I/O相关操作完成时,会产生一个事件表明操作完成
在异步操作中,如因某些因素要中断操作,可调用viTerminate()中断该操作
访问控制服务
VISA提供了“锁”机制来限制对资源的访问
VISA定义了两种类型的锁,“独占锁”和“共享锁”
相关接口:viLock()
viUnlock()
应用程序可与一个资源同时打开多个会话,
多个应用也可通过不同会话同时访问同一VISA资源
然而,在某些情况下,一个应用在访问VISA资源时
可能希望限制其他应用或会话访问该资源
VISA提供了“锁”机制来限制对资源的访问
VISA的“锁”机制增强了基于会话的资源访问权的仲裁
如果一个会话锁定了资源,其他会话对该资源的操作可能成功
也可能失败,这取决于所执行的操作和“锁”类型
如果资源没有被锁定,对资源的操作和属性的更新都可以进行
但是,如果资源被锁定了,此时试图更新属性或执行某些操作则将失败
资源锁定,将限制其他会话对资源的访问。
VISA定义了两种类型的锁,“独占锁”和“共享锁”
通过ViLock()函数可以请求对资源上锁,通过viUnlock()函数可以解除资源锁
会话在请求锁定资源时,其操作结果受到其他会话对资源锁定
情况的影响,同时还将受到该会话以前对资源的锁定情况的影响。
事件服务
相关接口:
viEnableEvent(vi, eventType, mechanism, context)
viDisableEvent(vi, eventType, mechanism)
viDiscardEvents(vi, eventType, mechanism)
viWaitOnEvent(vi, inEventType, timeout, outEventType, outContext)
viInstallHandler(vi, eventType, handler, userHandle)
viUninstallHandler(vi, eventType, handler, userHandle)
VISA定义了一种通用机制,建立仪器和应用程序之间的通信
通过该机制通知应用程序某些条件发生,该机制即事件
事件是一个用于资源间的通信手段。
VISA提供了两种独立的机制来接收事件:队列和回调
应用可以通过viEnableEvent()使能事件。
viDisableEvent()用来取消设置的事件机制。
队列机制允许应用在他们需要时接收事件
一个应用通过调用viWaitOnEvent()来接收事件信息
如果等待的事件在队列中,则立即返回事件信息,否则,
线程将阻塞直到指定的事件发生或者指定的等待时间超时退出。
回调机制允许应用程序安装回调函数
将事件和回调函数的关联起来,当事件发生时调用回调函数处理。
VISA资源管理
在VISA中所有仪器都以资源进行管理
管理这些资源的是VISA资源管理器
VISA资源管理包括统一资源地址分配,资源ID分配和资源管理的相关调用
VISA资源管理器在系统中也是一种资源
因此资源管理器接口也是从VISA模板派生而来
VISA资源管理器提供了与其他VISA资源的连接。为应用程序控制访问资源提供服务
基于VISA的应用程序通过缺省资源管理器可以进入该子系统
通过资源管理器可以打开资源,查找可用资源,调用资源级相关操作。
VISA地址
与设备资源或其他类型资源建立会话,关键需要能够唯一识别资源
在VISA中通过地址来识别资源,这个地址称为VISA地址
VISA地址可以通过调用获得,也可以通过一些工具软件获得
关于如何获得VISA地址,在后面的例程里将详细讲解。
VISA资源类
一个完整的VISA系统包括的资源类有:仪器控制资源(INSTR),
存储器访问资源(MEMACC),GPIB总线接口资源(INTFC),VXI主背板
资源(BACKPLANE),从方设备资源(SERVANT),TCP/IP套接字资源(SOCKET)
并不是所有的VISA库都必须实现所有资源类,可以根据需要选择实现
VISA资源类封装了设备的各种操作
VISA仪器控制资源(INSTR)实现了VISA资源模板的基本操作和属性
在资源模板中定义的操作,在资源类中不再给出
在资源类的操作列表里,只给出了实现特定任务的操作和属性。
VISA输入输出
仪器控制资源类提供了三类I/O服务,分别是基本I/O,格式化I/O和存储器I/O
通过这些I/O实现控制器与仪器间的数据交换
-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程序设计基础实验