Это продолжение настройки настольного мультиметра Agilent U3402A в программе Test Controller. В прошлый раз было добавлено только переключение режимов и отображение частоты измерений.
Сейчас появился ручной выбор диапазона и частоты измерений. В этом мультиметре диапазон измерений зависит от частоты измерений.
Например для постоянного напряжения это выглядит так:
- Низкая частота измерений
- Автоматически
- 120 мВ
- 1.2 В
- 12 В
- 120 В
- 1000 В
- Средняя и высокая частота измерений
- Автоматически
- 400 мВ
- 4 В
- 40 В
- 400 В
- 1000 В
И так для большинства измерительных функций.
В обновленной версии конфигурации добавил в настройки поле "Rate" в котором выбирается частота измерений. При её изменении показывается показывается элемент соответствующий выбранной функции измерения с нужным списком диапазонов.
Вначале использовал тег :visible:
для элементов comboboxhot
у которых одно и то же имя.
#cmdSetup comboboxhot Range :read: RANGE? :write: RANGE # :visible: deviceMode("U3402A") == "DC_Voltage" && Rate == "S" Auto 0 120mV 1 1.2V 2 12V 3 120V 4 1000V 5 :updatemodechange: #cmdSetup comboboxhot Range :read: RANGE? :write: RANGE # :visible: deviceMode("U3402A") == "DC_Voltage" && (Rate == "M" || Rate == "F") Auto 0 400mV 1 4V 2 40V 3 400V 4 1000V 5 :updatemodechange: #cmdSetup comboboxhot Rate :string: :read: RATE? :write: RATE # :update: Range :tip: Measurement rate Slow S Medium M Fast F
В зависимости от вычисления условия в этом теге элемент либо показывался, либо скрывался. Но при переключении режима измерения через меню "Mode" не происходила перестройка выпадающих списков для диапазонов измерений. При этом позиция выбранного элемента сбрасывалась, т.е. какая-то реакция была, но не та что нужно. Если же сменить частоту измерений, то обновление происходило правильно.
Пообщался с автором программы и тот посоветовал использовать элемент "selector" вместо тега ":visible:". В итоге сокращённая версия переключателя для постоянного напряжения выглядит так:
#cmdSetup selector Range_Settings :read: PRIMARY:FUNCTION? :readmath: value + "_" + (rate=="S" ? "S" : "MF") :updatemodechange: 0_S DCV_S_Range 0_MF DCV_MF_Range #cmdSetup comboboxhot DCV_S_Range :read: RANGE? :write: RANGE # Auto 0 120mV 1 1.2V 2 12V 3 120V 4 1000V 5 :updatemodechange: #cmdSetup comboboxhot DCV_MF_Range :read: RANGE? :write: RANGE # Auto 0 400mV 1 4V 2 40V 3 400V 4 1000V 5 :updatemodechange: #cmdSetup comboboxhot Rate :string: :read: RATE? :write: RATE # :update: Range_Settings :tip: Measurement rate Slow S Medium M Fast F
Работает хорошо, но есть косметический недостаток в виде текстовых меток для элемента comboboxhot
. Его метка строится заменой символа подчёркивания на пробел и нет возможности переопределить её на манер тега :tip:
. Я попробовал предложить автору добавить в элементы тег :label:
чтобы была возможность задать произвольную метку, но он не заинтересован в таком изменении.
Заодно добавил отдельные режимы для выбора предела 12 А для измерения тока чтобы не приходилось выбирать его каждый раз в диапазоне.
Осталось прикрутить выбор режима для второго экрана.
Комментариев нет:
Отправить комментарий