All the values update correctly, but not the units. You can see in the log it combines the values on one line, but ignores the units. I assume that's because of the fxfxfxfxfx?
ETA: To answer my own obvious question, yes. Commenting out the fxfxfxfxfx line shows:
;; Magnova: Rx as numbers <0.6195875 NaN 0.611725 NaN 0.3094 NaN -0.31 NaN 0.21675422826 NaN>It seems this should have worked:
#askModeMathFormat getElement(value,1,"[ ]");
#modeFromValue getElement(value,1,"[ ]");
You are confusing things.
#askMode uses #askModeMathFormat
#getValues uses #modeFromValue
The result from #modeFromValue must match the output from #askMode or #askModeMathFormat if it is used.
Maybe I am, but if so, please show me the correct way. I've tried it a lot of different ways, and nothing works. The best I could get it to do was to switch to Hz (inconsistently), but then it couldn't switch back to V. The variables are always set correctly, but TC doesn't respond as expected.
It would be a lot easier if there was a #modeFromValue type command to simply select the mode from a variable directly. Hmm, #modeFromVariable sounds good. 
You are the first that has needed it.
What difference does that make? This appears to be a new situation. I've looked at every single definition that uses these options. All of them require more effort to get the basic info separated from the device response.
The way it works currently requires me to make a convoluted scheme- increasing processing and resources to force values to be together that have no need to be together, and then force them apart to separate them again to make them useful. Where is the logic or efficiency in that?
My suggestion would be this:
#askMode getMeasUnit1?;getMeasUnit2?;getMeasUnit3?;getMeasUnit4?;getMeasUnit5?
#askValues DynamicM1?;DynamicM2?;DynamicM3?;DynamicM4?;DynamicM5?
#modeFromVariable meas1Unit;meas2Unit;meas3Unit;meas4Unit;meas5Unit#modeFromVariable directly reads the variable, rather than needing to call other commands in series to read them. Simple! This way, there's no need to make a device pretend to behave a way that it doesn't.
So far, I've tried 100 variations of this:
#askMode getMeasUnit1?;getMeasUnit2?;getMeasUnit3?;getMeasUnit4?;getMeasUnit5?
#askValues DynamicM1?;getMeasUnit1?;DynamicM2?;getMeasUnit2?;DynamicM3?;getMeasUnit3?;DynamicM4?;getMeasUnit4?;DynamicM5?;getMeasUnit5?;
#askValuesReadFormat fxfxfxfxfx
#askModeMathFormat getElement(value,1,"[ ]");
#modeFromValue getElement(value,1,"[ ]");I also tried this since you said the responses need to match:
#askMode DynamicM1?;getMeasUnit1?;DynamicM2?;getMeasUnit2?;DynamicM3?;getMeasUnit3?;DynamicM4?;getMeasUnit4?;DynamicM5?;getMeasUnit5?;
#askValues DynamicM1?;getMeasUnit1?;DynamicM2?;getMeasUnit2?;DynamicM3?;getMeasUnit3?;DynamicM4?;getMeasUnit4?;DynamicM5?;getMeasUnit5?;
#askValuesReadFormat fxfxfxfxfx
#askModeMathFormat getElement(value,1,"[ ]");
#modeFromValue getElement(value,1,"[ ]");I've also tried changing DynamicM#? to include the Unit variable, but the results are identical, as I suppose you would expect.
I expect
#askValuesReadFormat fxfxfxfxfx to skip the units, and it does. I also expect
#modeFromValue getElement(value,1,"[ ]"); to skip the value and catch the unit, which it should, but does not.
Every single variable and device control function works as expected. However, I simply can't figure out what's wrong here. If you see it, please show me.
Personally, I think #modeFromVariable would be a great and efficient addition to TC, and I'm sure this won't be the only device to benefit from it.
Thanks,
Josh