VISA的软件实现_gywonderful的空间_百度空间
属性表:
1、VISA资源模板:
VI_ATTR_MAX_QUEUE_LENGTH    任一时间特定对话通道{zd0}事件排队长度
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 {zh1}一个字节是否有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(vibufcountretCount):从器件同步读取数据。
viReadAsync(vibufcount,jobId):从器件异步读取数据。
viWritevibufcountretCount):将数据同步写入到器件中。
viWriteAsync(vibufcount,jobId):将数据异步写入到器件中。
viAssertTrigger(vi,protocol):用特定协议确认硬件或软件触发。
viReadSTB(vi,status):读取服务请求状态字节。
viClear(vi):xx器件。
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的软件实现_gywonderful的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——