1、VISA常用函数函数viOpenDefaultRM原型ViStatus viOpenDefaultRM (ViSession sesn );描述这个函数用来初始化一个VISA资源管理器,此函数必须要在其他任何VISA函数之前调用。函数通过sesn参数返回一个独立的VISA资源管理器ID。参数名称方向类型描述sesnOUTViSession返回一个独一无二的VISA资源管理器逻辑标识符返回值返回值为函数运行结果,如果成功sesn返回VISA资源管理器标识符,否则返回0。标识符值描述VI_SUCCESS0VISA资源管理器初始化成功。VI_ERROR_ALLOC系统资源不足。VI_ERROR_IN
2、V_SETUP配置文件无效或者不存在。VI_ERROR_SYSTEM_ERRORVISA系统初始化失败。viOpen原型ViStatus viOpen (ViSession sesn, ViRsrc rsrcName, ViAccessMode accessMode, ViUInt32 timeout, ViSession vi);描述连接一个指定的设备,返回一个可用于调用其他功能的连接标识符。参数名称方向类型描述sesnINViSessionVISA资源管理器逻辑标识符。rsrcNameINViRsrc地址名称。accessModeINViAccessMode连接打开方式,可以是以下值:VI
3、_EXCLUSIVE_LOCK独占方式打开;VI_LOAD_CONFIG更具外部配置文件打开;VI_NULL正常多访问打开。timeoutINViUInt32如果是以独占模式连接,该参数是一个绝对时间(单位ms),超时就返回一个错误。其他连接方式忽略此值。viOUTViSession返回打开连接逻辑标识符。返回值返回值为函数运行结果,如果成功vi返回设备连接标识符,否则返回0。标识符值描述VI_SUCCESS0连接成功。VI_SUCCESS_DEV_NPRESENT连接成功。但是指定的地址无响应。VI_WARN_CONFIG_NLOADED指定的地址不存在或者地址格式不正确。VI_ERROR_
4、ALLOC系统资源不足。VI_ERROR_INTF_NUM_NCONFIG指定的地址是有效的,但无法使用。VI_ERROR_INV_ACC_MODE非法的存取模式。VI_ERROR_INV_RSRC_NAME地址名称语法错误。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECT无效的vi。VI_ERROR_LIBRARY_NFOUNDVISA库加载不完全。VI_ERROR_NSUP_OPER资源管理器sesn不支持此函数。VI_ERROR_RSRC_BUSYsesn是有效的,但当前无法访问。VI_ERROR_RSRC_LOCKEDsesn被独占。VI_ERROR_RS
5、RC_NFOUND信息不足或者资源不存在。VI_ERROR_TMO0xBFFF0015操作超时。viClose原型ViStatus viClose(ViSession vi);ViStatus viClose(ViEvent vi);ViStatus viClose(ViFindList vi);描述关闭一个资源管理器或者设备连接,并释放内存。参数名称方向类型描述viINViSessionViEventViFindList需要关闭的对象。返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0关闭成功。VI_WARN_NULL_OBJECT要关闭的对象是空对象。VI_ERROR_CLOS
6、ING_FAILEDvi不能标识正当对话通道。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECT无法释放与该对话通道相关联的内存数据结构。viFindRsrc原型ViStatus viFindRsrc(ViSession sesn, ViString expr, ViPFindList findList, ViPUInt32 retcnt, ViRsrc instrDesc);描述该函数用于查找VISA系统里与指定接口相连的资源设备。该函数查找的与expr参数相匹配的有效资源设备。该函数成功完成将返回与exor相匹配的资源组中的第一个资源(instrDesc),还返
7、回一个资源组中的个数(retnt)。另外还返回一个找到的队列句柄,可以同过调用viFindNext传入这个句柄来获得其他找到的资源。当这个句柄不需要时必须调用viClose关闭。expr参数不区分大小写,搜寻标准由两个部分组成:一个资源的正则表达式和一个可选的属性值逻辑表达式。这个正则表达式是与已知的VISA资源管理器相匹配。如果这资源字符串与正则表达式相匹配,并且属性值也与逻辑表达式匹配,则这匹配是成功的,这资源将添加到资源查询队列(findList)中。(安捷伦的VISA不支持匹配属性值。)这可选的属性逻辑表达式允许使用逻辑符号AND,OR,NOT。相等(=)和不等(!=)可以用与任何类型
8、的属性比较。另外的非等号比较的(,=,=)只能用于数值类型的属性比较。仅仅全局属性才能参与属性表达式。如果findList参数传入的是VI_NULL,则会自动调用viClose关闭查找到的资源队列。findList参数和retcnt参数都是可选的,如果只需要第一个匹配到的设备并且不需要知道连接了多少设备这两个参数都可以传入VI_NULL。所有返回的字符串都需要经过viParseRsrc和viOpen函数的验证,不是所有查询到的资源都可以通过和查询的。参数名称方向类型描述sesnINViSession资源管理器。必须要被viOpenDefaultRM函数初始化。exprINViString表达要
9、搜索的一个接口或者所有接口存在的设备。(参照下面的格式描述字符串表)findListOUTViPFindList返回一个搜索到的句柄标识符,这句柄可以作为viFindNext函数的参数传入。如果为VI_NULL,自动动调用viClose关闭findList。retcntOUTViPUInt32匹配到的设备数量。如果为VI_NULL,不返回找到的个数。instrDescOUTViRsrc返回一个设备识别地址字符串,可以直接传给viOpen建立一个会话。expr参数描述字符串说明:接口表达GPIBGPIB0-9*:?*INSTRVXIVXI?*INSTRGPIB-VXIGPIB-VXI?*INST
10、RGPIB和GPIB-VXIGPIB?*INSTRAll VXI?*VXI0-9*:?*INSTRASRLASRL0-9*:?*INSTRAll?*INSTR返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0找到资源。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECT传递的对象无效。VI_ERROR_NSUP_OPER不支持该函数。VI_ERROR_INV_EXPR无效的搜索指定。VI_ERROR_RSRC_NFOUND没有找到设备。viFindNext原型ViStatus viFindNext(ViFindList findList, ViPRsrc
11、instrDesc);描述返回查找资源队列上的下一个资源。参数名称方向类型描述findListINViFindList查找队列句柄。必须由viFindRsrc函数创建。instrDescOUTViPRsrc返回一个地址字符串。字符串可以通过调用viOpen函数建立一个会话连接。返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0找到资源。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTfindList不能标志正确的连接。VI_ERROR_NSUP_OPERfindList不支持该函数。VI_ERROR_RSRC_NFOUND没找到资源。viParseRs
12、rc原型ViStatus viParseRsrc(ViSession sesn, ViRsrc rsrcName, ViPUInt16 intfType, ViPUInt16 intfNum);描述从语法上分析一个指向设备的资源字符串。这操作分析字符串的有效性。viFindRsrc函数返回的所有字符串都必须在分析成功后才能调用viOpen函数。返回的intfType和intfNum分别对应VI_ATTR_INTF_TYPE和VI_ATTR_INTF_NUM属性。这些值将与使用viOpen函数连接后使用viGetAttribute函数查询的值一样。在viOpen函数中设置别名,viParesRs
13、rc函数也能识别。rsrcName参数不区分大小写。参数名称方向类型描述sesnINViSession默认资源管理器(必须经过viOpenDefaultRM函数初始化)。rsrcNameINViRsrc资源独立的名称。intfTypeOUTViPUInt16会话连接的接口类型。intfNumOUTViPUInt16会话连接的板号。返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0资源字符串是有效的。VI_ERROR_ALLOC内存不足。VI_ERROR_INTF_NUM_NCONFIG接口类型是有效的,但接口号是无效的。VI_ERROR_INV_RSRC_NAME无效的资源指示字符
14、串。语法错误。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTsesn不能标志正确的连接。VI_ERROR_LIBRARY_NFOUND一个VISA必须库无法加载。VI_ERROR_NSUP_OPER给定的sesn不支持该函数。例如,该函数仅仅支持默认资源管理器的sesn。VI_ERROR_RSRC_NFOUND位置信息不足。viClear原型ViStatus viClear(ViSession vi);描述清空设备,执行IEEE 488.1系统的清空操作。如果连接方式是使用VXI总线,将清空所有连接设备;如果连接方式是使用GPIB数据采集板,将只清空指定地址的设
15、备;如果连接方式是使用TCPIP套接字,需要把VI_ATTR_IO_PROT属性设置成VI_PROT_4882_STRS,将相当于向设备发送”*CLSn”字符串,其他设置操作无效。参数名称方向类型描述viINViSession对象标识符。返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0函数执行成功。VI_ERROR_BERR总线错误。VI_ERROR_CONN_LOST连接丢失。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_INV_SETUP设置无效,不能执行操作。VI_ERROR_NCIC非法控制器。VI
16、_ERROR_NLISTENERS没有检测到听者。VI_ERROR_NSUP_OPERvi不支持此函数VI_ERROR_RAW_RD_PROT_VIOL传输时读协议被破坏。VI_ERROR_RAW_WR_PROT_VIOL传输时写协议被破坏。VI_ERROR_RSRC_LOCKEDvi被独占。VI_ERROR_TMO操作超时。viFlush原型ViStatus viFlush(ViSession vi, ViUInt16 mask);描述手动刷新格式化I/O缓冲区。参数名称方向类型描述viINViSession对象标识符。maskINViUInt16缓冲区类型。返回值返回值为函数运行结果。标识
17、符值描述VI_SUCCESS0函数执行成功。VI_ERROR_INV_MASK缓冲区类型设置错误VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_IOI/O错误VI_ERROR_RSRC_LOCKED存取锁定模式不支持特定操作VI_ERROR_TMO超时。viReadSTB原型ViStatus viReadSTB(ViSession vi, ViPUInt16 status);描述读取一个服务请求状态。例如,在IEEE488.2接口上,这消息将轮训所有的连接设备。其他接口这消息只读取一个设备的服务请求状态。连接方式是使用TC
18、PIP套接字,如果VI_ATTR_IO_PROT属性的值为VI_PROT_4882_STRS,将向这设备发送字符串”*STB?n”查询状态,其他设置则操作将无效。如果这个设备状态信息只有一个字节(BYTE)长度,则另外一个字节设为0。如果服务请求没有在规定时间周期内完成,将返回VI_ERROR_TMO。参数名称方向类型描述viINViSession对象标识符。statusOUTViUInt16服务请求状态字节。返回值返回值为函数运行结果。标识符值描述VI_SUCCESS0函数执行成功。VI_ERROR_BERR总线错误。VI_ERROR_CONN_LOST连接丢失。VI_ERROR_INV_S
19、ESSIONVI_ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_INV_SETUP设置无效,不能执行操作。VI_ERROR_NCIC非法控制器。VI_ERROR_NLISTENERS没有检测到听者。VI_ERROR_NSUP_OPERvi不支持此函数VI_ERROR_RAW_RD_PROT_VIOL传输时读协议被破坏。VI_ERROR_RAW_WR_PROT_VIOL传输时写协议被破坏。VI_ERROR_RSRC_LOCKEDvi被独占。VI_ERROR_SRQ_NOCCURRED对象没有收到服务请求。VI_ERROR_TMO操作超时。viRead原型ViStatu
20、s viRead(ViSession vi, ViBuf buf, ViUInt32 count,ViUInt32 retCount);描述同步读取数据。读取的数据存储在buf中。当数据读取完毕函数才返回。任何时间都只能存在一个同步读取。遇到以下情况同步读取结束: 收到END指示器 读取到终止符 读取的数据大小达到count的值注意:必须设置读取终止符。参数名称方向类型描述viINViSession对象标识符。bufOUTViBuf返回数据存取地址。countINViUInt32指定读取长度。retCountOUTViUInt32实际读取长度。如果为VI_NULL表示不关心该值。返回值返回值为
21、函数运行结果。标识符值描述VI_SUCCESS0成功读取,读取到END指示器结束。VI_SUCCESS_MAX_CNT成功读取,已经达到最大长度count。VI_SUCCESS_TERM_CHAR成功读取,读取到特定终止符。VI_ERROR_ASRL_FRAMING构架错误。VI_ERROR_ASRL_OVERRUN溢出错误。VI_ERROR_ASRL_PARITY同步错误。VI_ERROR_BERR总线错误。VI_ERROR_CONN_LOST连接丢失。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_INV_SETUP设
22、置无效,不能执行操作。VI_ERROR_IO未知I/O错误。VI_ERROR_NCIC非法控制器。VI_ERROR_NLISTENERS没有检测到听者。VI_ERROR_NSUP_OPERvi不支持此函数VI_ERROR_OUTP_PROT_VIOL设备记录一个输出协议错误。VI_ERROR_RAW_RD_PROT_VIOL传输时读协议被破坏。VI_ERROR_RAW_WR_PROT_VIOL传输时写协议被破坏。VI_ERROR_RSRC_LOCKEDvi被独占。VI_ERROR_TMO操作超时。viReadAsync原型ViStatus viReadAsync(ViSession vi, V
23、iBuf buf, ViUInt32 count, ViJobId jobId);描述异步读取数据。读取的数据存储在buf中。当数据读取完毕函数才返回。当数据传输结束时触发一个I/O结束事件。该函数返回一个jobId表示该操作的标识符,可以使用viTerminate函数传入jobId终止或者等待I/O结束事件来确定异步读操作完成。参数名称方向类型描述viINViSession对象标识符。bufOUTViBuf返回数据存取地址。countINViUInt32指定读取长度。jobIdOUTViJobId异步读操作工作标识符。如果为VI_NULL表示不关心该值。返回值返回值为函数运行结果。标识符值描
24、述VI_SUCCESS0异步读成功进入队列。VI_SUCCESS_SYNC读操作进行异步。VI_ERROR_INV_SESSIONVI_ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_QUEUE_ERROR队列错误。VI_ERROR_RSRC_LOCKEDvi被独占。viReadToFile原型ViStatus viReadToFile (ViSession vi, ViConstString fileName, ViUInt32 count, ViUInt32 retCount);描述同步读取数据并把数据保存到文件中。fileName指定的文件只有只写权限。如果VI
25、_ATTR_FILE_APPEND_EN属性值为VI_FLASE,数据写入将直接覆盖原来的数据,否则在文件内容尾部添加数据。仅当数据读取和保存操作完成此函数才返回。此函数一般用于保存未处理的数据便于后期处理。VSIA使用ANSI C(标准C)文件操作。viReadToFile的模式通常是”wb”或者”ab” 。参数名称方向类型描述viINViSession对象标识符。fileNameINViConstString写入的文件地址。countINViUInt32读取数据长度。retCountOUTViUInt32实际读取数据长度。如果为VI_NULL表示不关心该值。返回值返回值为函数运行结果。标识
26、符值描述VI_SUCCESS0操作成功。VI_SUCCESS_MAX_CNT读取的数据长度达到了count的值。VI_SUCCESS_TERM_CHAR读取到指定的终止符号。VI_ERROR_ASRL_FRAMING格式错误。VI_ERROR_ASRL_OVERRUN溢出错误。VI_ERROR_ASRL_PARITY同步错误。VI_ERROR_BERR总线错误。VI_ERROR_CONN_LOST连接丢失。VI_ERROR_FILE_ACCESS打开文件错误。可能是提供的无效路径或者没有访问权限。VI_ERROR_FILE_IO访问文件时发生错误。VI_ERROR_INV_SESSIONVI_
27、ERROR_INV_OBJECTvi不能标志正确的连接。VI_ERROR_INV_SETUP设置无效,不能执行操作。VI_ERROR_IO未知I/O错误。VI_ERROR_NCIC非法控制器。VI_ERROR_NLISTENERS没有检测到听者。VI_ERROR_NSUP_OPERvi不支持此函数VI_ERROR_OUTP_PROT_VIOL设备报告输出协议错误。VI_ERROR_RAW_RD_PROT_VIOL传输时读协议被破坏。VI_ERROR_RAW_WR_PROT_VIOL传输时写协议被破坏。VI_ERROR_RSRC_LOCKEDvi被独占。VI_ERROR_TMO超时。viWrite原型ViStatus viWrite(ViSession vi, ViBuf buf, ViUInt32 count, ViUInt32 retCount);描述同步写入数据。写入的数据存储在buf中。当数据写入完毕函数才返回。任何时间都只能存在一个同步写入。如果retCount的值为VI_NULL将不
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1