So, I figured out your fancy command, and trimmed down another 21KB. Nice.
I made the function with a scpiCmd, and it works for all 8 channels:
#scpiCmd EnablegetMeasUnit #pgm#
addFuncGlobal("getMeasUnit","""
var measNum=params[0];
var type=params[1];
var channel=params[2];
var unitCommand=channel + ":UNIT?";
var unitResult=deviceRead(handle, unitCommand);
var measUnit;
blah blah blah
One problem though. I tried executing EnablegetMeasUnit in the #initCmd, and it appears to run in the log...but it doesn't actually define the command (unknown function error). However, manually running EnablegetMeasUnit in the Commands tab input does work, and then everything functions as it should.
Here's the startup log with the initCmds:
;; IP: Tx <MeasDefault>
;; IP: Tx <none>
;; IP: Tx <EnablegetMeasUnit>
;; IP: Script start
;; IP: Script end <>
;; Found Batronix Magnova on IP sn: ####
;; Magnova: Tx <getallModes?>
;; Magnova: Tx <none?>
;; Magnova: Rx <HFReq1,None,None,None,None,None,None,None>
processModeString input: HFReq1,None,None,None,None,None,None,None
Here's the error when trying to change modes:
;; Magnova: Tx <MeasType1 VNAPArea>
;; Magnova: Script start
dk.hkj.script.ProgramExceptions$UnknownException: Function not found getMeasUnit
var type=value;
var meas1Type=value;
var meas1Unit=getMeasUnit(1, meas1Type, meas1Chan);____<----____
var allModes=meas1Unit+","+meas2Unit+","+meas3Unit+","+meas4Unit+","+meas5Unit+","+meas6Unit+","+meas7Unit+","+meas8Uni
at dk.hkj.script.Script.getFunc(Script.java:97)
at dk.hkj.script.Script.parseValue(Script.java:272)
at dk.hkj.script.Script.parseBitOp(Script.java:320)
at dk.hkj.script.Script.parseProduct(Script.java:392)
at dk.hkj.script.Script.parseSum(Script.java:474)
at dk.hkj.script.Script.parseCompare(Script.java:529)
at dk.hkj.script.Script.parseLogical(Script.java:565)
at dk.hkj.script.Script.parseQuestionMark(Script.java:591)
at dk.hkj.script.Script.parseExpression(Script.java:616)
at dk.hkj.script.Script.statementVar(Script.java:941)
at dk.hkj.script.Script.statement(Script.java:1065)
at dk.hkj.script.Script.doExecute(Script.java:1254)
at dk.hkj.script.Script.execute(Script.java:1276)
at dk.hkj.script.Script.execute(Script.java:1282)
at dk.hkj.devices.DeviceSCPIx$TranslatingCommInterface.write(DeviceSCPIx.java:145)
at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:381)
at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:430)
at dk.hkj.main.SCPICommand.write(SCPICommand.java:478)
at dk.hkj.devices.SetupFormats$ComboboxHotField.actionPerformed(SetupFormats.java:4112)
at java.desktop/javax.swing.JComboBox.fireActionEvent(JComboBox.java:1294)
at java.desktop/javax.swing.JComboBox.setSelectedItem(JComboBox.java:619)
at java.desktop/javax.swing.JComboBox.setSelectedIndex(JComboBox.java:654)
at java.desktop/javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:946)
at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:300)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6576)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3404)
at java.desktop/javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:551)
at java.desktop/java.awt.Component.processEvent(Component.java:6341)
at java.desktop/java.awt.Container.processEvent(Container.java:2260)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4958)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2318)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4790)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4917)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4560)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4501)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2304)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2671)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4790)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:725)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:702)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
I send it manually (and it still looks the same):
EnablegetMeasUnit
;; Magnova: Tx <EnablegetMeasUnit>
;; Magnova: Script start
;; Magnova: Script end <>
Then it works fine:
;; Magnova: Tx <MeasType1 HLDuty>
;; Magnova: Script start
;; Magnova: Tx <CHAN1:UNIT?>
;; 192.168.0.40: Tx: <CHAN1:UNIT?.> 43 48 41 4E 31 3A 55 4E 49 54 3F 0A
;; 192.168.0.40: Rx: <V> 56 0A
;; Magnova: Rx <V>
;; Magnova: Script end <>
;; Magnova: Tx <getMeasType1?>
;; Magnova: Tx <none?>
;; Magnova: Rx <HLDuty>
;; Magnova: Tx <:MEAS:STAT?>
;; 192.168.0.40: Tx: <:MEAS:STAT?.> 3A 4D 45 41 53 3A 53 54 41 54 3F 0A
;; 192.168.0.40: Rx: <ON> 4F 4E 0A
;; Magnova: Rx <ON>
;; Magnova: Tx <DynamicM1?>
;; Magnova: Script start
;; Magnova: Tx <:MEAS:HLDuty:CURR? CHAN1>
;; 192.168.0.40: Tx: <:MEAS:HLDuty:CURR? CHAN1.> 3A 4D 45 41 53 3A 48 4C 44 75 74 79 3A 43 55 52 52 3F 20 43 48 41 4E 31 0A
;; 192.168.0.40: Rx: <0.501702610403> 30 2E 35 30 31 37 30 32 36 31 30 34 30 33 0A
;; Magnova: Rx <0.501702610403>
;; Magnova: Script end <0.501702610403>
;; Magnova: Rx <0.501702610403>
;; Magnova: Rx as numbers <0.501702610403>
processModeString input: HLDuty1,None,None,None,None,None,None,None
Does the #cmdSetup dialog need to be open before the func is defined? If so, how can I do that? If not that, what do you think is going on there?
Thanks,
Josh