VISA

VISA(Virtual Instrument Software 建筑,简称为"Visa"),即虚拟仪器软件结构,是VXI plug\u0026play联盟制定的I/O接口软件标准及其规范的总称。VISA提供用于仪器编程的标准I/O函数库,称为VISA库。VISA函数库驻留在计算机系统内,是计算机与仪器的标准软件通信接口,计算机通过它来控制仪器。

基本信息

作为通用I/O标准,VISA提供了统一的设备资源管理、操作和使用机制,它独立于硬件设备、接口、操作系统和编程语言,具有与硬件结构无关的特点。VISA的这一特性使之适用于各种仪器接口,无论仪器使用的串口还是其他任何一种总线,诸如GPIB、VXI、PXI和LXI等,都具有相同的操作函数,从而实现了控制操作上的统一。Visa基于自底向上的结构模型,创造了一个统一形式的I/O控制函数集。一方面,对初学者或是简单任务的设计者来说,Visa提供了简单易用的控制函数集,在应用形式上相当简单;另一方面,对复杂系统的组建者来说,Visa提供了非常强大的仪器控制功能与资源管理。

详细说明

1、 viOpen (Sesn1 ,rsrcName,acessMode,timeout,Sesn2)

用途:打开与指定仪器的通话。

参数说明

Sesn1 输入 File Explorer通话(总应是由viOpenDefaultRM( )返回的VISA默资源理器)。

rsrcName 输入 资源的唯一符号名称

acessMode 输入 指定资源的访问模式。不用,应置0。

timeout 输入 定时时间。默认值为10秒。

Sesn2 输出 通话的唯一逻辑标识符。

返回值: 0表示成功,其余值均表示失败。

注意: rsrcName的格式为:GPIB::Address::INSTR

其中:GPIB:表示GPIB设备。 address:表示GPIB设备地址。

INSTR表示是VISA资源。例如“GPIB::5::INSTR”

各种语言调用说明:

Delph:

函数 viOpen(sesn1:Longint;rsrcName:PChar;acessMode:Longint

timeout:Longint;sesn2:PLongint):Longint;

C:

Long viOpen (long sesn1,char *rsrcName, long acessMode, long timeout,long *sesn2)

VB:

Function viOpen (ByVal sesn1 As Long, ByVal rsrcName As String,

ByVal acessMode As Long, ByVal timeout As Long,

sesn2 As Long) As Long

2、viClose(sesn)

用途:

关闭指定的通话。

参数说明

Sesn 输入 通话的唯一逻辑标识符。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi: 函数 viClose(sesn:Longint):Longint;

C: Long viClose (long sesn);

VB: Function viClose (ByVal sesn As Long) As Long

3、viOpenDefaultRM (sesn)

用途:

返回与默认File Explorer的通话。

参数说明:

Sesn 输出 与默认资源管理器通话的唯一逻辑标识符。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi: 函数 viOpenDefaultRM(sesn1:PLongint):Longint;

C: Long viOpenDefaultRM (long *sesn1);

VB: Function viOpenDefaultRM (sesn1 As Long) As Long

4、viWrite(Sesn ,CommStr ,Count ,retCount )

用途:向仪器写数据

参数说明:

Sesn 输入 通话的唯一逻辑标识符。

CommStr 输入 表示向仪器传送数据块的存储单元

Count 输入 指定被写的字节数。

retCount 输出 表示设置实际传输的整数字节数存储单元。

返回值:0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi: 函数 viWrite(sesn:Longint;CommStr:PChar;Count:Longint;

retCount:PLongint):Longint;

C: Long viWrite (long sesn, char *CommStr, long Count,

long *retCount)

VB: Function viWrite (ByVal sesn As Long, ByVal CommStr As String,

ByVal Count As Long, lretCount As Long) As Long

5、viRead(Sesn , CommStr , Count , retCount)

用途:从仪器读数据。

参数说明:

Sesn 输入 通话的唯一逻辑标识符。

CommStr 输入 表示将接收数据的仪器缓冲区的存储单元。

Count 输入 将读取的字节数。

retCount 输出 表示一整数的存储地址,该整数表示实际传输的字节数。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi:

函数 viRead(sesn:Longint;ReadData:PChar;Count:Longint;

retCount:PLongint):Longint;

C:

Long viRead (long sesn, char *ReadData, long Count, long *retCount)

VB:

Function viRead (ByVal sesn As Long, ByVal ReadData As String,

ByVal Count As Long, lretCount As Long) As Long

6、viClear(Sesn)

用途:使一个仪器清零。

参数说明: Sesn 输入 通话的唯一逻辑标识符。

返回值: 0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi:

函数 viClear(sesn:Longint):Longint;

C:

Long viClear (long sesn)

VB:

Function viClear (ByVal sesn As Long) As Long

7、viReadSTB(Sesn)

用途:读服务请求的状态字节

参数说明

Sesn 输入 通话的唯一逻辑标识符。

Status 输出 服务请求的状态字节。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi:

函数 ReadSTB(sesn:Longint;status:PSmallint):Longint

C:

Long viReadSTB (long sesn, short *status)

VB:

Function viReadSTB (ByVal sesn As Long,status As Integer) As Long

8、viAssertTrigger(Sesn)

用途:设置群触发。

参数说明:

Sesn 输入 通话的唯一逻辑标识符。

protocal 输入 断定所用触发协议。不用置0。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi:

函数 viAssertTrigger(sesn:Longint;protocal:Integer):Longint;

C:

Long viAssertTrigger (long sesn, int protocal)

VB:

Function vAssertTrigger (ByVal sesn As Long,ByVal protocal As Integer) As Long

9、viLock(Sesn)

用途:建立对指定资源的访问模式,本函数是本地封锁。

参数说明:

Sesn 输入 通话的唯一逻辑标识符。

lockType 输入 表示请求得锁定类型。不用,置0。

timeout 输入 定时时间,默认识是10秒。

requestedKey 输入 不用,置0。

accessKey 输入 不用,置0。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi:

函数 viLock(sesn,lockType,timeout:Longint;requestedKey,

accessKey:PChar):Longint;

C: Long viLock (long sesn, long lockType, long timeout, char *requestedKey, char *accessKey)

VB: Function viLock (ByVal sesn As Long, ByVal lockType As Long,

ByVal timeout As Long, ByVal requestedKey As String,ByVal accessKey As String) As Long

10、viUnlock (Sesn)

用途:取消对指定资源的封锁,返回本地。

参数说明:

Sesn 输入 通话的唯一逻辑标识符。

返回值:

0表示成功,其余值均表示失败。

各种语言调用说明:

Delphi: 函数 viUnlock(sesn:Longint):Longint;

C: Long viUnlock (long sesn)

VB: Function viUnlock (ByVal sesn As Long) As Long

GPIB 函数详细说明:

1、Send(Board_Index,evice_Address,Data_Buffer,字节_Count,EOT_Mode)

用途:

向仪器写数据。

参数说明:

Board_Index 输入 不用,置0。

Device_Address 输入 仪器地址。

Data_Buffer 输入 向仪器传送数据块的存储单元。

Byte_Count 输入 指定被写的字节数。

EOT_Mode 输入 0表示没有数据传输结束标志;

1表示数据串用回车换行结束;

2表示数据用最后一个字符结束。

各种语言调用说明:

Delphi:

Procedure Send(Board_Index:Longint; Device_Address:SmallInt;

Data_Buffer:Pchar;字节_Count:Longint;

EOT_Mode:Longint);

C:

Void Send(long int Board_Index, short Device_Address, char *Data_Buffer,long int Byte_Count,

long int EOT_Mode);

VB:

Sub Send(ByVal Board_Index As Long, ByVal Device_Address As Short, ByVal Data_Buffer As String,ByVal 字节_Count As Long, ByVal EOT_Mode As Long);

2、Receive(Board_Index,_Address,Buffer,Byte_Count,Terminatin )

用途:

从仪器读数据。

参数说明:

Board_Index 输入 不用,置0。

Device_Address 输入 仪器地址。

Data_Buffer 输出 将接收数据的仪器缓冲区的存储单元

字节_Count 输入 将读取的字节数。

Termination 输入 不用,置0。

各种语言调用说明:

Delphi:

ProcedureReceive(Board_Index:Longint; Device_Address:SmallInt;Data_Buffer:Pchar; Byte_Count:Longint; Termination:Longint);

C:

Void Receive(long int Board_Index, short Device_Address, char *Data_Buffer,long int 字节_Count, long int Termination);

VB:

Sub Receive(ByVal Board_Index As Long, ByVal Device_Address As Short,ByVal Data_Buffer As String,ByVal Byte_Count As Long,

ByVal Termination As Long);

3、DevClear(Board_Index, Device_Address)

用途:

使一个仪器清零。

参数说明:

Board_Index 输入 不用,置0。

Device_Address 输入 仪器地址。

各种语言调用说明:

Delphi:

ProcedureDevClear(Board_Index:Longint;Device_Address:SmallInt);

C:

Void DevClear(long int Board_Index, short Device_Address);

VB:

Sub DevClear(ByVal Board_Index As Long, ByVal Device_Address As Short);

4、Trigger (Board_Index, Device_Address)

用途:

设置群触发。

参数说明:

Board_Index 输入 不用,置0。

Device_Address 输入 仪器地址。

各种语言调用说明:

Delphi:

Procedure

Trigger(Board_Index:Longint;Device_Address:SmallInt);

C:

Void Trigger(long int Board_Index, short Device_Address);

VB:

Sub Trigger(ByVal Board_Index As Long, ByVal Device_Address As Short);

5、WaitSRQ (Board_Index, SRQ_Occurred)

用途:

等待服务请求。

参数说明:

Board_Index 输入 不用,置0。

SRQ_Occurred 输出 0系统默认的timeout时间内无服务请求,

1系统默认的timeout时间有服务请求。

各种语言调用说明:

Delphi:

Procedure WaitSRQ(Board_Index:Longint; SRQ_Occurred:PSmallInt);

C:

Void WaitSRQ(long int Board_Index, short *SRQ_Occurred);

VB:

Sub WaitSRQ(ByVal Board_Index As Long, SRQ_Occurred As Short);

6、ReadStatusByte(Board_Index, Address, Status_Byte )

用途:

读服务请求的状态字节

参数说明

Board_Index 输入 不用,置0。

Device_Address 输入 仪器地址。

Status_Byte 输出 服务请求的状态字节。

各种语言调用说明:

a00

Delphi:

ProcedureReadStatusByte(Board_Index:Longint; Device_Address:SmallInt;

Status_Byte:PSmallInt);

C:

Void ReadStatusByte(long int Board_Index, short Device_Address,

short *Status_字节);

VB:

Sub ReadStatusByte(ByVal Board_Index As Long, ByVal Device_Address As Short, Status_Byte As Short);

7、SendIFC (Board_Index)

用途:

接口清除。

参数说明:

Board_Index 输入 不用,置0。

各种语言调用说明:a00

Delphi: Procedure SendIFC(Board_Index:Longint);

C: Void SendIFC(long int Board_Index);

VB: Sub SendIFC(ByVal Board_Index As Long);

8、ReceBlock(Board_Index,_Address,Data_Buffer,字节_Count,Termination)

用途:

从仪器读数据块。

参数:

名 称 方 向 说 明

Board_Index 输入 不用,置0。

Device_Address输入 仪器地址。

Data_Buffer 输出 表示将接收数据的仪器缓冲区的存储单元

Byte_Count 输入 将读取的字节数。

返回值:

0表示成功, - 1表示失败。

各种语言调用说明:

Delphi: 函数 ReceBlock(Board_Index:Longint; Device_Address:SmallInt;

Block_Size:Longint;Data_Buffer:PChar);

C: int ReceBlock(long int Board_Index, short Device_Address,

int Block_Size, char *Data_Buffer);

VB: 函数 ReceBlock(ByVal Board_Index As Integer, ByVal evice_Address As Integer,ByVal 字节_Count As Integer, ByVal Data_Buffer As String);

9、ReceEOI (Board_Index, _Address, Data_Buffer, Byte_Count, Termination)

用途:以EOI结束方式读仪器数据块。

参数:

名 称 方 向 说 明

Board_Index 输入 不用,置0。

Device_Address输入 仪器地址。

Data_Buffer 输出 表示将接收数据的仪器缓冲区的存储单元

字节_Count 输入 将读取的字节数。

Termination 输入 不用,置0。

返回值:

0表示成功, - 1表示失败。

各种语言调用说明:

Delphi: 函数 ReceEOI(Board_Index:Longint; Device_Address:SmallInt;

Data_Buffer:PChar;Byte_Count:PLongint;Termination:Longint

C: int ReceEOI(long int Board_Index, short Device_Address,

char *Data_Buffer,long int *Byte_Count,LNG电子竞技俱乐部 int Termination);

VB: 函数 ReceEOI(ByVal Board_Index As Integer, ByVal Device_Address As Integer,ByVal Data_Buffer As String, ByRef Byte_Count As Integer,ByVal Termination As Integer);

参考资料


Warning: Invalid argument supplied for foreach() in /www/wwwroot/newbaike.com/id.php on line 280