虚拟仪器系统I/O接口软件——VISA(2)

3.3.2 VISA资源管理器资源

VISA资源管理器(VI_RSRC_VISA_RM)是VISA各资源的中间调度器,其在VISA各子系统元件在整个系统中配合工作中起着重要作用。资源管理器的基本功能包括:

1) 分配资源地址

2) 分配资源识别号(ID)

3) 进行操作调用

4) 进行事件管理

图3.3体现了VISA资源管理器在系统配置中的中间调度作用。

图3.3 VISA资源管理器与其它资源的关系示图

根据VISA规范,VISA资源管理器资源继承了资源模板定义的所有属性、事件与操作,在资源模板基础上本身没有加以扩展自己的属性、事件与操作。但资源管理器资源具有自己的语义,在系统资源中起着根资源的作用。

3.3.3 VISA仪器控制资源

在VISA资源模板的基础上,VISA仪器控制资源定义了仪器控制特有的属性、事件与操作。在仪器控制资源中定义的功能是通用的仪器功能,它适用于各种仪器类型。

VISA仪器控制资源中包括:

n   写资源

n   读资源

n   格式化I/O资源

n   触发资源

n   状态/服务请求资源

n   清除资源

n   高级存取资源

n   低级存取资源

n   器件特定命令资源

n   CPU接口资源

VISA仪器控制各资源的关系如图3.4所示。

图3.4 VISA仪器控制资源关系概图

在VISA仪器控制资源中,CPU接口资源是相对独立的,它与其它仪器控制资源无内部联系。这并不是说CPU接口资源不能与其它资源相互调用,但它不能调用其它仪器控制资源的相关操作,也不能被其它仪器控制资源调用其相关操作。而如格式化I/O资源的操作是依赖于写资源及读资源操作的,它们之间存在着内部关联性。同样,触发资源、状态/服务请求资源及清除资源与器件特定命令资源,高级存取资源与低级存取资源之间也存在着内部关联性。

n   写资源(VI_RSRC_WR):

1.  资源概述:控制器向器件传送任意数据块,器件可以将接收到的数据块解释为消息、命令或二进制编码数据。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_FDC_ACCESS_MODE FDC(高速数据通道)缓冲区存取模式

VI_ATTR_FDC1_SUPP   FDC版本1是否有效

VI_ATTR_FDC2_SUPP   FDC版本2是否有效

VI_ATTR_FDC_CHNL    FDC数据传送通道

VI_ATTR_FDC_GEN_SIGNAL_EN   是否允许通过FDC传送数据

VI_ATTR_FDC_MODE    FDC模式

VI_ATTR_FDC_USE_PAIR    一对或一个FDC有效

VI_ATTR_FDC_USE_VER FDC协议版本

VI_ATTR_INP_RDY_NOTIFY_EN   数据有效是否被通知

VI_ATTR_NRDY_ABORT_EN   器件不再接收数据时是否被通知

VI_ATTR_PHYS_ADDR   器件地址

VI_ATTR_REPEAT_ADDR_EN  是否使用重复地址

VI_ATTR_SEND_END_ON 终止符是否被确认

_TERMCHAR_EN   

VI_ATTR_SEND_END_ON 是否将END作为终止符

VI_ATTR_TERMCHAR    终止符

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_TRANSFER_MECH   传送机制(DMA或PIO)

VI_ATTR_WR_PROT 传送协议

VI_ATTR_CMDR_SERV   主从模式

VI_ATTR_ASRL_BAUD   波特率

VI_ATTR_ASRL_DATA_BITS  数据位

VI_ATTR_ASRL_PARITY 校验极性

VI_ATTR_ASRL_STOP_BITS  停止位

VI_ATTR_ASRL_FLOW_CNTRL 数据流控制状态

3.  写资源定义的事件如下所示:

事件    说明

VI_EVENT_IO_COMPLETION  异步I/O操作已完成

4.  写资源定义的操作如下:

viWrite(vi,buf,count,retCount)

viWriteAsync(vi,buf,count,jobId)

viWriteStatus(vi,jobId,jobStatus)

4.1.    viWrite(vi,buf,count,retCount)

1) 目标:将数据同步写入到器件中

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

buf 输入    ViBuf   数据块位置

count   输入    ViUInt32    写入的字节数

retCount    输出    ViPUInt32   实际传送字节数

3) 返回状态值:

完成代码:

VI_SUCCESS  同步写操作完成

VI_WARN_NRDY_ABORT  同步写操作退出,器件未准备好输入数据

错误代码:

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

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

VI_ERROR_TMO    超时错误

VI_ERROR_RAW_WR_PROT    传送时写协议被破坏

_VIOL

VI_ERROR_RAW_RD_PROT    传送时读协议被破坏

_VIOL

VI_ERROR_OUTP_PROT_VIOL 传送时输出协议错误

VI_ERROR_INP_PROT_VIOL  传送时输入协议错误

VI_ERROR_BERR   传送时总线错误

VI_ERROR_ABORT  传送时用户退出

VI_ERROR_IN_PROGRESS    同步写已执行

VI_ERROR_INV_SETUP  设置错误,不能开始写操作

4) 描述:该操作将位于buf中的数据写入到器件中去,任一写资源通道只能登录一个同步写操作。

5) 相关项:参见viWriteAsync()、viTerminate()、viWriteStatus()、viRead()、viReadAsync()。

6) 实现要求:无。

4.2.    viWriteAsync(vi,buf,count,jobId)

1) 目标:将数据异步写入到器件中

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

buf 输入    ViBuf   数据块位置

count   输入    ViUInt32    写入的字节数

jobId   输出    ViPjobId    异步写操作作业标识符

3) 返回状态值:

完成代码:

VI_SUCCESS  异步写操作完成

错误代码:

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

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

VI_ERROR_QUEUE_ERROR    不能进行写操作排队

4) 描述:该操作将位于buf中的数据异步写入到器件中去,任一写资源通道可以登录多个异步写操作,进行排队处理。

5) 相关项:参见viWrite()、viTerminate()、viWriteStatus()、viRead()、viReadAsync()。

6) 实现要求:无。

4.3.    viWriteStatus(vi,jobId,jobStatus)

1) 目标:获取写操作状态

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

jobId   输入    VijobId 写操作作业标识符

jobStatus   输出    ViPJobstatus    写操作状态

3) 返回状态值:

完成代码:

VI_SUCCESS  状态获取完成

错误代码:

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

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

VI_ERROR_INV_JOBID  作业标识符不当

4) 描述:当操作为同步时,标识符唯一确定,为VI_SYNC;当操作为异步时,标识符为操作的输出参数值。

5) 相关项:参见viWriteAsync()。

6) 实现要求:无。

n   读资源(VI_RSRC_RD):

1.  资源概述:控制器从器件读出任意数据块,控制器可以将接收到的数据块解释为消息、命令或二进制编码数据。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_FDC_ACCESS_MODE FDC(高速数据通道)缓冲区存取模式

VI_ATTR_FDC1_AVAIL  FDC版本1是否有效

VI_ATTR_FDC2_AVAIL  FDC版本2是否有效

VI_ATTR_FDC_CHNL    FDC数据传送通道

VI_ATTR_FDC_GEN_SIGNAL_EN   是否允许通过FDC传送数据

VI_ATTR_FDC_MODE    FDC模式

VI_ATTR_FDC_USE_PAIR    一对或一个FDC有效

VI_ATTR_FDC_USE_VER FDC协议版本

VI_ATTR_PHYS_ADDR   器件地址

VI_ATTR_7_8_BIT_CMP 终止符有效位

VI_ATTR_NRDY_ABORT_EN   器件不再输出数据时是否被通知

VI_ATTR_OUTP_RDY_NOTIFY_EN  数据有效是否被通知

VI_ATTR_RD_PROT 传送协议

VI_ATTR_REPEAT_ADDR_EN  是否使用重复地址

VI_ATTR_SUPPRESS_END_ON 终止符是否被禁止

VI_ATTR_TERMCHAR    终止符

VI_ATTR_TERMCHAR_EN 终止符是否被允许

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_TRANSFER_MECH   传送机制(DMA或PIO)

VI_ATTR_CMDR_SERV   主从模式

VI_ATTR_ASRL_BAUD   波特率

VI_ATTR_ASRL_DATA_BITS  数据位

VI_ATTR_ASRL_PARITY 校验极性

VI_ATTR_ASRL_STOP_BITS  停止位

VI_ATTR_ASRL_FLOW_CNTRL 数据流控制状态

3.  读资源定义的事件如下所示:

事件    说明

VI_EVENT_IO_COMPLETION  异步I/O操作已完成

4.  读资源定义的操作如下:

viRead(vi,buf,count,retCount)

viReadAsync(vi,buf,count,jobId)

viReadStatus(vi,jobId,jobStatus)

4.1.    viRead(vi,buf,count,retCount)

1) 目标:从器件同步读取数据

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

buf 输出    ViBuf   数据块位置

count   输入    ViUInt32    读出的字节数

retCount    输出    ViPUInt32   实际传送字节数

3) 返回状态值:

完成代码:

VI_SUCCESS  同步读数据完成

VI_SUCCESS_TERM_CHAR    特定终止符被读取

VI_SUCCESS_MAX_CNT  读取的字节数与count数相同

VI_WARN_NRDY_ABORT  传送退出,器件未准备好输出数据

错误代码:

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

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

VI_ERROR_TMO    超时错误

VI_ERROR_RAW_WR_PROT    传送时写协议被破坏

_VIOL

VI_ERROR_RAW_RD_PROT    传送时读协议被破坏

_VIOL

VI_ERROR_OUTP_PROT_VIOL 传送时输出协议错误

VI_ERROR_INP_PROT_VIOL  传送时输入协议错误

VI_ERROR_BERR   传送时总线错误

VI_ERROR_ABORT  传送时用户退出

VI_ERROR_IN_PROGRESS    同步写已执行

VI_ERROR_INV_SETUP  设置错误,不能开始写操作

4) 描述:该操作将从器件中读取的值放在buf,任一读资源通道只能登录一个同步读操作。

5) 相关项:参见viWriteAsync()、viTerminate()、viWriteStatus()、viReadAsync()、viReadStatus()。

6) 实现要求:当满足以下三种情况的一种或几种时,被认为读操作完成:一是结束标号被读取,二是特定终止符被读取,三是读取的字节数与所需字节数相同。

4.2.    viReadAsync(vi,buf,count,jobId)

1) 目标:从器件异步读取数据

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

buf 输出    ViBuf   数据块位置

count   输入    ViUInt32    读出的字节数

jobId   输出    ViPjobId    异步读操作作业标识符

3) 返回状态值:

完成代码:

VI_SUCCESS  异步读操作完成

错误代码:

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

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

VI_ERROR_QUEUE_ERROR    不能进行读操作排队

4) 描述:该操作将从器件读取的数据放于buf中,任一读资源通道可以登录多个异步读操作,进行排队处理。

5) 相关项:参见viWrite()、viTerminate()、viWriteAsync()、viRead()、viReadStatus()。

6) 实现要求:无。

4.3.    viReadStatus(vi,jobId,jobStatus)

1) 目标:获取读操作状态

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

jobId   输入    VijobId 读操作作业标识符

jobStatus   输出    ViPJobstatus    读操作状态

3) 返回状态值:

完成代码:

VI_SUCCESS  状态获取完成

错误代码:

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

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

VI_ERROR_INV_JOBID  作业标识符不当

4) 描述:当操作为同步时,标识符唯一确定,为VI_SYNC;当操作为异步时,标识符为操作的输出参数值。

5) 相关项:参见viReadAsync()。

6) 实现要求:无。

n   格式化I/O资源(VI_RSRC_FMT_IO):

1.  资源概述:数据流格式化I/O操作,可进行格式化的器件读写操作,并可进行缓冲区的I/O格式化。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_7_8_BIT_CMP 终止符位数

VI_ATTR_END_ON_TERMCHAR_EN  在GPIB系统中,EOI终止符是否被确认

VI_ATTR_NRDY_ABORT  器件不再输出数据时是否被通知

VI_ATTR_PROT    读/写协议

VI_ATTR_RD_BUF_OPER_MODE    读缓冲区操作模式

VI_ATTR_RD_SIZE 读缓冲区大小

VI_ATTR_REPEAT_ADDR 是否使用重复地址

VI_ATTR_RETURN_MODE 读/写操作返回模式

VI_ATTR_SEND_END_EN 是否将END作为终止符

VI_ATTR_SUPPRESS_END    是否禁止END作为终止符

VI_ATTR_TERMCHAR    终止符

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_TRANSFER_MECH   传送机制(DMA或PIO)

VI_ATTR_WR_BUF_OPER_MODE    写缓冲区操作模式

VI_ATTR_WR_BUF_SIZE 写缓冲区大小

VI_ATTR_ASRL_BAUD   波特率

VI_ATTR_ASRL_DATA_BITS  数据位

VI_ATTR_ASRL_PARITY 校验极性

VI_ATTR_ASRL_STOP_BITS  停止位

VI_ATTR_ASRL_FLOW_CNTRL 数据流控制状态

3.  格式化I/O资源定义的事件如下所示:无

4.  格式化I/O资源定义的操作如下:

viSetBuf(vi,mask,size)

viSetUBuf(vi,mask,size,buf)

viFlush(vi,mask)

viPrintf(vi,writeFmt,arg1,arg2…)

viVPrintf(vi,writeFmt,params)

viSPrintf(vi,buf,writeFmt,arg1,arg2…)

viSVPrintf(vi,buf,writeFmt,params)

viBWrite(vi,buf,count,retCount)

viScanf(vi,readFmt,arg1,arg2…)

viVScanf(vi,readFmt,params)

viSScanf(vi,buf,readFmt,arg1,arg2…)

viSVScanf(vi,buf,readFmt,params)

viBRead(vi,buf,count,retCount)

viQueryf(vi,writeFmt,readFmt,arg1,arg2…)

viVQueryf(vi,writeFmt,readFmt,params)

4.1.    viSetBuf(vi,mask,size)

1) 目标:设置格式化I/O缓冲区大小

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

mask    输入    ViPUInt16   缓冲区类型

size    输入    ViPUInt32   缓冲区大小

3) 返回状态值:

完成代码:

VI_SUCCESS  缓冲区大小设置完成

错误代码:

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

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

VI_ERROR_ALLOC_MEM  系统无法分配缓冲区

VI_ERROR_INV_MASK   缓冲区类型设置错误

4) 描述:该操作改变读/写缓冲区大小,缓冲区类型可取VI_READ及VI_WRITE。

5) 相关项:参见viSefUBuf()、viFlush()。

6) 实现要求:调用该操作会刷新相关缓冲区。

4.2.    viSetUBuf(vi,mask,size,buf)

1) 目标:设置格式化I/O用户缓冲区

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

mask    输入    ViPUInt16   缓冲区类型

size    输入    ViPUInt32   缓冲区大小

buf 输入    ViBuf   实际缓冲区地址

3) 返回状态值:

完成代码:

VI_SUCCESS  用户缓冲区设置完成

错误代码:

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

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

VI_ERROR_INV_MASK   缓冲区类型设置错误

4) 描述:该操作为格式化I/O开辟一个缓冲区,该缓冲区不能用作其它用途。

5) 相关项:参见viSefBuf()。

6) 实现要求:调用该操作会刷新相关缓冲区。

4.3.    viFlush(vi,mask)

1) 目标:手工刷新格式化I/O缓冲区

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

mask    输入    ViPUInt16   缓冲区类型

3) 返回状态值:

完成代码:

VI_SUCCESS  缓冲区刷新完成

错误代码:

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

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

VI_ERROR_IO I/O错误

VI_ERROR_TMO    超时错误

VI_ERROR_ABORT  在操作结束前收到退出信号

VI_ERROR_INV_MASK   缓冲区类型设置错误

4) 描述:该操作手动刷新相关读/写缓冲区内容。

5) 相关项:参见viSefBuf()、viSefUBuf()。

6) 实现要求:若对一空缓冲区进行刷新操作,相当于没有动作。

4.4.    viPrintf(vi,writeFmt,arg1,arg2…)

1) 目标:按设定格式将数据传送到器件中

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

writeFmt    输入    ViString    参数格式

arg1,arg2…    输入        各个所需参数

3) 返回状态值:

完成代码:

VI_SUCCESS  参数成功地格式化

错误代码:

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

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

VI_ERROR_IO I/O错误

VI_ERROR_TMO    超时错误

VI_ERROR_ABORT  在操作结束前收到退出信号

VI_ERROR_FILE_NOPEN 文件没有打开或文件存取特性不当

VI_ERROR_NSUP_FMT   参数格式不当

4) 描述:该操作以一定格式将数据传送到器件中,viWrite()实际上是完成低层I/O操作。任一对话通道不能同时进行viWrite()及viPrintf()操作。

5) 相关项:参见viSPrintf()、viVPrintf()、viSVPrintf()、viBWrite()。

6) 实现要求:输入参数与其格式必须匹配。

4.5.    viSPrintf(vi,buf,writeFmt,arg1,arg2…):与viPrintf()不同的只在于viSPrintf()将数据写入buf参数的缓冲区而非器件中。

4.6.    viVPrintf(vi,writeFmt,params):与viPrintf()不同的只在于viVPrintf()中参数以列表形式给出。

4.7.    viSVPrintf(vi,buf,writeFmt,params):与viPrintf()不同的只在于viSVPrintf()中参数以列表形式给出,并写入到缓冲区中。

4.8.    viBWrite(vi,buf,count,retCount):与viWrite()不同的只在于viBWrite()将数据写入到缓冲区而不是器件中去。

4.9.    viScanf(vi,readFmt,arg1,arg2…)

1) 目标:按设定格式从器件中读取数据

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

readFmt 输入    ViString    参数格式

arg1,arg2…    输出        各个所得参数值

3) 返回状态值:

完成代码:

VI_SUCCESS  数据成功地格式化并被读取

VI_SUCCESS_END_RECV END标志被接收到

错误代码:

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

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

VI_ERROR_IO I/O错误

VI_ERROR_TMO    超时错误

VI_ERROR_ABORT  在操作结束前收到退出信号

VI_ERROR_FILE_NOPEN 文件没有打开或文件存取特性不当

VI_ERROR_NSUP_FMT   参数格式不当

4) 描述:该操作以一定格式从器件中读取数据,viRead()实际上是完成低层I/O操作。任一对话通道不能同时进行viRead()及viScanf()操作。

5) 相关项:参见viSScanf()、viVScanf()、viSVScanf()、viBRead()。

6) 实现要求:输出参数与其格式必须匹配。

4.10.   viSScanf(vi,buf,readFmt,arg1,arg2…):与viScanf()不同的只在于viSScanf()从buf参数的缓冲区中读出数据而非从器件中读取。

4.11.   viVScanf(vi,readFmt,params):与viScanf()不同的只在于viVScanf()中参数以列表形式给出。

4.12.   viSVScanf(vi,buf,readFmt,params):与viScanf()不同的只在于viSVScanf()中参数以列表形式给出,并从缓冲区中读取。

4.13.   viBRead(vi,buf,count,retCount):与viRead()不同的只在于viBRead()从缓冲区而不是从器件中读取数据。

4.14.   viQuery(vi,writeFmt,readFmt,arg1,arg2…)

1) 目标:按设定格式对器件进行数据读写

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

writeFmt    输入    ViString    写参数格式

readFmt 输入    ViString    读参数格式

arg1,arg2…    输入、输出      各个所需或所得参数值

3) 返回状态值:

完成代码:

VI_SUCCESS  参数成功地格式化并被读取或写入

错误代码:

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

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

VI_ERROR_IO I/O错误

VI_ERROR_INV_FMT    格式错误

VI_ERROR_TMO    超时错误

VI_ERROR_ABORT  在操作结束前收到退出信号

VI_ERROR_FILE_NOPEN 文件没有打开或文件存取特性不当

VI_ERROR_NSUP_FMT   参数格式不合法

4) 描述:该操作与器件进行数据交换,输入或输出是需要根据参数格式类型来定的,实际上包括了读与写操作。

5) 相关项:参见viBRead()、viBWrite()、viVQueryf()。

6) 实现要求:输入/输出参数与其格式必须匹配。

4.15.   viVQueryf(vi,writeFmt,readFmt,params):与viQueryf()不同的是viVQueryf()参数以列表形式给出。

n   触发资源(VI_RSRC_TRIG):

1.  资源概述:监视与控制器件及接口的触发进程。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_HW_TRIG_SENSE_EN    触发是否会引发CPU中断

VI_ATTR_TRIG_ASSERT_MODE    触发确认模式

VI_ATTR_TRIG_MAP_ROUTE  触发映射

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_TRIG_LINE   当前资源特定触发线

3.  触发资源定义的事件如下所示:

事件    说明

VI_EVENT_TRIG   硬件触发产生

4.  触发资源定义的操作如下:

viAssertTrigger(vi,protocol)

viMapTrigger(vi,srcTrig,destTrig,mode)

viUnmapTrigger(vi,srcTrig,destTrig)

4.1.    viAssertTrigger(vi,protocol)

1) 目标:用特定协议确认硬件或软件触发

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

protocol    输入    ViUInt16    触发协议

3) 返回状态值:

完成代码:

VI_SUCCESS  特定触发确认

错误代码:

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

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

VI_ERROR_INV_PROT   协议不当

VI_ERROR_NSUP_OPER  硬件不支持

VI_ERROR_TMO    超时错误

VI_ERROR_LINE_IN_USE    触发线正被使用

VI_ERROR_LINE_NCONFIG   触发线未配置

VI_ERROR_OPER_NCOMPLETE 上一个操作未完成

VI_ERROR_ACK_PENDING    上个响应正在登录,使这个操作退出

4) 描述:该操作包括的触发协议有:缺省协议、协议开启、协议关闭、协议开始、协议结束、协议同步、协议半同步、协议异步、协议半同步并等待响应、协议异步并等待响应等。

5) 相关项:参见viMapTrigger()、viUnmapTrigger()。

6) 实现要求:无。

4.2.    viMapTrigger(vi,trig,direction,mode)

1) 目标:将特定触发、时钟或前面板信号映射到另一信号

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

trig    输入    ViString    映射源或目标触发线

direction   输入    ViUInt16    映射方向

mode    输入    ViUInt16    信号调理方式

3) 返回状态值:

完成代码:

VI_SUCCESS  两个信号映射成功

错误代码:

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

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

VI_ERROR_NSUP_MODE  不支持特定模式

VI_ERROR_NUSP_SRC_TRIG  触发信号源不支持

VI_ERROR_NUSP_DEST_TRIG 触发信号目标不支持

VI_ERROR_TRIG_MAPPED    目标触发器已被映射

4) 描述:映射信号包括特定触发信号、时钟信号或外部信号等。

5) 相关项:参见viUnmapTrigger()、viAssertTrigger()。

6) 实现要求:无。

4.3.    viUnmapTrigger(vi,trig)

1) 目标:取消信号之间的映射

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

trig    输入    ViString    被映射的触发线

3) 返回状态值:

完成代码:

VI_SUCCESS  两个信号映射取消成功

错误代码:

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

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

VI_ERROR_NUSP_SRC_TRIG  触发信号源不支持

VI_ERROR_NUSP_DEST_TRIG 触发信号目标不支持

VI_ERROR_TRIG_NMAPPED   特定触发信号当前未被映射

4) 描述:映射信号包括特定触发信号、时钟信号或外部信号等。

5) 相关项:参见viMapTrigger()、viAssertTrigger()。

6) 实现要求:无。

n   状态/服务请求资源(VI_RSRC_SRQ):

1.  资源概述:包括两个作用:一是作为服务请求的响应者,可监测系统的服务请求并获得状态信息;二是作为服务请求的发生者,可产生服务请求并提供状态信息。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_AUTOPOLL_EN 资源操作模式

VI_ATTR_STB 服务请求状态

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

3.  状态/服务请求资源定义的事件如下所示:

事件    说明

VI_EVENT_SERVICE_REQ    服务请求通知事件

4.  状态/服务请求资源定义的操作如下:

viReadSTB(vi,status)

viRequestServ(vi,request,status)

4.1.    viReadSTB(vi,status)

1) 目标:读取服务请求状态字节

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

status  输出    ViUInt16    服务请求状态

3) 返回状态值:

完成代码:

VI_SUCCESS  服务请求状态字节读取完成

错误代码:

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

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

VI_ERROR_SRQ_NOCCURRED  服务请求未收到

VI_ERROR_TMO    超时错误

VI_ERROR_BERR   总线错误

4) 描述:该操作从一个服务请求者(消息基器件)中读取服务请求状态。

5) 相关项:参见viEventHandler()、viSetAttribute()、viGetAttribute()。

6) 实现要求:无。

4.2.    viRequestServ(vi,request,status)

1) 目标:向服务提供者(命令者)确认服务请求

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

request 输入    ViBoolean   服务请求目的

status  输入    ViUInt16    服务请求状态

3) 返回状态值:

完成代码:

VI_SUCCESS  服务请求完成

错误代码:

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

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

VI_ERROR_INV_SERVICE_REQ    服务请求状态字节与请求参数不一致

VI_ERROR_TMO    超时错误

VI_ERROR_BERR   总线错误

4) 描述:该操作用于当前器件向服务提供者发送服务请求。

5) 相关项:参见VI_EVENT_SRQ_SERVICED事件。

6) 实现要求:无。

n   清除资源(VI_RSRC_CLR):

1.  资源概述:向器件发送清除命令。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_HW_SENSE_EN 硬件是否对接收到指令敏感

VI_ATTR_PHYS_ADDR   器件地址

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

3.  清除资源定义的事件如下所示:

事件    说明

VI_EVENT_CLEAR  器件清除命令接收事件

4.  清除资源定义的操作如下:

viClear(vi)

4.1.    viClear(vi)

1) 目标:清除器件

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

3) 返回状态值:

完成代码:

VI_SUCCESS  器件清除完成

错误代码:

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

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

VI_ERROR_BERR   总线错误

VI_ERROR_TMO    超时错误

4) 描述:该操作向器件发送一个清除命令。

5) 相关项:无。

6) 实现要求:无。

n   高级存取资源(VI_RSRC_HL_ACC):

1.  资源概述:在接口级对器件的寄存器进行存取操作。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_BUS_TYPE    接口总线类型

VI_ATTR_PHYS_ADDR   器件地址

VI_ATTR_TYPE    高级存取对象类型(器件还是接口)

VI_ATTR_DEST_ACCESS_PRIV    写操作特性

VI_ATTR_DEST_BYTE_ORDER 写操作字节顺序

VI_ATTR_DO_RETRY    是否允许软件重入

VI_ATTR_SRC_ACCESS_PRIV 读操作特性

VI_ATTR_SRC_BYTE_ORDER  读操作字节顺序

VI_ATTR_USE_BLOCK   是否允许块传送

VI_ATTR_TRANSFER_MECH   传送机制

VI_ATTR_SRC_INCREMENT   源偏移量

VI_ATTR_DEST_INCREMENT  目标偏移量

3.  高级存取资源定义的事件如下所示:无

4.  高级存取资源定义的操作如下:

viIn(vi,space,offset,width,value)

viIn8(vi,space,offset,value)

viIn16(vi,space,offset,value)

viIn32(vi,space,offset,value)

viIn64(vi,space,offset,value)

viOut(vi,space,offset,width,value)

viOut8(vi,space,offset,value)

viOut16(vi,space,offset,value)

viOut32(vi,space,offset,value)

viOut64(vi,space,offset,value)

viMove(vi,srcspace,srcOffset,srcWidth,destspace,destOffset,

destWidth,length)

4.1.    viIn(vi,space,offset,width,value)

viIn8(vi,space,offset,value)

viIn16(vi,space,offset,value)

viIn32(vi,space,offset,value)

viIn64(vi,space,offset,value)

1) 目标:从接口总线读取8,16,32或64位字

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

space   输入    ViUInt16    地址空间类型

offset  输入    ViUInt32    读取接口/器件偏移量

width   输入    ViUInt16    读取数据长度

value   输出    ViBuf、ViPUInt(8、16、32、64)   读取数据

3) 返回状态值:

完成代码:

VI_SUCCESS  读操作完成

错误代码:

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

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

VI_ERROR_BERR   总线错误

VI_ERROR_INV_SPACE  地址空间不合法

VI_ERROR_INV_OFFSET 偏移量不合法

VI_ERROR_NSUP_BYTE_ORDER    不支持特定字节顺序

VI_ERROR_NSUP_OFFSET    硬件不支持特定地址偏移量

VI_ERROR_NSUP_PRIV  硬件不支持存取特性

4) 描述:该操作用特定数据长度与地址空间读取位于一定地址的数据值。其中viIn8()、viIn16()、viIn32()、viIn64分别规定数据长度为8、16、32与64位。

5) 相关项:viOut()。

6) 实现要求:参数value值viBuf对应viIn(),viPUInt8对应viIn8(),viPUInt16对应viIn16(),viPUInt32对应viIn32(),viPUInt64对应viIn64()。

4.2.    viOut(vi,space,offset,width,value)

viOut8(vi,space,offset,value)

viOut16(vi,space,offset,value)

viOut32(vi,space,offset,value)

viOut64(vi,space,offset,value)

1) 目标:向接口总线写入8,16,32或64位字

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

space   输入    ViUInt16    地址空间类型

offset  输入    ViUInt32    写入接口/器件偏移量

width   输入    ViUInt16    写入数据长度

value   输入    ViBuf、ViPUInt(8、16、32、64)   写入数据

3) 返回状态值:

完成代码:

VI_SUCCESS  写操作完成

错误代码:

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

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

VI_ERROR_BERR   总线错误

VI_ERROR_INV_SPACE  地址空间不当

VI_ERROR_INV_OFFSET 偏移量不当

VI_ERROR_NSUP_BYTE_ORDER    不支持特定字节顺序

VI_ERROR_NSUP_OFFSET    硬件不支持特定地址偏移量

VI_ERROR_NSUP_PRIV  硬件不支持存取特性

4) 描述:该操作用特定数据长度与地址空间将数据写入到一定地址中。其中viOut8()、viOut16()、viOut32()、viOut64分别规定数据长度为8、16、32与64位。

5) 相关项:viIn()。

6) 实现要求:参数value值viBuf对应viOut(),viPUInt8对应viOut8(),viPUInt16对应viOut16(),viPUInt32对应viOut32(),viPUInt64对应viOut64()。

4.3.    viMove(vi,srcSpace,srcOffset,srcWidth,destSpace,destOffset,destWidth,length)

1) 目标:移动数据块

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

srcSpace    输入    ViUInt16    源空间地址

srcOffset   输入    ViUInt32    源偏移量

srcWidth    输入    ViUInt16    源数据长度

destSpace   输入    ViUInt16    目标空间地址

destOffset  输入    ViUInt32    目标偏移量

destWidth   输入    ViUInt16    目标数据长度

length  输入    ViUInt32    传送数据个数

3) 返回状态值:

完成代码:

VI_SUCCESS  数据块移动完成

错误代码:

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

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

VI_ERROR_BERR   总线错误

VI_ERROR_INV_SPACE  地址空间不当

VI_ERROR_INV_OFFSET 偏移量不当

VI_ERROR_INV_WIDTH  数据长度不当

VI_ERROR_NSUP_BYTE_ORDER    不支持特定字节顺序

VI_ERROR_NSUP_OFFSET    硬件不支持特定地址偏移量

VI_ERROR_NSUP_VAR_WIDTH 源与目标数据长度不一致

VI_ERROR_NSUP_PRIV  硬件不支持存取特性

4) 描述:该操作将数据从源地址移动到目标地址。源与目标数据长度必须一致。

5) 相关项:无。

6) 实现要求:无。

n   低级存取资源(VI_RSRC_LL_ACC):

1.  资源概述:在寄存器级对器件的寄存器进行存取操作。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_BUS_TYPE    接口总线类型

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_ACC_PRIV    存取特性

VI_ATTR_ADDR_SPACE  地址空间

VI_ATTR_BLOCK   块传送允许

VI_ATTR_BYTE_PREFETCH   是否允许预取操作

VI_ATTR_VIRT_BASE   虚拟基地址

VI_ATTR_WIN_BASE_ADDR   总线基地址

VI_ATTR_WIN_OWNER   用户存取特性

VI_ATTR_WR_POST 写登记是否允许

VI_ATTR_A16_SPC_INFO    A16空间映射信息

VI_ATTR_A24_SPC_INFO    A24空间映射信息

VI_ATTR_A32_SPC_INFO    A32空间映射信息

3.  低级存取资源定义的事件如下所示:

事件    说明

VI_EVENT_BERR   总线错误发生事件

4.  低级存取资源定义的操作如下:

viMap(vi,mapSpace,mapBase,mapSize,owner,suggested,address)

viUnMap(vi)

viPoke(vi,addr,width,value)

viPoke8(vi,addr,value)

viPoke16(vi,addr,value)

viPoke32(vi,addr,value)

viPoke64(vi,addr,value)

viPeek(vi,addr,width,value)

viPeek8(vi,addr,value)

viPeek16(vi,addr,value)

viPeek32(vi,addr,value)

viPeek64(vi,addr,value)

4.1.    viMap(vi,mapSpace,mapBase,mapSize,access,suggested,address)

1) 目标:内存空间映射

2) 参数表:

参数名  输入/输出方向   数据类型    描述

Vi  输入    ViSession   对话通道标识符(句柄)

MapSpace    输入    ViUInt16    映射地址空间

MapBase 输入    ViBusAddress    内存偏移量

MapSize 输入    ViBusSize   映射内存大小

Access  输入    ViBoolean   映射特性

Suggested   输入    ViBuf   映射是否允许确认

Address 输出    ViPBuf  映射地址

3) 返回状态值:

完成代码:

VI_SUCCESS  地址映射完成

错误代码:

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

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

VI_ERROR_INV_SPACE  地址空间不当

VI_ERROR_INV_OFFSET 偏移量不当

VI_ERROR_NSUP_BYTE_ORDER    不支持特定字节顺序

VI_ERROR_NSUP_OFFSET    硬件不支持特定地址偏移量

VI_ERROR_NSUP_PRIV  硬件不支持存取特性

VI_ERROR_TMO    超时错误

4) 描述:该操作进行特定内存空间映射。

5) 相关项:参见viUnmap()。

6) 实现要求:在由于资源限制致使viMap()不能立即执行,则其将沉睡到资源有效或超时情况发生。

4.2.    viUnMap(vi)

1) 目标:取消内存映射

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

3) 返回状态值:

完成代码:

VI_SUCCESS  映射取消完成

错误代码:

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

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

VI_ERROR_WINDOW_NMAPPED 标识符不当

4) 描述:该操作应与映射操作一一对应。

5) 相关项:参见viMap()。

6) 实现要求:无。

4.3.    viPoke(vi,addr,width,value)、viPoke8(vi,addr,value)

    viPoke16(vi,addr,value)、viPoke32(vi,addr,value)

    viPoke64(vi,addr,value)

1) 目标:写数据

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

addr    输入    ViBuf   数据存储地址

width   输入    ViUInt16    数据长度

value   输入    ViBuf、ViUInt8、ViUInt16、ViUInt32、ViUInt64    存储数据值

3) 返回状态值:无

4) 描述:该操作将数据写入到addr参数表示的地址中。

5) 相关项:参见viPeek()。

6) 实现要求:数据类型viBuf对应viPoke(),viUInt8对应viPoke8(),viUInt16对应viPoke16(),viUInt32对应viPoke32(),viUInt64对应viPoke64()。

4.4.    viPeek(vi,addr,width,value)、viPeek8(vi,addr,value)

    viPeek16(vi,addr,value)、viPeek32(vi,addr,value)

    viPeek64(vi,addr,value)

1) 目标:读数据

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

addr    输入    ViBuf   数据存储地址

width   输入    ViUInt16    数据长度

value   输出    ViBuf、ViUInt8、ViUInt16、ViUInt32、ViUInt64    存储数据值

3) 返回状态值:无

4) 描述:该操作从addr参数表示的地址中读取数据。

5) 相关项:参见viPoke()。

6) 实现要求:其中数据类型viBuf对应viPeek(),viPUInt8对应viPeek8(),viPUInt16对应viPeek16(),viPUInt32对应viPeek32(),viPUInt64对应viPeek64()。

n   器件特定命令资源(VI_RSRC_DEV_CMD):

1.  资源概述:允许发送与接收命令,并取得命令请求与命令反应,在检查到协议错误时产生一个协议错误信息。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_HW_EN   硬件允许与否

VI_ATTR_TMO_UNIT    超时值单位

VI_ATTR_TMO_VALUE   超时值

VI_ATTR_PHYS_ADDR   器件地址

3.  器件特定命令资源定义的事件如下所示:

事件    说明

VI_EVENT_DEV_CMD    接收到命令或查询事件

4.  器件特定命令资源定义的操作如下:

viSendCommand(vi,command,param)

viQueryRequest(vi,operationMode,command,param,len,response)

viGenProtError(vi,protError)

4.1.    viSendCommand(vi,command,param)

1) 目标:向器件发送命令

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

command 输入    ViUInt32    命令列表

param   输入    ViAddr  参数值

3) 返回状态值:

完成代码:

VI_SUCCESS  命令发送完成

错误代码:

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

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

VI_ERROR_TMO    超时错误

VI_ERROR_BERR   总线错误

VI_ERROR_RAW_RD_PROT_VIOL读协议错误

VI_ERROR_RAW_WR_PROT_VIOL写协议错误

VI_ERROR_OUTP_PROT_VIOL 输出协议错误

VI_ERROR_INP_PROT_VIOL  输入协议错误

4) 描述:该操作向器件发送特定命令,命令包括:获取硬件版本信息、获取软件版本信息、发送字串命令、发送长字串命令、发送扩展字串命令、发这GPIB命令及发送接口缺省命令。

5) 相关项:参见viQueryRequest()。

6) 实现要求:无。

4.2.    viQueryRequest(vi,operationMode,command,param,len,response)

1) 目标:请求查询并返回响应值

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

operationMode   输入    ViUInt16    操作类型

command 输入    ViUInt32    命令列表

param   输入    ViAddr  参数值

len 输入/输出   ViUInt32    响应者数据长度

response    输出    ViAddr  命令响应

3) 返回状态值:

完成代码:

VI_SUCCESS  查询完成

错误代码:

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

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

VI_ERROR_CMD_TMO    命令发送超时错误

VI_ERROR_RESP_TMO   命令响应超时错误

VI_ERROR_BERR   总线错误

VI_ERROR_ABORT  传送时用户退出

VI_ERROR_RAW_RD_PROT_VIOL读协议错误

VI_ERROR_RAW_WR_PROT_VIOL写协议错误

VI_ERROR_OUTP_PROT_VIOL 输出协议错误

VI_ERROR_INP_PROT_VIOL  输入协议错误

VI_ERROR_NSUP_COMMAND   命令未收到

VI_ERROR_RESP_PENDING   前个响应正在登录

4) 描述:该操作可以向器件发送命令或接收上一个命令的响应。参数operationMode表明了操作类型。

5) 相关项:参见viSendCommand()。

6) 实现要求:无。

4.3.    viGenProtError(vi,protError)

1) 目标:产生一个协议错误

2) 参数表:

参数名  输入/输出方向   数据类型    描述

vi  输入    ViSession   对话通道标识符(句柄)

protError   输入    ViUInt16    产生的协议错误

3) 返回状态值:

完成代码:

VI_SUCCESS  协议错误产生完成

错误代码:

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

VI_ERROR_NSUP_SERV_OP   从机功能不支持

4) 描述:该操作产生的协议错误包括:清除任一协议错误状态、前一个响应正在登录引发的多个查询错误、命令未被识别、输入协议错误、输出协议错误、读协议错误与写协议错误等。

5) 相关项:无。

6) 实现要求:无。

n   CPU接口资源(VI_RSRC_CPU_INTF):

1.  资源概述:可实现对当地控制器的接口配置。

2.  资源属性表及属性描述:

属性名          描述

VI_ATTR_HW_INTR_LEVEL   CPU板中断级

VI_ATTR_IO_BASE CPU I/O基地址

VI_ATTR_LOCAL_BUS_TMO   当地总线超时期间

VI_ATTR_MEM_BASE    内存基地址

VI_ATTR_MSTR_DMA_CHNL   主机DMA通道

VI_ATTR_SLAVE_DMA_CHNL  从机DMA通道

VI_ATTR_SYSRESET_RESET_PC   SYSRESET是否会使当地控制器复位

VI_ATTR_LOCAL_BYTE_ORDER    接口控制器的字节顺序

3.  CPU接口资源定义的事件如下所示:无

4.  CPU接口资源定义的操作如下:无

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt是一个跨平台的C++应用程序开发框架,可以用来开发图形用户界面(GUI)应用程序。Visa库是一种用于与仪器通信的底层库,为开发者提供了与仪器进行通信的接口。TCP/IP是一种广泛应用于网络通信的协议。 在Qt中,我们可以使用Visa库与数字仪器仪表进行TCP/IP通信。首先,我们需要在项目中包含Visa库的头文件,并链接Visa库。然后,我们可以使用Visa的相关函数来建立与数字仪器仪表的连接。 首先,我们需要创建一个Visa实例。我们可以通过Visa的函数来获取可用的Visa资源,如Visa设备列表。然后,我们可以根据Visa资源的地址来打开与数字仪器仪表的连接。 一旦成功建立连接,我们可以使用Visa库提供的函数来发送和接收数据。我们可以使用Visa的写入函数来发送指令或查询到数字仪器仪表。并使用Visa的读取函数来接收仪器的响应或数据。通过这种方式,我们可以实现与数字仪器仪表的通信。 使用Qt的网络模块,我们可以使用TCP/IP协议来与数字仪器仪表进行网络通信。我们可以创建一个QTcpSocket实例,然后使用其函数来建立与数字仪器仪表的连接。通过设置主机地址和端口号,我们可以实现与数字仪器仪表的连接。 一旦成功建立连接,我们可以使用QTcpSocket的函数来发送和接收数据。我们可以使用write函数来发送指令或查询到数字仪器仪表。并使用read函数来接收仪器的响应或数据。 综上所述,Qt可以使用Visa库与数字仪器仪表进行TCP/IP通信。通过Visa库,我们可以使用Visa的API函数来建立和管理与数字仪器仪表的连接,通过QTcpSocket,我们可以使用TCP/IP协议进行网络通信。这样,我们就可以实现控制和监测数字仪器仪表的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值