C++ 实现GPIB通信

本文介绍了C++如何通过GPIB接口与远程仪器进行通信,涉及到GPIB的总线结构和异步传输方式。同时,解释了SCPI标准在仪器控制中的作用,以及VISA作为统一的仪器编程接口的功能,列举了常见的VISAAPI用例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文主要介绍使用C++如何与远程仪器通过GPIB接口进行通信

1.GPIB简介

GPIB是通用总线(General Purpose Interface Bus)的简称。
  GPIB一共由24根线组成,其中8根数据线DB0-DB7,3根握手线(NRFD、DAV、NDAC),5根总线控制线(ATN、SRQ、IFC、REN、EOI),8根地线。
  GPIB是异步数据传输方式的双向总线,总线上的信息按位(bit)并行、字节(byte)串行的方式进行传送。
  详细的GPIB硬件接口介绍请查阅相关资料,这里就不详述了。

2.SCPI简介

SCPI是可编程仪器标准命令(Standard Commands for Programmable Instruments)的简称。
  SCPI规定了在控制器到仪器和仪器到控制器之间的信息交换层消息的构造和内容,因而使得在垂直层面上,同一类型的仪器命令集相似;在水平层面上,不同类型仪器之间,同种功能的SCPI命令也一致。
  SCPI命令分为仪器公用命令和仪器特定控制命令两部分。公用命令用于控制仪器的某些基本功能操作,其句法和语义遵循IEEE488.2规定。仪器特定控制命令是指每个程控仪器完成自身命令操作的特定命令。
  详细的SCPI命令语法请查阅相关资料,这里就不详述了。

3.VISA简介

VISA是虚拟仪器软件架构(Virtual Instrument Software)的简称。
  VISA提供了用于仪器编程的标准I/O函数库,称为VISA库。VISA库提供了统一的设备资源管理、操作和使用机制,它独立于硬件设备、接口、操作系统和编程语言,具有与硬件结构无关的特点。它将用于每个仪器硬件总线类型的更低层次的驱动程序抽象化,并提供一个单一的API实现与仪器的通信,而不必考虑具体的总线接口。
  常用的VISA API有如下一些:
  (1)ViStatus viOpenDefaultRM(ViPSession vi);   //打开缺省资源管理器资源对话通道
  (2)ViStatus viOpen(ViSession sesn, ViRsrc name, ViAccessMode mode, ViUInt32 timeout, ViPSession vi); //打开特定资源的对话通道
  (3)ViStatus viClose(ViObject vi);         //关闭特定资源的对话通道
  (4)ViStatus viPrintf(ViSession vi, ViString writeFmt, …);   //按设定格式向仪器写数据
  (5)ViStatus viScanf(ViSession vi, ViString readFmt, …);   //按设定格式从仪器读取数据
  (6)ViStatus viRead(ViSession vi, ViPBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);  //从仪器同步读取数据
  (7)ViStatus viWrite(ViSession vi, ViBuf buf, ViUInt32 cnt, ViPUInt32 retCnt);  //向仪器同步写入数据
  (8)ViStatus viClear(ViSession vi);         //清除数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值