VISA通用函数

  • 格式:doc
  • 大小:416.58 KB
  • 文档页数:22

函数viOpenDefaultRM原型ViStatus viOpenDefaultRM (ViSession sesn );描述这个函数用来初始化一个VISA资源管理器,此函数必须要在其他任何VISA函数之前调用。

函数通过sesn参数返回一个独立的VISA资源管理器ID。

参数返回值返回值为函数运行结果,如果成功sesn返回VISA资源管理器标识符,否则返回0。

viOpen原型ViStatus viOpen (ViSession sesn, ViRsrc rsrcName, ViAccessMode accessMode, ViUInt32timeout, ViSession vi);描述连接一个指定的设备,返回一个可用于调用其他功能的连接标识符。

参数返回值返回值为函数运行结果,如果成功vi返回设备连接标识符,否则返回0。

viCl ose原型ViStatus viClose(ViSession vi ); ViStatus viClose(ViEvent vi ); ViStatus viClose(ViFindList vi );描述 关闭一个资源管理器或者设备连接,并释放内存。

参数返回值 返回值为函数运行结果。

viFindRsrc原型ViStatus viFindRsrc(ViSession sesn , ViString expr , ViPFindList findList ,ViPUInt32 retcnt , ViRsrc instrDesc );描述该函数用于查找VISA系统里与指定接口相连的资源设备。

该函数查找的与expr参数相匹配的有效资源设备。

该函数成功完成将返回与exor相匹配的资源组中的第一个资源(instrDesc),还返回一个资源组中的个数(retnt)。

另外还返回一个找到的队列句柄,可以同过调用viFindNext传入这个句柄来获得其他找到的资源。

当这个句柄不需要时必须调用viClose关闭。

expr参数不区分大小写,搜寻标准由两个部分组成:一个资源的正则表达式和一个可选的属性值逻辑表达式。

这个正则表达式是与已知的VISA资源管理器相匹配。

如果这资源字符串与正则表达式相匹配,并且属性值也与逻辑表达式匹配,则这匹配是成功的,这资源将添加到资源查询队列(findList)中。

(安捷伦的VISA不支持匹配属性值。

)这可选的属性逻辑表达式允许使用逻辑符号AND,OR,NOT。

相等(==)和不等(!=)可以用与任何类型的属性比较。

另外的非等号比较的(>,<,>=,<=)只能用于数值类型的属性比较。

仅仅全局属性才能参与属性表达式。

如果findList参数传入的是VI_NULL,则会自动调用viClose关闭查找到的资源队列。

findList参数和retcnt参数都是可选的,如果只需要第一个匹配到的设备并且不需要知道连接了多少设备这两个参数都可以传入VI_NULL。

所有返回的字符串都需要经过viParseRsrc和viOpen函数的验证,不是所有查询到的资源都可以通过和查询的。

参数expr参数描述字符串说明:返回值返回值为函数运行结果。

viFindNext原型ViStatus viFindNext(ViFindList findList, ViPRsrc instrDesc);描述返回查找资源队列上的下一个资源。

参数返回值返回值为函数运行结果。

viParseRsrc原型ViStatus viParseRsrc(ViSession sesn, ViRsrc rsrcName, ViPUInt16intfType, ViPUInt16intfNum);描述从语法上分析一个指向设备的资源字符串。

这操作分析字符串的有效性。

viFindRsrc函数返回的所有字符串都必须在分析成功后才能调用viOpen函数。

返回的intfType和intfNum分别对应VI_ATTR_INTF_TYPE和VI_ATTR_INTF_NUM属性。

这些值将与使用viOpen函数连接后使用viGetAttribute函数查询的值一样。

在viOpen函数中设置别名,viParesRsrc函数也能识别。

rsrcName参数不区分大小写。

参数返回值返回值为函数运行结果。

viCl ear原型ViStatus viClear(ViSession vi);描述清空设备,执行IEEE 488.1系统的清空操作。

如果连接方式是使用VXI总线,将清空所有连接设备;如果连接方式是使用GPIB数据采集板,将只清空指定地址的设备;如果连接方式是使用TCPIP套接字,需要把VI_ATTR_IO_PROT属性设置成VI_PROT_4882_STRS,将相当于向设备发送”*CLS\n”字符串,其他设置操作无效。

参数返回值返回值为函数运行结果。

viFlush原型ViStatus viFlush(ViSession vi, ViUInt16mask);描述手动刷新格式化I/O缓冲区。

参数返回值返回值为函数运行结果。

viReadSTB原型ViStatus viReadSTB(ViSession vi, ViPUInt16status);描述读取一个服务请求状态。

例如,在IEEE488.2接口上,这消息将轮训所有的连接设备。

其他接口这消息只读取一个设备的服务请求状态。

连接方式是使用TCPIP套接字,如果VI_ATTR_IO_PROT属性的值为VI_PROT_4882_STRS,将向这设备发送字符串”*STB?\n”查询状态,其他设置则操作将无效。

如果这个设备状态信息只有一个字节(BYTE)长度,则另外一个字节设为0。

如果服务请求没有在规定时间周期内完成,将返回VI_ERROR_TMO。

参数返回值返回值为函数运行结果。

viRead原型ViStatus viRead(ViSession vi, ViBuf buf, ViUInt32count,ViUInt32retCount);描述同步读取数据。

读取的数据存储在buf中。

当数据读取完毕函数才返回。

任何时间都只能存在一个同步读取。

遇到以下情况同步读取结束:收到END指示器读取到终止符读取的数据大小达到count的值注意:必须设置读取终止符。

参数返回值返回值为函数运行结果。

viReadAsync原型ViStatus viReadAsync(ViSession vi, ViBuf buf, ViUInt32count, ViJobId jobId);描述异步读取数据。

读取的数据存储在buf中。

当数据读取完毕函数才返回。

当数据传输结束时触发一个I/O结束事件。

该函数返回一个jobId表示该操作的标识符,可以使用viTerminate函数传入jobId终止或者等待I/O结束事件来确定异步读操作完成。

参数返回值返回值为函数运行结果。

viReadToFile原型ViStatus viReadToFile (ViSession vi, ViConstString fileName,ViUInt32 count, ViUInt32retCount);描述同步读取数据并把数据保存到文件中。

fileName指定的文件只有只写权限。

如果VI_ATTR_FILE_APPEND_EN属性值为VI_FLASE,数据写入将直接覆盖原来的数据,否则在文件内容尾部添加数据。

仅当数据读取和保存操作完成此函数才返回。

此函数一般用于保存未处理的数据便于后期处理。

VSIA使用ANSI C(标准C)文件操作。

viReadToFile的模式通常是”wb”或者”ab”。

参数返回值返回值为函数运行结果。

viWrite原型ViStatus viWrite(ViSession vi, ViBuf buf, ViUInt32count, ViUInt32retCount);描述同步写入数据。

写入的数据存储在buf中。

当数据写入完毕函数才返回。

任何时间都只能存在一个同步写入。

如果retCount的值为VI_NULL将不返回写入数据长度值。

参数返回值返回值为函数运行结果。

viWriteAsync原型ViStatus viWriteAsync(ViSession vi, ViBuf buf, ViUInt32count, ViJobId jobId);注意:在安捷伦设备中将调用同步写入。

描述异步写入数据。

需要写入的数据存放在buf中。

当数据写入完毕函数才返回。

当数据传输完整结束时会触发一个I/O结束事件。

该函数返回一个jobId表示该操作的标识符,可以使用viTerminate函数传入jobId终止或者等待I/O结束事件来确定异步读操作完成。

参数返回值返回值为函数运行结果。

viWriteFromFile原型ViStatus viWriteFromFile(ViSession vi, ViConstString fileName,ViUInt32 count, ViUInt32retCount);描述从一个指定的文件中获取数据并同步写入设备中。

指定的fileName是以只读模式打开读取数据(读取全部数据或者数据长度达到count的值)。

读取到的数据都将写入到设备中。

该函数仅当操作完成才结束返回。

该操作通常是发送已经经过处理的数据。

VISA以ANSI C(标准C)文件操作,所以viWriteFromFile模式一般都是”rb”。

如果retCount参数设为VI_NULL,函数将不返回实际发送的数据长度,此操作常用于只需知道是否成功的操作。

参数返回值返回值为函数运行结果。

viPrintf原型ViStatus viPrintf(ViSession vi, ViString writeFmt, arg1, arg2,...);描述格式化字符串并发送格式化后的字符串给设备。

(字符串格式化可以参照MFC里CString类中的Format函数。

) 不能在同一资源上同时使用viWrite和viPrintf函数。

部分VSIA函数的参数是可变的(如viPrintf, viScanf和viQueryf),导致VB不能调用。

用户可以使用与这些函数功能相当的函数代替。

writeFmt参数可以包含普通字符、一般格式化字符和特殊字符。

普通字符(包括空格)书写方式与平常一样,不用做任何修改。

特殊字符则要在该字符前面加一个反斜杠( \ );格式化字符由百分号( % )和操作标志组成,操作标志后面介绍。

特殊字符参照下表:格式化字符格式化说明符转换是根据后面的参数值来进行改变和格式化的。

格式化完成后直接发送给设备。

格式化字符串语法如下:F | N | h | l表示指针是否是远指针或整数是否是长整数。

F表示远指针,N表示近指针,h表示短整数或单精度浮参数返回值返回值为函数运行结果。