虚拟仪器软件结构,是VXI plug&play联盟制定的
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 输入
资源管理器通话(总应是由viOpenDefaultRM( )返回的VISA默资源理器)。
rsrcName 输入 资源的唯一符号名称
acessMode 输入 指定资源的访问模式。不用,应置0。
timeout 输入 定时时间。默认值为10秒。
Sesn2 输出 通话的唯一逻辑标识符。
返回值: 0表示成功,其余值均表示失败。
注意: rsrcName的格式为:
GPIB::Address::
INSTR其中:GPIB:表示GPIB设备。 address:表示GPIB设备地址。
INSTR表示是VISA资源。例如“GPIB::5::INSTR”
各种语言调用说明:
Delphi:
Function 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: Function viClose(sesn:Longint):Longint;
C: Long viClose (long sesn);
VB: Function viClose (ByVal sesn As Long) As Long
3、viOpenDefaultRM (sesn)
用途:
参数说明:
Sesn 输出 与默认资源管理器通话的唯一逻辑标识符。
返回值:
0表示成功,其余值均表示失败。
各种语言调用说明:
Delphi: Function 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: Function 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:
Function 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:
Function 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:
Function 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:
Function 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:
Function viLock sesn,lockType,timeout:Longint;requestedKey,
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: Function 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,Byte_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;Byte_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 Byte_Count As Long, ByVal EOT_Mode As Long;
2、Receive(Board_Index,_Address,Buffer,Byte_Count,Terminatin )
用途:
从仪器读数据。
参数说明:
Board_Index 输入 不用,置0。
Device_Address 输入 仪器地址。
Data_Buffer 输出 将接收数据的仪器缓冲区的存储单元
Byte_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 Byte_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_Byte;
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,Byte_Count,Termination)
用途:
参数:
名 称 方 向 说 明
Board_Index 输入 不用,置0。
Device_Address输入 仪器地址。
Data_Buffer 输出 表示将接收数据的仪器缓冲区的
存储单元Byte_Count 输入 将读取的字节数。
返回值:
0表示成功,- 1表示失败。
各种语言调用说明:
Delphi: Function 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: Function ReceBlock ByVal Board_Index As Integer, ByVal evice_Address As Integer,ByVal Byte_Count As Integer, ByVal Data_Buffer As String;
9、ReceEOI (Board_Index, _Address, Data_Buffer, Byte_Count, Termination)
参数:
名 称 方 向 说 明
Board_Index 输入 不用,置0。
Device_Address输入 仪器地址。
Data_Buffer 输出 表示将接收数据的仪器缓冲区的
存储单元Byte_Count 输入 将读取的字节数。
Termination 输入 不用,置0。
返回值:
0表示成功,- 1表示失败。
各种语言调用说明:
Delphi: Function 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: Function 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;