UESTC-ATSPage1自动测试系统第九章虚拟仪器软件架构Page2UESTC----ATSATS本章要点VISA构成VISA编程Page3UESTC----ATSATS第一节VISA概述VISA(VirtualInstrumentSoftwareArchitecture)VXIplug&play(VXI即插即用简称VPP)VPP系统联盟制定的I/O接口软件标准及其相关规范的总称为什么需要I/O接口软件标准?Page4UESTC----ATSATS第一节VISA概述虚拟仪器软件体系结构测试应用软件测试编程环境(AgilentVEE,NILabVIEW,NILabWindows/CVI等)仪器驱动器(ID)I/O接口驱动软件(VISA)仪器软面板GPIBVXI其它Page5UESTC----ATSATS第一节VISA概述I/O接口软件规范即VPP4.X系列规范VPP4.3:VISA库VPP4.3.2:文本语言的VISA实现规范VPP4.3.3:图形语言的VISA实现规范VISA库以动态链接库的形式提供visa.dllvisa.libvisa.hvisatype.hPage6UESTC----ATSATS第一节VISA概述常见VISA库AgilentVISANIVISAI/O接口标准化后,软件的通用性如何体现?如何使用AgilentVISA来访问NI的接口卡?Page7UESTC----ATSATS第一节VISA概述两种软件接口设计模型自顶向下的I/O接口软件设计模型自底向上的I/O接口软件设计模型VISA结构资源管理层I/O资源层仪器资源层用户自定义资源层用户层图VISA结构Page8UESTC----ATSATS第二节VISA库构成VISA库包括:VISA资源模板VISA资源管理VISA类VISA特殊操作Page9UESTC----ATSATS第二节VISA库构成VISA资源模板为什么要引入资源模板?资源模板提供的两类服务控制服务生命期控制服务属性控制服务异步操作控制服务访问控制服务通信服务Page10UESTC----ATSATS第二节VISA库构成VISA模板接口一览viClose(vi)viGetAttribute(vi,attribute,attrState)viSetAttribute(vi,attribute,attrState)viStatusDesc(vi,status,desc)viTerminate(vi,degree,jobId)viLock(vi,lockType,timeout,requestedKey,accessKey)viUnlock(vi)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)Page11UESTC----ATSATS第二节VISA库构成VISA资源模板——生命期控制服务功能关闭已打开的会话释放所有已产生的数据结构如:释放由viFindRsrc()建立的资源查找表释放viWaitOnEvent()等待的事件相关模板函数viClose其他相关函数viOpen()viFindRsrc()viWaitOnEvent()Page12UESTC----ATSATS第二节VISA库构成VISA资源模板——属性控制服务功能设置或获得资源属性值获得状态代码的文本描述相关模板函数viSetAttribute()viGetAttribute()viStatusDesc()Page13UESTC----ATSATS第二节VISA库构成VISA资源模板——异步操作控制服务功能终止异步操作相关模板函数viTerminate()其他相关函数viReadAsync()viWriteAsync()Page14UESTC----ATSATS第二节VISA库构成VISA资源模板——访问控制服务功能通过“锁”机制提供对资源访问控制两种“锁”独占“锁”共享“锁”相关模板函数viLock()viUnLock()Page15UESTC----ATSATS第二节VISA库构成VISA资源模板——访问控制服务什么是共享锁?什么是独占锁?两类锁对资源访问权的限制?锁的嵌套Page16UESTC----ATSATS第二节VISA库构成Page17UESTC----ATSATS第二节VISA库构成Page18UESTC----ATSATS第二节VISA库构成VISA资源模板——事件服务功能通过“事件”提供应用和资源间的通信“事件”处理中的两种机制回调队列相关模板函数viEnableEvent()viDisableEvent()viDiscardEvents()viInstallHandler()viEventHandler()viWaitOnEvent()viUninstallHandler()Page19UESTC----ATSATS第二节VISA库构成Page20UESTC----ATSATS第二节VISA库构成Page21UESTC----ATSATS第二节VISA库构成Page22UESTC----ATSATS第二节VISA库构成VISA资源管理通过资源管理器对资源进行管理进行资源地址,资源ID的分配提供到VISA资源的所有连接,为应用提供对独立资源的控制和访问资源管理器提供的服务访问viOpen()查找viFindRsrc(),viFindNext()Page23UESTC----ATSATS第二节VISA库构成VISA资源管理函数接口一览viFindRsrc()viFindNext()viOpen()viParseRsrc()viParseRsrcEx()Page24UESTC----ATSATS第二节VISA库构成VISA资源管理——资源访问服务通过资源管理器对资源进行控制和管理,资源管理器以一种系统资源存在viOpenDefaultRM()在资源管理器会话建立起来后,可以通过与资源建立会话,对资源进行访问viOpen()Page25UESTC----ATSATS第二节VISA库构成Page26UESTC----ATSATSPage27UESTC----ATSATS第二节VISA库构成可选字段的缺省值如下表Page28UESTC----ATSATS第二节VISA库构成地址举例Page29UESTC----ATSATS第二节VISA库构成VISA资源管理——资源查找提供与资源位置无关的资源查找和定位服务viFindRsrc()viFindNext()Page30UESTC----ATSATS第二节VISA库构成Page31UESTC----ATSATS第二节VISA库构成Page32UESTC----ATSATS第二节VISA库构成Page33UESTC----ATSATS第二节VISA库构成Page34UESTC----ATSATS第二节VISA库构成VISA资源类仪器控制资源存储器访问资源GPIB总线接口资源VXI主机箱背板资源从者器件侧资源TCP/IP套接字资源Page35UESTC----ATSATS仪器控制资源使控制器和相关设备交互控制器可以发送数据块到设备,向设备请求数据向设备发送清除命令触发设备查找设备状态信息也允许控制器访问设备寄存器提供的服务包括基本I/O服务格式化I/O服务存储器I/O服务共享存储器服务Page36UESTC----ATSATS第二节VISA库构成通用的仪器控制资源属性VI_ATTR_INTF_TYPE给定会话的接口类型VI_ATTR_INTF_NUM给定接口的板号VI_ATTR_INTF_INST_NAME给定接口的文本描述VI_ATTR_TMO_VALUE等待的最小的时间值,VI_ATTR_TRIG_ID当前触发机制IDVI_ATTR_DMA_ALLOW_EN该属性规定是否I/O访问使用DMA或可编程I/O。在一些实现中,该属性有全局影响。Page37UESTC----ATSATS仪器控制资源事件VI_EVENT_SERVICE_REQ服务请求收到VI_EVENT_VXI_SIGPVXI总线信号或VXI总线中断收到VI_EVENT_TRIG触发中断收到,对VISA,唯一可以被感知的触发是VXI硬件触发。VI_EVENT_IO_COMPLETIO异步操作完成VI_EVENT_VXI_VME_INTRVXI总线中断收到VI_EVENT_USB_INTRvendor规定的USB中断收到VI_EVENT_PXI_INTRPCI中断收到Page38UESTC----ATSATS第二节VISA库构成VISA特殊操作基本I/O格式化I/O存储器I/O共享存储器服务特定接口服务Page39UESTC----ATSATS第二节VISA库构成基本I/OviRead(vi,buf,count,retCount)以同步方式从设备读数据viReadAsync(vi,buf,count,jobId)异步方式从设备读取数据viReadToFile(vi,filename,count,retCount)同步读取数据,并将数据存储到文件viWrite(vi,buf,count,retCount)同步写数据到设备viWriteAsync(vi,buf,count,jobId)异步写数据到设备viWriteFromFile(vi,filename,count,retCount)同步写数据到文件viAssertTrigger(vi,protocol)给出一个软件或者硬件触发viReadSTB(vi,status)读取服务请求状态字viClear(vi)清设备Page40UESTC----ATSATS第二节VISA库构成Page41UESTC----ATSATS第二节VISA库构成Page42UESTC----ATSATS第二节VISA库构成格式化I/OviSetBuf(vi,mask,size)设置格式化I/O或串行I/O通信缓冲大小viFlush(vi,mask)在格式化I/O操作或串行通信中清空特定缓冲viPrintf(vi,writeFmt,arg1,arg2,...)将参数根据格式化字串进行转换并发送viVPrintf(vi,writeFmt,params)按照格式化字串转换格式化参数,并将数据发送到设备viSPrintf(vi,buf,writeFmt,arg1,arg2,...)根据格式化字符串转换参数,并将数据写入用户指定的缓存而不是设备viVSPrintf(vi,buf,writeFmt,params)与viVPrintf()相似,不同在与数据写入到用户指定的缓存而不是设备viBufWrite(vi,buf,count,retCount)与viWrite()相似,不同在于数据写入到格式化I/O的写缓存而不是到设备Page43UESTC----ATSATS第二节VISA库构成格式化I/OviScanf(vi,readFmt,arg1,arg2,...)根据格式化规定读取并转换数据,并将数据存放到输入的参数