#c# #visa #gpib
Вопрос:
Я программирую на C# и использую пример rsinstrument_csharp_hello_word_ для открытия связи с интерфейсом GPIB. Я использую эту библиотеку от Rohde amp; Schwarz https://www.fuget.org/packages/RsInstrument
У меня проблема с визой этот ресурс GPIB0::16::INSTR Это матрица RF — Relaise
Я должен отправить только эту команду: R1R2R3R4R5R6, когда я проверяю команду с помощью утилиты NiMax, все в порядке, но проблема в C#. Ошибка исключения — «Произошел тайм-аут viReadSTB ()», мой простой источник указан выше. Я попробовал изменить флаг конструктора, но не нашел ничего подходящего или подходящего. С помощью трассировки NI/IO я вижу это, я думаю, что проблема в том, что при открытии ресурса visa аппаратное обеспечение матрицы не принимает стандартный контроль *CLS и STB. Есть способ избежать дополнительного контроля и открыть только ресурс? Спасибо за помощь.
след:
- viOpenDefaultRM (0x00333438) Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14 3769 Продолжительность вызова 00:00:00.0270 Статус: 0 (VI_SUCCESS)
- Атрибут viGetAttribute (0x00333438, 0xBFFF0174 (ИМЯ VI_ATTR_RSRC_MANF), «Национальные инструменты») Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14,4049 Продолжительность вызова 00:00:00.0000 Статус: 0 (VI_SUCCESS)
- viOpen (0x00333438, «GPIB0::16::INSTR», 0 (0x0), 0 (0x0), 0x04A32048) Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14,4059 Продолжительность вызова 00:00:00.1200 Статус: 0 (VI_SUCCESS)
- Атрибут viGetAttribute (GPIB0::16::INSTR (0x04A32048), 0x3FFF0171 (VI_ATTR_INTF_TYPE), 1 (0x1)) Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14 5279 Продолжительность вызова 00:00:00.0000 Статус: 0 (VI_SUCCESS)
- Атрибут viGetAttribute (GPIB0::16::INSTR (0x04A32048), 0xBFFF0001 (КЛАСС VI_ATTR_RSRC), «INSTR») Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14 5279 Продолжительность вызова 00:00:00.0000 Статус: 0 (VI_SUCCESS)
- Атрибут viSetAttribute (GPIB0::16::INSTR (0x04A32048), 0x3FFF001A (ЗНАЧЕНИЕ VI_ATTR_TMO_VALUE), 10000 (0x2710)) Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14 5329 Продолжительность вызова 00:00:00.0020 Статус: 0 (VI_SUCCESS)
- Виклир (GPIB0::16::INSTR (0x04A32048)) Идентификатор процесса: 0x0000148C Идентификатор потока: 0x00001050 Время начала: 12:52:14 5359 Продолжительность вызова 00:00:00.0010 Статус: 0 (VI_SUCCESS)
- viWrite (GPIB0::16::INSTR (0x04A32048), «*CLS», 4 (0x4), 4 (0x4))
Process ID: 0x0000148C Thread ID: 0x00001050
Start Time: 12:52:14,5379 Call Duration 00:00:00.0010
Status: 0 (VI_SUCCESS)
- viReadSTB (GPIB0::16::INSTR (0x04A32048), 0 (0x0))
Process ID: 0x0000148C Thread ID: 0x00001050
Start Time: 12:52:14,5399 Call Duration 00:00:16.7799
Status: 0xBFFF0015 (VI_ERROR_TMO)
SOURCE
--
using System;
using RohdeSchwarz.RsInstrument; // .NET component providing all the necessary VISA extended functionalities. Install as NuGet from www.nuget.org
using System.IO;
namespace RsInstrument_Hello_World_Example
{
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
RsInstrument matrix;
try // Separate try-catch for initialization prevents accessing uninitialized object
{
var resMatrix = "GPIB0::16::INSTR"; // GPIB Connection
matrix = new RsInstrument(resMatrix, false,false);
}
catch (RsInstrumentException e)
{
Console.WriteLine($"Error initializing the instrument session:n{e.Message}");
Console.Write("nPress any key ...");
Console.ReadKey();
return;
}
//Invio comando settaggio matrice
matrix.WriteString("R1R2R3R4R5R6");
Console.Write("nVISA OK Press any key ...");
Console.ReadKey();
matrix.Dispose();
}
}
}