您好,欢迎来到年旅网。
搜索
您的当前位置:首页C++的VISA操作表

C++的VISA操作表

来源:年旅网


C++的VISA操作表

VISA操作表

操作表:

1、VISA资源模板:

viClose(vi):关闭特定的对话通道。

viGetAttribute(vi,attribute,attrState):获取资源属性状态值。

viSetAttribute(vi,attribute,attrState):设置资源属性状态值。

viStatusDesc(vi,status,desc):获取返回状态描述字符串。

viTerminate(vi,degree,jobId):请求VISA资源终止一个或所有对话通道的正常运行。

viLock(vi,lockType,timeout,requestId,accessKey):设置资源存取模式。

viUnlock(vi):取消资源存取模式。

viEnableEvent(vi,eventType,mechanism,context):允许特定事件通知。

viDisableEvent(vi,eventType,mechanism):不允许特定事件通知。

viDiscardEvents(vi,eventType,mechanism):刷新一个对话通道上事件发生。

viWaitOnEvent(vi,ineventTypeList,timeout,outEventType,outContext):等待特定事件的发生。

viInstallHandler(vi,eventType,handler,userHandle):安装回调事件句柄 。

viUnInstallHandler(vi,eventType,handler,userHandle):卸载回调事件句柄。

2、VISA资源管理器:

viOpenDefaultRM(sesn):打开缺省资源管理器资源对话通道。

viOpen(sesn,rsrcname,accessMode,timeout,vi):打开特定资源的对话通道。

viFindRsrc(sesn,expr,findList,retcnt,instrDesc):查询VISA系统进行资源定位。

viFindNext(findList,instrDesc):返回前一个查询操作查得的资源。

3、仪器控制管理:

viRead(vi,buf,count,retCount):从器件同步读取数据。

viReadAsync(vi,buf,count,jobId):从器件异步读取数据。

viWrite(vi,buf,count,retCount):将数据同步写入到器件中。

viWriteAsync(vi,buf,count,jobId):将数据异步写入到器件中。

viAssertTrigger(vi,protocol):用特定协议确认硬件或软件触发。

viReadSTB(vi,status):读取服务请求状态字节。

viClear(vi):清除器件。

viSetBuf(vi,mask,size):设置格式化I/O缓冲区大小。

viFlush(vi,mask):手动刷新格式化I/O缓冲区。

viPrintf(vi,writeFmt,arg1,arg2…):按设定格式将数据传送到器件中。

viVPrintf(vi,writeFmt,params):按设定格式将数据传送到器件中。

viScanf(vi,readFmt,arg1,arg2…):按设定格式从器件中读取数据。

viVScanf(vi,readFmt,params):按设定格式从器件中读取数据。

viQuery(vi,writeFmt,readFmt,arg1,arg2…):按设定格式对器件进行数据读写。

viVQuery(vi,writeFmt,readFmt,params):按设定格式对器件进行数据读写。

viIn8(vi,space,offset,value):从接口总线读取8位(字节)单位。

viIn16(vi,space,offset,value):从接口总线读取16位(字)单位数据。

viIn32(vi,space,offset,value):从接口总线读取32位

(双字)单位数据。

viOut8(vi,space,offset,value):向接口总线写入8位(字节)单位数据。

viOut16(vi,space,offset,value):向接口总线写入16位(字)单位数据。

viOut32(vi,space,offset,value):向接口总线写入32位(双字)单位数据。

viMoveIn8(vi,space,offset,length,buf8):从器件存储器向当地存储器移动8位(字节)单位数据。

viMoveIn16(vi,space,offset,length,buf8):从器件存储器向当地存储器移动16位(字)单位数据。

viMoveIn32(vi,space,offset,length,buf8):从器件存储器向当地存储器移动32位(双字)单位数据。

viMoveOut8(vi,space,offset,length,buf8):从当地存储器向器件存储器

移动8位(字节)单位数据。

viMoveOut16(vi,space,offset,length,buf8):从当地存储器向器件存储器移动16位(字)单位数据。

viMoveOut32(vi,space,offset,length,buf8):从当地存储器向器件存储器移动32位(双字)单位数据。

viMapAddress(vi,mapSpace,mapBase,mapSize,access,suggested,address):映射内存空间。

viUnMapAddress(vi):取消内存映射。

viPeek8(vi,addr,val8):从特定地址读8位数据。

viPeek16(vi,addr,val16):从特定地址读16位数据。

viPeek32(vi,addr,val32):从特定地址读32位数据。

viPoke8(vi,addr,val8):向特定地址写8位数据。

viPoke16(vi,addr,val16):向特定地址写16位数据。

viPoke32(vi,addr,val32):向特定地址写32位数据。

viMemAlloc(vi,size,offset):从器件存储器分配内存。

viMemFree(vi,offset):释放内存分配。

属性表:

1、VISA资源模板:

VI_ATTR_MAX_QUEUE_LENGTH 任一时间特定对话通道最大事件排队长度

VI_ATTR_RM_SESSION 资源管理器对话通道

VI_ATTR_RSRC_IMPL_VERSION 资源版本

VI_ATTR_RSRC_LOCK_STATE 资源存取锁定模式(取值为表中所列三种)

VI_ATTR_RSRC_MANF_ID 生产厂家标号

VI_ATTR_RSRC_MANF_NAME 生产厂家名

VI_ATTR_RSRC_NAME 资源名

VI_ATTR_RSRC_SPEC_VERSION VISA规范版本

VI_ATTR_USER_DATA 资源特定对话通道所用的私有数据

2、仪器控制资源:

通用仪器控制属性:

VI_ATTR_INTF_TYPE 对话通道接口类型

VI_ATTR_INTF_NUM 接口板号

VI_ATTR_IO_PROT I/O协议

VI_ATTR_RD_BUF_OPER_MODE 读缓冲区操作模式

VI_ATTR_SEND_END_EN 最后一个字节是否有END字符

VI_ATTR_SUPPRESS_END_EN 是否禁止END字符

VI_ATTR_TERMCHAR 终止符

VI_ATTR_TERMCHAR_EN 是否允许终止符

VI_ATTR_TMO_VALUE 超时值

VI_ATTR_TRIG_ID 当前触发机制

VI_ATTR_WR_BUF_OPER_MODE 写缓冲区操作模式

GPIB仪器控制属性:

VI_ATTR_GPIB_PRIMARY_ADDR GPIB主地址

VI_ATTR_GPIB_SECONDARY GPIB副地址

_ADDR

VI_ATTR_INTF_PAERNT_NUM GPIB板号

VXI仪器控制属

性:

VI_ATTR_MAINFRAME_LA 主机箱地址

VI_ATTR_MANF_ID VXI器件制造厂家标识符

VI_ATTR_MEM_BASE 内存基地址

VI_ATTR_MEM_SIZE 内存大小

VI_ATTR_MEM_SPACE 内存空间类型

VI_ATTR_MODEL_CODE 器件标号

VI_ATTR_SLOT VXI器件槽位

VI_ATTR_VXI_LA VXI器件逻辑地址

VI_ATTR_CMDR_LA VXI总线控制器地址

VI_ATTR_IMMEDIATE_SERV 是否为立即从者

VI_ATTR_FDC_CHNL FDC数据传送通道

VI_ATTR_FDC_GEN_SIGNAL_EN 是否允许通过FDC传送数据

VI_ATTR_FDC_MODE FDC模式

VI_ATTR_FDC_USE_PAIR 一对或一个FDC有效

VI_ATTR_SRC_INCREMENT 源偏移量

VI_ATTR_DEST_INCREMENT 目标偏移量

VI_ATTR_WIN_ACCESS 当前窗存取模式

VI_ATTR_WIN_BASE_ADDR 总线基地址

VI_ATTR_WIN_SIZE 当前窗长度

异步串行仪器控制属性:

VI_ATTR_ASRL_AVAIL_NUM 接收缓冲区字节个数

VI_ATTR_ASRL_BAUD 波特率

VI_ATTR_ASRL_DATA_BITS 数据位

VI_ATTR_ASRL_END_IN 读操作终止方式

VI_ATTR_ASRL_END_OUT 写操作终止方式

VI_ATTR_ASRL_FLOW_CNTRL 数据流控制

VI_ATTR_ASRL_PARITY 检验极性

VI_ATTR_ASRL_STOP_BITS 停止位

VI_ATTR_DEST_INCREMENT 目标偏移量

VI_ATTR_FDC_CHNL FDC数据传送通道

VI_ATTR_FDC_GEN_SIGNAL_EN 是否允许通过FDC传送数据

VI_ATTR_FDC_MODE FDC模式

VI_ATTR_FDC_USE_PAIR 一对或一个FDC有效

对于属性的操作,一般用viSetAttribute(ViSession/ViEvent/ViFindList vi, ViAttr attribute, ViAttrState attrState)及viGetAttribute(ViSession/ViEvent/ViFindList vi, ViAttr attribute, ViPAttrState attrState)来进行属性设置与获取,属性的主体可以是器件句柄类型、事件类型、资源对象类型等,应该分情况对待。如例3.6与例3.7的事件中断子程序中的属性主体即为事件类型。

事件表:

VI_EVENT_SERVICE_REQ 服务请求通知事件

VI_EVENT_VXI_SIGP VXI总线信号或中断引发事件

VI_EVENT_TRIG 硬件触发产生

VI_EVENT_IO_COMPLETION 异步I/O操作已完成

事件处理方式分事件排队方式与事件回调方式,具体见例3.4~例3.7。

操作表:

1、VISA资源模板:

viClose(vi):关闭特定的对话通道。

viGetAttribute(vi,attribute,attrState):获取资源属性状态值。

viSetAttribute(vi,attribute,attrState):设置资源属性状态值。

viStatusDesc(vi,status,desc):获取返回状态描述字符串。

viTerminate(vi,degree,jobId):请求VISA资源终止一个或所有对话通道的正常运行。

viLock(vi,lockType,timeout,requestId,accessKey):设置资源存取模式。

viUnlock(vi):取消资源存取模式。

viEnableEvent(vi,eventType,mechanism,context):允许特定事件通知。

viDisableEvent(vi,eventType,mechanism):不允许特定事件通知。

viDiscardEvents(vi,eventType,mechanism):刷新一个对话通道上事件发生。

viWaitOnEvent(vi,ineventTypeList,timeout,

outEventType,outContext):等待特定事件的发生。

viInstallHandler(vi,eventType,handler,userHandle):安装回调事件句柄。

viUnInstallHandler(vi,eventType,handler,userHandle):卸载回调事件句柄。

2、VISA资源管理器:

viOpenDefaultRM(sesn):打开缺省资源管理器资源对话通道。

viOpen(sesn,rsrcname,accessMode,timeout,vi):打开特定资源的对话通道。

viFindRsrc(sesn,expr,findList,retcnt,instrDesc):查询VISA系统进行资源定位。

viFindNext(findList,instrDesc):返回前一个查询操作查得的资源。

3、仪器控制管理:

viRead(vi,buf,count,retCount):从器件同步读取数据。

viReadAsync(vi,buf,count,jobId):从器件异步读取数据。

viWrite(vi,buf,count,retCount):将数据同步写入到器件中。

viWriteAsync(vi,buf,count,jobId):将数据异步写入到器件中。

viAssertTrigger(vi,protocol):用特定协议确认硬件或软件触发。

viReadSTB(vi,status):读取服务请求状态字节。

viClear(vi):清除器件。

viSetBuf(vi,mask,size):设置格式化I/O缓冲区大小。

viFlush(vi,mask):手动刷新格式化I/O缓冲区。

viPrintf(vi,writeFmt,arg1,arg2…):按设定格式将数据传送到器件中。

viVPrintf(vi,writeFmt,params):按设定格式将数据传送到器件中。

viScanf(vi,readFmt,arg1,arg2…):按设定格式从器件中读取数据。

viVScanf(vi,readFmt,params):按设定格式从器件中读取数据。

viQuery(vi,writeFmt,readFmt,arg1,arg2…):按设定格式对器件进行数据读写。

viVQuery(vi,writeFmt,readFmt,params):按设定格式对器件进行数据读写。

viIn8(vi,space,offset,value):从接口总线读取8位(字节)单位。

viIn16(vi,space,offset,value):从接口总线读取16位(字)单位数据。

viIn32(vi,space,offset,value):从接口总线读取32位(双字)单位数据。

viOut8(vi,space,offset,value):向接口总线写入8位(字节)单位数据。

viOut16(vi,space,offset,value):向接口总线写入16位(字)单位数据。

viOut32(vi,space,offset,value):向接口总线写入32位(双字)单位数据。

viMoveIn8(vi,space,offset,length,buf8):从器件存储器向当地存储器移动8位(字节)单位数据。

viMoveIn16(vi,space,offset,length,buf8):从器件存储器向当地存储器移动16位(字)单位数据。

viMoveIn32(vi,space,offset,length,buf8):从器件存储器向当地存储器移动32位(双字)单位数据。

viMoveOut8(vi,space,offset,length,buf8):从当地存储器向器件存储器移动8位(字节)单位数据。

viMoveOut16(vi,space,offset,length,buf8):从当地存

储器向器件存储器移动16位(字)单位数据。

viMoveOut32(vi,space,offset,length,buf8):从当地存储器向器件存储器移动32位(双字)单位数据。

viMapAddress(vi,mapSpace,mapBase,mapSize,access,suggested,address):映射内存空间。

viUnMapAddress(vi):取消内存映射。

viPeek8(vi,addr,val8):从特定地址读8位数据。

viPeek16(vi,addr,val16):从特定地址读16位数据。

viPeek32(vi,addr,val32):从特定地址读32位数据。

viPoke8(vi,addr,val8):向特定地址写8位数据。

viPoke16(vi,addr,val16):向特定地址写16位数据。

viPoke32(vi,addr,val32):向特定地址写32位数据。

viMemAlloc(vi,size,offset):从器件存储器分配内存。

viMemFree(vi,offset):释放内存分配。

在VISA定义的操作函数列,只是VISA规范的一小部分,但有一些操作函数并没有在VISA规范中定义过,属于软件本身补充定义的,如打开资源管理器函数viOpenDefaultRM()函数在仪器系统初始化时进行调用,建立仪器系统资源管理器与VISA软件的关联;viStatusDesc()函数在VISA函数调用返回后调用,并将前一个VISA函数调用返回值作为输入参数,获取字符串形式的状态描述;viFindNext()函数是viFindRsrc()函数的补充,用于查寻VISA系统资源;viMemAlloc()函数与viMemFree()函数用于器件存储器内存操作。而对于VISA规范中的VISA仪器控制组织器资源与VISA特定接口仪器控制资源定义的操作,VISA1.1中均没有定义,这也为

VISA软件今后的发展提供了方向。可以看到,应用VISA1.1函数,可以实现仪器系统基本编程要求,但对于特定的操作,尚需要进一步扩充,VISA软件本身是一个不断完善与发展的产物。如果要修改与开发VISA软件,必须遵循VISA规范,并基于VISA模型进行开发

三、 VISA(VPP-4)

VISA:Virtual Instrumentation Software Architecture,即虚拟仪器软件结构,是VPP系统联盟制定的I/O接口软件标准及其相关规范的总称。

VISA为虚拟仪器提供了标准化的I/O接口软件规范。VISA是整个工业界的统一的软件基础。

虚拟仪器软件结构中的标准 I/O 接口软件称为VISA库。

1. VISA的作用

为整个工业界提供统一的软件基础

对驱动程序、应用程序不必考虑接口类型

仅规定为用户提供的标准函数,不对具体实现作任何说明

用于编写符合VPP规范的仪器驱动程序,完成计算机与仪器之间的命令和数据传输,实现对仪器的控制。

VISA库作为低层 I/O 接口软件,运行于计算机系统中。

2. VISA的特点

适用于各类仪器:VXI, PXI, GPIB, RS-232, TCP, USB… …

与硬件接口无关

既适用于单处理器结构又适用于多处理器或分布式结构

适用于多种

网络机制

3. VISA库函数

资源管理类函数

viOpenDefaultRM (ViPSession Rsrc_Manager_Handle);

viOpenDefaultRM(&defaultRMHandle);

ViStatus viOpen (ViSession Rsrc_Manager_Handle, ViRsrc

Instrument_Descriptor, ViAccessMode Access_Mode, ViUInt32 Open_Timeout, ViPSession Instrument_Handle);

viOpen (defaultRMHandle, \"VXI0::24::INSTR\VI_NULL, VI_NULL,

&dmmHandle);

ViStatus viClose (ViSession Session_Handle);

viClose(dmmHandle);

资源操作类函数

寄存器基仪器通讯

viIn8, viIn16, viIn32

viIn16 (dmmHandle, VI_A16_SPACE, 0, &manufactureID);

viOut8, viOut16, viOut32

viOut16 (dmmHandle, VI_A16_SPACE, 4, 0);

消息基仪器通讯

viRead, viWrite

viRead (dmmHandle, readbuf, 100, &count);

viWrite (dmmHandle, writebuf, 100, &count);

格式化I/O

viPrintf, viScanf

viPrintf (dmmHandle, \"*IDN?\\n\");

viScanf (dmmHandle, \"%t\

资源模板

事件处理

viEnableEvent, viDisableEvent

viInstallHandler, viUninstallHandler

viWaitOnEvent

资源属性

viGetAttribute, viSetAttribute

用VISA函数操作仪器的步骤

打开VISA资源管理器句柄,用到的函数:viOpenDefaultRM;

打开仪器句柄,用到的函数:viFindRsrc、viFindNext、viOpen等;

设置仪器状态、控制仪器操作、读取测量数据、处理仪器事件,用到的函数: viGetAttribute、viSetAttribute、viIn16、viOut16、viPrintf、viScanf、viInstallHandler、viUninstallHandler、viEnableEvent、viDisableEvent、viWaitOnEvent等;

释放仪器句柄,用到的函数:viClose;

释放VISA资源管理器句柄,用到的函数:viClose。

VISA函数应用举例

void main(void)

{

error=viOpenDefaultRM (&rsrcManager); /*打开VISA资源管理器*/

//rsrcManager为得到的VISA资源管理器句柄

if(error!=VI_SUCCESS) /*如果出错,弹出错误信息对话框,返回*/

{ MessagePopup(\"Error\

return;

}

error = viOpen (rsrcManager, \"VXI0::16::INSTR\VI_NULL, VI_NULL, &instHandle); //instHandle为得到的仪器句柄

if(error!=VI_SUCCESS){

MessagePopup(\"Error\

return;

}

else{ /*获取仪器模块代码,设置仪器操作超时时间为2000毫秒*/

viGetAttribute (instHandle, VI_ATTR_MODEL_CODE, viSetAttribute (instHandle, VI_ATTR_TMO_VALUE, 2000);

}

viClose(instHandle); /*关闭仪器句柄和VISA资源管理器*/

viClose(rsrcManager);

}

&moduleID);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务