#c# #visa
#c# #visa
Вопрос:
Я пытаюсь управлять источником питания (от Kikusui), используя устройство Kikusui, USB-TP PIA4850. Я использую библиотеку Ivi.Visa.Взаимодействие. Ниже приведен код, в котором я успешно могу управлять источником питания, устанавливая желаемое напряжение.
(Ссылка на руководство по программированию:https://www.kikusui.co.jp/kiku_manuals/P/PIA4800/english/index.html )
(Ссылка на руководство по эксплуатации:https://www.kikusui.co.jp/kiku_manuals/P/PIA4850_E5.pdf )
Using Ivi.Visa.Interop;
namespace USBTPTest
{
class USBTPController
{
private IResourceManager3 rm = new ResourceManager();
private IMessage iMessage;
public USBTPController() //to get the address of the device connected and open the address if found
{
string[] adrsList = rm.FindRsrc("?*");
if (adrsList.Count() != 0)
{
Open(adrsList[0]);
}
}
public bool Open(string str)
{
string addr = str;
iMessage = (IMessage)rm.Open(addr, AccessMode.NO_LOCK, 0, "");
//iMessage.WriteString("TRM 2");
iMessage.WriteString("NODE 5");
iMessage.WriteString("CH 1");
iMessage.WriteString("REM 1");
bOpened = true;
return true;
}
public bool SetVoltage(float vol) {} //method to set the desired voltage to the power supply, when called with an appropriate argument
Установленное напряжение проверяется мультиметром на клеммах источника питания. Аналогичным образом также устанавливается и проверяется ток. До этого момента код выполняется и выдает ожидаемые результаты.
public string ReadVOut()
{
iMessage.WriteString("VOUT?"); //Query OUT(ON/OFF) measurement value
string VOutStatus;
VOutStatus = iMessage.ReadString(1024); //Read from PIA
return VOutStatus;
}
public string ReadIOut()
{
iMessage.WriteString("IOUT?"); //Query OUT(ON/OFF) measurement value
string COutStatus;
COutStatus = iMessage.ReadString(1024); //Read from PIA
return COutStatus;
}
}
}
Проблема возникает, когда я считываю выводимые значения напряжения / тока. Хотя я могу правильно считывать значения, иногда считывание напряжения с помощью ReadVOut () выдает ток и наоборот. Я не могу выяснить, является ли это ошибкой в коде или в блоке питания, к которому я подключен, или что-то еще. И я был бы очень признателен за помощь / идеи / выводы.
Комментарии:
1. Этот вопрос все еще актуален? Правильно ли я понимаю, что вы используете два прибора, оба управляются через USB? ReadVOut и ReadIOut всегда вызываются из одного потока? Просто предположение: может быть, по какой-то причине вы не считываете ответ на один запрос, а затем выполняете другой запрос, но читаете ответ на предыдущий запрос, в то время как два ответа уже доступны?