2017-01-02 6 views
0

Я пытаюсь связаться с некоторым тестовым оборудованием с C# над SCPI. Мне удалось связаться с одним устройством, которое подключено через TCP/IP, используя this code example.Отправка команд SCPI/GPIB через USB из C#

Тем не менее, другие устройства подключены через USB, и я не нашел, как общаться с ними через USB.

BTW, я нашел this question, и связь с ответом на IVI-COM programming examples in C# документ, но я не мог применить образцы кода (например, в разделе 5.4), так как все IVI и VISA COM библиотеки я нашел (например VisaComLib 5.5) имеют только интерфейсы и перечисления в нем, и не конкретный класс, который я могу использовать ...

ответ

1

Если установить драйвер визового либо из NationalInstruments или Keysight, они применяют классы:

одной из Н.И. :

  1. Для mattedIO488Class
  2. ResourceManagerClass
  3. VisaConflictTableManagerClass

Чтобы получить соединение, вам нужно только 1 и 2

Как только вы пытаетесь встроить interoptypes, вам нужно удалить суффикс «класс», как описано here

Здесь приходит образец фрагмент из Keysight (приложение Примечание: 5989-6338EN)

Ivi.Visa.Interop.ResourceManager rm = new Ivi.Visa.Interop.ResourceManager(); 
Ivi.Visa.Interop.FormattedIO488 ioobj = new Ivi.Visa.Interop.FormattedIO488(); 

try 
{ 

    object[] idnItems; 

    ioobj.IO = (Ivi.Visa.Interop.IMessage)rm.Open("GPIB2::10::INSTR", 
    Ivi.Visa.Interop.AccessMode.NO_LOCK, 0, ""); 

    ioobj.WriteString("*IDN ?", true); 

    idnItems = (object[])ioobj.ReadList(Ivi.Visa.Interop.IEEEASCIIType.ASCIIType_Any, ","); 

    foreach(object idnItem in idnItems) 
    { 
     System.Console.Out.WriteLine("IDN Item of type " + idnItem.GetType().ToString()); 
     System.Console.Out.WriteLine("\tValue of item is " + idnItem.ToString()); 
    } 

} 
catch(Exception e) 
{ 
    System.Console.Out.WriteLine("An error occurred: " + e.Message); 
} 
finally 
{ 

    try { ioobj.IO.Close(); } 
    catch { } 

    try 
    { 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(ioobj); 
    } 
    catch { } 

    try 
    { 
     System.Runtime.InteropServices.Marshal.ReleaseComObject(rm); 
    } 
    catch { } 
}