Ошибка команды SCPI VB.net от отрицательного целого числа к строке

В VB.net я отправляю команды SCPI через GPIB-to-USB на устройство Agilent/keysight. Я использую этот образец для записи данных в инструменты. https://www.keysight.com/main/editorial.jspx?cc=BR&lc=por&ckey=492255&nid=-33170.1090751.08&id=492255

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

Dim P As Integer
    Dim Power As Integer
    For P = -50 To 0 Step 10
        System.Threading.Thread.Sleep(500)
        Power = P
        instrument.WriteString("POW" & Str$(P) & "dbm")
        Console.WriteLine("Power" & P) 'Testing if this portion of the for loop is reached

Мой код строится успешно, но устройство, с которым я общаюсь, отображает сообщение об ошибке «недопустимый разделитель». Я считаю, что проблема в том, что P начинается с отрицательного числа. Если бы я сделал что-то вроде «Для P = от 0 до 10, шаг 1», это сработало бы на устройстве, получающем команду. Однако Str$ не работает с отрицательными числами. Используя Console.WriteLine, я вижу, что мой цикл работает правильно в выводе консоли. Судя по выводу консоли, структура цикла не является проблемой.

Как я могу заставить это работать с P, начинающимся с отрицательного числа? Я протестировал код и устройство, чтобы увидеть, может ли он принимать отрицательные числа, просто используя инструмент.WriteString("POW -5 dbm"), и это работает. Я действительно считаю, что проблема связана с Str$. Я также пытался сделать ("POW" и P.ToString() и "dbm"), но это тоже не сработало. Я также заменил Str$ на CStr, но это тоже не сработало. Также обратите внимание, что сон/задержка не является проблемой, потому что я реализовал это в другом цикле for, и он работал без ошибок.


person user40320    schedule 27.02.2018    source источник


Ответы (1)


Я только что понял это. После POW должен быть пробел. Это должно выглядеть как "POW"

person user40320    schedule 27.02.2018