⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3.虚拟仪器系统io接口软件.txt

📁 虚拟仪器软件的介绍
💻 TXT
📖 第 1 页 / 共 5 页
字号:
VISA仪器控制组织器资源  VICO    VI_RSRC_VISA_IC_ORG
写资源  WR  VI_RSRC_WR
读资源  RD  VI_RSRC_RD
格式化I/O资源   FIO VI_RSRC_FMT_IO
触发资源    TRIG    VI_RSRC_TRIG
清除资源    CLR VI_RSRC_CLR
状态/服务请求资源   SRQ VI_RSRC_SRQ
高级存取资源    HILA    VI_RSRC_HL_ACC
低级存取资源    LOLA    VI_RSRC_LL_ACC
器件特定命令资源    DEVC    VI_RSRC_DEV_CMD
CPU接口资源 CPUI    VI_RSRC_CPU_INTF
GPIB总线接口控制资源    GBIC    VI_RSRC_GPIB_INTF
VXI总线器件配置资源 VXDC    VI_RSRC_VXI_DEV_CONF
VXI总线接口控制资源 VXIC    VI_RSRC_VXI_INTF
VXI总线零槽资源 VXS0    VI_RSRC_VXI_SLOT_0
VXI总线系统中断资源 VXSI    VI_RSRC_SYS_INTR
VXI总线信号处理器资源   VXSP    VI_RSRC_SIG_PROCESSOR
VXI总线信号资源 VXS VI_RSRC_VXI_SIG
VXI总线中断资源 VXIN    VI_RSRC_VXI_INTR
VXI总线扩展器接口资源   VXEI    VI_RSRC_VXI_EXTDR
异步串行总线接口控制资源    ASIC    VI_RSRC_ASRL_INTF
表3.2  VISA资源类型定义
下面对VISA资源描述格式中各部分进行逐一分析:
1、 资源概述:简要说明资源所要实现的功能,一般不针对特定仪器类型或接口进
行描述,只提供一个通用概念。
2、 资源属性表及属性描述:资源属性表列出了资源所有属性,并在以后的属性描
述中作较详细的说明。资源属性表如表3.3所示。
属性符号名  存取特性    数据类型    取值范围
    读/写特性   私有/公有特性       
表3.3 VISA资源属性表
l   属性符号名:用于标识属性。
l   存取特性:包括读/写特性与私有/公有特性。读/写特性可选择R/W(可读可写)
与RO(只读);私有/公有特性可选择Local(对话通道私有)与Global(资源内所
有对话通道公有)。
l   数据类型:VISA数据类型是独立于编程语言定义的,在具体编程中调用VISA函数
进行实际操作时,VISA数据类型与具体数据类型将一一映射。VISA定义了两类数据
类型:基本数据类型与复杂数据类型。分别见表3.4和表3.5。
l   取值范围:定义了该属性数据的取值范围。
基本数据类型    数据类型描述    基本数据类型    数据类型描述
ViChar  字符类型    ViInt32 32位整型
ViPChar 字符指针类型    ViPInt32    32位整型指针类型
ViByte  字节类型    ViInt64 64位整型
ViPByte 字节指针类型    ViPInt64    64位整型指针类型
ViString    字符串类型  ViUInt8 8位无符号整型
ViPString   字符串指针类型  ViPUInt8    8位无符号整型指针类型
ViBoolean   布尔类型    ViUInt16    16位无符号整型
ViPBoolean  布尔指针类型    ViPUInt16   16位无符号整型指针类型
ViInt8  8位整型 ViUInt32    32位无符号整型
ViPInt8 8位整型指针类型 ViPUInt32   32位无符号整型指针类型
ViInt16 16位整型    ViUInt64    64位无符号整型
ViPInt16    16位整型指针类型    ViPUInt64   64位无符号整型指针类型
ViReal32    32位实型    ViReal64    64位实型
ViPReal32   32位实型指针类型    ViPReal64   64位实型指针类型
表3.4 VISA基本数据类型
复杂数据类型    数据类型描述    复杂数据类型    数据类型描述
ViRsrc  资源标识类型    ViHndlr 操作句柄类型
ViPRsrc ViRsrc指针类型  ViPHndlr    ViHndlr指针类型
ViStatus    返回状态值类型  ViVAList    参数列类型
ViPStatus   ViStatus指针类型    ViJobId 操作请求类型
ViBuf   数据块类型  ViPJobId    ViJobId指针类型
ViPBuf  ViBuf指针类型   ViJobStatus 操作请求状态类型
ViAddr  逻辑地址类型    ViPJobStatus    ViJobStatus指针类型
ViPAddr ViAddr指针类型  ViSpaceInfo 内存映射类型
ViSession   资源对话通道类型    ViPhysAddr  物理地址类型
ViPSession  ViSession指针类型   ViSigMask   信号过滤类型
ViVersion   资源版本类型    ViIntrMask  中断屏蔽类型
ViPVersion  ViVersion指针类型   ViBusAddress    总线地址类型
ViObject    资源对象类型    ViBusSize   地址长度类型
ViPObject   ViObject指针类型    ViAttr  资源属性类型
ViRsrcList  资源标识列类型  ViAttrState 资源属性值类型
ViClass 资源类类型  ViLock  资源进程/线程管理类型
ViEvent 资源事件类型    ViPLock ViLock指针类型
ViPEvent    ViEvent指针类型 ViEventType 资源事件类型类型
ViAccessMode    控制存取机制类型    ViPEventType    ViEventType 指针类型
表3.5 VISA复杂数据类型
3、 资源事件集:VISA定义了一种运行机制,用于在一定条件下通知应用程序一个
行为的发生,这些条件与发生被称为VISA事件。VISA事件模型如图3.2所示。
VISA事件模型由三部分组成。1)事件捕捉与通知:资源感知到事件发生,并与对
话通道相联系;2)事件请求与处理:告知应用程序事件已发生,VISA定义了事件
处理机制;3)事件响应:根据协议对事件进行响应。
图3.2 VISA事件模型
根据VISA事件引发的原因,事件类型可分为以下几种:
l   由硬件请求产生:如GPIB器件SRQ信号有效。
l   由硬件响应产生:如VXI总线中的SYSFAIL线有效。
l   由于资源行为的起始与结束所产生:如应用程序想知道系统服务是处于在线状态
还是离线状态。
l   由于资源转换到不正常操作,必须终止正常操作所产生的事件。
l   在应用程序正常运行过程中的错误散转情况。
在VISA中,定义了两种事件处理机制。一种是事件排队方式(Queuing),它主要
分两步进行:首先允许特定事件的处理机制,然后在一定时刻点去查询事件是否已
经发生(调用VISA中的viWaitOnEvent()函数,事件类型见VI_EVENT_类参数),在
事件发生之后,必须关闭特定事件的处理机制,以防止资源溢出。例3.4所示为用
事件排队方式处理VISA事件。
例3.4 排队方式处理VISA事件
另一种事件处理方式为回调方式(Callback),也即中断方式。它首先安装回调句
柄,然后在程序中允许事件处理机制,并应编写相应的中断子程序。利用回调方式
进行处理的事件类型主要有以下几种:
l   VI_EVENT_SERVICE_REQ:该事件表示VXI器件服务请求
l   VI_EVENT_TRIG:该事件表示从VXI器件接收到硬件触发信号
l   VI_EVENT_VXI_SIGP:该事件表示从VXI器件接收到总线信号或总线中断信号
例3.5、例3.6与例3.7分别是利用回调方式对各种类型事件进行处理的实例,其中
例3.5是对HP公司推出的VXI数字万用表模块进行服务请求事件的处理,而例3.6与
例3.7是对浙江大学数字所自主开发的VXI数字输入/输出模块进行触发事件与总线
中断事件处理。事实上,这几种事件处理示例可直接推广应用到其它的消息基器件
与寄存器基器件中。
例3.5 利用回调方式对VXI模块进行服务请求事件处理:
例3.5 回调方式进行服务请求事件处理
在这种模式中,主程序安装的事件句柄类型为VI_EVENT_SERVICE_REQ,并须将服务
请求使能。当服务请求事件发生时,安装的事件句柄被激活,系统进入中断子程序
。中断子程序首先对事件类型进行判断,然后进行具体事件处理。在主程序退回时
,必须关闭事件允许机制,并将安装的事件句柄进行卸载。
例3.6 利用回调方式对VXI模块进行触发事件处理:
例3.6 回调方式进行触发事件处理
在这种模式中,主程序安装的事件句柄类型为VI_EVENT_TRIG,并须将服务请求使
能。本主程序利用设置仪器属性的方式进行触发总线的选择与有效,并利用软件进
行同步触发信号线TTL0。当触发事件发生时,安装的事件句柄被激活,系统进入中
断子程序。中断子程序首先对事件类型进行判断,然后进行具体事件处理。需要注
意的是,在中断子程序中获取事件的句柄不再是仪器句柄vi,而是ViEvent类型的
事件句柄ctx。在主程序退回时,必须将安装的事件句柄进行卸载。


例3.7 利用回调方式对VXI模块进行总线中断事件处理:
例3.7 回调方式进行总线中断事件处理
在这种模式中,主程序安装的事件句柄类型为VI_EVENT_VXI_SIGP,并须将服务请
求使能。本主程序直接对器件内部控制寄存器进行写操作,允许中断产生并强制中
断产生。当触发事件发生时,安装的事件句柄被激活,系统进入中断子程序。中断
子程序首先对事件类型进行判断,然后进行具体事件处理。同样,在中断子程序中
获取事件的句柄不再是仪器句柄vi,而是ViEvent类型的事件句柄ctx。在主程序退
回时,必须将安装的事件句柄进行卸载。
4、 资源操作集:包括了一系列VISA资源操作。而每个操作又分别包括以下各项:

l   名字(含形参名):用于操作函数原型的简单描述。
l   目标:简要描述相应的操作功能。
l   参数表:列出了操作中所有参数的相关信息,包括参数名、输入/输出方向、参
数数据类型及参数描述。操作参数表如表3.6所示。
参数名  输入/输出方向   数据类型    描述
表3.6资源操作参数表
l   返回状态值:VISA资源操作返回状态值类型是唯一的,即为ViStatus。操作返回
状态值包括完成代码与错误代码两类。
l   描述:对每个函数的功能及其中关键参数的含义等作较详细的描述。
l   相关操作项:可参考的其它相关操作。
l   实现要求:操作实现时应满足的一些条件与备注要求。

3.3 VISA资源定义
3.3.1 VISA资源模板
VISA资源模板相当于面向对象程序(OOP)中的基类,VISA其它资源类全部是它的
子类。VISA资源模板上本身没有定义资源,它定义的是公共属性、事件与操作,所
有VISA资源全部继承了资源模板的属性、事件与操作。在其它VISA资源定义中,实
际上是定义了资源特有的属性、事件与操作,VISA资源真正拥有的属性、事件与操
作包括资源模板定义的公共部分与资源特有的私有部分。
VISA资源模板中主要定义了以下几个共性功能:
l   资源定位与查寻
l   资源创建与删除
l   资源属性读取与修改
l   资源存取模式与权限控制
l   基本通讯服务(包括操作激活与事件报告)
VISA资源模板的定义也包括相应的属性、事件与操作,各自的描述格式与定义方式
与其它VISA资源描述是一致的,这主要是为了其他资源可以方便地从基类继承所有
属性、事件与操作。
资源模板定义的属性如表3.7所示:


属性符号名  存取特性    数据类型    取值范围
    读写特性    公私特性        
VI_ATTR_RSRC_CLASS  只读    公有    ViClass 无
VI_ATTR_RSRC_NAME   只读    公有    ViString    无
VI_ATTR_RSRC_VERSION    只读    公有    ViVersion   无
VI_ATTR_RSRC_LOCK_STATE 只读    公有
    ViUInt16    VI_NO_LOCKVI_NON_EXCLUSIVE_LOCKVI_EXCLUSIVE_LOCK
VI_ATTR_MAX_QUEUE_LENGTH    可读可写    私有    ViUInt32    无
VI_ATTR_QUEUE_TRIP_POINT    可读可写    私有    ViUInt32    无
VI_ATTR_USER_DATA   可读可写    私有    ViAddr  无
表3.7 VISA资源模板属性表
VISA资源模板属性描述:
属性名          描述
VI_ATTR_RSRC_CLASS  资源所属类的标识符
VI_ATTR_RSRC_NAME   资源名标识符
VI_ATTR_RSRC_VERSION    资源版本标识符
VI_ATTR_RSRC_LOCK_STATE 资源存取锁定模式(取值为表3.7中所列三种)
VI_ATTR_MAX_QUEUE_LENGTH    任一时间特定对话通道最大排队的事件长度
VI_ATTR_QUEUE_TRIP_POINT    排队事件的触发点
VI_ATTR_USER_DATA   资源特定对话通道所用的私有数据
资源模板定义的事件如下所示:
事件    说明
VI_EVENT_ALERT  通知应用程序对话通道或资源退出、复位或关闭
VI_EVENT_RSRC_ACTIVE    通知应用程序资源已激活
VI_EVENT_RSRC_INACTIVE  通知应用程序资源未被激活
VI_EVENT_RSRC_LOCK_CHANGED  通知应用程序存取锁定状态已更新
VI_EVENT_QUEUE_FULL 通知应用程序等待操作事件队列已满
VI_EVENT_QUEUE_TRIP 通知应用程序事件等待操作触发点已到
VI_EVENT_RSRC_AVAILABLE 通知应用程序特定资源已有效
资源模板定义的操作如下:
viFindRsrc(vi,expr,accessLink)
viOpen(sesn,rsrcname,accessMode,timeout,vi)
viClose(vi)
viTerminate(vi,target,degree,jobId,immediate,flagFlushData)
viAttachRsrc(vi,rsrcName,refName)
viDetachRsrc(vi,refName)
viSetAttribute(vi,attribute,attrState)
viSetRsrcAttribute(vi,rsrcName,attribute,attrState)
viGetAttribute(vi,attribute,attrState)
viGetRsrcAttribute(vi,attribute,attrState)
viLock(vi,lockType,shareType,timeout,lockId)
viLockRsrc(vi,rsrcName,lockType,shareType,timeout,lockId)
viUnlock(vi,lockId)
viUnlockRsrc(vi,rsrcName,lockId)
viEnableEvent(vi,eventType,mechanism,context)
viDisableEvent(vi,eventType,mechanism)
viQueryEventMech(vi,eventType,mechanism)
viInstallHandler(vi,eventType,handler,userHandle)
viUnInstallHandler(vi,eventType,handler,userHandle)
viQueryHandlers(vi,eventType,handlers,userHandle)
viAcknowledgeEvent(vi,eventType,context)
viWaitOnEvent(vi,eventType,timeout,outContext)
viWaitOnMultipleEvent(vi,eventTypeList,timeout,outContext,
outEventType)
viDiscardEvents(vi,eventType,mechanism)
viGetEventInfo(vi,eventType,context,rsrcName,info)
viRaiseEvent(vi,eventType,context,target)
viEventHandler(vi,eventType,context,userHandle)


下面将分别对各个操作作一详细描述。
1、 viFindRsrc(vi,expr,accessLink)
1) 目标:查询VISA系统,进行资源定位
2) 参数表:
参数名  输入/输出方向   数据类型    描述
vi  输入    ViSession   资源对话通道标识符
expr    输入    ViString    用于资源名匹配的表达式
accessLink  输出    ViRsrcList  资源所在位置列表

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -