Я пытаюсь использовать Ivi.Visa.Interop .dll для связи с измерителем мощности Voltech PM1000 + с использованием USB. Я относительно новичок в C# и не знаю, с чего начать. Я использую сообщество Visual Studio 2015. Я уже говорил с другим инструментом с помощью GPIB и вот код для этого:Как подключиться к инструменту через USB с помощью C#
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Ivi.Visa.Interop;
namespace commOverIP
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void InitiateIOBtn_Click(object sender, EventArgs e)
{
///testing out excel
InitiateIOBtn.Text = "Initializing";
try
{
// resource manager and message-based session manager
Ivi.Visa.Interop.ResourceManager mngr = new Ivi.Visa.Interop.ResourceManager();
// GPIB address
string srcAddress = "GPIB::27::INSTR"; // GPIB address of data acquisition
//setting up communication
Ivi.Visa.Interop.FormattedIO488 instrument = new Ivi.Visa.Interop.FormattedIO488();
Ivi.Visa.Interop.IMessage Imsg = (mngr.Open(srcAddress, Ivi.Visa.Interop.AccessMode.NO_LOCK, 1000, "") as IMessage);
instrument.IO = Imsg;
instrument.IO.Clear();//clear io buffer
instrument.WriteString("*RST", true);//send RST? command to instrument
instrument.WriteString("*IDN?", true);//send IDN? command to instrument
returnOfCommand.Text = instrument.ReadString();//read IDN? result
//close communication
instrument.IO.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(instrument);
System.Runtime.InteropServices.Marshal.ReleaseComObject(mngr);
InitiateIOBtn.Text = "Initialize I/O";
//*/
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
InitiateIOBtn.Text = "Initialize I/O";
}
}
}
Это прекрасно работает, но USB кажется другим зверем. Единственное реальное лидерство, которое я нашел, было в .dll с: IUsb.Init (строка, Ivi.Visa.Interop.AccessMode, int, string) Я попытался реализовать это, но я не знаю, с чего начать.
Если кто-нибудь может дать мне пример того, как запросить «IDN»? команда была бы замечательной. Или даже если есть лучший способ сделать это, чем через dll Ivi.Visa.Interop.
Заранее благодарен
Видя, как это очень специфический к части оборудования 99,9% из нас не имеют, вы не можете получить большую помощь здесь. Я бы посоветовал обратиться к людям, опубликовавшим API, и обратиться за помощью напрямую. –
Я не ищу конкретный набор кода. Я ищу, как открыть, написать, прочитать и закрыть USB-порт. "* IDN?" это стандартная команда, которую вы отправляете на инструмент, чтобы прочитать личность инструмента. Я не ищу точных команд, я ищу направление. – rtyson