首页 > 试题

visa怎么读

更新时间:2022-11-12 14:20:25 阅读: 评论:0

中考冲刺60天文言文醉翁亭记-铁英文


2022年11月12日发(作者:美女图库大全)

VISA常用(chánɡyònɡ)函数

VISA常用(chánɡyònɡ)函数

函数(hánshù)

viOpenDefaultRM

原型ViStatusviOpenDefaultRM(ViSessionsn);

描述这个函数用来初始化一个VISA资源管理器,此函数必须要在其他任何VISA函数之前调用。函数通过sn参数

返回一个独立的VISA资源管理器ID。

参数

名称方向类型描述

snOUTViSession

返回一个独一无二的VISA资源管理器逻辑标识符

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

标识符值描述

VI_SUCCESS0

VISA资源管理器初始化成功。

VI_ERROR_ALLOC

系统资源不足。

VI_ERROR_INV_SETUP

配置文件无效或者不存在。

VI_ERROR_SYSTEM_ERROR

VISA系统初始化失败。

viOpen

原型ViStatusviOpen(ViSessionsn,ViRsrcrsrcName,

ViAccessModeaccessMode,ViUInt32

timeout,ViSessionvi);

描述连接一个指定的设备,返回一个可用于调用其他功能的连接标识符。

参数

名称方向类型描述

snINViSession

VISA资源管理器逻辑标识符。

rsrcNameINViRsrc

地址名称。

accessModeINViAccessMode

连接打开方式,可以是以下值:

VI_EXCLUSIVE_LOCK独占方式打开;

VI_LOAD_CONFIG更具外部配置文件打开;

VI_NULL正常多访问打开。

timeoutINViUInt32

如果是以独占模式连接,该参数是一个绝对时间(单位ms),超

时就返回一个错误。其他连接方式忽略此值。

viOUTViSession

返回打开连接逻辑标识符。

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

标识符值描述

VI_SUCCESS0

连接成功。

VI_SUCCESS_DEV_NPRESENT

连接成功。但是指定的地址无响应。

VI_WARN_CONFIG_NLOADED

指定的地址不存在或者地址格式不正确。

VI_ERROR_ALLOC

系统资源不足。

VI_ERROR_INTF_NUM_NCONFIG

指定的地址是有效的,但无法使用。

VI_ERROR_INV_ACC_MODE

非法的存取模式。

VI_ERROR_INV_RSRC_NAME

地址名称语法错误。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

无效的vi。

VI_ERROR_LIBRARY_NFOUND

VISA库加载不完全。

VI_ERROR_NSUP_OPER

资源管理器sn不支持此函数。

VI_ERROR_RSRC_BUSY

sn是有效的,但当前无法访问。

VI_ERROR_RSRC_LOCKED

sn被独占。

VI_ERROR_RSRC_NFOUND

信息不足或者资源不存在。

VI_ERROR_TMO

0xBFFF0015操作超时。

viClo

原型ViStatusviClo(ViSessionvi);

ViStatusviClo(ViEventvi);

ViStatusviClo(ViFindListvi);

描述关闭一个资源管理器或者设备连接,并释放内存。

参数

名称方向类型描述

viINViSession

ViEvent

ViFindList

需要关闭的对象。

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

标识符值描述

VI_SUCCESS0

关闭成功。

VI_WARN_NULL_OBJECT

要关闭的对象是空对象。

VI_ERROR_CLOSING_FAILED

vi不能标识正当对话通道。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

无法释放与该对话通道相关联的内存数据结构。

viFindRsrc

原型ViStatusviFindRsrc(ViSessionsn,ViStringexpr,

ViPFindListfindList,

ViPUInt32retcnt,ViRsrc

instrDesc);

描述该函数用于查找VISA系统里与指定接口相连的资源设备。该函数查找的与expr参数相匹配的有效资源设备。

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

(retnt)。

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

需要时必须调用viClo关闭。

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

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

如果这资源字符串与正则表达式相匹配,并且属性值也与逻辑表达式匹配,则这匹配是成功的,这资源将添加到

资源查询队列(findList)中。(安捷伦的VISA不支持匹配属性值。)

这可选的属性逻辑表达式允许使用逻辑符号AND,OR,NOT。相等(==)和不等(!=)可以用与任何类型的属

性比较。另外的非等号比较的(>,<,>=,<=)只能用于数值类型的属性比较。仅仅全局属性才能参与属性表

达式。

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

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

VI_NULL。

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

参数

名称方向类型描述

snINViSession

资源管理器。必须要被viOpenDefaultRM函数初始化。

exprINViString

表达要搜索的一个接口或者所有接口存在的设备。(参照下面的

格式描述字符串表)

findListOUTViPFindList

返回一个搜索到的句柄标识符,这句柄可以作为viFindNext函数

的参数传入。如果为VI_NULL,自动动调用viClo关闭

findList。

retcntOUTViPUInt32

匹配到的设备数量。如果为VI_NULL,不返回找到的个数。

instrDescOUTViRsrc

返回一个设备识别地址字符串,可以直接传给viOpen建立一个会

话。

expr参数描述字符串说明:

接口表达

GPIBGPIB[0-9]*::?*INSTR

VXIVXI?*INSTR

GPIB-VXIGPIB-VXI?*INSTR

GPIB和GPIB-VXI

GPIB?*INSTR

AllVXI?*VXI[0-9]*::?*INSTR

ASRLASRL[0-9]*::?*INSTR

All?*INSTR

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

标识符值描述

VI_SUCCESS0

找到资源。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

传递的对象无效。

VI_ERROR_NSUP_OPER

不支持该函数。

VI_ERROR_INV_EXPR

无效的搜索指定。

VI_ERROR_RSRC_NFOUND

没有找到设备。

viFindNext

原型ViStatusviFindNext(ViFindListfindList,ViPRsrc

instrDesc);

描述返回查找资源队列上的下一个资源。

参数

名称方向类型描述

findListINViFindList

查找队列句柄。必须由viFindRsrc函数创建。

instrDescOUTViPRsrc

返回一个地址字符串。字符串可以通过调用viOpen函数建立一个

会话连接。

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

标识符值描述

VI_SUCCESS0

找到资源。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

findList不能标志正确的连接。

VI_ERROR_NSUP_OPER

findList不支持该函数。

VI_ERROR_RSRC_NFOUND

没找到资源。

viParRsrc

原型ViStatusviParRsrc(ViSessionsn,ViRsrc

rsrcName,ViPUInt16intfType,ViPUInt16intfNum);

描述从语法上分析一个指向设备的资源字符串。这操作分析字符串的有效性。viFindRsrc函数返回的所有字符串都必

须在分析成功后才能调用viOpen函数。

返回的intfType和intfNum分别对应VI_ATTR_INTF_TYPE和VI_ATTR_INTF_NUM属性。这些值将与使用

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

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

rsrcName参数不区分大小写。

参数

名称方向类型描述

snINViSession

默认资源管理器(必须经过viOpenDefaultRM函数初始化)。

rsrcNameINViRsrc

资源独立的名称。

intfTypeOUTViPUInt16

会话连接的接口类型。

intfNumOUTViPUInt16

会话连接的板号。

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

标识符值描述

VI_SUCCESS0

资源字符串是有效的。

VI_ERROR_ALLOC

内存不足。

VI_ERROR_INTF_NUM_NCONFIG

接口类型是有效的,但接口号是无效的。

VI_ERROR_INV_RSRC_NAME

无效的资源指示字符串。语法错误。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

sn不能标志正确的连接。

VI_ERROR_LIBRARY_NFOUND

一个VISA必须库无法加载。

VI_ERROR_NSUP_OPER

给定的sn不支持该函数。例如,该函数仅仅支持默认资

源管理器的sn。

VI_ERROR_RSRC_NFOUND

位置信息不足。

viClear

原型ViStatusviClear(ViSessionvi);

描述清空设备,执行IEEE488.1系统的清空操作。

如果连接方式是使用VXI总线,将清空所有连接设备;

如果连接方式是使用GPIB数据采集板,将只清空指定地址的设备;

如果连接方式是使用TCPIP套接字,需要把VI_ATTR_IO_PROT属性设置成VI_PROT_4882_STRS,将相当于

向设备发送”*CLSn”字符串,其他设置操作无效。

参数

名称方向类型描述

viINViSession

对象标识符。

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

标识符值描述

VI_SUCCESS0

函数执行成功。

VI_ERROR_BERR

总线错误。

VI_ERROR_CONN_LOST

连接丢失。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_INV_SETUP

设置无效,不能执行操作。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_NSUP_OPER

vi不支持此函数

VI_ERROR_RAW_RD_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_WR_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

操作超时。

viFlush

原型ViStatusviFlush(ViSessionvi,ViUInt16mask);

描述手动刷新格式化I/O缓冲区。

参数

名称方向类型描述

viINViSession

对象标识符。

maskINViUInt16

缓冲区类型。

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

标识符值描述

VI_SUCCESS0

函数执行成功。

VI_ERROR_INV_MASK

缓冲区类型设置错误

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_IO

I/O错误

VI_ERROR_RSRC_LOCKED

存取锁定模式不支持特定操作

VI_ERROR_TMO

超时。

viReadSTB

原型ViStatusviReadSTB(ViSessionvi,ViPUInt16

status);

描述读取一个服务请求状态。例如,在IEEE488.2接口上,这消息将轮训所有的连接设备。其他接口这消息只读取一

个设备的服务请求状态。

连接方式是使用TCPIP套接字,如果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_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_INV_SETUP

设置无效,不能执行操作。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_NSUP_OPER

vi不支持此函数

VI_ERROR_RAW_RD_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_WR_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_SRQ_NOCCURRED

对象没有收到服务请求。

VI_ERROR_TMO

操作超时。

viRead

原型ViStatusviRead(ViSessionvi,ViBufbuf,ViUInt32

count,ViUInt32retCount);

描述同步读取数据。读取的数据存储在buf中。当数据读取完毕函数才返回。任何时间都只能存在一个同步读取。遇

到以下情况同步读取结束:

收到END指示器

读取到终止符

读取的数据大小达到count的值

注意:必须设置读取终止符。

参数

名称方向类型描述

viINViSession

对象标识符。

bufOUTViBuf

返回数据存取地址。

countINViUInt32

指定读取长度。

retCountOUTViUInt32

实际读取长度。如果为VI_NULL表示不关心该值。

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

标识符值描述

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_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_INV_SETUP

设置无效,不能执行操作。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_NSUP_OPER

vi不支持此函数

VI_ERROR_OUTP_PROT_VIOL

设备记录一个输出协议错误。

VI_ERROR_RAW_RD_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_WR_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

操作超时。

viReadAsync

原型ViStatusviReadAsync(ViSessionvi,ViBufbuf,

ViUInt32count,ViJobIdjobId);

描述异步读取数据。读取的数据存储在buf中。当数据读取完毕函数才返回。当数据传输结束时触发一个I/O结束事

件。

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

确定异步读操作完成。

参数

名称方向类型描述

viINViSession

对象标识符。

bufOUTViBuf

返回数据存取地址。

countINViUInt32

指定读取长度。

jobIdOUTViJobId

异步读操作工作标识符。如果为VI_NULL表示不关心该值。

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

标识符值描述

VI_SUCCESS0

异步读成功进入队列。

VI_SUCCESS_SYNC

读操作进行异步。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_QUEUE_ERROR

队列错误。

VI_ERROR_RSRC_LOCKED

vi被独占。

viReadToFile

原型ViStatusviReadToFile(ViSessionvi,ViConstString

fileName,

ViUInt32

count,ViUInt32retCount);

描述同步读取数据并把数据保存到文件中。fileName指定的文件只有只写权限。

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

部添加数据。仅当数据读取和保存操作完成此函数才返回。此函数一般用于保存未处理的数据便于后期处理。

VSIA使用ANSIC(标准C)文件操作。viReadToFile的模式通常是”wb”或者”ab”。

参数

名称方向类型描述

viINViSession

对象标识符。

fileNameINViConstString

写入的文件地址。

countINViUInt32

读取数据长度。

retCountOUTViUInt32

实际读取数据长度。如果为VI_NULL表示不关心该值。

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

标识符值描述

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_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_INV_SETUP

设置无效,不能执行操作。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_NSUP_OPER

vi不支持此函数

VI_ERROR_OUTP_PROT_VIOL

设备报告输出协议错误。

VI_ERROR_RAW_RD_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_WR_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

超时。

viWrite

原型ViStatusviWrite(ViSessionvi,ViBufbuf,ViUInt32

count,ViUInt32retCount);

描述同步写入数据。写入的数据存储在buf中。当数据写入完毕函数才返回。任何时间都只能存在一个同步写入。

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

参数

名称方向类型描述

viINViSession

对象标识符。

bufINViBuf

写入数据存放地址。

countINViUInt32

指定写入长度。

retCountOUTViUInt32

实际写入长度。如果为VI_NULL表示不关心该值。

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

标识符值描述

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_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_INV_SETUP

设置无效,不能执行操作。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_NSUP_OPER

vi不支持此函数

VI_ERROR_OUTP_PROT_VIOL

设备报告输出协议错误。

VI_ERROR_RAW_RD_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_WR_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

操作超时。

viWriteAsync

原型ViStatusviWriteAsync(ViSessionvi,ViBufbuf,

ViUInt32count,ViJobIdjobId);

注意:在安捷伦设备中将调用同步写入。

描述异步写入数据。需要写入的数据存放在buf中。当数据写入完毕函数才返回。当数据传输完整结束时会触发一个

I/O结束事件。

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

确定异步读操作完成。

参数

名称方向类型描述

viINViSession

对象标识符。

bufINViBuf

写入数据存取地址。

countINViUInt32

写入数据长度。

jobIdOUTViJobId

异步写入操作工作标识符。如果为VI_NULL表示不关心该值。

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

标识符值描述

VI_SUCCESS0

异步写成功进入队列。

VI_SUCCESS_SYNC

写操作进行异步。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_QUEUE_ERROR

队列错误。

VI_ERROR_RSRC_LOCKED

vi被独占。

viWriteFromFile

原型ViStatusviWriteFromFile(ViSessionvi,

ViConstStringfileName,

ViUInt32

count,ViUInt32retCount);

描述从一个指定的文件中获取数据并同步写入设备中。指定的fileName是以只读模式打开读取数据(读取全部数据或

者数据长度达到count的值)。读取到的数据都将写入到设备中。该函数仅当操作完成才结束返回。

该操作通常是发送已经经过处理的数据。VISA以ANSIC(标准C)文件操作,所以viWriteFromFile模式一般都

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

功的操作。

参数

名称方向类型描述

viINViSession

对象标识符。

fileNameINViConstString

读取的文件地址。

countINViUInt32

写入数据长度。

retCountOUTViUInt32

实际写入长度。如果为VI_NULL表示不关心该值。

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

标识符值描述

VI_SUCCESS0

操作成功。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_NSUP_OPER

vi不支持该函数。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

超时。

VI_ERROR_RAW_RW_PROT_VIOL

传输时读协议被破坏。

VI_ERROR_RAW_RD_PROT_VIOL

传输时写协议被破坏。

VI_ERROR_OUTP_PROT_VIOL

传输时设备报告输入协议错误。

VI_ERROR_BERR

总线错误。

VI_ERROR_NCIC

非法控制器。

VI_ERROR_NLISTENERS

没有检测到听者。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_FILE_ACCESS

打开文件错误。可能是提供的无效路径或者没有访问权

限。

VI_ERROR_FILE_IO

访问文件时发生错误。

VI_ERROR_CONN_LOST

连接丢失。

viPrintf

原型ViStatusviPrintf(ViSessionvi,ViStringwriteFmt,

arg1,arg2,...);

描述格式化字符串并发送格式化后的字符串给设备。(字符串格式化可以参照MFC里CString类中的Format函数。)

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

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

功能相当的函数代替。

writeFmt参数可以包含普通字符、一般格式化字符和特殊字符。普通字符(包括空格)书写方式与平常一样,不用

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

志后面介绍。

特殊字符

参照下表:

n发送一个ASCII码换行符,并且END标志自动一起发送。

r发送一个ASCII码回车。

t发送一个ASCII码制表符。

###发送一个指定的八进制数。

”发送一个ASCII码双引号。

发送一个ASCII码反斜杠。

格式化字符

格式化说明符转换是根据后面的参数值来进行改变和格式化的。格式化完成后直接发送给设备。格式化字符串语

法如下:

%[arraySize,][flags][width][.precision][F|N|h|l]type

arraySize表示数组的大小,逗号表示数组修饰符。arraySize可以是常量,也可以用*代替。*代替需要增加一个参

数表示arraySize的值。只支持type为d和f。

flags表示规定输出格式,可用符号如下:

符号作用

无右对齐,左边填充0或空格。

-左对齐,右边填充空格。

+

在数字前增加符号+或-。

空格只对负数显示符号。

#type=c,s,d,i,u时没有影响。

type=o,x,X时,分别在数值前增加'0',"0x","0X"。

type=e,E,f时,总是使用小数点。

type=g,G时,除了数值为0外总是显示小数点。

width表示控制显示数值的宽度,取值和含义如下:

符号作用

无按缺省宽度显示。

n(n=1,2,3...)

宽度至少为n位,不够以空格填充。

0n(n=1,2,3...)

宽度至少为n位,不够左边以0填充。

*格式列表中,下一个参数还是width。

precision用于控制小数点后面的位数,取值和含义如下:

符号作用

无按缺省精度显示。

0

type=d,i,o,u,x时,没有影响。

type=e,E,f时,不显示小数点。

n(n=1,2,3...)

type=e,E,f时表示的最大小数位数。

type=其他,表示显示的最大宽度。

*格式列表中,下一个参数还是precision。

F|N|h|l表示指针是否是远指针或整数是否是长整数。F表示远指针,N表示近指针,h表示短整数或单精度浮

点数,l表示长整数或双精度浮点数。

type可用符号如下:

符号作用符号作用

d/i

有符号10进制整数

u

无符号10进制整数

x

小写字母无符号16进制

X

大写字母无符号16进制

f/F

浮点数

e/E

科学记数法表示浮点数

c

单个字符

s

字符串

o

无符号8进制整数

%

显示百分号

p

指针的值

g

自动选择合适的表示法

参数

名称方向类型描述

viINViSession

对象标识符。

writeFmtINViString

格式化字符串。

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

标识符值描述

VI_SUCCESS0

参数成功格式化。

VI_ERROR_ALLOC

内存不足。

VI_ERROR_INV_FMT

writeFmt包含无效格式化说明符。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NSUP_FMT

writeFmt有不支持的格式说明符。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

操作超时。

viScanf

原型ViStatusviScanf(ViSessionvi,ViStringreadFmt,

arg1,arg2,...);

描述这操作从设备读取一个字符串,然后格式化后保存值arg变量中。格式字符串包含说明符,空格字符和普通字

符。

VISA中参数不确定的函数(如viPrintf,viScanf,和viQueryf)不能被VB调用。可以用功能相似的viVPrintf,

viVScanf,和viVQueryf函数代替。

隐式分割符(空格符,制表符,换行符,回车符)是被忽略的,除非是%c和%[]。除’%’外所有普通字符应该与

从设备读取到的字符相匹配。

格式字符串的语法格式如下:

%[,arraySize][width][F|N|h|l]type

arraySize表示返回数组的大小,逗号表示数组修饰符。arraySize可以是常量,也可以用#代替。#表示把返回的数

组大小保存到一个参数中。只支持type为d和f。

width表示控制显示数值的宽度,取值和含义如下:

符号作用

无按缺省宽度显示。

n(n=1,2,3...)

表示输入数据所占列宽。

F|N|h|l表示指针是否是远指针或整数是否是长整数。F表示远指针,N表示近指针,h表示短整数或单精度浮

点数,l表示长整数或双精度浮点数。

type可用符号如下:

符号作用符号作用

d/i

有符号10进制整数

u

无符号10进制整数

x

小写字母无符号16进制

X

大写字母无符号16进制

f/F

浮点数

e/E

科学记数法表示浮点数

c

单个字符

s

字符串

t

以END结尾的字符串

T

以“n”结尾的字符串

y

二进制数组。

viScanf函数以END结束符结尾或者所有格式字符都匹配完成。如果碰到一个不匹配的字符该函数也将结束,所

以先在检测格式化字符串是否匹配前查找END符。

还有在格式化完成后在缓冲区还残留一些数据的话,这些数据将留个下一个viScanf函数使用。

参数

名称方向类型描述

viINViSession

对象标识符。

writeFmtINViString

格式化字符串。

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

标识符值描述

VI_SUCCESS0

成功读到数据并且格式化到arg参数里。

VI_ERROR_ALLOC

内存不足。

VI_ERROR_INV_FMT

writeFmt包含无效格式化说明符。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NSUP_FMT

writeFmt有不支持的格式说明符。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

操作超时。

viQueryf

原型ViStatusviQueryf(ViSessionvi,ViStringwriteFmt,

ViStringreadFmt,arg1,arg2,...);

描述这函数执行一个格式化写和进行一个读取操作请求。这函数提供一个机制“发送,然后读取”一个典型的从设备

获取数据的命令。读取是在发送命令后立即执行的。

该函数相当于viPrintf函数和viScanf函数结合起来。arg先匹配writeFmt,然后在匹配readFmt。具体格式化格

式请参考viPrintf函数和viScanf函数的说明。

该函数的返回值和viPrintf,viScanf,viFlush一样。

VISA中参数不确定的函数(如viPrintf,viScanf,和viQueryf)不能被VB调用。可以用功能相似的viVPrintf,

viVScanf,和viVQueryf函数代替。

参数

名称方向类型描述

viINViSession

对象标识符。

writeFmtINViString

写入格式化字符串。

readFmtOUTViString

读取格式化字符串。

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

标识符值描述

VI_SUCCESS0

成功完成一个查询操作。

VI_ERROR_ALLOC

内存不足。

VI_ERROR_INV_FMT

0xBFFF003FwriteFmt包含无效格式化说明符。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_IO

未知I/O错误。

VI_ERROR_NSUP_FMT

0xBFFF0041writeFmt有不支持的格式说明符。

VI_ERROR_RSRC_LOCKED

vi被独占。

VI_ERROR_TMO

0xBFFF0015操作超时。

viSetAttribute

原型ViStatusviSetAttribute(ViSessionvi,ViAttr

attribute,ViAttrStateattrState);

ViStatusviSetAttribute(ViEventvi,ViAttrattribute,

ViAttrStateattrState);

ViStatusviSetAttribute(ViFindListvi,ViAttr

attribute,ViAttrStateattrState);

描述修改指定对象的指定属性值。

如果一个资源属性不能被修改,并且该资源是有效的和属性说明不能指定为其他值,viSetAttribute将返回错误

代码VI_ERROR_NSUP_ATTR_STATE。

VI_WARN_NSUP_ATTR_STATE和VI_ERROR_NSUP_ATTR_STATE都指明传递的值不是有效值。除特殊情

况外,一般都返回错误代码VI_ERROR_NSUP_ATTR_STATE,如果返回完成代码

VI_WARN_NSUP_ATTR_STATE表示不支持传递的值,但操作没有失败。

参数

名称方向类型描述

viINViSession

ViEvent

ViFindList

对象标识符。

事件标识符。

查找队列。

attributeINViAttr

要设置的资源属性。

attrStateOUTViAttrState

要设置的值。

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

标识符值描述

VI_SUCCESS0

成功设置资源属性。

VI_WARN_NSUP_ATTR_STATE

设置的属性是有效的,但不支持此属性启用。(这请求将停

止,但可能会有性能改变。)

VI_ERROR_ATTR_READONLY

只读属性。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_NSUP_ATTR

该资源中没有指定的属性。

VI_ERROR_NSUP_ATTR_STATE

传的值不是有效值,或者该属性不支持该定义的值。(该操

作将被阻止并返回错误。)

VI_ERROR_RSRC_LOCKED

vi被上锁。

viGetAttribute

原型ViStatusviGetAttribute(ViSessionvi,ViAttr

attribute,void_VI_PTRattrState);

ViStatusviGetAttribute(ViEventvi,ViAttrattribute,

void_VI_PTRattrState);

ViStatusviGetAttribute(ViFindListvi,ViAttr

attribute,void_VI_PTRattrState);

描述返回指定对象的指定属性值。

参数

名称方向类型描述

viINViSession

对象标识符。

ViEvent

ViFindList

事件标识符。

查找队列。

attributeINViAttr

要返回的资源属性。

attrStateOUTvoid*

要返回的属性值存放位置的指针。由于属性值类型长度不同,所

以必须要先明确属性类型来分配存放的内存空间。

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

标识符值描述

VI_SUCCESS0

成功获取资源属性。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_NSUP_ATTR

该资源中没有指定的属性。

viLock

原型ViStatusviLock(ViSessionvi,ViAccessMode

lockType,ViUInt32timeout,

ViKeyId

requestedKey,ViKeyIdaccessKey);

注意:viLock函数不支持网络设备。

描述该函数用于给一个资源加锁,加锁后可以使其他会话无法访问被加锁的资源。其他会话在访问被加锁的资源的时

候会等待一段时间,如果等待结束资源还没解锁访问将返回一个错误。

共享锁能被一个或者多个会话加载在一个资源上,构成嵌套锁。

当lockType为VI_EXCLUSIVE_LOCK时,requestedKey和accessKey是无效的,应该设置为VI_NULL。

当lockType为VI_SHARED_LOCK时,可以通过requestedKey参数指定一个密匙。如果vi没有加锁,

requestedKey的值将会作为访问密匙。如果vi加锁了,并且requestedKey的值与访问密匙相同,则vi取得访问权

限,否则返回错误。

同样的requestedKey的值也可以定义为VI_NULL。如果vi没有加锁,将产生一个随机的唯一访问密匙通过

accessKey返回。如果vi加锁了,则返回错误。

viLock可以对同一会话多次上同一类型的锁,会有一个内部计数。调用一次viLock计数+1,当计数大于0时调

用一次viUnLock计数-1,当计数为0时调用viUnLock计数不变。当计数为0时才为真正解锁。

参数

名称方向类型描述

viINViSession

对象标识符。

lockTypeINViAccessMode

指定加锁类型,可以是VI_EXCLUSIVE_LOCK(独占锁)或者

VI_SHARED_LOCK(共享锁)。

timeoutINViUInt32

其他操作需要访问此被加锁的对象时等待timeout(ms)后未解

锁就返回错误。除开数值外还可以设置为

VI_TMO_IMMEDIATE(立即)和VI_TMO_INFINITE(一直

等待)。

requestedKeyINViKeyId

当lockType为VI_EXCLUSIVE_LOCK时此值设为VI_NULL。

当lockType为VI_SHARED_LOCK时,可以传入VI_NULL或

者密匙。详情看描述。

accessKeyOUTViKeyId

当lockType为VI_EXCLUSIVE_LOCK时此值设为VI_NULL。

当lockType为VI_SHARED_LOCK时,此参数返回一个唯一的

密匙,其他会话可以用该密匙与这个资源加共享锁。

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

标识符值描述

VI_SUCCESS0

成功以指定模式上锁。

VI_SUCCESS_NESTED_EXCLUSIVE

成功上独占锁。(多次上锁)

VI_SUCCESS_NESTED_SHARED

成功上共享锁。(多次上锁)

VI_ERROR_INV_ACCESS_KEY

requestedKey不是改资源共享锁的密匙。

VI_ERROR_INV_LOCK_TYPE

指定的资源不支持上锁。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_RSRC_LOCKED

已经被一个与该函数加锁类型不兼容的锁加锁了。

VI_ERROR_TMO

操作超时。

viUnLock

原型ViStatusviUnLock(ViSessionvi);

描述用于释放以前使用viLock函数加的锁。

参数

名称方向类型描述

viINViSession

对象标识符。

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

标识符值描述

VI_SUCCESS0

成功解锁。

VI_SUCCESS_NESTED_EXCLUSIVE

函数调用成功,但对象还是被加了独占锁。

VI_SUCCESS_NESTED_SHARED

函数调用成功,但对象还是被加了共享锁。

VI_ERROR_INV_SESSION

VI_ERROR_INV_OBJECT

vi不能标志正确的连接。

VI_ERROR_SESN_NLOCKED

vi没有被加锁。

viInstallHandler

原型ViStatusviInstallHandler(ViSessionvi,

ViEventTypeeventType,

ViHndlrhandler,

ViAddrurHandle);

描述该函数给一个会话安装事件回调函数。

参数

名称方向类型描述

viINViSession

对象标识符。

eventTypeINViEventType

事件逻辑标识符。

handlerINViHndlr

回调函数地址。

urHandleINViAddr

传递一个值用以区分在同一事件内的回调函数。

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

标识符值描述

VI_SUCCESS0

处理函数安装成功。

VI_ERROR_HNDLR_NINSTALLED

安装识别,可能是多个处理函数安装在同一个会话上的同

一个事件上。

VI_ERROR_INV_EVENT

该会话不支持该事件。

VI_ERROR_INV_HNDLR_REF

处理函数无效。

VI_ERROR_INV_SESSION

vi不能标志正确的连接。

VI_ERROR_INV_OBJECT

属性(shǔxìng)

一般的INSTR资源(zīyuán)属性

属性字段权限类型范围默认值说明

VI_ATTR_INTF_NUMRO全局ViUInt160到0xFFFF0给定接口的板号。

VI_ATTR_INTF_TYPERO全局ViUInt16VI_INTF_GPIB(1)

VI_INTF_VXI(2)

VI_INTF_GPIB_VXI

(3)

VI_INTF_ASRL(4)

VI_INTF_PXI(5)

VI_INTF_TCPIP(6)

VI_INTF_USB(7)

N/A给定会话的总线类型。

VI_ATTR_INTF_INST

_

NAME

RO全局ViStringN/AN/A给定接口的文本描述。

VI_ATTR_IO_PROTRW本地ViUInt16VI_NORMAL(1)

VI_FDC(2)

VI_HS488(3)

VI_PROT_488_2_STRS

(4)

VI_NORM

AL

指定使用哪个一个协议。在VXI中可以

选择VI_NORMAL(正常字符)和VI_FDC

(快速数据通道);在GPIB中额可以选

择VI_NORMAL和VI_HS488(高速数据传

输);在ASRL中可以选择VI_NORMAL和

VI_PROT_488_2_STRS(488风格传输);

在viAsrtTrigger/viReadSTB/

viClear函数中发送488.2定义的字符

串。

VI_ATTR_RD_BUF_

OPER_MODE

RW本地ViUInt16VI_FLUSH_ON_ACCESS

VI_FLUSH_DISABLE

VI_FLUS

H_DISAB

LE

指定读取缓冲区的模式。

VI_FLUSH_DISABLE:仅当调用viFlush

函数时才清空缓冲区。

VI_FLUSH_DISABLE:调用viScanf函数

后就清空缓冲区。

VI_ATTR_SEND_END_

EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_TRUE缓冲区是否以END结尾。

VI_ATTR_SUPPRESS_

END_EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_FALS

E

是否支持END终止符。

VI_TRUE:END不终止读操作。

VI_FALSE:END终止读操作。

VI_ATTR_TERMCHARRW本地ViUInt80到0xFF0x0A

(‘n’

)

结束字符。

VI_ATTR_TERMCHAR_

EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_FALS

E

读操作时当遇到一个结束符时是否终

止。

VI_ATTR_TMO_VALUERW本地ViUInt32VI_TMO_IMMEDIATE

1到0xFFFFFFFE

VI_TMO_INFINITE

2000

mc

超时值,单位毫秒。

如果值为VI_TMO_INFINITE将一直等待

下去。

VI_ATTR_TRIG_IDRW本地ViUInt16VI_TRIG_SW;

VI_TRIG_TTL0到

VI_TRIG_TTL7;

VI_TRIG_ECL0到

VI_TRIG_ECL1

VI_TRIG

_SW

当前触发机制标识符。

VI_ATTR_WR_BUF_OP

ER_MODE

RW本地ViUInt16VI_FLUSH_ON_ACCESS

VI_FLUSH_WHEN_FULL

VI_FLUS

H_WHEN_

FULL

指定写缓冲区的模式。

VI_FLUSH_WHEN_FULL:当写入一个END

终止符或者缓冲区慢了的时候清空缓冲

区。

VI_FLUSH_ON_ACCESS:调用viPrintf

函数后就清空缓冲区。

VI_ATTR_DMA_ALLOW

_EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

N/A该属性规定是否I/O访问使用DMA

(VI_TRUE)或可编程I/O(VI_FALSE)。

在一些实现中,该属性有全局影响。

VI_ATTR_FILE_APPE

ND_EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_FALS

E

该属性指定viReadToFile对文件操作

是覆盖还是追加。

GPIB和VXI特殊(tèshū)的INSTR资源(zīyuán)属性

属性字段权限类型范围默认值说明

VI_ATTR_GPIB_PRIM

ARY_ADDR

RO全局ViUInt160to30N/A给定会话的GPIB主地址。

VI_ATTR_GPIB_SECO

NDARY_ADDR

RO全局ViUInt160to31,

VI_NO_SEC_ADDR

N/A给定会话的GPIB次地址。

VI_ATTR_GPIB_READ

DR_EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_TRUE这属性指定是否在读写操作之前重新寻

址。

VI_ATTR_GPIB_UNAD

DR_EN

RW本地ViBoolea

n

VI_TRUE

VI_FALSE

VI_FALS

E

这属性指定是否在读写操作之后不寻

址。

VI_ATTR_GPIB_REN_

STATE

RO全局ViUInt16VI_STATE_UNKNOWN

VI_STATE_ASSERTED

VI_STATE_UNASSERTED

N/A这属性返回当前GPIBREN线状态。

其他(qítā)与GPIB无关的特殊INSTR资源属性

事件(shìjiàn)

VI_EVENT_SERVICE_REQUEST

描述设备发送的服务请求收到

属性

属性名说明权限数据类型范围

VI_ATTR_EVENT_TYPE

事件类型只读

ViEventTypeVI_EVENT_SERVICE_REQ

VI_EVENT_VXI_SIGP

描述设备发送的服务请求收到

属性

属性名说明权限数据类型范围

VI_ATTR_EVENT_TYPE

事件类型只读

ViEventTypeVI_EVENT_VXI_STOP

VI_ATTR_SIGP_STATUS_ID

在IACK循环或者信号寄

存器中获取16位状态/ID

值。

只读

ViUInt16

0到0xFFFF

VI_EVENT_TRIG

描述触发中断收到,对VISA,唯一可以被感知的触发是VXI硬件触发。

属性

属性名说明权限数据类型范围

VI_ATTR_EVENT_TYPE

事件类型只读

ViEventTypeVI_EVENT_TRIG

VI_ATTR_RECV_TRIG_ID

指定哪个触发事件接收触发

机制。

只读

ViUInt16

VI_TRIG_TTL0到

VI_TRIG_TTL7;

VI_TRIG_ECL0到

VI_TRIG_ECL1

VI_EVENT_IO_COMPLETION

描述异步操作完成。

属性

属性名说明权限数据类型范围

VI_ATTR_EVENT_TYPE

事件类型只读

ViEventTypeVI_EVENT_IO_COMPLETION

VI_ATTR_STATUS

异步操作返回代码。只读

ViStatusN/A

VI_ATTR_JOB_ID

异步操作的作业ID。只读

ViJobIdN/A

VI_ATTR_BUFFER

异步操作的寄存器地

址。

只读

ViBufN/A

VI_ATTR_RET_COUNT

异步操作真实大小。只读

ViUInt32

0到0xFFFFFFFF

VI_ATTR_OPER_NAME

产生这事件操作的名

称。

ViStringN/A

内容总结

(1)VISA常用函数

本文发布于:2022-11-12 14:20:25,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/4810.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:visa怎么读
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图