C#Visual Studio GPIB命令

您使用什么命令与C#,visual studio中的GPIB仪器通信? 我需要能够向仪器写入命令并读取输出。

我使用Agilent IO Library Suite 。

这是一个在C#上使用它的教程:C#中的I / O编程示例

然而,在我的公司中,我们遇到了VISA-COM实现的稳定性问题,因此我们使用P / Invoke在visa32.dll(也是IO库套件的一部分)周围编写了自己的包装器。

(披露:我在一家大力使用GPIB工具的公司工作)

从串口发送命令。

请参阅Microsoft的COM端口示例 。

您应该首先使用LangInt类创建一个对象。 然后使用GPIB方法使用该对象。 最常见和最常用的是(假设你创建了一个名为“dev”的对象);

dev.ibwrt(deviceHandle, "*IDN?", "*IDN?".Length); dev.ibrd(deviceHandle, out Value, Arraysize); 

这两个可以查询设备。 或者您可以连续使用它们,例如设置发生器的频率,然后设置振幅。

重要的部分是在发送SCPI命令之前; 你必须先初始化设备。 要做到这一点;

 deviceHandle = ibdev(GPIBINDEX, GPIBADDRESS, SECONDARYADDRESS, TIMEOUT, EOTMODE, EOSMODE); 

必须在代码中首先声明这些参数。 初始化后,您可以使用该设备处理的每个GPIB命令。

当然,您应该将NationalInstruments.NI4882和LangInt.dll添加到您的项目中。

我正在使用National Instruments VISA和NI 488.2 。

首先确保您在NI-VISA安装程序中检查了VisaNS.NET API ,请参见下图:

在此处输入图像描述

NationalInstruments.VisaNSNationalInstruments.Common的引用添加到您的项目中。

创建MessageBasedSession ,请参阅以下代码:

 string resourceName = "GPIB0::20::INSTR"; // GPIB adapter 0, Instrument address 20 var visa = new NationalInstruments.VisaNS.MessageBasedSession(resourceName); visa.Write("*IDN?"); // write to instrument string res = visa.ReadString(); // read from instrument 

MessageBasedSession可用于通过GPIB,以太网或USB与仪器通信。