EEVblog Electronics Community Forum

Products => Test Equipment => Topic started by: HKJ on March 25, 2020, 10:48:51 am

Title: Program that can log from many multimeters.
Post by: HKJ on March 25, 2020, 10:48:51 am
I have been working on a program that can log from multimeters, electronic loads, power supplies and some other stuff. The program can log, show charts and do math on data from multiple devices simultaneous.
The program works on Windows, Linux and Mac.

(https://lygte-info.dk/pic/Projects/TestController/Screens/Load%20devices.png)

(https://lygte-info.dk/pic/Projects/TestController/Screens/Chart.png)

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/GridPanel2.png)

Read more about it and download it from here: http://lygte-info.dk/project/TestControllerIntro%20UK.html (http://lygte-info.dk/project/TestControllerIntro%20UK.html)

If anybody have ideas about how to log from USB/HID connected meters, please tell. I have played with a Brymen, but it only works on Windows.


My current list of supported devices as of V2.04 are (not all are tested), see list by device function here (https://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html):
APPA 503, APPA 505, APPA 506, APPA 506B, APPA 507, APPA S0, APPA S1, APPA S2, APPA S3, ATorch AT3010, ATorch DL24, ATorch DL24P, ATorch JL24, ATorch JL44, ATorch PX100, ATorch USB, Agilent 34401A, Agilent U1252B, Agilent U1272A, Aim TTi CPX200DP, Aim TTi CPX400DP, Aim TTi CPX400SP, Ametek XG 600-1.4, Ametek XG 80-10.5, Amrel PLA800-60-300, B&K Precision BK8500, B&K Precision BK8502, B&K Precision BK8510, B&K Precision BK8512, B&K Precision BK8514, B&K Precision BK8518, B&K Precision BK8520, B&K Precision BK8522, B&K Precision BK8524, B&K Precision BK8526, BENNING MM12, Benetech GM1020, Brymen BM195, Brymen BM197, Brymen BM251s, Brymen BM252s, Brymen BM255s, Brymen BM257s, Brymen BM357s, Brymen BM521s, Brymen BM525s, Brymen BM821s, Brymen BM822s, Brymen BM827s, Brymen BM829s, Brymen BM867s, Brymen BM869s, CEM DT-1309, Chauvin Arnoux CA 5292, Chauvin Arnoux CA 5292 BT, Chauvin Arnoux CA 5293, Chauvin Arnoux CA 5293 BT, DigiTek DT-9602R+, EZA EZ-735, East Tester ET3240, East Tester ET4401, East Tester ET4402, East Tester ET4410, East Tester ET4501, East Tester ET4502, East Tester ET4510, East Tester ET5410, East Tester ET5420, Electronic Load XY-FZ25, Electronic Load XY-FZ35, Elma BM525s, Elma BM821s, Elma BM829s, Elma BM869s, FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-40M, FeelElec FY6900-50M, FeelElec FY6900-60M, Fluke 187, Fluke 189, Fluke 287, Fluke 289, Fluke 45, Fluke 87, Fluke 8846A, Fluke 89, GW Instek PSW  250-9, GW Instek PSW 160-14.4, GW Instek PSW 160-21.6, GW Instek PSW 160-7.2, GW Instek PSW 250-13.5, GW Instek PSW 250-4.5, GW Instek PSW 30-108, GW Instek PSW 30-36, GW Instek PSW 30-72, GW Instek PSW 80-13.5, GW Instek PSW 80-27, GW Instek PSW 80-40.5, GW Instek PSW 800-1.44, GW Instek PSW 800-2.88, GW Instek PSW 800-4.32, GWInstek GPD-3303S, GWInstek GPP-4323, GWInstek PSM-2010, Gossen M5032, Gossen MetraHit Energy, Greenlee DM-810A, Greenlee DM-820A, Greenlee DM-830A, Greenlee DM-860A, Greenlee DML-430A, HKJ Digitalinput, HKJ Discharger, HKJ SS-Relay, HKJ ThermoAndMore, HKJ ThermoSensor, HP 3478A, HSPY-400-1, Hameg HMP2020, Hewlett-Packard 34401A, Hewlett-Packard 3478A, Hioki DT4281, Hioki DT4282, Itech IT8511+, Itech IT8511A+, Itech IT8511B+, Itech IT8512+, Itech IT8512A+, Itech IT8512B+, Itech IT8512C+, Itech IT8512H+, Itech IT8513C+, Itech IT8514B+, Itech IT8514C+, Itech IT8516C+, Keithley 2000, Keithley 2015, Keithley 2260B-250-13, Keithley 2260B-250-4, Keithley 2260B-250-9, Keithley 2260B-30-108, Keithley 2260B-30-36, Keithley 2260B-30-72, Keithley 2260B-80-13, Keithley 2260B-80-27, Keithley 2260B-80-40, Keithley 2260B-800-1, Keithley 2260B-800-2, Keithley 2260B-800-4, Keithley 2280S-32-6, Keithley DMM6500, Keithley DMM7510, Keysight 34461A, Keysight 34465A, Keysight 34470A, Keysight DS0X2012A, Keysight DS0X2014A, Keysight DS0X2214A, Keysight U1213A, Keysight U1231A, Keysight U1232A, Keysight U1233A, Keysight U1241C, Keysight U1251A, Keysight U1252A, Keysight U1252B, Keysight U1253A, Keysight U1271A, Keysight U1272A, Keysight U1273A, Keysight U1273AX, Keysight U1281A, Keysight U1282A, Keysight U1461A, Kollmorgen AKD1G Servo, Kollmorgen AKD2G Dual Servo, Kollmorgen AKD2G Single Servo, Korad KA3003P, Korad KA3005P, Korad KA3010P, Korad KA6002P, Korad KA6003P, Korad KA6005P, Korad KD3005P, Korad KD6005P, Korad KEL102, Korad KEL103, Kunkin KP184, Kunkin KP184 V4, Kunkin KP184 V4+, Mastech MS8040, Mastech MS8218, Maynuo M9710, Maynuo M9711, Maynuo M9712, Maynuo M9712B, Maynuo M9712B30, Maynuo M9712C, Maynuo M9713, Maynuo M9713B, Maynuo M9714, Maynuo M9714B, Maynuo M9715, Maynuo M9715B, Maynuo M9716, Maynuo M9716B, Maynuo M9716E, Maynuo M9716L, Maynuo M9716SL, Maynuo M9716SL800, Maynuo M9717, Maynuo M9717B, Maynuo M9717C, Maynuo M9717D, Maynuo M9718, Maynuo M9718B, Maynuo M9718D, Maynuo M9718E, Maynuo M9718F, Maynuo M9718F-500, Maynuo M97834, Maynuo M9811, Maynuo M9812, Maynuo M9812B, Maynuo M9815F-300, Maynuo M9818B, Maynuo M9834B, Maynuo M9834H, Maynuo M9835, Maynuo M9835B, Maynuo M9835C, Maynuo M9836, Maynuo M9836B, Maynuo M9836B-720, Maynuo M9836C, Maynuo M9836E, Maynuo M9836F, Maynuo M9836H, Maynuo M9837, Maynuo M9837B, Maynuo M9838, Maynuo M9838B, Maynuo M9839, Maynuo M9839B, Maynuo M9840, Maynuo M9840B, Maynuo M9912D, Metrix MTX3281, Metrix MTX3282, Metrix MTX3291, Metrix MTX3292, Metrix MTX3292B, Metrix MTX3292B BT, Metrix MTX3293B, Metrix MTX3293B BT, MultiComp Pro MP710259, Multicomp Pro MP710258, Owon ODP3033, Owon ODP3063, Owon ODP6033, Owon XDM3041, Peaktech 2025, ProsKit MT-1820, Protek 506, R&S HMC8012, R&S HMC8043, R&S HMO1022, R&S HMP2020, R&S NGE102, R&S NGE102B, RND KA3005P, RND KEL102 V2.20, RND KEL103, RND KEL103v2, Riden RD6006, Riden RD6012, Rigol DG811, Rigol DG812, Rigol DG821, Rigol DG822, Rigol DG831, Rigol DG832, Rigol DG952, Rigol DG972, Rigol DG992, Rigol DL3021, Rigol DL3021A, Rigol DL3031, Rigol DL3031A, Rigol DM3058, Rigol DM3058E, Rigol DM3068, Rigol DP811A, Ruoshui VC4090A, Ruoshui VC4090B, Ruoshui VC4090C, Ruoshui VC4091A, Ruoshui VC4091B, Ruoshui VC4091C, Sanwa PC7000, Siglent SDG1032X, Siglent SDG1062X, Siglent SDG2042X, Siglent SDG2082X, Siglent SDG2122X, Siglent SDG6022X, Siglent SDG6032X, Siglent SDG6052X, Siglent SDL1020, Siglent SDL1020X, Siglent SDL1020X-E, Siglent SDL1030, Siglent SDL1030X, Siglent SDL1030X-E, Siglent SDM3045X, Siglent SDM3055, Siglent SDM3065X, Siglent SDS1052A, Siglent SDS1052DL+, Siglent SDS1072A, Siglent SDS1072CFL, Siglent SDS1072X-E, Siglent SDS1074CFL, Siglent SDS1074X-E, Siglent SDS1102A, Siglent SDS1102CFL, Siglent SDS1102CML+, Siglent SDS1102X, Siglent SDS1102X+, Siglent SDS1102X-C, Siglent SDS1102X-E, Siglent SDS1104CFL, Siglent SDS1104X-C, Siglent SDS1104X-E, Siglent SDS1122E+, Siglent SDS1152A, Siglent SDS1152CML+, Siglent SDS1202CFL, Siglent SDS1202F+, Siglent SDS1202X, Siglent SDS1202X+, Siglent SDS1202X-C, Siglent SDS1202X-E, Siglent SDS1204CFL, Siglent SDS1204X-C, Siglent SDS1204X-E, Siglent SDS1302CFL, Siglent SDS1304CFL, Siglent SDS2072, Siglent SDS2072X, Siglent SDS2074, Siglent SDS2074X, Siglent SDS2102, Siglent SDS2102X, Siglent SDS2102X-E, Siglent SDS2104, Siglent SDS2104X, Siglent SDS2202, Siglent SDS2202X, Siglent SDS2202X-E, Siglent SDS2204, Siglent SDS2204X, Siglent SDS2302, Siglent SDS2302X, Siglent SDS2304, Siglent SDS2304X, Siglent SDS2352X-E, Siglent SPD1168X, Siglent SPD1305X, Siglent SPD3303X, Siglent SPD3303X-E, Soundcard input, Soundcard output, SparkFun 70C, Stamos S-LS-60, TTI QL355P_B, TTI QL355P_C, TTi 1908, TTi CPX200DP, TTi CPX200P, TTi CPX400DP, TTi QL355P_A, TTi QPX1200SP, Tektronix DPO3012 TekScope, Tektronix DPO3014 TekScope, Tektronix DPO3032 TekScope, Tektronix DPO3034 TekScope, Tektronix DPO3052 TekScope, Tektronix DPO3054 TekScope, Tektronix MDO3012 TekScope, Tektronix MDO3014 TekScope, Tektronix MDO3022 TekScope, Tektronix MDO3024 TekScope, Tektronix MDO3032 TekScope, Tektronix MDO3034 TekScope, Tektronix MDO3052 TekScope, Tektronix MDO3054 TekScope, Tektronix MDO3102 TekScope, Tektronix MDO3104 TekScope, Tektronix MDO4024 TekScope, Tektronix MDO4034 TekScope, Tektronix MDO4054 TekScope, Tektronix MDO4104 TekScope, Tektronix MSO3012 TekScope, Tektronix MSO3014 TekScope, Tektronix MSO3032 TekScope, Tektronix MSO3034 TekScope, Tektronix MSO3054 TekScope, Tektronix TDS3012C TekScope, Tektronix TDS3014C TekScope, Tektronix TDS3032C TekScope, Tektronix TDS3034C TekScope, Tektronix TDS3052C TekScope, Tektronix TDS3054C TekScope, Tenma 72-13200, Tenma 72-13210, Tenma 72-2531, Tenma 72-2535, Tenma 72-2540, Tenma 72-2550, Tenma 72-6685A, Tenma 72-7730, Tenma 72-7732, Tenma 72-9380A, Thurlby-thandar TF930, UNI-T UT382, UNI-T UT60A, UNI-T UT60D, UNI-T UT61B, UNI-T UT61C, UNI-T UT61D, UNI-T UT61E, UNI-T UT71A, UNI-T UT71B, UNI-T UT71C, UNI-T UT71D, UNI-T UT71E, Vici VC8145, Victor 70C, Victor 86C, VirtualBatteryGenerator, VirtualLogGenerator, VirtualPatternGenerator, VirtualRampGenerator, VirtualSinusGenerator, VirtualSquareGenerator, VirtualUserGenerator, Voltcraft VC-920, Voltcraft VC-940 COM, Voltcraft VC-960, Voltcraft VC850, Yokogawa WT3000


Oscilloscopes are only supported as voltmeters.
Title: Re: Program that can log from many multimeters.
Post by: maukka on March 25, 2020, 05:04:50 pm
I already commented on BLF, but 34401A support would be appreciated as well!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 25, 2020, 05:11:05 pm
I already commented on BLF, but 34401A support would be appreciated as well!

A have answered on BLF.
Title: Re: Program that can log from many multimeters.
Post by: coromonadalix on March 25, 2020, 05:13:40 pm
+1 for 34401a

uh  what BLF ??  where ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 25, 2020, 05:23:15 pm
Many SCPI devices can fairly easy be added to the software by anybody, but I have not written the documentation for it yet.
It is, of course, possible to check my definitions and use them as basis for a new definition.
What I suggested on BLF was to use the 34465A definition as basis.

If somebody makes some good definitions for equipment, please mail it to me and I will include it with the software. There is a trick with the definitions to make many similar ones, I use it with the electronic loads and some multimeters (In reality I only have two Keysight multimeter definitions, all my other Keysight multimeters used on or the other of these two protocols).

The BLF is budgetlightforum and my posting is here: http://budgetlightforum.com/node/72218 (http://budgetlightforum.com/node/72218)
Title: Re: Program that can log from many multimeters.
Post by: PKTKS on March 25, 2020, 05:25:11 pm
I have been working on a program that can log from multimeters, electronic loads, power supplies and some other stuff.

It is still an alpha version, but it works fairly well. I am interested in comments, ideas and error reports.
(..)

If you want to go serious on that check sigrok code base

95% of the grunt work is done like error handling
and protocol handling including multiple paths and sessions.
https://sigrok.org/wiki/Supported_hardware

Not so hard to do but hard to jump in easily.

After the learning curve things are just on other level
of functionality (i've been there as well )

Paul
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 25, 2020, 05:51:12 pm
If you want to go serious on that check sigrok code base

95% of the grunt work is done like error handling
and protocol handling including multiple paths and sessions.
https://sigrok.org/wiki/Supported_hardware

Not so hard to do but hard to jump in easily.

After the learning curve things are just on other level
of functionality (i've been there as well )

I am not that impressed with the amount of equipment they support and they uses the wrong language.
What I need is logging from all my equipment and a easy way to switch between different brands of equipment. With the current software I have been logging from 10 devices simultaneous to the same table and chart with 1 seconds intervals.



Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 25, 2020, 06:26:04 pm
Maybe it is a bit hard to start with the program, the way to get devices(multimeters) into the program is rather discrete.

At the bottom of the "Load devices" page, use this:

(https://lygte-info.dk/pic/Projects/TestController/Screens/SelectDevice.png)

To select and added devices.


I have added a popup on the "Load devices" page that says to use combox and add button, it will only show it the page is empty.
Title: Re: Program that can log from many multimeters.
Post by: PKTKS on March 26, 2020, 10:27:42 am
I am not that impressed with the amount of equipment they support and they uses the wrong language.
What I need is logging from all my equipment and a easy way to switch between different brands of equipment. With the current software I have been logging from 10 devices simultaneous to the same table and chart with 1 seconds intervals.

Not sure if helps but the amount of hardware is bounded
just by the proper interface with the API.

The API itself is *quite good*.. 

While doing some checks against my own widget toolkit
it took me about 5 to 7 days to craft those simple tools...

A fully functional DMM applet
and  a fully function  SCOPE / FUNC.gen with channel modulators...

ALL GTK BASED  compiled against libsigrok.

Hard to start on the API but once managed... it is good

These ARE JUST MY TOYS... not serious things just tests.

minor shots below.

Paul
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 26, 2020, 01:40:26 pm
I have written a short description on how to add a SCPI multimeter:

http://lygte-info.dk/project/TestControllerConfigDMM%20UK.html (http://lygte-info.dk/project/TestControllerConfigDMM%20UK.html)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 27, 2020, 10:49:55 am
A description on how to use simple scripting: https://lygte-info.dk/project/TestControllerScriptingExample%20UK.html (https://lygte-info.dk/project/TestControllerScriptingExample%20UK.html)

I have also added the Siglent SDM3045X bench multimeter.
Title: Re: Program that can log from many multimeters.
Post by: Svgeesus on March 29, 2020, 05:55:09 am
Hi, Interesting software.

> Type in serial port or IP address and for some devices a baudrate.

Does that include USB serial connections? In other words can I connect over USB? Instrument is a Keysight 34465A.

I'm asking before I go ahead and install Java on this machine, which doesn't have it. I also don't have ethernet, so prefer to use USB if possible.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 29, 2020, 06:27:23 am
If the USB interface creates a virtual serial port it will work. I have only used 34465A with a socket connection and you cannot select serial port for it, but if you checkmark the "Scan serial port" it might work. (The scanning function will check against all devices ignoring the specified connection type).
Title: Re: Program that can log from many multimeters.
Post by: artag on March 29, 2020, 02:16:39 pm
+1 for 34401a

Sigrok supports 34401a to some extent
Title: Re: Program that can log from many multimeters.
Post by: maukka on March 30, 2020, 07:02:00 am
Thanks for all the work!

I've been logging for 24 hours straight and this thing is rock solid. Haven't gotten the delay commands (http://budgetlightforum.com/comment/1641070#comment-1641070) to work yet so switching the operating mode isn't happening for me.

(https://i.imgur.com/CYTQu8f.png)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on March 30, 2020, 07:56:39 am
Just testing a bit.
"Voltcraft VC-940" should read "Voltcraft VC-940 COM"
since Voltcraft VC-940 USB HID is not supported. Helps to avoid confusion as to the two different interfaces.

Sometimes a second instance of the program needs to be started to fill "Search socket" with the equipment list.

dB mode of the 34465A is not supported (yet).
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on March 30, 2020, 08:38:05 am
I attempted to load a CSV from my own logging program just to check yours out and for some reason it truncates all readings to 2 digits. Even after setting it to 8 digits for those columns it doesn't update even when reloading the same CSV again. I'm assuming it refuses to plot those numbers since they look the same once loaded due to the truncated decimal digits.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 08:48:55 am
Just testing a bit.
"Voltcraft VC-940" should read "Voltcraft VC-940 COM"
since Voltcraft VC-940 USB HID is not supported. Helps to avoid confusion as to the two different interfaces.

That might be a good idea.

Sometimes a second instance of the program needs to be started to fill "Search socket" with the equipment list.

Strange, it only loads a directory, I wonder hot it can fail.

dB mode of the 34465A is not supported (yet).

It is not a native measurement mode, but a calculation (I may look at it at some point).
It is always possible to add dB or dBm to any measurement by using the Math functions. It has log() for 10 based logarithmic and ln() for e based logarithmic.

Title: Re: Program that can log from many multimeters.
Post by: MegaVolt on March 30, 2020, 08:59:41 am
I launched the program for DMM7510. I managed to connect. But I did not understand what I need to click next to get some kind of graph or where to find the range control, etc.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 09:02:05 am
I attempted to load a CSV from my own logging program just to check yours out and for some reason it truncates all readings to 2 digits. Even after setting it to 8 digits for those columns it doesn't update even when reloading the same CSV again. I'm assuming it refuses to plot those numbers since they look the same once loaded due to the truncated decimal digits.

The decimal settings are only for scales on the charts. Generally it will match column names to its internal list of devices and if there is a match it will use the decimal settings for that column, when not it uses 2 decimals.

Internally it will always use the full resolution (All storing and calculations are done with double precision).

Maybe I need to add a configuration for decimals on unknown columns.

The problem with plotting the columns are due to the spaces in the column names. I will do something about it.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 09:11:16 am
I launched the program for DMM7510. I managed to connect. But I did not understand what I need to click next to get some kind of graph or where to find the range control, etc.

For bench DMM's you only have a mode button that can select between modes (VDC/VAC/ADC/etc), it do not do more detailed settings, there you have to type SCPI commands (They can be assigned to hotkeys).
Before you can do anything with a device it must be selected. When starting the program it will automatically select one device, but when using "Reload" it will not. To select a device right click left of the command line, near the colon.

To get data for charts you have to do some logging, press the "log" button and select a time interval, after a few seconds the chart, histogram and range pages will be available.
Without logging you can only see data from the meters on the "Current values" page.

Title: Re: Program that can log from many multimeters.
Post by: MegaVolt on March 30, 2020, 09:13:13 am
The choice of ranges and modes was not available. Does this mean that I did not connect correctly?
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on March 30, 2020, 09:14:43 am
Got it, replaced the space with an underscore(odd limitation, usually for CSV's I pull the entire string between delimiters). Still can't use the plotting for readings however. When I range limit to the min/max of real readings I get no plot just the scale, and obviously when I let it auto it's just a straight line at the top of the graph. Alternatively I'm not sure auto min. range and auto bottom step are meant to do. I feel the results I'm getting are a bit random.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 09:15:41 am
The choice of ranges and modes was not available. Does this mean that I did not connect correctly?

It list all connected devices in the bottom window, it is is there it is connected.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 12:32:45 pm
Got it, replaced the space with an underscore(odd limitation, usually for CSV's I pull the entire string between delimiters).

This is because the column names are variable names when you do math. I have modified it to accept spaces and then automatic replace them with _ when creating variables (New version will be uploaded later today).

Still can't use the plotting for readings however. When I range limit to the min/max of real readings I get no plot just the scale, and obviously when I let it auto it's just a straight line at the top of the graph. Alternatively I'm not sure auto min. range and auto bottom step are meant to do. I feel the results I'm getting are a bit random.

When Auto is checked Minimum/Maximum is ignored.
These 3 setting is only active when auto is checked:
Auto includes zero means that auto scales will include a 0 value, this will block for seeing small changes in a large value.
Auto min. range defines the minium span that can be used on a chart (in auto), this is used to avoid amplifying noise to fill a full chart height.
Auto bottom step is the step size for the bottom of the scale (0 is legal), this can be used to make scales align.

Title: Re: Program that can log from many multimeters.
Post by: TK on March 30, 2020, 12:51:49 pm
Is there a plan to add oscilloscopes to the list of supported devices?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 01:01:42 pm
Is there a plan to add oscilloscopes to the list of supported devices?

I do not see the point in oscilloscope support for this program.
The program is designed for "slow" logging of values, oscilloscopes are designed for sampling in the MHz range (More or less).
This program will be able to log a couple of devices for weeks (At lower sampling rates or there will be memory problems).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 02:14:06 pm
A update was uploaded (V0.15), it fixes the issue with spaces in column names and a few other minor details.
Title: Re: Program that can log from many multimeters.
Post by: TK on March 30, 2020, 02:16:08 pm
Is there a plan to add oscilloscopes to the list of supported devices?

I do not see the point in oscilloscope support for this program.
The program is designed for "slow" logging of values, oscilloscopes are designed for sampling in the MHz range (More or less).
This program will be able to log a couple of devices for weeks (At lower sampling rates or there will be memory problems).
You can still do slow logging from an oscilloscope.  I think there are more oscilloscopes on hobbyist benches than benchtop multimeters
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 03:34:28 pm
You can still do slow logging from an oscilloscope.  I think there are more oscilloscopes on hobbyist benches than benchtop multimeters

I do also support some handheld multimeters.
Next point is that I do not have that many scopes to work with, but if some people want to make configurations for logging with scopes, they are welcome.
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on March 30, 2020, 06:48:13 pm
Got it, replaced the space with an underscore(odd limitation, usually for CSV's I pull the entire string between delimiters).

This is because the column names are variable names when you do math. I have modified it to accept spaces and then automatic replace them with _ when creating variables (New version will be uploaded later today).

Still can't use the plotting for readings however. When I range limit to the min/max of real readings I get no plot just the scale, and obviously when I let it auto it's just a straight line at the top of the graph. Alternatively I'm not sure auto min. range and auto bottom step are meant to do. I feel the results I'm getting are a bit random.

When Auto is checked Minimum/Maximum is ignored.
These 3 setting is only active when auto is checked:
Auto includes zero means that auto scales will include a 0 value, this will block for seeing small changes in a large value.
Auto min. range defines the minium span that can be used on a chart (in auto), this is used to avoid amplifying noise to fill a full chart height.
Auto bottom step is the step size for the bottom of the scale (0 is legal), this can be used to make scales align.

I assumed when Auto was checked min/max did nothing. I'm not sure what changed but I was able to get it to plot the readings even setting full scale to 10uV. This wasn't the case yesterday. I'd still prefer values not be truncated though. For data sets I'd like to see every decimal point I type or that is recorded. When trying to set min/max I have to recall what the old value was when it rounds to 7.157 and I actually typed 7.15664 and need to change it to 7.15665. I'd also recommend adding a UI scale slider in config, or wherever you think is best, so that you don't have to worry about the DPI issues. Or do the math and have it scale at startup(my preferred method). Mostly looks good though. Perhaps add some hover tooltips for things which may not be obvious to those that didn't write the program.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 07:56:10 pm
I assumed when Auto was checked min/max did nothing. I'm not sure what changed but I was able to get it to plot the readings even setting full scale to 10uV. This wasn't the case yesterday. I'd still prefer values not be truncated though. For data sets I'd like to see every decimal point I type or that is recorded. When trying to set min/max I have to recall what the old value was when it rounds to 7.157 and I actually typed 7.15664 and need to change it to 7.15665.

In the "scales for chart" page I used a Java default, I have changed that now to use between 0 and 8 decimals as necessary.
In table I have added a right click menu that can adjust number of decimals for each column, this will also affect range page
The new version (0.16) will probably be uploaded tomorrow.

I'd also recommend adding a UI scale slider in config, or wherever you think is best, so that you don't have to worry about the DPI issues. Or do the math and have it scale at startup(my preferred method). Mostly looks good though. Perhaps add some hover tooltips for things which may not be obvious to those that didn't write the program.

I am missing some scaling depending on font size, I believe everything else scales fairly well.
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on March 30, 2020, 07:58:32 pm
On my 17" 4k monitor scaling is good. On my 28" 4k monitor... Not so much.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 08:10:52 pm
On my 17" 4k monitor scaling is good. On my 28" 4k monitor... Not so much.

At first glance I would say scaling looks fairly on the posted image (Command line could be better).
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on March 30, 2020, 08:22:12 pm
Well if that's what you were going for then I guess it's not a problem.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2020, 08:43:39 pm
Well if that's what you were going for then I guess it's not a problem.

I would prefer font size is adjusted depending on DPI and that the useful areas get larger when possible.
But for now the software cannot handle changing font size very well.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on March 31, 2020, 12:34:21 am
HKJ,

You mention that you added Siglent SDM3045X but I do not see it in the device list. I have a SDM3065X and I was going to see if it works for it.

Thanks
Mike
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 05:16:06 am
HKJ,

You mention that you added Siglent SDM3045X but I do not see it in the device list. I have a SDM3065X and I was going to see if it works for it.


I forgot to copy the file to the zip file, it will be included in the next update.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on March 31, 2020, 07:51:13 am
Logging stalled twice after 18  minutes and after 26 minutes. Had to use the task manager to exit the prog. loosing all (test)data. Now changed to a laptop. Same prob. there stalling after 16 minutes. When stalled, changing from chart to histogram and back is slow as molasses. Needing some 30 s or so each time. Hitting save a takes ages until the "Save chart" windows appears. In the mean time the chart was actually updated after 4 further minutes while waiting for the program allowing me to enter file name. When stalled, Java task is running at some 30 % processor capacity.
Computers: AMDFX-4100 running W10 32 bit and AMD A10-7300 running W10 64 bit with all the latest updates Java at Version 8 Update 241.   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 08:07:29 am
What devices where you logging from, a lost connection to a device could stall it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on March 31, 2020, 08:12:52 am
Logging a 34465A via LAN. Other logging progs including my own one based on Profilab, work without any problems with the 34465A. Seems to be a Java specific problem.

Windows logs the following error message upon stalling:

Protokollname: Application
Quelle:        Application Hang
Datum:         31.03.2020 08:48:08
Ereignis-ID:   1002
Aufgabenkategorie:(101)
Ebene:         Fehler
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Computer:      PC52
Beschreibung:
Das Programm javaw.exe Version 8.0.2410.7 hat die Interaktion mit Windows beendet und wurde geschlossen. Überprüfen Sie den Problemverlauf in der Systemsteuerung "Sicherheit und Wartung", um nach weiteren Informationen zum Problem zu suchen.
 Prozess-ID: ab8
 Startzeit: 01d60720f5ecd6aa
 Beendigungszeit: 4294967295
 Anwendungspfad: C:\Program Files\Common Files\Oracle\Java\javapath_target_11213328\javaw.exe
 Bericht-ID: 4ae8df29-68f3-4fd9-8113-e739342920fc
 Vollständiger Name des fehlerhaften Pakets:
 Relative Anwendungs-ID des fehlerhaften Pakets:
 Absturztyp: Top level window is idle

Ereignis-XML:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Hang" />
    <EventID Qualifiers="0">1002</EventID>
    <Level>2</Level>
    <Task>101</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2020-03-31T06:48:08.544016500Z" />
    <EventRecordID>14354</EventRecordID>
    <Channel>Application</Channel>
    <Computer>PC52</Computer>
    <Security />
  </System>
  <EventData>
    <Data>javaw.exe</Data>
    <Data>8.0.2410.7</Data>
    <Data>ab8</Data>
    <Data>01d60720f5ecd6aa</Data>
    <Data>4294967295</Data>
    <Data>C:\Program Files\Common Files\Oracle\Java\javapath_target_11213328\javaw.exe</Data>
    <Data>4ae8df29-68f3-4fd9-8113-e739342920fc</Data>
    <Data>
    </Data>
    <Data>
    </Data>
    <Data>Top level window is idle</Data>
    <Binary>54006F00700020006C006500760065006C002000770069006E0064006F0077002000690073002000690064006C00650000000000</Binary>
  </EventData>
</Event>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 08:43:26 am
I have not seen any problems with the 34465A, I need to do some testing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 08:59:36 am
One way to force the problem is to start a second instance of the program, it will steal the meter from the first instance and the first instance will lockup like you describe.
Because all instances uses the same configuration and will connect when starting, it will happen when starting a second instance.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on March 31, 2020, 02:06:24 pm
Running one instance on both puters. Loading the list on No.1 takes a bit. Pressing "reconnect" seems to nudge the search socket message. Anyway must leave things as they are for the moment, but will be watching this space. Thanks for your effort. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 02:42:44 pm
Running one instance on both puters. Loading the list on No.1 takes a bit. Pressing "reconnect" seems to nudge the search socket message. Anyway must leave things as they are for the moment, but will be watching this space. Thanks for your effort. :-+

Any device that tries to connect to the 34465A while logging will freeze the program, this will not happen from the next update.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on March 31, 2020, 02:53:09 pm
Still at it. :palm: Relaxed the logging interval a bit
from 1 s to 10 s. Now at 40 minutes and still going strong. 8)
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on March 31, 2020, 02:56:55 pm
Just tried the program on my OSX system, with a Keysight 34465 and so far looks good  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 03:08:44 pm
Still at it. :palm: Relaxed the logging interval a bit
from 1 s to 10 s. Now at 40 minutes and still going strong. 8)

With another Java program I have been logging from Keysight meters (Mostly 34461A) for weeks and never seen a problem, always with about 1 second logging interval.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2020, 03:17:45 pm
Next version is up (V0.16), changes are:
Logging will add a entry at 0 seconds
On "Scales for chart" page the auto checkbox will change visible settings and they can show many more decimals now.
In the table page it is possible to right click and adjust decimals for a column, this will also affect the range page.
Missing data 5 times in a row from a socket device will close the connection, not hang the program.
Scalable fonts, this still has a few issues, slider on configuration page.
The /h slope option now work.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 01, 2020, 01:29:25 pm
Last version had a serious problem, it locked up and could use a lot of memory and CPU.
This is hopefully fixed now, I did a trial run with the 3 virtual generators and 0.01 second logging interval with the chart page visible, my CPU usage was 3% (This include everything running on the computer).
I have also fixed a lot of details that occurred due to the scaleable fonts.

The version is 0.17.

If this version works without serious problems it will be some time before I upload a new version again.

If people make definition for some other SCPI equipment I am very interested in a copy of the file to include with the software, use the #author" tag to add credit to the about page.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 02, 2020, 01:18:16 pm
Now at 017 and all is well. :-+
Been logging my 34465A at 1s intervals for about 6 hours now. 8)

Pity that you could not include any of the Voltcraft meters with USB HID adapter in your list of meters. Must see if i can get a serial PCIe card going with Windows 10 and use the serial adapter.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 02, 2020, 01:40:34 pm
Pity that you could not include any of the Voltcraft meters with USB HID adapter in your list of meters. Must see if i can get a serial PCIe card going with Windows 10 and use the serial adapter.

Why not a USB serial port?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 02, 2020, 02:21:58 pm
Why not a USB serial port?

Brain fart on my side  |O Will have to use an USB serial port anyway
since all 3 PCI and 1 PCIe slot are already occupied
+ planning to use a laptop for logging too :palm:

Toddles off to hunt down an USB serial port adapter
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 05, 2020, 11:09:19 am
New update V0.23, this includes some updates based on user input. It also includes a debug function to easier see the device communication.
Use:
#debug device      - this will list the items that can be debugged
#debug device item - this will set debug status for a device (It is possible to list multiple devices).
To see the initial connection use a device called *idn

I have written a document describing the format of the device configuration files: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html) there is a link to it from the introduction document.


Title: Re: Program that can log from many multimeters.
Post by: maukka on April 05, 2020, 02:50:03 pm
I made a config file for the HP 34401A (https://pastebin.com/0sWAgGA3) and Rigol DP811A (https://pastebin.com/4tMEyYV5) if someone wants to try them out and iron out any (all) problems.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 05, 2020, 02:59:28 pm
I made a config file for the HP 34401A (https://pastebin.com/0sWAgGA3) and Rigol DP811A (https://pastebin.com/4tMEyYV5) if someone wants to try them out and iron out any (all) problems.

I have copied them into the release directory, this means they will be included with the next version.

I saw one bug, you had place the #author tag outside the actual definition (on 34401) where it will not work, I have moved it inside.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 06, 2020, 01:18:46 am
HKJ,

Attached is a config file for the Siglent SDM3065X
[attachurl=1]
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 03:40:50 am
This program is what I have been looking for for years! Thank you so much for your hard work, I have a Rigol dm3054e and just want to be able to data log, I've been doing a bit of reading on your page and whilst I don't fully understand it I'm going to try and have ago to make a config file. Hopefully I'm successful and can contribute it back :)
Title: Re: Program that can log from many multimeters.
Post by: IanB on April 06, 2020, 04:25:58 am
If anybody have ideas about how to log from USB/HID connected meters, please tell. I have played with a Brymen, but it did not work (I did never get any data). Maybe there is more than one error in their documentation.

I successfully wrote a test program that could log data from a BM869s which uses a USB/HID interface (no virtual COM port).

I discovered the difficulty was not with the Brymen documentation, but rather with learning how to interface to an HID device. It is nothing like as simple as interfacing to a COM port. I may be able to send you some example code if it would help. However you seem to be working in Java and I was experimenting in native Windows, so my example would only serve to illustrate the basic idea of enumerating the devices and reading data. The actual code would look quite different in Linux for example, and I don't know how it would look in Java.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 04:41:22 am
HKJ,

Attached is a config file for the Siglent SDM3065X
(Attachment Link)

Thanks, it will be included in the next software update.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 04:42:04 am
This program is what I have been looking for for years! Thank you so much for your hard work, I have a Rigol dm3054e and just want to be able to data log, I've been doing a bit of reading on your page and whilst I don't fully understand it I'm going to try and have ago to make a config file. Hopefully I'm successful and can contribute it back :)

You can always ask me for specific details.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 04:50:54 am
If anybody have ideas about how to log from USB/HID connected meters, please tell. I have played with a Brymen, but it did not work (I did never get any data). Maybe there is more than one error in their documentation.

I successfully wrote a test program that could log data from a BM869s which uses a USB/HID interface (no virtual COM port).

I discovered the difficulty was not with the Brymen documentation, but rather with learning how to interface to an HID device. It is nothing like as simple as interfacing to a COM port. I may be able to send you some example code if it would help. However you seem to be working in Java and I was experimenting in native Windows, so my example would only serve to illustrate the basic idea of enumerating the devices and reading data. The actual code would look quite different in Linux for example, and I don't know how it would look in Java.


I used something called HID4Java when I tried, it is supposed to handle all the low level stuff and it is also supposed to work on multiple platforms.
The Brymen documentation is wrong, they specify vendor id as 0x82, but the meter registers as 0x820.

I have also tried to enumerate devices directly i USB, but I cannot open a USB/HID device.


Title: Re: Program that can log from many multimeters.
Post by: IanB on April 06, 2020, 08:26:41 am
I used something called HID4Java when I tried, it is supposed to handle all the low level stuff and it is also supposed to work on multiple platforms.
The Brymen documentation is wrong, they specify vendor id as 0x82, but the meter registers as 0x820.

I have also tried to enumerate devices directly i USB, but I cannot open a USB/HID device.

I discovered the 0x820 error, but that was no problem. I was testing on a computer with only a few things plugged in, so I quickly noticed the vendor ID was different when I looked at what was listed.

As I recall, trying to use HID protocols with the meter didn't seem to work. What did work was just to open the meter as a file and use read and write operations on it, similar to working with a COM port. I would write the get data command to the meter and read the response it sent back.

I do have example code running under Windows if you would like to see it. Just let me know and I can send it along.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 09:22:15 am
I do have example code running under Windows if you would like to see it. Just let me know and I can send it along.

It may give me some ideas, so yes please.
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 10:35:47 am
My drop down box is empty if I click the filter box then the drop down box I get Search socket only
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 10:43:42 am
My drop down box is empty if I click the filter box then the drop down box I get Search socket only

Then you are probably missing the devices subdirectory:

(http://lygte-info.dk/pic/Projects/TestController/Screens/Files.png)

The TestController consist of two files and a devices subdirectory with all the device definitions.
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 10:49:03 am
Its definitely there very strange, It worked once and then dissapeared
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 10:50:49 am
Definitely have the devices folder and its full
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 11:02:34 am
Its definitely there very strange, It worked once and then dissapeared
I just discovered If I start a LOG 1 sec on the commands page the list becomes full. Strange maybe a little bug?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 11:33:01 am
I just discovered If I start a LOG 1 sec on the commands page the list becomes full. Strange maybe a little bug?

It could sound like a bug.
The list is loaded in the background, this means it may first be loaded a second or two after the user interface is ready. I did that to get the user interface visible as fast as possible, I do not like when starting a program and nothing seams to happen.

You can try waiting a bit before changing to the load devices page and see if that helps.
Title: Re: Program that can log from many multimeters.
Post by: maukka on April 06, 2020, 06:15:05 pm
I'm having the same problem with the device list not loading on another computer. No difference in setup as far as I know. Both using the latest Windows 10 version and JRE. Even the install directory is the same (C:\Documents\TestController).

edit: no amount of waiting seems to help

edit2: seems that's not the only issue on this computer. The program is able to find the meter, but doesn't allow any control. Will have to investigate. Connecting directly via a terminal program works fine. It's just the TestController bugging out.

(https://i.imgur.com/7eVTVna.png)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 06, 2020, 06:29:00 pm
If the device list does not appear upon starting,
clicking on "Reconnect" makes it appear each time
(at least on my old puter) :palm:

Addendum: the connected Bluetooth USB Dongle has created
two COM ports in my case too. Will switch them off tomorrow
to see what happens.
Title: Re: Program that can log from many multimeters.
Post by: maukka on April 06, 2020, 06:31:03 pm
Found the culprit. It was two bluetooth-serial controllers in the device manager. Disabling those solved the issue for me.

(https://i.imgur.com/NlgfnQ3.png)
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 06, 2020, 06:44:07 pm
If the device list does not appear upon starting,
clicking on "Reconnect" makes it appear each time
(at least on my old puter) :palm:

I experience the same problem, however, only with 0.23 - 0.17 was fine.

"Reconnect" does not work - at least for me, but as mentioned above by jord4231 it helps to simply press log, choose a time and voilá the list is there.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 06, 2020, 07:26:20 pm
I have modified the startup code slightly to avoid problems with the combobox not being filled (Update will probably be uploaded tomorrow).
I wonder what the bluetooth ports do, they may delay the serial part of the code a bit, i.e. it will take longer before the background threads reports ready. The screen shoot looks that way, it has found the meter, but not enabled the full user interface yet, this means it is still waiting for the background threads to be finished with all the ports.

If "Scan serial ports" is checked, it will start a thread for each serial port. This thread will do a *idn? and wait some time for an answer, before it quits. When it is not checked it will only start threads for ports where you have specified that there is a device.
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 06, 2020, 08:53:28 pm
I'm not sure what I've done wrong. I've written a config file for the Rigol dm3058e If I probe the TX from my pc com port when I first start the software I get a burst of serial data that is identical to sending a *IDN command from my ultra sigma but thats it, pressing reconnect does not or any other buttons I still have no serial data coming out again (I've got the scope set to single trigger on the tx to view it)

My meter goes in to remote mode when it sees that first burst of data but the program does not detect the meter or connect to it. I have my com port set correctly and my Baudrate. I've also disabled all other comports and bluetooth usb devices to be sure

The photo is of the one and only burst of serial data I get

I have also tried maukka s HP 34401A config with my meter set to emulate 34401a and found no difference.
I am able to communicate / read / change modes through ultra sigma so I know its talking.

It also seems to make no difference if I set my meter to "PRINT" except it has a constant data stream coming out of the meter

I'll do a bit more investigation tonight I'm not sure my meter is responding to the command the software first sends it, I'll try a different pc too
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2020, 04:49:13 am
A debug log from TestController would be more useful, then I would know what the program believe it do.

You must write "#debug *idn serial" on the command line in the program and then do a reconnect.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 07, 2020, 05:39:08 am
Running 027. Pulled the Bluetooth dongle --> Corresponding COM ports disappeared.
--> Equipment list now appears immediately upon startup (with scan serial ports enabled). :-+
 
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 08:19:16 am
ok I have typed #debug *idn serial then pressed reconnect still no love. I've also tried a different usb to serial adaptor (although both work in other software with this meter)

I think what is happening is my meter is not quite happy responding to *IDN ....

In the rigol software I need to have \r\n selected in the serial settings for it to respond maybe this has something to do with it? If the meter receives a command it doesn't know it just ignores it
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 07, 2020, 08:46:25 am
It would help to avoid loss of data if the
program would ask "Save data" upon exiting. :horse:
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on April 07, 2020, 08:55:59 am
I have my programs open and close the file for every data point. Let the OS deal with the consequences of that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2020, 09:02:03 am
It would help to avoid loss of data if the
program would ask "Save data" upon exiting. :horse:

It would, but what I plan on it a option to directly log data to disk while collecting them. This would mean that even a crash would preserve data.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2020, 09:08:12 am
V0.24 is up, changes are:
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 09:09:15 am
Ok this is interesting I just pulled my usb to serial left the program running when I plugged it back in this happened
#debug *idn serial
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: timeout
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: timeout
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: timeout
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: timeout

Could it be sending *IDN? then "."  that might be why the meter is not responding to it
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2020, 09:21:10 am
In the rigol software I need to have \r\n selected in the serial settings for it to respond maybe this has something to do with it? If the meter receives a command it doesn't know it just ignores it

Can you check if it need a \r, a \n or \r\n?

Could it be sending *IDN? then "."  that might be why the meter is not responding to it

Look at the hex code, any control char is printed as .
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 09:25:56 am
 :-DD I'm an idiot yes your right I did not even think that was hex next too it bit of a noob sorry
Yeh it requires \r\n for the "end mark" these settings work with ultra sigma
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 09:34:24 am
Update If I turn print on on my meter it shows the value in the RX so the info is coming in. Its just not replying to the *IDN? for some weird reason
;; Start thread for: COM5
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <-2.93634002E-05> 2D 32 2E 39 33 36 33 34 30 30 32 45 2D 30 35
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <-2.93634002E-05> 2D 32 2E 39 33 36 33 34 30 30 32 45 2D 30 35
;; Stopping thread for: COM5
;; Start thread for: COM5 - RIGOL DM3058E
;; Stopping thread for: COM5 - RIGOL DM3058E
Title: Re: Program that can log from many multimeters.
Post by: maginnovision on April 07, 2020, 09:38:12 am
What kind of adapter are you using? Sometimes the USB-rs232 adapters buffer and so you may get some readings before it gets to the *IDN? response. I had this issues with my own programs requiring to read until the buffer was empty.
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 09:43:07 am
I have a cheap usb to rs232 but I've also tried a trimble one both have the same response. It seems like I'm very close now. As showen it can get a reply as in a reading if I have print on however its just not seeing or sending the responce to the IDN? very odd as it does it in the rigol software
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2020, 09:52:45 am
I added a #eol option to the device configuration.

This is V0.25, but only the .jar file. The code is NOT TESTED:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

A:
#eol \r\n
Just below the #port parameter will hopefully work.
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 07, 2020, 10:00:51 am
Awesome, Thank you so much we are connected!!!
I'll Finnish the config file and share it with you.
 
;; Start thread for: COM5 - RIGOL DM3058E
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?..> 2A 49 44 4E 3F 0D 0A
;; COM5: Rx: <Rigol Technologies,DM3058E,DM3R211300363,01.01.00.02.03.01> 52 69 67 6F 6C 20 54 65 63 68 6E 6F 6C 6F 67 69 65 73 2C 44 4D 33 30 35 38 45 2C 44 4D 33 52 32 31 31 33 30 30 33 36 33 2C 30 31 2E 30 31 2E 30 30 2E 30 32 2E 30 33 2E 30 31
;; Found RIGOL DM3058E on USB2.0-Ser! (COM5) sn: DM3R211300363

Thanks again for your help with this :)
Title: Re: Program that can log from many multimeters.
Post by: IanB on April 08, 2020, 08:00:30 pm
I do have example code running under Windows if you would like to see it. Just let me know and I can send it along.

It may give me some ideas, so yes please.

Hi, did you receive my code sample and were you able to see it working?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 08, 2020, 08:48:09 pm
Hi, did you receive my code sample and were you able to see it working?

I did not see the email, but have found it now. I do not have time to play with it the next few days.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 08, 2020, 08:54:26 pm
The command used is different than the documentation:

Documentations says: 0x00 0x00 0x82 0x66
Your code uses: 0x00 0x00 0x86 0x66

That may also be a reason my tests did not work
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 08, 2020, 10:15:58 pm
Adding the Siglent SDM3055 to the device list would be very nice.  :)
Title: Re: Program that can log from many multimeters.
Post by: IanB on April 08, 2020, 10:50:28 pm
The command used is different than the documentation:

Documentations says: 0x00 0x00 0x82 0x66
Your code uses: 0x00 0x00 0x86 0x66

That may also be a reason my tests did not work

Hmm. That either means I had a different version of the documentation, or I screwed up, or that the command doesn't actually matter as long as the meter receives something...  :-\

OK, I found the document. This is what I was working from:

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 08, 2020, 11:47:28 pm
klausES,

Below is a file for Siglent SDM3055 that should work. I do not have the SDM3055 to test it so please try it and let us know if it works.
[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 09, 2020, 05:30:52 am

Hmm. That either means I had a different version of the documentation, or I screwed up, or that the command doesn't actually matter as long as the meter receives something...  :-\

I was not aware the code changes between the meters. I was working with the 525 and looking in that document, now I will have to dig out the 869 before I test more (They use the same USB interface).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 09, 2020, 10:22:33 pm
... I do not have the SDM3055 to test it so please try it and let us know if it works...

It works.

Thanks a lot.  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 05:08:02 am
I will include the above SDM3055 file with the next release.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 10, 2020, 07:28:16 am
Has anybody managed to use a "Keysight U1273A" so far? I use version 0.24.

I have no problem to use a "Fluke 289" or "Agilent U1272A" - anything works fine. The "Keysight U1273A" is also detected immediately, however, when trying to log anything, the table only shows:

 index | time | minute | dateTime ...but no measured value at all? All DMMs are also in the "Remap handles" list with their SN and there is only one DMM enabled.

It is not that essential, but for curiosity I would like to know the reason - any hint is appreciated.


Best wishes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 10:40:27 am
Has anybody managed to use a "Keysight U1273A" so far? I use version 0.24.

I have no problem to use a "Fluke 289" or "Agilent U1272A" - anything works fine. The "Keysight U1273A" is also detected immediately, however, when trying to log anything, the table only shows:

 index | time | minute | dateTime ...but no measured value at all?

It is not that essential, but for curiosity I would like to know the reason - any hint is appreciated.

I added it because I have it working with Agilent U1272A and I assumed the full series used exactly the same protocol.
I have tested with: U1233A, U1272A*, U1281A, U1282A, U1461A and found two different protocols.

When I upload the next version later today try starting it in debug mode and send me the result.

All DMMs are also in the "Remap handles" list with their SN and there is only one DMM enabled.
The remap is only needed when you do not like my handle names. This may happen if you have multiple devices of the same type.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 12:06:10 pm
V0.29 is up.
It got a new way to make the interface wait for devices to process their commands: [*OPC], it can be used between SCPI commands and will wait until all commands before it is processed.
The startup debug mode has been improved a bit, it did not log all communication before.
I have been looking a bit on the interface section and added a test form for them, it is on the "Popups" button. The test form can also generate a configuration script for a device.
I have explained the #interfaceType in the documentation.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 10, 2020, 12:37:56 pm
Whoa! Really nice software!
When i have time i check how to interface it with my fluke 87, korad 3305p, kel103 dc load and maybe other things
Title: Re: Program that can log from many multimeters.
Post by: Jester on April 10, 2020, 02:20:07 pm
Kudos to you  :-+ :-+

Up and running in a blink with a 34401A

The last time I used the Keysight equivalent I needed to install umpteen giga bytes of bloatware and had to call support to get it working.

Thank You
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 10, 2020, 08:12:50 pm
For Fluke 87 (and i think 89) is sufficient to copy the section of the 187 on FlukeDMM18x28x.txt and change the 187 (or 189) with 87 (or 89). Tested working perfectly
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 08:25:08 pm
For Fluke 87 (and i think 89) is sufficient to copy the section of the 187 on FlukeDMM18x28x.txt and change the 187 (or 189) with 87 (or 89). Tested working perfectly

I need somebody to say it works and I will add it to the definition.
I suppose you tested the 87, i.e. added these lines:

#metadef
#idString Fluke,Fluke 87,
#name Fluke 87
#handle F87
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 10, 2020, 08:56:37 pm
HKJ,

Any luck getting the Brymen meters working


Hmm. That either means I had a different version of the documentation, or I screwed up, or that the command doesn't actually matter as long as the meter receives something...  :-\

I was not aware the code changes between the meters. I was working with the 525 and looking in that document, now I will have to dig out the 869 before I test more (They use the same USB interface).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 10, 2020, 08:58:20 pm
This is what i've added:
Code: [Select]
#metadef

#idString Fluke,Fluke 87,
#name Fluke 87
#handle F87
#subDriver 1
#baudrate 9600

100% working on Fluke 87. The 89 is almost the same device so i think that can work only changing to "89" like in 187/189
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 09:10:18 pm
HKJ,

Any luck getting the Brymen meters working

I have not looked at them again with the new information, I will first have time after Easter.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2020, 09:11:13 pm
100% working on Fluke 87. The 89 is almost the same device so i think that can work only changing to "89" like in 187/187

I will include this in the next release.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 11, 2020, 01:26:29 am
Quote from: HKJ

When I upload the next version later today try starting it in debug mode and send me the result.


As I have never done a debug before, this is what I have got with version 0.29...
I turned the rotary switch in both directions, logging any third second (maybe some values are duplicated).

pic.1 = before

During this procedure it suddenly worked (pic.2) and I also had the trendchart graph, so that I also got the measured items in the "Scales for chart" list (pic.3), however, I couldn't repeat this anymore...

;; Found Keysight U1273A on USB-Serial Controller (COM4) sn: MY...

#debug k1273
;; +modeComm +valueComm +otherComm +commHex
;; K1273: Tx <CONF?> 43 4F 4E 46 3F
;; K1273: Rx <"VOLT:AC +3.00000000E+00,+1.00000000E-04"> 22 56 4F 4C 54 3A 41 43 20 2B 33 2E 30 30 30 30 30 30 30 30 45 2B 30 30 2C 2B 31 2E 30 30 30 30 30 30 30 30 45 2D 30 34 22
;; K1273: Rx after :readmath: (value=="\"RES,8\"")?"nS":getElement(unQuote(value),0,",")+getElement(unQuote(value),2,","); <VOLT:AC +3.00000000E+00>

***Unfortunately "SPOILER" does not work?!***  :(

[SPOILER]
;; K1273: Tx <CONF?> 43 4F 4E 46 3F
;; K1273: Rx Timeout
;; K1273: Rx after :readmath: (value=="\"RES,8\"")?"nS":getElement(unQuote(value),0,",")+getElement(unQuote(value),2,","); <>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx Timeout
;; K1273: Rx as numbers <NaN>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx Timeout
;; K1273: Rx as numbers <NaN>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+7.73711000E-03> 2B 37 2E 37 33 37 31 31 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <0.00773711>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+7.15034000E-03> 2B 37 2E 31 35 30 33 34 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <0.00715034>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+2.41845000E-03> 2B 32 2E 34 31 38 34 35 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <0.00241845>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-1.03337000E-03> 2D 31 2E 30 33 33 33 37 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <-0.00103337>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+3.65669000E-04> 2B 33 2E 36 35 36 36 39 30 30 30 45 2D 30 34
;; K1273: Rx as numbers <3.65669E-4>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+4.13511000E-12> 2B 34 2E 31 33 35 31 31 30 30 30 45 2D 31 32
;; K1273: Rx as numbers <4.13511E-12>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-6.36479000E-07> 2D 36 2E 33 36 34 37 39 30 30 30 45 2D 30 37
;; K1273: Rx as numbers <-6.36479E-7>
;; *10
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-6.10228000E-09> 2D 36 2E 31 30 32 32 38 30 30 30 45 2D 30 39
;; K1273: Rx as numbers <-6.10228E-9>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-6.79764000E-09> 2D 36 2E 37 39 37 36 34 30 30 30 45 2D 30 39
;; K1273: Rx as numbers <-6.79764E-9>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-6.16485000E-07> 2D 36 2E 31 36 34 38 35 30 30 30 45 2D 30 37
;; K1273: Rx as numbers <-6.16485E-7>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+7.30545000E-12> 2B 37 2E 33 30 35 34 35 30 30 30 45 2D 31 32
;; K1273: Rx as numbers <7.30545E-12>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+9.90000000E+37> 2B 39 2E 39 30 30 30 30 30 30 30 45 2B 33 37
;; K1273: Rx as numbers <9.9E37>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+4.04093000E-04> 2B 34 2E 30 34 30 39 33 30 30 30 45 2D 30 34
;; K1273: Rx as numbers <4.04093E-4>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <-6.42135000E-04> 2D 36 2E 34 32 31 33 35 30 30 30 45 2D 30 34
;; K1273: Rx as numbers <-6.42135E-4>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+2.25822000E-03> 2B 32 2E 32 35 38 32 32 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <0.00225822>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx <+7.26917000E-03> 2B 37 2E 32 36 39 31 37 30 30 30 45 2D 30 33
;; K1273: Rx as numbers <0.00726917>
;; K1273: Tx <FETC?> 46 45 54 43 3F
;; K1273: Rx Timeout
;; K1273: Rx as numbers <NaN>

[/SPOILER]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 11, 2020, 04:12:07 pm
I believe it is fixed now, it was a very simple problem and it exist in more Keysight/Agilent meters.

Each meter is based on one of two definitions:
#metadef Keysight U1461A
#metadef Agilent U1272A
And I had used the wrong one, because I believed that 1272 & 1273 would use the same protocol.

I did get some time to add a function more, it is in the "Popups" and is a readout of a value that can be placed anywhere on the screen.
(http://lygte-info.dk/pic/Projects/TestController/Screens/Readout.png)
In the above I have placed two of them. It is possible to adjust size, colors, transparency and what value to show. Click and drag on them to move, right click to adjust settings.

Current version is now 0.30.

Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 11, 2020, 05:32:42 pm
Absolutely brilliant!  :-+ Now, anything is perfect with the Keysight model U1273A.

Due to "TestController" the devices achieve another dimension, which the original software from Fluke for example couldn't ever reach!!!
When the quarantine is over, I will send you a paysafecard as a little "Thank you!".

Thank you very much!  :D
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 11, 2020, 06:02:45 pm
Absolutely brilliant!  :-+ Now, anything is perfect with the Keysight model U1273A.

Due to "TestController" the devices achieve another dimension, which the original software from Fluke for example couldn't ever reach!!!

My purpose with the software is to test devices, using my collection of equipment. The software is not ready for that yet, I need to do more with scripting and direct logging to disk.
But I enjoy added functionality, especially when I can do it fairly easy like the last "Readouts" function. If I get more ideas for useful popups I will add them if feasible.

I do not like the Fluke software. I bought it and tried it, then I wrote my own (Fluke software is designed to write reports, not to log). And with Keysight I hate having a licensing server that is always running in the background (It also installs a lot of software).

When the quarantine is over, I will send you a paysafecard as a little "Thank you!".

The easiest way to donate something to me it with paypal. Anyway around her we do not have a hard lock down, but it is effective enough and will start to be relaxed after Easter.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 12, 2020, 12:10:42 am
Sorry for the question, but for multimeters not using scpi commands, there is the need to write a custom driver built into the program?
I was trying to understand how create a config file for a protek 506 but i not fully understand if there is a "programmable parser" for non scpi devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2020, 04:45:50 am
Sorry for the question, but for multimeters not using scpi commands, there is the need to write a custom driver built into the program?

Correct.

I was trying to understand how create a config file for a protek 506 but i not fully understand if there is a "programmable parser" for non scpi devices.

These drivers are fairly specialized for each protocol, the only chance is if the meter uses the same protocol as some meter I have already implemented and there is only a few (See Devices/SimpleDMM.txt). If I get USBHID to work there will be a couple more.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 12, 2020, 09:36:16 am
I've checked some meters on the SimpleDMM file and to me seem that no one is compatible.
I've tought that as the scheme is almost always the same (query/answer, plus some commands specific like Fluke ID) there was the ability to have a "programmable parser" (define fileds, fields positions, eventual math for have the result, measuring units, etc) so that every one can write it's own driver without bothering you. This obviously for 232 devices. Hid devices are totally a different beast.
In any case i attach the photo of the protocol. I've double checked it on actual device.
1200bps 7data bit, 2 stop bit, no parity.
The meter answer the request by a simple chr 13.
The device is a Protek 506
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2020, 09:48:31 am
I've checked some meters on the SimpleDMM file and to me seem that no one is compatible.
I've tought that as the scheme is almost always the same (query/answer, plus some commands specific like Fluke ID) there was the ability to have a "programmable parser" (define fileds, fields positions, eventual math for have the result, measuring units, etc) so that every one can write it's own driver without bothering you. This obviously for 232 devices. Hid devices are totally a different beast.
In any case i attach the photo of the protocol. I've double checked it on actual device.
1200bps 7data bit, 2 stop bit, no parity.
The meter answer the request by a simple chr 13.
The device is a Protek 506

It would not be hard to make a parameter controlled protocol for that type of message (A version of the SCPI code that did not use/require the *IDN? would probably do it), but many meters uses a much worse format. They send the display in binary format, i.e. exactly what segments are turned on in the display, this include the numbers that are send as segments in a 7-segment display.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 12, 2020, 10:00:21 am
Whaaaat  :palm: that's a very strage method of sending data. Maybe for save some processing power of the cpu to not generate the ascii character.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2020, 10:09:05 am
Whaaaat  :palm: that's a very strage method of sending data. Maybe for save some processing power of the cpu to not generate the ascii character.

It is typically meters without a dedicated processor, but with nearly everything in a DMM chip. It is a very cheap way to add a communication option to a DMM chip, no requirement for any extra processing, just a long shift register.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 12, 2020, 10:38:00 am
Those obviously require a dedicated driver. Like the hid ones...
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 12, 2020, 04:30:39 pm
Is it possible to have a (maybe additional) popup window for the "Commands", to put it on a second monitor while watching the "Chart" or "Histogram" on the first one?

Respectively, when having only one monitor, it is probably better to clone the "Commands" at the bottom of "Chart" and "Histogram", so that it is easier to observe the measurement without switching tabs, or even more minimalistically only an additional "Log"-Button would be very nice within the "Chart" and "Histogram" tabs, perhaps somewhere at the bottom behind the "Save" button?!  ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2020, 07:44:14 pm
Those obviously require a dedicated driver. Like the hid ones...

I hope USB/HID will just be an extra communication protocol and not something that really affect the driver or decoding.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2020, 07:47:05 pm
Is it possible to have a (maybe additional) popup window for the "Commands", to put it on a second monitor while watching the "Chart" or "Histogram" on the first one?

Respectively, when having only one monitor, it is probably better to clone the "Commands" at the bottom of "Chart" and "Histogram", so that it is easier to observe the measurement without switching tabs, or even more minimalistically only an additional "Log"-Button would be very nice within the "Chart" and "Histogram" tabs, perhaps somewhere at the bottom behind the "Save" button?!  ;)

I am not sure why you would want that.
If you just want to see the actual measurement, the readout function I added in the last version works fine for that. I can also be used if you are a meter or two from the computer (It can show some fairly large fonts).

Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 12, 2020, 10:33:48 pm
I am not sure why you would want that.
If you just want to see the actual measurement, the readout function I added in the last version works fine for that. I can also be used if you are a meter or two from the computer (It can show some fairly large fonts).

I mainly use "chart" or "histogram". Therefore I have to switch to the "Commands" tab, to start logging and back again to "Chart" to see the graph. Then back to "Commands" to stop logging. When repeating this several times to watch for spikes in my measurement, it would be easier to have the "Log"-Button directly behind the "Save"-Button on "chart" and "histogram", to skip switching the tabs.

By the way, I have a little setup with an old 15" 1024x768 monitor together with a raspberry pi. Therefore I would like to save a custom resolution format. The resolution is changeable, but unfortunately it is not kept till the next start. Is it possible for me, to change the settings to keep the same values 1024 x 768 beneath "custom" resolution for ever. Even after the next start/reboot?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2020, 07:50:03 am
I have added a function to save current screen position and size or cancel it again, in will be included in next release.
I do not like the idea about added any user control interface on other pages, the idea with the pages was to isolate each group of functions on a page. So no promises for now.

I saw a youtube video about testing fuses in a non destructive way by Kerry Wong. I believe that could be done much easier using TestController.
I also did it with a simpler hardware configuration. Kerry used a power supply, a electronic load and a DMM, I only uses a power supply with electronic control of the current limiter.
For testing the fuse is connected directly across the power supply output terminals with short wires.
Then I uses this script in the log window:

#logcmds 0
=var current=0.1
=var ps=getDevice("PS")
=setCurrent(ps,current)
=setVoltage(ps,5)
=setOn(ps,1);
#delay 3
#log 0.5
=var r=readVoltage(ps)/readCurrent(ps);
="Initial resistance: "+r
=var rr=r;
#while (rr<r*1.7);
=current=current*1.02;
=setCurrent(ps,current)
#delay 0.5
=rr=readVoltage(ps)/readCurrent(ps);
="Test current: " + readCurrent(ps)+"   Resistance: "+rr
#endwhile
=setOn(ps,0);
#log 0

Using interface functions (instead of SCPI command) means it is independent of the power supply used.
I got a list of currents and resistances in the log window and it hopefully stops before the fuse blows (Most of the time it did):

;; Initial resistance: 0.16494845360824742
;; Test current: 0.099   Resistance: 0.1616161616161616
;; Test current: 0.101   Resistance: 0.16831683168316833
...
;; Test current: 1.629   Resistance: 0.2658072437077962
;; Test current: 1.66   Resistance: 0.27469879518072293
;; Test current: 1.694   Resistance: 0.2827626918536009

(http://lygte-info.dk/pic/Projects/TestController/ExamplesScriptingEEV/FuseTest1A.png)

And I got a curve (I added a math expression to get a ohm curve). To get the scales to fit I uses "Auto" "Include 0" with 0.01 as min scale and 100 as bottom step.
The above test was with a 1A fast fuse.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2020, 08:29:56 am

A bit fun, how do a piece of solder work as a fuse:
The log window shows:
;; Test current: 14.691   Resistance: 0.06452930365529916
;; Test current: 14.986   Resistance: 0.06446016281863072
;; Test current: 15.286   Resistance: 0.06443804788695538
;; Test current: 0.0   Resistance: Infinity
I.e. it did blow

(http://lygte-info.dk/pic/Projects/TestController/ExamplesScriptingEEV/SolderAsFuse.png)

But the resistance do not increase, before it blows.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2020, 12:46:25 pm
V0.31 is up.
Doing the above examples I found a few issues, they are fixed now and the saving of screen position and size for startup is on the configuration page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2020, 02:19:44 pm
I mainly use "chart" or "histogram". Therefore I have to switch to the "Commands" tab, to start logging and back again to "Chart" to see the graph. Then back to "Commands" to stop logging. When repeating this several times to watch for spikes in my measurement, it would be easier to have the "Log"-Button directly behind the "Save"-Button on "chart" and "histogram", to skip switching the tabs.

You can do this very fast by using hotkeys.
Assign "#log 0" to F2 and "#log 1" to F3. You do this by writing the command in the log window and mark it, then right click with the mouse and select to assign it on a F key.
Changing between the different pages can be done with ALT-letter, use ALT-C for command and ALT-A for chart.
This means start logging is: ALT-C F3 ALT-A and you are back on the chart. You use F2 to stop logging. It is also possible to assign both #log 0 and #log 1 to the same hotkey, write them on separate lines and mark both lines. This will restart logging with a empty table.

The chart window can also show the last x second of recorded data, simply write -10 for the last 10 seconds in "First sample to display". Negative values are from the end of the buffer.
Title: Re: Program that can log from many multimeters.
Post by: maukka on April 13, 2020, 02:22:52 pm
While testing the fuse test script, I noticed my DP811A definition was missing a # before the interface setOn function. Here it is fixed.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2020, 02:39:52 pm
While testing the fuse test script, I noticed my DP811A definition was missing a # before the interface setOn function. Here it is fixed.

It was missing on all power supplies |O, I fixed all mine, but I forgot yours. This was the mains reason for my interface test screen, now it is easy to check all functions.
I have updated the zip file with your correction now, but I have not changed the software version.

If you like the script you  can save it and use the "Load and run" button next time you want it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2020, 10:44:21 am
I succeeded in moving the file IO from IanB to Java and are getting data from Brymen 869 now. There is a few issues like getting the path, for that I need the hid4Java library and I do not know if the file IO works on anything but Windows.
I will take me a bit of time to implement it in TestController

I have the Brymen BM869S, BM829s and BM525s meters and will work on them (I have tested with BM869S and BM525s, they both work). More meters around the same numbers will also work.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 14, 2020, 01:07:03 pm
Great News :-+ possibly for my Voltcraft VC 940 aka UT71E with its HID USB Adapter. No hurry. I'm old and can wait  :popcorn:
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 14, 2020, 01:46:59 pm
HKJ,

Great news, I have the Brymen BM869S, let me know if you need help testing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2020, 02:08:18 pm
One help I could use is alternate brand names (i.e. rebranded meters that uses the same interface) for the Brymen meters.
That is for the 3 series: BM869s, BM829s and BM525s
The actual meters are:

BM869s
BM867s

BM829s
BM827s
BM822s
BM821s

BM525s
BM521s


I can see I will have some issues with multiple meters and I only have one interface and one of each meter, this will probably mean there will be problems with multiple meters. How much I do not know yet.

If anybody can test on Linux and Mac it would also be nice

The meters I will try to implement are the meters I have reviewed ( https://lygte-info.dk/info/DMMReviews.html ).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 06:19:25 pm
A question. Maybe I'm doing something wrong.  :-\

When I use the SDM3055 (while running a temperature measurement with PT1000)
and i start this software and select "temp" using the popup button, does it always switch from PT1000 to Thermocouple at the same time.

Can you prevent this change ?
If the software changes this, can it be corrected again ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2020, 07:20:24 pm
A question. Maybe I'm doing something wrong.  :-\

When I use the SDM3055 (while running a temperature measurement with PT1000)
and i start this software and select "temp" using the popup button, does it always switch from PT1000 to Thermocouple at the same time.

Can you prevent this change ?
If the software changes this, can it be corrected again ?

It it does, it must be the default behaviour of the meter. You can change it with a SCPI command.
You can also modify the Temp command or add one more (If you do I am interested in a copy of the file).

Look in the SiglentSDM3055.txt file, this section is the "Temp" command:

#cmdMode Temp TEMP
abort;
*cls;
conf:temp;[50]
sense:temp:nplc 10;


You could duplicate it and make:
#cmdMode Temp_TC TEMP
#cmdMode Temp_RTD1000 TEMP

You will, of course, have to write the correct SCPI commands after each of them and add "Temp_TC" and "Temp_RTD1000" after the "#value Temperature °C D4 Temp" line (Like this: "#value Temperature °C D4 Temp,Temp_TC,Temp_RTD1000").
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 08:11:01 pm

...It it does, it must be the default behaviour of the meter...

That is correct and will trigger this behavior.
The default (also e.g. after a reset) is Thermocouple (with the type BITS90).

Will try their proposed changes.
Thank you for your effort and attention.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 14, 2020, 08:13:46 pm
klausES,

You can try the attached, one note the PT1000 does not work on my SDM3065X because the SCPI commanded is missing, it might be the same for the SDM3055. Also made some minor changes from the original file.
Title: Re: Program that can log from many multimeters.
Post by: Neomys Sapiens on April 14, 2020, 08:26:30 pm
How about implementing Prema6001 and Schlumberger 7151?
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 08:55:30 pm
Probably made a mistake with my change.
After that both buttons were available in the popup (also PT1000) but also after the PT1000 button,
the values that would correspond to a thermocouple were displayed instead of a PT1000.

MikeLud,
just tried your file.

When switching from the previously selected KIT S90, directly to PT1000, the currently read value (after a delay of one second) is infinite?!?

The button PT100 has a current value of 0.0000
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 14, 2020, 09:38:52 pm
klausES

Do you have the proper sensors connected when switching sensor types. Also does it show on the display that the sensor type is switching, see screen shots below.
[attachimg=1]
[attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 09:53:45 pm
I just checked your objection.

It is like this:

If KIT S90 is selected in the software, the DMM also switches to KIT S90. That's OK.
If the software changes from KIT S90 to PT1000, the DMM but changes to PT100, not PT1000
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 14, 2020, 10:17:46 pm
klausES,

Same issue as my SDM3065X it does not have the SCPI commanded is missing to switch to a PT1000
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 10:23:05 pm
You want to say that this should basically be fixed in the firmware for these two SDMs ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 14, 2020, 10:34:20 pm
Correct.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 14, 2020, 10:34:41 pm
Perhaps I do not yet understand the relationships between this software and the cooperation with the firmware.  ???

In EasyDMM, the switchover of the sensor types in the software (triggered by the software) is carried out correctly by the device itself.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2020, 09:13:46 am
Perhaps I do not yet understand the relationships between this software and the cooperation with the firmware.  ???

In EasyDMM, the switchover of the sensor types in the software (triggered by the software) is carried out correctly by the device itself.

I cannot say why, may be different SCPI commands.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2020, 09:27:35 am
There was a few practical problems with the Brymen, mostly that I did not have access to a timeout and that is required when using the rotary selector on the meter, but I believe it is fixed now.

(http://lygte-info.dk/pic/cpf5/BM869Test1.png)

Remaining jobs: implement decoders for the other two meters, verify all modes* on all meters and locate the meters on the HID interface. All of it takes time, but I do not expect any trouble with it. What can give trouble is multiple Brymen meters on the same computer.

*I may need a bit of help with that, mostly to check if I have missed some modes.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 15, 2020, 04:43:00 pm
klausES,

I found the SCPI command that EasyDMM is using. Try the attached,  the SCPI command works on my SDM3065X so it should work on the SDM3055.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 15, 2020, 06:14:43 pm
Will test it after eating and then write.  ^-^
Thank you for your work, which I highly appreciate  :-+
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 15, 2020, 07:00:54 pm
All three sensor types switch correctly on the SDM3055 and work perfectly.
Many thanks  :-+
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 15, 2020, 07:10:22 pm
Great news

All three sensor types switch correctly on the SDM3055 and work perfectly.
Many thanks  :-+
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 15, 2020, 07:16:08 pm
HKJ,

Hold off on using this file with your next updating. In the next day or two I will update all three files for the Siglent meters and post them when completed

klausES,

I found the SCPI command that EasyDMM is using. Try the attached,  the SCPI command works on my SDM3065X so it should work on the SDM3055.

(Attachment Link)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2020, 07:34:04 pm
HKJ,

Hold off on using this file with your next updating. In the next day or two I will update all three files for the Siglent meters and post them when completed

Ok, I was just looking at updating.

If 55 & 65 are very similar you can put them in one file and use #meta and some #metadef tags at the top. With these tags you can change lines, remove lines from the definition and change text in the definition, but you cannot add to it. See IT85xx for an example. I also use it in KeysightDMMs.txt, but only at a very basic level. Note: Only use it if they are very similar or the result gets too confusing.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 15, 2020, 08:11:15 pm
HKJ,

I will try to complete them tonight, the 45 & 55 can be the same, the 65 will be different
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 15, 2020, 08:29:46 pm
If other windows are open in Win and in the foreground and you bring the task of this software to the fore,
the button frame remains in the background (must be extracted separately each time).

Could you instruct the "Buttons" frame to step into the foreground together with the main window ?

Or (better in my opinion) integrate the frame with the buttons in the main window e.g. the buttons one above the other on the right side ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 15, 2020, 09:43:04 pm
HKJ,

Attached are updates for the Siglent SDM's and a screen shoot of the modes.

[attachimg=4]

[attach=3]
[attach=1]
[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2020, 04:56:54 am
If other windows are open in Win and in the foreground and you bring the task of this software to the fore,
the button frame remains in the background (must be extracted separately each time).

Could you instruct the "Buttons" frame to step into the foreground together with the main window ?

Or (better in my opinion) integrate the frame with the buttons in the main window e.g. the buttons one above the other on the right side ?

With the "Popups" button you can lock the popups to "On top" state. It would not work to integrate them in the main frame. The number and size of popups varies, depending what is connected to TestController.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2020, 05:04:29 am
HKJ,

Attached are updates for the Siglent SDM's and a screen shoot of the modes.

They will be included with the next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2020, 11:18:33 am
Next version is up (V0.32).
It includes:

I did a special implementation of the USB driver, this means it will work with fast sample rates, but the data will, of course, not get updated faster than the meter works. It will just return the last value multiple times, until a new value is received or timeout.

Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 17, 2020, 08:02:12 am
Nice touch, that you even integrated the Elma brand! ;-)

As I am no linux expert, I haven't managed that TestController detects my Brymen 869s/Elma 829s on Ubuntu or Raspbian itself so far.

However, it works via VirtualBox within Linux:
Ubuntu > VitualBox (by adding Brymen Superior DMM [8605] to the usb filter list) > Windows = works fine

I think I miss the step to integrate the connection into /lib/udev/rules.d and /etc/udev/rules.d somehow?

[ 1601.026449] hid-generic 0003:0820:0001.0008: hiddev0,hidraw0: USB HID v1.11 Device [Brymen Superior DMM] on usb-0000:00:14.0-3.2/input0


This is, what my Ubuntu shows:

lsusb
Bus 003 Device 016: ID 0820:0001 "no description"

...there is no description in contrast to Keysight:
Bus 003 Device 022: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

...or Fluke:
Bus 003 Device 024: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC


dmesg
[ 1600.914292] usb 3-3.2: new full-speed USB device number 16 using xhci_hcd
[ 1601.018853] usb 3-3.2: New USB device found, idVendor=0820, idProduct=0001, bcdDevice=86.05
[ 1601.018855] usb 3-3.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1601.018856] usb 3-3.2: Product: Superior DMM
[ 1601.018857] usb 3-3.2: Manufacturer: Brymen
[ 1601.018858] usb 3-3.2: SerialNumber: Ñ錶
[ 1601.026449] hid-generic 0003:0820:0001.0008: hiddev0,hidraw0: USB HID v1.11 Device [Brymen Superior DMM] on usb-0000:00:14.0-3.2/input0

dmesg | grep 0820:0001 | tail -n 1 | sed -e "s/.*\(hiddev[0-9]\).*/\1/g"
hiddev0

dmesg | grep 0820:0001 | tail -n 1 | sed -e "s/.*\(hidraw[0-9]\).*/\1/g"
hidraw0


 :-//
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 17, 2020, 09:11:42 am
Try starting in debug mode and look for this:

 Found usb device: \\?\hid#vid_0820&pid_0001#8&a33cbf4&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}

If it finds the usb device, but the path is missing it will never work on that OS (and I will have to do some more work to see if I can fix it).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 17, 2020, 01:18:54 pm
HKJ,

I think you can remove the below line in the fist post. Thanks for sharing this great program with us and also the great site you have. :-+

Thanks,
Mike

"If anybody have ideas about how to log from USB/HID connected meters, please tell. I have played with a Brymen, but it did not work (I did never get any data). Maybe there is more than one error in their documentation."

I have been working on a program that can log from multimeters, electronic loads, power supplies and some other stuff.

It is still an alpha version, but it works fairly well. I am interested in comments, ideas and error reports.

(https://lygte-info.dk/pic/Projects/TestController/Screens/Load%20devices.png)

(https://lygte-info.dk/pic/Projects/TestController/Screens/Chart.png)

Read more about it and download it from here: http://lygte-info.dk/project/TestControllerIntro%20UK.html (http://lygte-info.dk/project/TestControllerIntro%20UK.html)

If anybody have ideas about how to log from USB/HID connected meters, please tell. I have played with a Brymen, but it did not work (I did never get any data). Maybe there is more than one error in their documentation.



My current list of supported devices as of V0.32 are (not all are tested):
Agilent 34401A, Agilent U1252B, Agilent U1272A, B&K Precision BK8500, B&K Precision BK8502, B&K Precision BK8510, B&K Precision BK8512, B&K Precision BK8514, B&K Precision BK8518, B&K Precision BK8520, B&K Precision BK8522, B&K Precision BK8524, B&K Precision BK8526, Brymen BM521s, Brymen BM525s, Brymen BM821s, Brymen BM822s, Brymen BM827s, Brymen BM829s, Brymen BM867s, Brymen BM869s, Elma BM525s, Elma BM821s, Elma BM829s, Elma BM869s, Fluke 187, Fluke 189, Fluke 287, Fluke 289, Fluke 87, Fluke 8846A, Fluke 89, Greenlee DM-810A, Greenlee DM-820A, Greenlee DM-830A, Greenlee DML-430A, HKJ Discharger, HKJ SS-Relay, HKJ ThermoAndMore, HKJ ThermoSensor, Hewlett-Packard 34401A, Itech IT8511+, Itech IT8511A+, Itech IT8511B+, Itech IT8512+, Itech IT8512A+, Itech IT8512B+, Itech IT8512C+, Itech IT8512H+, Itech IT8513C+, Itech IT8514B+, Itech IT8514C+, Itech IT8516C+, Keithley 2280S-32-6, Keithley DMM6500, Keithley DMM7510, Keysight 34461A, Keysight 34465A, Keysight 34470A, Keysight U1231A, Keysight U1232A, Keysight U1233A, Keysight U1251A, Keysight U1252A, Keysight U1252B, Keysight U1253A, Keysight U1271A, Keysight U1272A, Keysight U1273A, Keysight U1273AX, Keysight U1281A, Keysight U1282A, Keysight U1461A, Mastech MS8040, Mastech MS8218, Rigol DP811A, Siglent SDG2122X, Siglent SDM3045X, Siglent SDM3055, Siglent SDM3065X, TTi CPX400DP, TTi QL355P, TTi QPX1200SP, Tenma 72-7730, Tenma 72-7732, Tenma 72-9380A, UNI-T UT61E, UNI-T UT71A, UNI-T UT71B, UNI-T UT71C, UNI-T UT71D, UNI-T UT71E, Vici VC8145, VirtualRampGenerator, VirtualSinusGenerator, VirtualSquareGenerator, Voltcraft VC-920, Voltcraft VC-940 COM, Voltcraft VC-960
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 17, 2020, 02:23:04 pm
HKJ,

I think you can remove the below line in the fist post. Thanks for sharing this great program with us and also the great site you have. :-+


Yes and no, I got some good help that works on Windows, but I do not know about Linux/Mac yet.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 17, 2020, 05:22:11 pm
You are too modest! No manufacturer has ever made such a brilliant peace of software...and TestController is not older than a month or so!  :-+

My PayPal reactivation takes some time due to covid-19, but as soon as I am able to confirm my account, I will send you a little "thank you" to: info@lygte-info.dk

My try to debug Brymen wasn't successful, but I will have a try the next days...  :-/O

Best wishes!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 17, 2020, 06:02:25 pm
You are too modest! No manufacturer has ever made such a brilliant peace of software...and TestController is not older than a month or so!  :-+

Nearly 10 years ago I made some logging software, it was command line only and with scripting for controlling the connected devices. This software has been running nearly 24/7 on a couple of computers since. It is that software I am working on a update for and this time I decided to make it public.
The initial release showed basically what I wanted from it, the following releases has fixed some bugs and refined the function and also added a few ideas I got (Some with external help). I still have equipment I need to include and also some functionality.

For now I also try to help people thats making definitions for other equipment. I also includes all the definitions I can get. The help will be reduced when I have made more documentation and the program is more mature.
The thread title with multimeters is misleading, but I believed "multimeters" was better heading than "devices" and writing "multimeters, power supplies, electronic loads and other devices" was way to long.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 17, 2020, 09:51:43 pm
I would also like to thank you very much for your work.  :-+

...The thread title with multimeters is misleading, but I believed "multimeters" was better heading than "devices" and writing "multimeters, power supplies, electronic loads and other devices" was way to long.

How about the thread title ... can log from many measure (or Test) equipment ?
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 19, 2020, 02:28:50 am
I'm Still learning and I know its not much of a contribution but for anyone interested I've started working on one for the rigol dm3058e I've attached it here.
So far it will read the values and change the modes. Hopefully it can be useful for someone or maybe someone who needs it can add to it / complete it.
When I click current Values it cycles through all the modes in the dmm and read the value. Not sure how to make it so I can log one value with it it cycling through the rest. I need to do a bit more reading bit of a learning curve for me. Thanks again
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 03:42:45 am
jord4231

To stop the cycles through all the modes you can try changing the #askValues line to just do a read, see below.

Code: [Select]
#askValues READ?
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 19, 2020, 04:07:28 am
That did not seem to work, Other than just deleting the ask commands I don't want each time in the txt file is there a way to just log say voltage ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 04:16:46 am
jord4231,

Try this file.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 19, 2020, 04:21:09 am
jord4231,

Try this file.

(Attachment Link)
Thanks MikeLud no joy :(
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 04:28:52 am
jord4231,

Ignore the last file, try this file.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 04:54:36 am
jord4231,

What Command mode do you have the meter set at?

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on April 19, 2020, 05:09:47 am
jord4231,

What Command mode do you have the meter set at?

(Attachment Link)
Its set to Rigol, I tried the other command sets with other files but had no luck,
That second file you sent me returns no data at all.
I also tried setting the meter to print and that almost kind of sort of worked. It would spike up and down and also return "true" in the commands section every once in a while.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 06:55:44 am
Please find enclosed a basic (quick and dirty :palm:) definition file R&SHMC8043.txt for the R&S HMC 8043 power supply (SCPI). At the moment you will need to select one channel at a time (1, 2 or 3) and one mode at a time (A, V or W) through the R&SHMC8043.txt file.
I tried to do the mode changes through popups, but could get it going quickly. Anyway its a start.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 07:30:33 am
Improved definition file for R&S HMC 8043 power supply. Now you only need to select the channel through the definition file.  :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 08:10:15 am
Cant you do something like:

#askValues INST OUT1;MEAS:Curr?;MEAS:VOLT?;MEAS:POW?;INST OUT2;MEAS:Curr?;MEAS:VOLT?;MEAS:POW?;INST OUT3;MEAS:Curr?;MEAS:VOLT?;MEAS:POW?

To read all channels at once?
Or is it too slow?

You only need a selector after the column specification when you use have dynamically changing columns, for fixed columns use:
#value Current1 A d5
#value Voltage1 V d5
#value Power1 W d5
#value Current2 A d5
#value Voltage2 V d5
#value Power2 W d5
#value Current3 A d5
#value Voltage3 V d5
#value Power3 W d5

Power is nice to have, but not strictly required if you need to increase the sample rate, because it can be done with a Math column




Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 08:23:15 am
Dug a bit deeper and came to the same conclusion as stated above.
Can now read all channels and modes in one go. :scared:

Comments and stress testing welcome.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 08:40:35 am
Next is the configuration menu for the power supply, check "TTiCPX400DP.txt" file for an example.

You will probably also need to check my description of it: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 01:23:57 pm
Next is the configuration menu for the power supply, check "TTiCPX400DP.txt" file for an example.

You will probably also need to check my description of it: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu)

EEK! This is at the moment a bit beyond my (mainly analogue oriented) abilities. However, I'll be thinking about this.

By poking around your prog I found three things.
1.) When using "Math" it is not possible to enter a unit (of measurement).
2.) When being silly in "Table" setting "dateTime" to decimals or anything offered in the drop down table there is no way back to the initial proper "dateTime" display. Except for restarting of course. Should be locked as for "index" and "time".
3.) In "Chart" the sixth colour (light brownish green? can be difficult to see). Maybe using "resistor colours" brown - red - orange - yellow - green - blue might be better, however yellow and orange could be a problem here.

Even so, I'm beginning to like your prog. more and more. Hope it will never become a black GUI.  :horse: Black and dark brown are so depressing. With small displays a black background is OK for me, but not for large ones. OK rant over.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 01:50:18 pm
EEK! This is at the moment a bit beyond my (mainly analogue oriented) abilities. However, I'll be thinking about this.

Easy now, it is not that hard. Try copying these lines into you definition (They may work):

#cmdSetup buttonsOn Output Output_1
:read: INST OUT1;OUTP?
:write: INST OUT1;OUTP
:tip: Turn output on or off
:updatealloff:
Off 0
On 1

#cmdSetup number Voltage Output_1
:read: INST OUT1;VOLT?
:write: INST OUT1;VOLT
:tip: Setup this voltage, do not turn output on/off
Volt 0 32.050

#cmdSetup number Current Output_1
:read: INST OUT1;CURR?
:write: INST OUT1;CURR
:tip: Setup this current, do not turn output on/off
Amps 0.0005 3



By poking around your prog I found three things.
1.) When using "Math" it is not possible to enter a unit (of measurement).

This has been on my todo list a long time, I have not decided if I want to add some automation to it.

2.) When being silly in "Table" setting "dateTime" to decimals or anything offered in the drop down table there is no way back to the initial proper "dateTime" display. Except for restarting of course. Should be locked as for "index" and "time".

Oops.

3.) In "Chart" the sixth colour (light brownish green? can be difficult to see). Maybe using "resistor colours" brown - red - orange - yellow - green - blue might be better, however yellow and orange could be a problem here.

I will take a look at it.

Even so, I'm beginning to like your prog. more and more. Hope it will never become a black GUI.  :horse: Black and dark brown are so depressing. With small displays a black background is OK for me, but not for large ones. OK rant over.

The risk is low, I do not like the black style.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 03:01:21 pm
And here we go again :palm: - next iteration now with fully working popups for all 3 channels. Thanks to HKJ :-+

As soon as you find the definition file useful you may of course include it in any of your updates.

The definition file can easily be changed for the two-channel model HMC 8042 by simply omitting all references to channel 3.

For the single channel model HMC 8041 the commands for channel 1 are a bit different. Thus simply omitting any references to channel 2 and 3 will not do in this case.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 03:40:25 pm
You might also want these two settings for quick selection of voltage and current, place them before the other #cmdSetup lines to match the other power supply definitions:

#cmdSetup radio Voltage Output_1
:read: INST OUT1;VOLT?
:write: INST OUT1;VOLT #;OUTP 1
:tip: Setup this voltage, turn output on
3.3V 3.3
5V 5.0
12V 12.0
24V 24.0

#cmdSetup radio Current Output_1
:read: INST OUT1;CURR?
:write: INST OUT1;CURR
:tip: Output will current limit at this current
100mA 0.1
300mA 0.3
1A 1.0
3A 3.0


Note: The voltage selection will turn the output on.

I will include it, but I would like to have the above checked first.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 04:28:15 pm
HKJ,

I am make an advanced device file for the Siglent DMM using setup. The one issue I am having is on the Mode tab when switching modes. How can I have the mode updated when switch modes?

Code: [Select]
#cmdSetup comboboxHot Mode Mode
:write: FUNC
:read: FUNC?
:tip: Setup Mode
VDC "VOLT"
ADC "CURR"


[attachimg=1]

[attachimg=2]

[attachimg=3]
 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 04:33:27 pm
You cannot switch mode that requires data column changes in the table from the setup menu, only from the mode menu.
The reason is that setup is available while logging and at that time it is impossible to change data columns in the table.
A device can have both types of popups.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 04:55:41 pm
HKJ,

Do you think you can add two types of Setup one would not lock (#cmdSetup) and the other would lock (#cmdSetupLock) when logging.

Thanks,
Mike

Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 04:58:13 pm
Stay with me at the moment (SDM3055 is coupled, instantaneous values are available, measurement type can be switched)
the windows for chart, histrogram and range inactive ?

Am I doing something wrong ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 05:02:57 pm
klausES,

Once you start a log the windows for chart, histogram and range go active.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 05:04:12 pm
Stay with me at the moment (SDM3055 is coupled, instantaneous values are available, measurement type can be switched)
the windows for chart, histrogram and range inactive ?

These windows will first be available when you start logging. They all requires a table with data, it can either be when logging or a loaded CSV file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 05:06:43 pm
HKJ,

Do you think you can add two types of Setup one would not lock (#cmdSetup) and the other would lock (#cmdSetupLock) when logging.

You have not convinced me there is any need for it, you can put the mode change in the cmdMode menu and all the other adjustments in cmdSetup.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 05:17:58 pm
HKJ,

That is what I was think at first. It would be a nice to have if everything was under the Setup and less confusing on knowing what the active mode is.

HKJ,

Do you think you can add two types of Setup one would not lock (#cmdSetup) and the other would lock (#cmdSetupLock) when logging.

You have not convinced me there is any need for it, you can put the mode change in the cmdMode menu and all the other adjustments in cmdSetup.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 05:22:55 pm
The tick in the window "load device" is on enable on the SDM3055
but the SDM3055 does not appear in the "table" window.

Since it worked all the time, I feel pretty stupid right now...
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 05:27:39 pm
klausES,

You have to start a log first before any data would show in the table tab.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 05:53:09 pm
I emptied the original directory into which I unpacked the zip and unpacked the zip again.
Started, SDM3055 configured in it, runs again.  :)

Weird thing.  ???
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 06:30:00 pm
The tick in the window "load device" is on enable on the SDM3055
but the SDM3055 does not appear in the "table" window.

The loaded and active devices are listed in the help window and if you right click to the left of the command line.
TestController do not modify the device files, i.e. it cannot damage them.

If something is strange, try starting in debug mode, it may give an explanation on what is going on.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 06:36:15 pm
That is what I was think at first. It would be a nice to have if everything was under the Setup and less confusing on knowing what the active mode is.

You can always use a info tag to show the active mode
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 07:00:35 pm
HKJ,

How can I get Setup to update when the window is open and you change modes? I tried the below code but it does not work

Code: [Select]
#cmdMode Volts_DC VOLT
abort;
*cls;
CONF:VOLT:DC;
[*OPC];
:update: Mode1,Mode2;

Thanks,
Mike

[attachimg=1]

That is what I was think at first. It would be a nice to have if everything was under the Setup and less confusing on knowing what the active mode is.

You can always use a info tag to show the active mode
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 07:26:45 pm
How can I get Setup to update when the window is open and you change modes? I tried the below code but it does not work

Oops, you cannot.

Try this version: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
and use a :updatemodechange: tag in the info part
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 08:23:24 pm
...If something is strange, try starting in debug mode, it may give an explanation on what is going on...

Thanks for the information.
I will do that if an error occurs again.

I see the SDG2122X in the device list.
If there is time for it, it would be nice if I could also use this for my SDG1062X.  :-/O
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 08:32:13 pm
HKJ,

I just tried :updatemodechange: and it does not work, am I using it correctly?

Code: [Select]
#cmdSetup info Mode Mode
:read: FUNC?
:readmath: unQuote(value)
:updatemodechange:

How can I get Setup to update when the window is open and you change modes? I tried the below code but it does not work

Oops, you cannot.

Try this version: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
and use a :updatemodechange: tag in the info part

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 08:43:24 pm
I see the SDG2122X in the device list.
If there is time for it, it would be nice if I could also use this for my SDG1062X.  :-/O

I have the 2122, not the 1062.
What you can do is to make a copy of the 2122 definition file and change 2122 to 1062 in the file and check if anything works.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 08:50:01 pm
I just tried :updatemodechange: and it does not work, am I using it correctly?

I was a bit too fast, you can try again now.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 09:11:08 pm
HKJ,

I just redownloaded and tested but still no luck, can you confirm if I am using :updatemodechange: correctly.

Code: [Select]
#cmdSetup info Mode Mode
:read: FUNC?
:readmath: unQuote(value)
:updatemodechange:

Thanks
Mike

I just tried :updatemodechange: and it does not work, am I using it correctly?

I was a bit too fast, you can try again now.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 09:17:03 pm
Made.
It seems that it works with the SDG1062X.  :)
Limits would have to be changed (e.g. sine from max. 120 MHz to max. 60 MHz for SDG1062X).

What strikes me is that the output ON / Off on channel 2 does not respond (it works on channel 1).
If I activate Output Channel 2 manually on the device, the software even shows me that, just switch from the software, because it does not respond.

And at volt it only allows pp setting, which is missing for rms.
Title: Re: Program that can log from many multimeters.
Post by: tautech on April 19, 2020, 09:23:48 pm
Made.
It seems that it works with the SDG1062X.  :)
Limits would have to be changed (e.g. sine from max. 120 MHz to max. 60 MHz for SDG1062X).

What strikes me is that the output ON / Off on channel 2 does not respond (it works on channel 1).
If I activate Output Channel 2 manually on the device, the software even shows me that, just switch from the software, because it does not respond.

And at volt it only allows pp setting, which is missing for rms.
Also a dB level when in 50 Ohm load output settings.  ;)

Great work everyone.  :clap:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 09:24:17 pm
I just redownloaded and tested but still no luck, can you confirm if I am using :updatemodechange: correctly.

You code looks correct, I will have to make a test definition and see what goes wrong, but that will first be tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2020, 09:31:19 pm
Made.
It seems that it works with the SDG1062X.  :)
Limits would have to be changed (e.g. sine from max. 120 MHz to max. 60 MHz for SDG1062X).

What strikes me is that the output ON / Off on channel 2 does not respond (it works on channel 1).
If I activate Output Channel 2 manually on the device, the software even shows me that, just switch from the software, because it does not respond.

And at volt it only allows pp setting, which is missing for rms.

I have a bug. The button controls output 1 not 2, below is the correct code:

#cmdSetup buttons State Output_2
:write: c2:outp


I was a bit lazy with the definition of the SDG and left out a lot of stuff the generator can do.





Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 19, 2020, 09:32:50 pm
HKJ,

Thanks for looking into.

I just redownloaded and tested but still no luck, can you confirm if I am using :updatemodechange: correctly.

You code looks correct, I will have to make a test definition and see what goes wrong, but that will first be tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 09:32:54 pm
I didn't want to complain about it. Just as information to change these things when there is time.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 09:39:37 pm
...below is the correct code:

#cmdSetup buttons State Output_2
:write: c2:outp
...

Ok it works.  :-+
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 19, 2020, 10:13:43 pm
Next definition file (Ver 0.5) for the R&S HMC 8043 power supply. This time with extended popup functions.  Thanks to HKJ.

Next I will try to implement voltage and current tracking between channels 1 and 2. This SCPI stuff seems to be creeping up on me :scared:
And there is a Hameg HMO1022 waiting too.

Time to stop frying three resistors and toddle off to bed now.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 19, 2020, 10:23:18 pm
Frequency limits for SDG1062X changed.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 10:03:23 am
V0.36 is up
It has a working :updatemodechange:
The HMC8043 is included (Thanks to Messtechniker)

And a new driver is included, it is designed to handle devices that returns a single ascii line with a value and optional a mode.
It is documented here: http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on April 20, 2020, 10:05:17 am
It is documented here: file:///D:/Devlop/lygte-info/project/TestControllerConfigDevice2%20UK.html (http://file:///D:/Devlop/lygte-info/project/TestControllerConfigDevice2%20UK.html)

Can't see the file, I think it's only on your local drive?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 10:11:23 am
Oops, link is corrected.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on April 20, 2020, 10:12:05 am
Oops, link is corrected.

Thank you  :-+

BTW. Been looking through all the projects on your website, very interesting and impressive  :D
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 20, 2020, 12:28:33 pm
What's happened between version 032 and 036?

The HMC 8043 definition file of ver. 036 loads
and the popups operate but nothing shows up under "current values".
Entering INST OUT1;MEAS:Curr?;:INST OUT1;MEAS:VOLT?;:INST OUT1;MEAS:POW? in the command line shows the correct values
in the command line box.

Using the HMC 8043 definition file of ver. 036 with
ver. 032 works perfectly. So what's up?

The Keysight 34465A definition file works fully in both versions.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 01:07:31 pm
What's happened between version 032 and 036?

?
Try start in debug and select current value, maybe that can give me a hint.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 20, 2020, 01:16:32 pm
HKJ,

Just tried the new version and :updatemodechange: is working, thanks for add it. I am almost done with the advanced SDM3065X device file. Once the new device file is finish you will have almost 100% remote control of the DMM. After I finish the SDM3065X device file I will work on the other two Siglent DMM files.

[attachimg=1]

[attachimg=2]

[attachimg=3]

V0.36 is up
It has a working :updatemodechange:
The HMC8043 is included (Thanks to Messtechniker)

And a new driver is included, it is designed to handle devices that returns a single ascii line with a value and optional a mode.
It is documented here: http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 01:23:52 pm
Messtechniker try this definition file: http://lygte-info.dk/pic/Projects/TestController/R%26SHMC8043.txt (http://lygte-info.dk/pic/Projects/TestController/R%26SHMC8043.txt)
I change column selection a bit and because you had selectors in the #value lines, the columns was not selected.


MikeLud try remove "Mode" page selection after you #cmdSetup, then you will get the mode below all the pages.
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on April 20, 2020, 01:24:44 pm
Greetings from Italy...after starting in debug mode with my Fluke 89IV connected trough COM1 port...

";; Start thread for: COM1 - Fluke xxx
;; COM1: Set params: 9600
;; COM1: Tx: <ID.> 49 44 0D
;; COM1: Rx: timeout
;; COM1: Tx: <ID.> 49 44 0D
;; COM1: Rx: timeout
;; Stopping thread for: COM1 - Fluke xxx

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
"

Marco
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 01:30:44 pm
Greetings from Italy...after starting in debug mode with my Fluke 89IV connected trough COM1 port...

";; Start thread for: COM1 - Fluke xxx
;; COM1: Set params: 9600
;; COM1: Tx: <ID.> 49 44 0D
;; COM1: Rx: timeout


I have seen two protocols for Fluke meters, try selecting Fluke287 and do another debug run.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 20, 2020, 01:40:05 pm
HKJ,

Nice, thanks again.

[attachimg=1]

MikeLud try remove "Mode" page selection after you #cmdSetup, then you will get the mode below all the pages.
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on April 20, 2020, 01:40:25 pm
With Fluke 287 (too high Baud rate for 89IV)...

";; Start thread for: COM1 - Fluke xxx
;; COM1: Set params: 115200
;; COM1: Tx: <ID.> 49 44 0D
;; COM1: Rx: timeout
;; COM1: Tx: <ID.> 49 44 0D
;; COM1: Rx: timeout
;; Stopping thread for: COM1 - Fluke xxx

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
"

Marco
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 01:53:31 pm
With Fluke 287 (too high Baud rate for 89IV)...

I checked the documentation and it has to use Fluke89 setting, but try opening the "FlukeDMM18x28x.txt" file and change the #baudrate setting for Fluke 89 to "#baudrate 9600n81dR" or maybe "#baudrate 9600n81Dr"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 02:03:35 pm

Nice, thanks again.


You can also map the mode text, but it will be a fairly long line, let me show it as two lines first:

First you convert the received value to a number with this statement:
index=listIndex(value,"DIOD VOLT VOLT:AC ....."," ");

Then you convert the number back to a text with this statement:
getElement("Diode;VOLT DC;VOLT AC;...",index,";");

These two statement must be packed on one line in a :readmath: tag:
:readmath: getElement("Diode;VOLT DC;VOLT AC;...",listIndex(value,"DIOD VOLT VOLT:AC ....."," "),";");
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 20, 2020, 02:26:24 pm
HKJ,

I will try later today, time for my real job.


Nice, thanks again.


You can also map the mode text, but it will be a fairly long line, let me show it as two lines first:

First you convert the received value to a number with this statement:
index=listIndex(value,"DIOD VOLT VOLT:AC ....."," ");

Then you convert the number back to a text with this statement:
getElement("Diode;VOLT DC;VOLT AC;...",index,";");

These two statement must be packed on one line in a :readmath: tag:
:readmath: getElement("Diode;VOLT DC;VOLT AC;...",listIndex(value,"DIOD VOLT VOLT:AC ....."," "),";");
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 20, 2020, 02:52:13 pm
Messtechniker try this definition file: http://lygte-info.dk/pic/Projects/TestController/R%26SHMC8043.txt (http://lygte-info.dk/pic/Projects/TestController/R%26SHMC8043.txt)
I change column selection a bit and because you had selectors in the #value lines, the columns was not selected.
This definition file works with ver 036.

Next thing:
trying to implement"tracking" of ch1 and ch2.

For reference: this switches CH1 and CH2 on and off simultaneously :)
#cmdSetup buttonsOn Output Outputs_1_2
:read: INST OUT1;OUTP?
:write: INST OUT1;OUTP:CHAN ON;:INST OUT2;OUTP:CHAN ON;:OUTP:MAST
:tip: Turn output on or off
:updatealloff:
Off 0
On 1

But I have not yet found a way where :write: ... ;VOLT will set the voltage for both CH1 and CH2 simultaneously. VOLT will always apply to one channel only. Possibly a restriction of the SCPI command syntax. There is apparently no SCPI TRACK command here. Have thought as an alternative about invoking a saved configuration (*SAV0 and then *RCL0) but this does not work either. Perhaps someone has any ideas? Would be  8)
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on April 20, 2020, 02:55:15 pm
With Fluke 287 (too high Baud rate for 89IV)...

I checked the documentation and it has to use Fluke89 setting, but try opening the "FlukeDMM18x28x.txt" file and change the #baudrate setting for Fluke 89 to "#baudrate 9600n81dR" or maybe "#baudrate 9600n81Dr"

";; Start thread for: COM1
;; COM1: Set params: 9600
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; Stopping thread for: COM1

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
"

Marco
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 03:14:12 pm

";; Start thread for: COM1
;; COM1: Set params: 9600
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; Stopping thread for: COM1

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
"

Something is wrong, you are not using the Fluke driver, but the SCPI driver
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 03:23:40 pm

But I have not yet found a way where :write: ... ;VOLT will set the voltage for both CH1 and CH2 simultaneously. VOLT will always apply to one channel only. Possibly a restriction of the SCPI command syntax. There is apparently no SCPI TRACK command here. Have thought as an alternative about invoking a saved configuration (*SAV0 and then *RCL0) but this does not work either. Perhaps someone has any ideas? Would be  8)

You can control the placement of the parameter by using a #
:write: INST OUT1;VOLT #;INST OUT2;VOLT #

But for this to be useful you would need a extra page to control two channels.


Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 20, 2020, 04:58:51 pm
There seems to be a difference between 0.32 vs. 0.36 as far as Brymen detection on a Windows OS is concerned?!

0.32 - immediate detection, after adding DMM
0.36 - no detection, despite adding DMM


It is brilliant, that you have implemented a custom size-option for saving an image. You can save the chart in any width you like, to have a better reading by expanding the png format in the width.
However, this custom size is resetted to 1000x500 after the next start. Is this also possible that the "Custom Save png-format" option is kept even after next start, for example: Custom 10000x1080 for ever referring to Chart and Histogram till you change it again to your preferred setting?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 06:37:23 pm
There seems to be a difference between 0.32 vs. 0.36 as far as Brymen detection on a Windows OS is concerned?!

0.32 - immediate detection, after adding DMM
0.36 - no detection, despite adding DMM

I was doing some experiments with the HID driver, but forgot to restore it to working state, it is working now.

It is brilliant, that you have implemented a custom size-option for saving an image. You can save the chart in any width you like, to have a better reading by expanding the png format in the width.
However, this custom size is resetted to 1000x500 after the next start. Is this also possible that the "Custom Save png-format" option is kept even after next start, for example: Custom 10000x1080 for ever referring to Chart and Histogram till you change it again to your preferred setting?

I like having most options going back to default, but lets see of more people have any opinion about this.

V0.37 is up, it have a minor changes and one major new feature.
I have removed the automatic focus of popup windows, but a right click on the popups button will do it (It is in the tooltip).
(http://lygte-info.dk/pic/Projects/TestController/Screens/ChartDigital.png)
It is possible to use digital channels now, these all share the same scale on the chart and that means it is possible to have many of them.
There are two way to get digital channels:
1) Devices with digital channels, only one at the current time is "HKJ Relay" (See: https://lygte-info.dk/project/SSRelay%20UK.html (https://lygte-info.dk/project/SSRelay%20UK.html)), but it is possible to define them in SCPI definitions.
2) Math, there is a "Digital" function (Samples is used a bits). It will use the value as a bits in a integer. Using a expression like: "PS.Voltage>4.9" is a 1 bit digital channel when "Digital" is selected with samples=1.

Digital channels are excluded from some functions.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 20, 2020, 07:06:35 pm
Hi Henrik -
Here is the Device file for a GW Instek GPP-4323 four-channel power supply. This has been tested with the LAN interface.

The file is very much version 1.0, and does not support some of the more advanced features of the supply, like series or parallel mode for Channel 1/Channel2.

It also does not support the Load mode for Channels 1 and 2. Pity, but that seems tough to integrate into a single Device file (that is, if the device file also supports the normal power supply mode.) Maybe I'll do a separate device file for the GPP-4323 as an active load rather than a power supply, and then one could choose either power supply or active load instances. Though that seems a bit crude. We will see...

Thanks for the great work on TestController.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 07:21:59 pm
Here is the Device file for a GW Instek GPP-4323 four-channel power supply. This has been tested with the LAN interface.

It will be included in the next release. I have added a "#author Hexley" to the file.

It also does not support the Load mode for Channels 1 and 2. Pity, but that seems tough to integrate into a single Device file (that is, if the device file also supports the normal power supply mode.) Maybe I'll do a separate device file for the GPP-4323 as an active load rather than a power supply, and then one could choose either power supply or active load instances. Though that seems a bit crude. We will see...

I am thinking if it would be a good idea to add a "Extra" popup menu using same format as the "Setup" menu. That menu would then use a separate definition file, maybe a possibility to select between multiple files (In a similar way to the log button).
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 20, 2020, 08:22:07 pm
 ... and now the next HMC 8043 definition file (Ver. 0.6). Now the popup includes voltage and current tacking for channels 1 and 2. There is one minor quirk: the red light once it is on, stays on regardless of output switch ON or OFF. Everything else works as intended. i.e. I have almost flogged my three resistors to death. :)
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 20, 2020, 08:32:25 pm
...After I finish the SDM3065X device file I will work on the other two Siglent DMM files...
I hope this.  ^-^
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2020, 08:40:02 pm
... and now the next HMC 8043 definition file (Ver. 0.6). Now the popup includes voltage and current tacking for channels 1 and 2. There is one minor quirk: the red light once it is on, stays on regardless of output switch ON or OFF. Everything else works as intended. i.e. I have almost flogged my three resistors to death. :)

I have updated the definition, it will be included in next release.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 20, 2020, 11:22:58 pm
As i've seen other users with troubles on fluke 89iv i've done some tests of the 87iv, and it works perfectly (freshly downloaded lastest version). I'm surpised that it not work on 89iv as it's almost the same thing (need to confirm but seem only a value in an eeprom, hardware side are identical).
The only "glitch" is that it not senses the switch from *C and *F in temperature, for who uses *F.

Other thing, not work on older java versions. I have a windows xp with java 1.8.0.74 and the serial interface not work.

I've seen the new driver for "single value" multimeters. I think that is perfect for my protek 506! Tomorrow i'll play a bit
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 20, 2020, 11:59:59 pm

I was doing some experiments with the HID driver, but forgot to restore it to working state, it is working now.


Thanx - 0.37 works again with Brymen using Windows OS!  :-+

Using Ubuntu I am not able to fetch the usb port of Brymen's usb adaptor, thus it is impossible for me to debug anything within TestController...

ubuntu@ubuntu:~$ sudo usbhid-dump -m 0820:0001 -es
Starting dumping interrupt transfer stream
with 1 minute timeout.

003:028:000:Interrupt transfer timed out
No more interfaces to dump


As far as Linux is concerned - maybe you can have a look at this list, showing Brymen's usb interface values:

lsusb -vvv

Bus 003 Device 028: ID 0820:0001 
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0         8
  idVendor           0x0820
  idProduct          0x0001
  bcdDevice           86.05
  iManufacturer           1
  iProduct                2
  iSerial                 3
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      30
         Report Descriptors:
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1


Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 21, 2020, 01:47:53 am
Attached is an updated Advanced Siglent SDM3065X device file. It is 99% finished, all that is left is to update the :tip: tags. Anyone that has a Siglent SDM3065X please test it and let me know if there are any issues.

[attachimg=1]

[attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 05:02:00 am
As i've seen other users with troubles on fluke 89iv i've done some tests of the 87iv, and it works perfectly (freshly downloaded lastest version). I'm surpised that it not work on 89iv as it's almost the same thing (need to confirm but seem only a value in an eeprom, hardware side are identical).

It is probably a interface issue, from the Fluke documentation:

Communication Protocol (model 89-IV and 87-IV)
The Fluke 89-IV and 87-IV have an infrared (IR) serial interface that is operated in an RS-232
mode:
• 9600 Baud, no parity, 8 bits, 1 stop bit
The IR adapter cable used with the 89-IV and 87-IV gets its power from the DTR and RTS
signals going into its DB9 connector. The PC RS-232 communications port needs to control
these two signal lines via software, or they can be controlled by wiring in an external power
source. If you wire in an external power source, be sure to break the DTR and RTS signal lines
going back to the PC. The DB9 connector on the IR adapter cable needs to have the following
lines with the following voltages applied:
• DTR disabled - pin 4 with -3 to -12 volts (or tied to pin 5, Ground, will work also)
• RTS enabled - pin 7 with +3 to +12 volts


The only "glitch" is that it not senses the switch from *C and *F in temperature, for who uses *F.

Not exactly a glitch, the display in TestController is in Celsius.


Other thing, not work on older java versions. I have a windows xp with java 1.8.0.74 and the serial interface not work.

That is strange.

I've seen the new driver for "single value" multimeters. I think that is perfect for my protek 506! Tomorrow i'll play a bit

I hope so, your Protek 506 documentation was one of the inputs I used while writing it.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 05:04:39 am

Using Ubuntu I am not able to fetch the usb port of Brymen's usb adaptor, thus it is impossible for me to debug anything within TestController...


I will have to look more at linux, maybe the hid4jave works on linux.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 05:06:41 am
Attached is an updated Advanced Siglent SDM3065X device file. It is 99% finished, all that is left is to update the :tip: tags. Anyone that has a Siglent SDM3065X please test it and let me know if there are any issues.

I have updated it for next release.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 11:28:20 am
Other thing, not work on older java versions. I have a windows xp with java 1.8.0.74 and the serial interface not work.

That is strange.

This is the error:
Code: [Select]
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: C:\Documents and
Settings\User\Impostazioni locali\temp\1587468243109-jSerialComm.d
ll: Impossibile trovare la procedura specificata
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(Unknown Source)
        at java.lang.ClassLoader.loadLibrary(Unknown Source)
        at java.lang.Runtime.load0(Unknown Source)
        at java.lang.System.load(Unknown Source)
        at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:244)
        at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:245)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:518)

Sorry for the localized version of it...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 12:03:32 pm
This is the error:
...


Could it be security settings on you machine? The serial library has some native code inside that I believe it will copy to somewhere in the file system, before using it.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 12:21:29 pm
Uhm, i've reset the java security options and set it to the lowest possible setting. The file exists in the temp directory. Maybe the sw try to use it before it's copied in the temp folder?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 01:37:13 pm
Uhm, i've reset the java security options and set it to the lowest possible setting. The file exists in the temp directory. Maybe the sw try to use it before it's copied in the temp folder?

I do not know exactly how the serial library works, but the error is thrown first time I try to use it and the first operation is to get a list of serial ports on your computer. It looks like it cannot find that function in the dll file. This must mean the dll file is faulty or that it cannot read it. You could delete the dll file and try again.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 02:09:52 pm
The dll file is deleted and recreated every time that the program run and exit. I've tried to copy it before deletion at tge exit, leaved it in the folder and restarted. The program dwleted my copy and put a new one.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 02:14:37 pm
https://github.com/Fazecast/jSerialComm/issues/129

Seem that jserialcomm v2 not works on xp.
Not much a problem. I think that no one use xp anymore  :horse:
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 02:31:44 pm
For the fluke 89iv issue, i need to specify that i'm not using a genuine fluke rs232-irda transmitter. I'm using a modified usb-irda transmitter, that works perfectly on flukeview, like the original one. The only difference is that i'm ignoring the control lines (disconnected the wires between the usb-serial prolific ic to the 232-to-irda ic, as they were causing problems disabling the output). So i think that of there is a problem witb the genuine 232-irda adapter is not with the serial communication but with control lines.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 04:04:26 pm
For the fluke 89iv issue, i need to specify that i'm not using a genuine fluke rs232-irda transmitter. I'm using a modified usb-irda transmitter, that works perfectly on flukeview, like the original one. The only difference is that i'm ignoring the control lines (disconnected the wires between the usb-serial prolific ic to the 232-to-irda ic, as they were causing problems disabling the output). So i think that of there is a problem witb the genuine 232-irda adapter is not with the serial communication but with control lines.

Some adapters uses the control lines for power, for this to work the control lines must be controlled (That was what some of the letters after 9600 did in my post).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 04:31:15 pm
Checked, with flukeview forms pin 4 of db9 (DTR) is at -v, and pin 7 (RTS) at +v.
With testcontroller both the pin 4 and pin 7 are at +v.
That's why the fluke irda isn't working. I think that is only for 87iv and 89iv.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 04:46:40 pm
Checked, with flukeview forms pin 4 of db9 (DTR) is at -v, and pin 6 (RTS) at +v.
With testcontroller both the pin 4 and pin 6 are at +v.
That's why the fluke irda isn't working. I think that is only for 87iv and 89iv.

That is controlled with d or D and r or R after the baudrate, lower case letter will set the pin low, upper case letter will set the pin high. It is probably "#baudrate 9600N81Dr" that will work
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 05:39:05 pm
That is controlled with d or D and r or R after the baudrate, lower case letter will set the pin low, upper case letter will set the pin high. It is probably "#baudrate 9600N81Dr" that will work
"R" and "r" works, but "d" and "D" doesn't do nothing. The pin 4 output always +V.
Flukeviewforms set it correctly to -V the pin 4.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 05:48:01 pm
I was also playing with the SingleValue driver, this is the definition that i came up for the Protek (for now for DC mode):
Code: [Select]
#idString PROTEK,Protek 506
#name Protek 506
#handle P506
#port comfixedbaud
#baudrate 1200N72
#eol \r
#driver SingleValue

#value VoltageDC V d3 DC

#interfaceType DMM
#interface readValue 0

#askValues \r
It works, in the debug i get values:
Code: [Select]
;; PROTEK506: Tx <VALUE?>
;; PROTEK506: Rx <-0.001>
;; PROTEK506: Rx as numbers <-0.001>

but in the "current values" window i not have nothing.
What i am doing wrong?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 05:51:12 pm
That is controlled with d or D and r or R after the baudrate, lower case letter will set the pin low, upper case letter will set the pin high. It is probably "#baudrate 9600N81Dr" that will work
"R" and "r" works, but "d" and "D" doesn't do nothing. The pin 4 output always +V.
Flukeviewforms set it correctly to -V the pin 4.

I found a typo, try this jar file: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 05:55:18 pm
I was also playing with the SingleValue driver, this is the definition that i came up for the Protek (for now for DC mode):
Code: [Select]
#idString PROTEK,Protek 506
#name Protek 506
#handle P506
#port comfixedbaud
#baudrate 1200N72
#eol \r
#driver SingleValue

#value VoltageDC V d3 DC

#interfaceType DMM
#interface readValue 0

#askValues \r
It works, in the debug i get values:
Code: [Select]
;; PROTEK506: Tx <VALUE?>
;; PROTEK506: Rx <-0.001>
;; PROTEK506: Rx as numbers <-0.001>

but in the "current values" window i not have nothing.
What i am doing wrong?

Two things:
1) Disable #eol, it is not needed here use: #eol \_
2) You mode/selector specification is wrong, it you leave it out you will get the value. But what you really need is the correct mode, I believe it is "DCV".
The driver uses all letters on the line for mode, except SI prefixes. It is supposed to list the mode in the debug information.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 06:01:31 pm
I found a typo, try this jar file: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Perfect!
Now with
Code: [Select]
#baudrate 9600N81dR
set on both Fluke 87 and 89 definitions i have the control lines set the same as the fluke software, i have not a fluke cable, but now i think that must work.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 06:09:37 pm
Two things:
1) Disable #eol, it is not needed here use: #eol \_
2) You mode/selector specification is wrong, it you leave it out you will get the value. But what you really need is the correct mode, I believe it is "DCV".
The driver uses all letters on the line for mode, except SI prefixes. It is supposed to list the mode in the debug information.
Ok for the #eol.
For the "DC" instead of the "DCV", i tought that the software was using this string for know the mode of the meter. My meter in DC voltage output the line
Code: [Select]
DC 9.999 V(chr13)While in AC voltage
Code: [Select]
AC 9.999 V(chr13)
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on April 21, 2020, 06:37:30 pm
Hi, i can confirm that now my Fluke 89IV it's in the working state with last, corrected .jar file and interface setting (#baudrate 9600N81dR).
Many thanks.

Marco
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 06:44:35 pm
Perfect!
Now with
Code: [Select]
#baudrate 9600N81dR
set on both Fluke 87 and 89 definitions i have the control lines set the same as the fluke software, i have not a fluke cable, but now i think that must work.

This will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 06:47:27 pm
Two things:
1) Disable #eol, it is not needed here use: #eol \_
2) You mode/selector specification is wrong, it you leave it out you will get the value. But what you really need is the correct mode, I believe it is "DCV".
The driver uses all letters on the line for mode, except SI prefixes. It is supposed to list the mode in the debug information.
Ok for the #eol.
For the "DC" instead of the "DCV", i tought that the software was using this string for know the mode of the meter. My meter in DC voltage output the line
Code: [Select]
DC 9.999 V(chr13)While in AC voltage
Code: [Select]
AC 9.999 V(chr13)

If I only look at the DC part I would not know if it was voltage or current, that is the reason it collects all letters to DCV, ACV, DCA, and ACA.

These four wold handle voltage and current:

#value VoltageDC V d3 DCV
#value VoltageAC V d3 ACV
#value CurrentDC A d3 DCA
#value CurrentAC A d3 ACA


Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 07:04:33 pm
Ok, got it!
I was testing also with si values, and get also the mv and ua ranges.

But for resistance, the string is:
Code: [Select]
RES 1.111 MOHM(chr13)i have tried
Code: [Select]
#value Resistance ohm d3 RES
#value Resistance ohm d3 RESOHM
#value Resistance ohm d3 ROHM
and also with "si" instead of "d3", but never worked. I not understand what type of search you do on the input string, in theory RESOHM had all the characters.
Sorry to bother you so much but i understand a bit slowly |O
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 07:24:29 pm
Ok, got it!
I was testing also with si values, and get also the mv and ua ranges.

But for resistance, the string is:
Code: [Select]
RES 1.111 MOHM(chr13)i have tried
Code: [Select]
#value Resistance ohm d3 RES
#value Resistance ohm d3 RESOHM
#value Resistance ohm d3 ROHM
and also with "si" instead of "d3", but never worked. I not understand what type of search you do on the input string, in theory RESOHM had all the characters.
Sorry to bother you so much but i understand a bit slowly |O

RESOHM is supposed to work, the M is used to multiply the reading by 1000000 and will show as M if you use SI as unit. There was a fault in my logic, because I also tries to handle 12E3 notation for the value. It is hopefully fixed now (Link is the one I posted above).

In debug mode is has this line:
;; Mode reported: <RESOHM>
Each time you change mode, it shows the mode used in the #value lines





Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 07:53:54 pm
Perfect, resistance fixed, RESOHM working ok!
Question for continuity mode, diode mode and logic level mode... I have some text for this modes, for example in continuity can be "OPEN" or "SHORT", in diode "OPEN", "GOOD"or "SHORT", in logic "LOW", "HIGH" or "UNDET".
There are really few oppurtunity to have the need to log this modes (as continuity is covered by Resistance, diode... who need to log a diode testing?? and logic by VoltageDC), but there is no way to integrate them?

Now i play with other things (temperature, C/L and frequency) but the most is done  :-+ :-+ :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2020, 08:03:03 pm
Perfect, resistance fixed, RESOHM working ok!
Question for continuity mode, diode mode and logic level mode... I have some text for this modes, for example in continuity can be "OPEN" or "SHORT", in diode "OPEN", "GOOD"or "SHORT", in logic "LOW", "HIGH" or "UNDET".
There are really few oppurtunity to have the need to log this modes (as continuity is covered by Resistance, diode... who need to log a diode testing?? and logic by VoltageDC), but there is no way to integrate them?

Now i play with other things (temperature, C/L and frequency) but the most is done  :-+ :-+ :-+

If have some build-in text strings, but I may need to add a tag for specifying text strings and their value. I will take a look at that tomorrow.
A matching text will have to return a numeric value or +OL or -OL.
If it matches a text string it will be removed from the input, before it checks mode.


Theoretically you will be able to show text, but it requires defining a column as "Digital" and using bits for the different text. I will not really recommend that for a multimeter.

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 21, 2020, 09:13:13 pm
1.) Next a slightly improved definition file (Ver 0.7) for the R&S HMC 8043 power supply. Coloured popup tabs according the resistor colour code.
Planning to end further development at this point unless someone asks for further features in the next few days. Should any debugging be required, I will still be watching this space. :popcorn: also to see if anything pops up for my Voltcraft VC940 USB-HID. :palm:

2.) Also included a very basic definition file (Ver 0.1) for the R&S HMO 1022 scope. RMS, frequency and math for dB only. Since usually scopes are typically not used for logging I plan the leave this definition file as it is. Unless someone comes up with anything urgent in the next few days. :popcorn:

Quite a nice adventure for an analogue guy like me. Thanks to HKJ for his valuable assistance to keep me going.  :-+

Tomorrow is the time to fire up my good old Weller soldering iron again and finish off some almost completed projects in the pipeline.  :-[
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 10:10:12 pm
Perfect, resistance fixed, RESOHM working ok!
Question for continuity mode, diode mode and logic level mode... I have some text for this modes, for example in continuity can be "OPEN" or "SHORT", in diode "OPEN", "GOOD"or "SHORT", in logic "LOW", "HIGH" or "UNDET".
There are really few oppurtunity to have the need to log this modes (as continuity is covered by Resistance, diode... who need to log a diode testing?? and logic by VoltageDC), but there is no way to integrate them?

Now i play with other things (temperature, C/L and frequency) but the most is done  :-+ :-+ :-+

If have some build-in text strings, but I may need to add a tag for specifying text strings and their value. I will take a look at that tomorrow.
A matching text will have to return a numeric value or +OL or -OL.
If it matches a text string it will be removed from the input, before it checks mode.


Theoretically you will be able to show text, but it requires defining a column as "Digital" and using bits for the different text. I will not really recommend that for a multimeter.


A tag would be nice, so that any other device with this modes can be inserted simply by the definition file.
Really thanks for your efforts on this program! The idea ho have "one program to rule them all" is really brilliant!
In the next days i try to implement my korad devices over usb/232/lan.
Title: Re: Program that can log from many multimeters.
Post by: Neomys Sapiens on April 21, 2020, 10:11:07 pm
Has anyone started to do integration for the HP3478A? It is one of the most used lab grade DMMs after all.
Maybe my last request was too far out, but there are a lot of 3478A users on this forum!
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 21, 2020, 11:33:20 pm
HKJ,

Attached is a new version of the Siglent SDM3065X device file. I decided to remove all of "tip" tags. I am going to start on updating the SDM3055 file.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 21, 2020, 11:37:47 pm
Attached there is the Proetk 506 file. Seem all, ok.
Only one thing, when in temperature, the °C header in the "current values" isn't well displayed (there is a strange character before the °).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 21, 2020, 11:49:05 pm
...Attached is a new version of the Siglent SDM3065X device file. I decided to remove all of "tip" tags. I am going to start on updating the SDM3055 file...

I tested the 3065 file with a 3055 (I only renamed the relevant lines so that it doesn't complain), so I could see what it looked like.
Wow, you put a lot of effort into it.  :-+
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 12:44:40 am
klausES,

I just finished an untested device file for the SMD3055. Please test it and let me know if you find any issues.

Title: Re: Program that can log from many multimeters.
Post by: klausES on April 22, 2020, 01:20:35 am
Test now only briefly (must sleep) rest tomorrow.  :)

I only noticed one mistake on the fast one.
At Temp there is an "Â" in the cell in front of the °C ?!?

On purpose ? Does it have a special meaning?

Line = #value Temperature °C D4 Temperature
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 22, 2020, 08:16:18 am
V0.40 is up.

It includes some definition updates and a change to the "SingleValue" driver. I have modified the Protec506 definition to match it (It is included), but it needs some checking. The problems with the degree character was due to character sets issues, I uses a old style cp1252 format (Because my editor uses it as default), you used a more modern utf-8. TestController can handle utf-8 & utf-16 if it knows it, the file must have a BOM (May be an option in your editor). I have added a BOM to you definition.
The character set is only a problem with special characters, anything in the A-Z range and some symbols will always work (See here for a list: https://en.wikipedia.org/wiki/ASCII ).

I have not included the HMO1022 and the SDM3055
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 22, 2020, 09:44:15 am
With 040 I'm getting

Exception in thread "Thread-4" java.lang.Error: Unresolved compilation problem:
        The method readFileAsListAutoCharset(File) in the type FileUtil is not applicable for the arguments (File, String, boolean, boolean)

 when trying to get the list. Has to do with the changed char set. :palm:
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 22, 2020, 09:53:20 am
With 040 I'm getting

Exception in thread "Thread-4" java.lang.Error: Unresolved compilation problem:
        The method readFileAsListAutoCharset(File) in the type FileUtil is not applicable for the arguments (File, String, boolean, boolean)

 when trying to get the list. Has to do with the changed char set. :palm:
Same error
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 22, 2020, 09:53:31 am
With 040 I'm getting

Exception in thread "Thread-4" java.lang.Error: Unresolved compilation problem:
        The method readFileAsListAutoCharset(File) in the type FileUtil is not applicable for the arguments (File, String, boolean, boolean)

 when trying to get the list. Has to do with the changed char set. :palm:

I forgot to include my updated library in the final build, it is included now, version number is the same.
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on April 22, 2020, 11:11:02 am
Many many thanks HKJ...

Marco
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 22, 2020, 11:24:04 am
Thanks! Perfect! Works ok on protek device. Noticed that have already implemented the conversion from text strings to values, perfect!
Continuity was not working, fixed on the attached file.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 01:51:42 pm
Test now only briefly (must sleep) rest tomorrow.  :)

I only noticed one mistake on the fast one.
At Temp there is an "Â" in the cell in front of the °C ?!?

On purpose ? Does it have a special meaning?

Line = #value Temperature °C D4 Temperature

klausES ,

The attached should fix the °C.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 01:55:22 pm
HKJ,

I was using windows notepad to edit the file I changed to notepad++ and added a BOM

V0.40 is up.

It includes some definition updates and a change to the "SingleValue" driver. I have modified the Protec506 definition to match it (It is included), but it needs some checking. The problems with the degree character was due to character sets issues, I uses a old style cp1252 format (Because my editor uses it as default), you used a more modern utf-8. TestController can handle utf-8 & utf-16 if it knows it, the file must have a BOM (May be an option in your editor). I have added a BOM to you definition.
The character set is only a problem with special characters, anything in the A-Z range and some symbols will always work (See here for a list: https://en.wikipedia.org/wiki/ASCII ).

I have not included the HMO1022 and the SDM3055
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 22, 2020, 02:06:10 pm
I was using windows notepad to edit the file I changed to notepad++ and added a BOM

You say when I can update it.
Can there be problems with BOM in some of you other meter definitions?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 02:26:57 pm
HKJ,

The SDM3065X had the same issue, attached is the corrected file

[attach=1]

I was using windows notepad to edit the file I changed to notepad++ and added a BOM

You say when I can update it.
Can there be problems with BOM in some of you other meter definitions?
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 22, 2020, 06:06:48 pm
...The attached should fix...

Don't hit, I took the  out for test (secretly for me) this morning without asking you.  ;)

Thanks for the new complete file.  :)
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 08:22:30 pm
klausES,

Are you having any issues with the file? Once you confirm it is working HKJ will add the file to the next update.

...The attached should fix...

Don't hit, I took the  out for test (secretly for me) this morning without asking you.  ;)

Thanks for the new complete file.  :)
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 22, 2020, 09:40:50 pm
Could just start testing.
I will call back soon.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 22, 2020, 09:55:34 pm
HKJ,

It looks like Brymen and Fluke DDMs are having the same issues with BOMs.

[attachimg=1]

I was using windows notepad to edit the file I changed to notepad++ and added a BOM

You say when I can update it.
Can there be problems with BOM in some of you other meter definitions?
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 22, 2020, 10:28:05 pm
At first thought there was a problem.

In the setup window:
If you go from autorange to manual range in DC, AC Voltage such as DC, AC current, you will not get back to autorange (radio button remains with manual).

But it works when you are in this setup and at the same time (via mode popup) in the same measurement mode of the setup.
So no mistake, all well.

A luxury problem:
Would it be possible to choose not only beeper on / off but also the three volume levels in diode and continuity ?  :D

Otherwise I could not find anything so far that would not work.  :-+
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 22, 2020, 11:04:53 pm
HKJ,
would it be possible that the main window is not centered in the middle of the desktop when the program is started,
but used the last used position saved on the desktop again ?
Even worse ... would this save the last position also for the popups ?

I'd rather take cover now...  :box:
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 23, 2020, 01:10:10 am
klausES,

I tried looking for the SCPI commands for the three volume levels in diode and continuity but had no luck. The commands are not in Siglent's documents, I also tried guessing with no luck

A luxury problem:
Would it be possible to choose not only beeper on / off but also the three volume levels in diode and continuity ?  :D

Otherwise I could not find anything so far that would not work.  :-+
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 23, 2020, 02:31:49 am
HKJ,

How hard is it to add a device file for the Riden RD6006? Below is a link I found with the protocol details

https://github.com/msillano/RD6006-Super-power-supply (https://github.com/msillano/RD6006-Super-power-supply)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 04:49:25 am
It looks like Brymen and Fluke DDMs are having the same issues with BOMs.

It is not exactly the same problem, but I will look at it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 04:52:39 am
HKJ,
would it be possible that the main window is not centered in the middle of the desktop when the program is started,
but used the last used position saved on the desktop again ?
Even worse ... would this save the last position also for the popups ?

Look on the configuration page, there is a option for it.
I do save the position for the readout popups, I will think about the others.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 04:54:54 am
HKJ,

How hard is it to add a device file for the Riden RD6006? Below is a link I found with the protocol details

https://github.com/msillano/RD6006-Super-power-supply (https://github.com/msillano/RD6006-Super-power-supply)

I plan on supporting the modbus protocol, but I do not know if it will be hardcoded or with user configurable yet.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 23, 2020, 06:50:32 am
Bug report:
VC 940 COM (Real COM on PC) Ohms values correct on VC 940
but by a factor of 10 lower as shown by your prog.  :scared:
This applies to the entire range tested (from 1 Ohm to 10 Meg)

Other quick testes:
VOLT DC is OK
Hz is OK
Temperature is OK (except for the square preceding the C)
Capacitance is OK
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 09:53:55 am
Bug report:
VC 940 COM (Real COM on PC) Ohms values correct on VC 940
but by a factor of 10 lower as shown by your prog.  :scared:
This applies to the entire range tested (from 1 Ohm to 10 Meg)

I suppose this means I have to divide ohm readings by 10 and also continuity readings (It is separate from ohms).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 12:03:34 pm
V0.41 is up.
There is a couple of updates.
1) TestController can now remember popup location, it is controlled from the configuration page.
2) The °C issue is hopefully fixed.
3) I have added a lot of # commands, type a # on the command line and see the help window. They are all designed for setting up TestController in various ways from a script.
4) Support for specifying a startup script (There was already a default), see .bat file for more information.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 23, 2020, 12:32:26 pm
Bug report:
VC 940 COM (Real COM on PC) Ohms values correct on VC 940
but by a factor of 10 lower as shown by your prog.  :scared:
This applies to the entire range tested (from 1 Ohm to 10 Meg)

I suppose this means I have to divide ohm readings by 10 and also continuity readings (It is separate from ohms).

Sorry for not being clear enough: for example, for a 1 MegOhm resistor the VC 940 COM displays 1 MegOhm as it should, but the Test Controller displays 100 kOhm. So a multiply by 10 is required. Will look at the continuity readings later since we are busy with some garden work. :-/O Same applies to the continuity readings (Still on Ver. 040).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 23, 2020, 12:44:21 pm
Mikelud,
how could I change the placement of the buttons in the 3055 mode popup ?
Would e.g. like to swap places AC Current with DC Voltage and then set both Currents one column higher (instead of Capitance and Continuity).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 12:44:41 pm
Sorry for not being clear enough: for example, for a 1 MegOhm resistor the VC 940 COM displays 1 MegOhm as it should, but the Test Controller displays 100 kOhm. So a multiply by 10 is required. Will look at the continuity readings later since we are busy with some garden work. :-/O Same applies to the continuity readings (Still on Ver. 040).

This will be fixed in next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 12:46:50 pm
Mikelud,
how could I change the placement of the buttons in the 3055 mode popup ?
Would e.g. like to swap places AC Current with DC Voltage and then set both Currents one column higher (instead of Capitance and Continuity).

That is not possible, I sort the buttons alphabetically.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 01:29:03 pm
V0.42 is up, due to KlausES (VC940 is also fixed).

Add a

#cmdModeLayout columns rows

To the device specifications, then the mode window will have the specified number of columns and rows.
When this commands has been used it is also possible to use empty

#cmdMode

for adding empty positions in the mode layout.


If changing a layout it may be a good idea to copy it to ...documents/TestController/Devices
Layouts placed there will override the definitions supplied with TestController

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 23, 2020, 02:47:49 pm
Uhm, so now if i create more definitions i can do them with windows notepad? I think that it save in UTF.

I think that there is still something wrong with protek.
In resistance mode when i'm in OL, on the current value window i get "0".
But this is the debug:
Code: [Select]
;; P506: Tx <VALUE?>
;; P506: Rx <∞>
;; P506: Rx as numbers <Infinity>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 02:55:55 pm
Uhm, so now if i create more definitions i can do them with windows notepad? I think that it save in UTF.

My notepad has a box to select character encoding when I save the file, plain UTF-8 will probably not work, but I expect all the others will. The only time where it is important is with degree symbol and national characters, the rest will work in any character encoding.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 23, 2020, 03:05:22 pm
Sorry, i've edited the previous message while you was posting...

Yes, my notepad too have the box for select the format, next will be saved in UTF-16, thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 03:16:06 pm
I think that there is still something wrong with protek.
In resistance mode when i'm in OL, on the current value window i get "0".
But this is the debug:
Code: [Select]
;; P506: Tx <VALUE?>
;; P506: Rx <∞>
;; P506: Rx as numbers <Infinity>

Check the configuration page, there you can define how the software handles overflow (A infinity value may not work in a csv file).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on April 23, 2020, 03:56:36 pm
I've set "return infinite".
I'm checking only on the "current values" list.
On previous versions i remember that there was correctly the infinite symbol.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 06:22:16 pm
I've set "return infinite".
I'm checking only on the "current values" list.
On previous versions i remember that there was correctly the infinite symbol.

The problem was filtering in the code for current values, it removes all invalid values before it do statistic and if there are no values left the value shown is 0.
From next version "Current" is excluded from that filter.

If you had used logging and looked in the table it would have shown the correct infinite value.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 23, 2020, 07:01:34 pm
The saved window position, also that of the popups, is very good.
Thanks for that.  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 07:13:53 pm
The saved window position, also that of the popups, is very good.

You can also do the layout and opening of windows from a script now, even make one that is run each time you start the program.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 23, 2020, 08:12:25 pm
HKJ,

I could not get #cmdModeLayout columns rows to work, My understanding is you add it to the device file, code shown below.

Code: [Select]
; Strings to configure device in different modes
; First parameter must match a #value (4 parameter) and second parameter must match what #askMode returns
; First parameter is also used in shortcut menu
;#cmdMode

#cmdModeLayout columns rows 3 4

#cmdMode DC_Voltage VOLT
abort;
*cls;
CONF:VOLT:DC;[*OPC]

V0.42 is up, due to KlausES (VC940 is also fixed).

Add a

#cmdModeLayout columns rows

To the device specifications, then the mode window will have the specified number of columns and rows.
When this commands has been used it is also possible to use empty

#cmdMode

for adding empty positions in the mode layout.


If changing a layout it may be a good idea to copy it to ...documents/TestController/Devices
Layouts placed there will override the definitions supplied with TestController
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 08:16:37 pm
I could not get #cmdModeLayout columns rows to work, My understanding is you add it to the device file, code shown below.

One small modification (The columns & rows text was supposed to be replaced by the numbers):

#cmdModeLayout  3 4

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 23, 2020, 08:19:40 pm
HKJ,

I tried #cmdModeLayout  3 4 also did not work.

I could not get #cmdModeLayout columns rows to work, My understanding is you add it to the device file, code shown below.

One small modification (The columns & rows text was supposed to be replaced by the numbers):

#cmdModeLayout  3 4
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 08:43:22 pm
I tried #cmdModeLayout  3 4 also did not work.

Something must have been mixed up in V0.42, I have no idea how.
I have uploaded V0.43 and I checked it just before I zipped it and #cmdModeLayout works.

It do also include the fix to infinite and a update to the G&W ps and one G&W ps more from Hexley.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 23, 2020, 09:08:33 pm
...If changing a layout it may be a good idea to copy it to ...documents/TestController/Devices
Layouts placed there will override the definitions supplied with TestController

I unpacked your program at another location on C: and it runs from there (a shortcut on the desktop starts it).
(The devices directory, as the unpacker placed, is also at this location).

Which device directory is really relevant for the program?
That as a subdirectory at the location of the program or the ...documents/TestController/Devices...?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2020, 09:20:12 pm
Which device directory is really relevant for the program?
That as a subdirectory at the location of the program or the ...documents/TestController/Devices...?

Both, it will load files from both places, the one in documents takes precedence. This way you can have modified definitions without having any trouble updating the program and included devices.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 23, 2020, 10:28:09 pm
When I have connected (and worked) the program to the SDM3055 and finished the program the 3055 remains on remote.
(Must then be manually set to local on the device).

Before that, it no longer allows remote access from other applications.

Your program in this state (your program terminated, 3055 still on remote),
but for itself it can be reconnected.
Which other applications cannot do this at this moment...

It is probably not possible that the 3055 is set to local when the program is ended ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 23, 2020, 11:57:06 pm
HKJ,

#cmdModeLayout works, Thanks again!!

[attachimg=1]

I tried #cmdModeLayout  3 4 also did not work.

Something must have been mixed up in V0.42, I have no idea how.
I have uploaded V0.43 and I checked it just before I zipped it and #cmdModeLayout works.

It do also include the fix to infinite and a update to the G&W ps and one G&W ps more from Hexley.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 24, 2020, 12:08:28 am
klausES,

You can add *rst to the below line. The original device file had it.  I removed it because it kept turning off the screensaver.

Code: [Select]
; Final command to meter before breaking connection
#finalCmd abort;*cls;*rst

When I have connected (and worked) the program to the SDM3055 and finished the program the 3055 remains on remote.
(Must then be manually set to local on the device).

Before that, it no longer allows remote access from other applications.

Your program in this state (your program terminated, 3055 still on remote),
but for itself it can be reconnected.
Which other applications cannot do this at this moment...

It is probably not possible that the 3055 is set to local when the program is ended ?
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 24, 2020, 12:22:21 am
Code: [Select]
; Final command to meter before breaking connection
#finalCmd abort;*cls;*rst
Wow, it works.  :-+

No longer has to walk through the house to the 3055 every time I am sitting at the computer in the living room.  :)
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 24, 2020, 12:35:56 am
Does changing the 3055 mode button positions already work ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 24, 2020, 12:51:52 am
Yes, see screenshot and sample code

[attachimg=1]

Code: [Select]
; Strings to configure device in different modes
; First parameter must match a #value (4 parameter) and second parameter must match what #askMode returns
; First parameter is also used in shortcut menu
;#cmdMode

#cmdModeLayout 3 5

#cmdMode DC_Voltage VOLT
abort;
*cls;
CONF:VOLT:DC;[*OPC]

#cmdMode AC_Voltage VOLT:AC
abort;
*cls;
conf:volt:ac;[*OPC]

#cmdMode 2W_Resistance RES
abort;
*cls;
conf:res;[*OPC]

#cmdMode

#cmdMode 4W_Resistance FRES
abort;
*cls;
conf:fres;[*OPC]

#cmdMode Capacitance CAP
abort;
*cls;
conf:cap;[*OPC]

#cmdMode Diode DIOD
abort;
*cls;
conf:diod;[*OPC]

#cmdMode Continuity CONT
abort;
*cls;
conf:CONT;[*OPC]

#cmdMode

#cmdMode Frequency FREQ
abort;
*cls;
conf:freq;[*OPC]

#cmdMode Period PER
abort;
*cls;
conf:per;[*OPC]

#cmdMode Temperature TEMP
abort;
*cls;
func "temp";[*OPC]

#cmdMode

#cmdMode DC_Current CURR
abort;
*cls;
conf:curr:dc;[*OPC]

#cmdMode AC_Current CURR:AC
abort;
*cls;
conf:curr:ac;[*OPC]

Does changing the 3055 mode button positions already work ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 24, 2020, 11:00:19 am
I plan on supporting the modbus protocol, but I do not know if it will be hardcoded or with user configurable yet.

HKJ

I think going with the user configurable would be the best route. This would allow user like me to do some of the work in helping add more devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 24, 2020, 11:15:25 am
I plan on supporting the modbus protocol, but I do not know if it will be hardcoded or with user configurable yet.
I think going with the user configurable would be the best route. This would allow user like me to do some of the work in helping add more devices.

I agree, but I have to look a bit on MODBUS first and see how difficult it is to do in my framework. The easiest way would be if I can make some SCPI style commands that translates to MODBUS messages and answers.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 24, 2020, 06:04:54 pm
What can it be if a definition file with changed content is not read by the program despite copying the new version
in both relevant directories (the old ones were definitely overwritten).
So the old definition file is still used by the program, not the changed one.

Removing the device, exiting the program, restarting, the device new from the list and integrating it did not change either.

As if the program saved the data of the old file somewhere else and still read the old ones ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 24, 2020, 06:30:16 pm
What can it be if a definition file with changed content is not read by the program despite copying the new version
in both relevant directories (the old ones were definitely overwritten).

The program only read the two directories, not anything else. A serious error will usually mean the program drops the file, you may see an error on the console output in debug mode.
The program do not have any hidden definitions, all devices is based on the two devices directories. In some cases it might be a bit obscure due to #metadef statements, but that is it. It is also important to know that filenames do not have anything with the device names to do, except what the people making the definitions elect (For anything but DMMs it is fairly straight for now and that is due to me and #metadef to match similar equipment).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 24, 2020, 09:07:28 pm
Checked all definition files, followed every advice, the error remains.
Then it found that the devices were duplicated in the device list. Not all but just my two devices.
But the two txt files of my two devices were only correctly present once in each of the two directories.

All directories completely emptied, program new unpacked, the two definition files supplied by the unpacker exchanged for the two changed ones.
Everything is going now.

It's strange that my two txt files now appear twice in the device list again (but it works) ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 24, 2020, 09:50:34 pm
HKJ,

I have one question, does it matter the order of the :read: and :write: tags under #cmdSetup command. I notice on your website the samples show :read: first on some of the samples and others show :write: first.

Thanks
MikeLud
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 04:12:10 am
I have one question, does it matter the order of the :read: and :write: tags under #cmdSetup command. I notice on your website the samples show :read: first on some of the samples and others show :write: first.

No, all the tags can be in any sequence.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 09:59:04 am
Modbus is nearly working now and it is defined in a device file.
If somebody want to help me test it and has time today or tomorrow to try implement and test a Modbus device, please say. It is the serial RTU type I have implemented.
I am testing on a Maynou M9712C load.
Title: Re: Program that can log from many multimeters.
Post by: Gandalf_Sr on April 25, 2020, 10:40:25 am
I've been lurking here for a while and finally got round to downloading and running this code; it looks pretty good :D

One obvious application for this would be to test power supplies.  I own an HP6060B 3-60V 0-60A DC electronic load and a HP6643A 0-35V 0-6A Power supply, these devices are old and have GPIB connectors at the back that I connect to an Aglient E5810A GPIB to LAN gateway.  Can anyone steer me as to:

a. How I can make a connection from HKJ's program to my devices over the LAN?
b. How to get started writing device files that would control the above old test gear?

Thanks in advance.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 11:05:24 am
Modbus is nearly working now and it is defined in a device file.
If somebody want to help me test it and has time today or tomorrow to try implement and test a Modbus device, please say. It is the serial RTU type I have implemented.
I am testing on a Maynou M9712C load.

HkJ,

I will try the RD6006, send over the new version for me to test.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 11:10:32 am
Gandalf_Sr,

Go to HKJ's website, he has a lot of info there on how to use his program and writing a device files.

https://lygte-info.dk/project/TestControllerIntro%20UK.html (https://lygte-info.dk/project/TestControllerIntro%20UK.html)

I've been lurking here for a while and finally got round to downloading and running this code; it looks pretty good :D

One obvious application for this would be to test power supplies.  I own an HP6060B 3-60V 0-60A DC electronic load and a HP6643A 0-35V 0-6A Power supply, these devices are old and have GPIB connectors at the back that I connect to an Aglient E5810A GPIB to LAN gateway.  Can anyone steer me as to:

a. How I can make a connection from HKJ's program to my devices over the LAN?
b. How to get started writing device files that would control the above old test gear?

Thanks in advance.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 11:12:51 am
a. How I can make a connection from HKJ's program to my devices over the LAN?

The program works directly with LAN, you just need the network address for the device. Only requirement is that you can connect to the controller and do a "*idn?" getting the device id string. If you need to do a couple of command first it will not work.

b. How to get started writing device files that would control the above old test gear?

Check the files in the Devices directory, they are all definitions for equipment. There are a couple of different formats, you will need to check the SCPI ones (Files without a #driver definition is usually SCPI).

I have also written a document about doing SCPI definitions: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)


The easiest way to start is making a file with this contents:

#idString Test,test
#name Test
#handle Test
#port 9221

Port must be correct.
When connecting with this file you will get a error message, because the #idString do not match the device. This error message contains the correct #idString. Change the file to use the correct name and try again, it must now say it has found the device.

When the above works, you can start making the definition. Note that you can test command on the command line, it will work as a terminal connected to the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 11:21:35 am
I will try the RD6006, send over the new version for me to test.

You can get it here: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
The Modbus is not finished yet, but everything that is described here: http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Serial_Modbus_RTU (http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Serial_Modbus_RTU)
hopefully works.

Here is a partially device definition using modbus, it do not work yet (It is missing a on and mode commands):

#idString Maynuo,Maynuo M9712C
#name Maynuo M9712C
#handle M9712C
#port com
#driver Modbus

#disableWriteSingle 1

#scpiCmd Current holdingF 0xa01 (value)
#scpiCmd Current? holdingF? 0xa01
#scpiCmd Voltage holdingF 0xa03 (value)
#scpiCmd Voltage? holdingF? 0xa03
#scpiCmd Power holdingF 0xa05 (value)
#scpiCmd Power? holdingF? 0xa05
#scpiCmd Resistance holdingF 0xa07 (value)
#scpiCmd Resistance? holdingF? 0xa07

#scpiCmd values? holdingF? 0xb00;holdingF? 0xb02


#value Voltage V D3
#value Current A D3

; This is a single line command
#askValues values?


; Initial commands to meter when establishing connection
#initCmd 

; Final command to meter before breaking connection
#finalCmd

; Used when output off button is pressed
#outputOff
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 01:10:24 pm
HKJ,

I am able to get my RD6006 to communicate. When on the Current Values tab I get the below after about a minute or two.

Code: [Select]
COM7 23.827 vTx: values?
;; COM7: Tx: 01 03 00 05 00 01 94 0B
;; COM7: Rx: 01 03 02 00 1F F9 8C
;; COM7: Tx: 01 03 00 0A 00 01 A4 08
;; COM7: Rx: 01 03 02 01 F4 B8 53
COM7 23.953 vRx: 31 500
;; RD6006: Rx <31 500>
;; RD6006: Rx as numbers <31.0 500.0>
;; RD6006: Tx <values?>
COM7 24.033 vTx: values?
;; COM7: Tx: 01 03 00 05 00 01 94 0B
Thread for RD6006
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.readHoldingInput(DeviceModbus.java:336)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModbus.java:176)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:102)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:155)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:192)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:237)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:317)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:301)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:38)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:905)
java.lang.NullPointerException
        at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:363)
        at dk.hkj.main.PaneCurrentValues.timerUpdate(PaneCurrentValues.java:353)
        at dk.hkj.main.PaneCurrentValues.access$6(PaneCurrentValues.java:351)
        at dk.hkj.main.PaneCurrentValues$2.actionPerformed(PaneCurrentValues.java:68)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 01:33:38 pm
I am able to get my RD6006 to communicate. When on the Current Values tab I get the below after about a minute or two.

Can it have problems with the update speed? Try log with 1 seconds intervals and see if it works without error.
Do it stop updating completely?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 03:12:43 pm
I am able to get my RD6006 to communicate. When on the Current Values tab I get the below after about a minute or two.

Can it have problems with the update speed? Try log with 1 seconds intervals and see if it works without error.
Do it stop updating completely?

HKJ,

It is a timing issue, logging at 1 second works. When on the Current Value  tab it stops updating completely. If I change tabs and go back to the Current Value it starts back up.
I also could not get /factor to work
#scpiCmd Voltage? holding? 0x0a /100
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 03:43:17 pm
It is a timing issue, logging at 1 second works. When on the Current Value  tab it stops updating completely. If I change tabs and go back to the Current Value it starts back up.

I will take a look at that tomorrow

I also could not get /factor to work
#scpiCmd Voltage? holding? 0x0a /100

My command parsing is a bit lazy at the moment, you need to use:
#scpiCmd Voltage? holding? 0x0a 1 /100


I have updated the software and documentation, there is a few new details:
#verifyDevice
#scpiCmd getDeviceSW? ...
#scpiCmd getDeviceSN? ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 04:49:56 pm
I got time to add a #cmdDelayTime

Something like:

#cmdDelayTime 50

May fix the timeout.

This is V0.46 and only a .jar file.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 05:27:07 pm
HKJ,

The below link is still V0.45

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

I got time to add a #cmdDelayTime

Something like:

#cmdDelayTime 50

May fix the timeout.

This is V0.46 and only a .jar file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 05:54:57 pm
The below link is still V0.45

Probably the server that is funny, sometimes there is a delay from I upload until I can download it from website.
I deleted the jar file on the server and uploaded it again, it may help or time may help.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 06:35:21 pm
HKJ,

The issue I was having with timing out was the baud rate on the RD6006 being to high, the default was 115200, I dropped it down to 9600 and all is good with out using #cmdDelayTime.

I still  can not get /factor to work
#scpiCmd Voltage? holding? 0x0a 1 /100

I got time to add a #cmdDelayTime

Something like:

#cmdDelayTime 50

May fix the timeout.

This is V0.46 and only a .jar file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 06:49:10 pm
The issue I was having with timing out was the baud rate on the RD6006 being to high, the default was 115200, I dropped it down to 9600 and all is good with out using #cmdDelayTime.

It is a good idea to secure it works at its default settings, i.e. try with a small delay.

I still  can not get /factor to work
#scpiCmd Voltage? holding? 0x0a 1 /100

I have only tested it on the command line, because the load I am using do not need it.
I.e. do "holding? 0x0a 1 /100" work on the command line?
The last version did fix the parser and you do not need the 1 anymore.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 25, 2020, 06:59:09 pm

I still  can not get /factor to work
#scpiCmd Voltage? holding? 0x0a 1 /100

I have only tested it on the command line, because the load I am using do not need it.
I.e. do "holding? 0x0a 1 /100" work on the command line?
The last version did fix the parser and you do not need the 1 anymore.

HKJ,

I does work on the command line :-+

I will test #cmdDelayTimes at the default baud rate.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2020, 07:07:15 pm
I does work on the command line :-+

I am a bit lazy tonight and am not going to test it, but could the problem be you use:

#scpiCmd xxx holding? 0x123 /100 (value)

and not:

#scpiCmd xxx holding? 0x123 (value) /100
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 26, 2020, 01:46:34 am
HKJ,

I have most of everything work except when trying to writing a new VSet or ISet value I get the below code.

Code: [Select]
;; RD6006: Rx as number <1.0>
;; RD6006: Tx <VSet?>
;; COM7: Tx: 01 03 00 08 00 01 05 C8
;; COM7: Rx: 01 03 02 01 F4 B8 53
;; RD6006: Rx <5.0>
;; RD6006: Rx as number <5.0>
;; RD6006: Tx <ISet?>
;; COM7: Tx: 01 03 00 09 00 01 54 08
;; COM7: Rx: 01 03 02 04 D2 3A D9
;; RD6006: Rx <1.234>
;; RD6006: Rx as number <1.234>
;; RD6006: Tx <VSet 5.67>
java.lang.NumberFormatException: For input string: "*100"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Long.parseLong(Unknown Source)
        at java.lang.Long.parseLong(Unknown Source)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.parseLong(DeviceModbus.java:43)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.parseValuesLong(DeviceModbus.java:161)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModbus.java:255)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:212)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:249)
        at dk.hkj.main.SCPICommand.write(SCPICommand.java:281)
        at dk.hkj.devices.SetupFormats$NumberField.actionPerformed(SetupFormats.java:831)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; RD6006: Tx <VSet?>
;; COM7: Tx: 01 03 00 08 00 01 05 C8
;; COM7: Rx: 01 03 02 01 F4 B8 53
;; RD6006: Rx <5.0>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2020, 05:09:47 am
I have most of everything work except when trying to writing a new VSet or ISet value I get the below code.

The /100 or *100 must be last on the line, you error message looks like it was not and there must be exactly one space between arguments (This will be fixed in next version).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2020, 09:44:56 am
V0.47 is up.
It contains a Modbus protocol driver and the Maynuo M9712C electronic load. I have added a extra debug line for Modbus that shows the translated command line.
Only the 12C from that series included at the moment, the problem is that each load has a model identifier, but the value is not documented.

To get the identifier for other models in the series, select M9712C and try to connect to another model while in debug mode. This will hopefully list something like:

;; **Device do not match** <2>

I need that line and the actual model, then I can add it.
Post it here or use the email address on the about page to send it to me.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 26, 2020, 11:54:00 am
I have most of everything work except when trying to writing a new VSet or ISet value I get the below code.

The /100 or *100 must be last on the line, you error message looks like it was not and there must be exactly one space between arguments (This will be fixed in next version).

HKJ,

I am still have issues writing. it looks like the problem is that when the command is issued it is sending a float value when it needs to be an integer see examples below.

Code: [Select]
;; RD6006: Tx <VSet 4.56>
;; RD6006: Tx: holding 0x08 455.99999999999994
java.lang.NumberFormatException: For input string: "455.99999999999994"
Code: [Select]
;; RD6006: Tx <VSet 4.5>
;; RD6006: Tx: holding 0x08 450.0
java.lang.NumberFormatException: For input string: "450.0"
Code: [Select]
;; RD6006: Tx <VSet 4.0>
;; RD6006: Tx: holding 0x08 400.0
java.lang.NumberFormatException: For input string: "400.0"

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2020, 12:04:46 pm
I am still have issues writing. it looks like the problem is that when the command is issued it is sending a float value when it needs to be an integer see examples below.

I hope it is fixed now:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

And when listing error dumps, please include more lines of the java exceptions
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 26, 2020, 12:58:59 pm
I am still have issues writing. it looks like the problem is that when the command is issued it is sending a float value when it needs to be an integer see examples below.

I hope it is fixed now:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

And when listing error dumps, please include more lines of the java exceptions

HKJ,

I am able to write now, but I see that holding is sending a 32 bit  value when it needs to be a 16 bit value. It is using  (10 Hex) Preset Multiple Registers when it need to be (06 HEX) Preset Single Register. I think you need to have the below holding commands.

holding 16 bit integer
holding?16 bit integer
holdingF 16 bit float
holdingF?16 bit float
holdingL 32 bit integer
holdingL? 32 bit integer
holdingLF 32 bit float
holdingLF? 32 bit float



Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2020, 01:16:22 pm
I am able to write now, but I see that holding is sending a 32 bit  value when it needs to be a 16 bit value. It is using  (10 Hex) Preset Multiple Regs when it need to be (06 HEX) Preset Single Register. I think you need to have the below holding commands.

I do not believe there is a 16 bit float, there is not enough bit for it.
The "holding" command will either use  6 or 0x10, with one value it will use 6, except if "#disableWriteSingle 1" is present. "holdingL" & "holdingF" will always use 0x10 because they needs to write multiple values.
If there is two or more values after "holding" it will use 0x10 format.

A note: the 0x10 is not a 32 bit write, it can write from 0 bit to 1008 bits in 16 bit steps.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 26, 2020, 02:28:51 pm
I have most of everything work except when trying to writing a new VSet or ISet value I get the below code.

The /100 or *100 must be last on the line, you error message looks like it was not and there must be exactly one space between arguments (This will be fixed in next version).

It looks like i missed this, |O :palm: if I have /100 or *100 last on the line the writes works fine.

Thanks again for all of the great work you have done with this program. :-+ :-+

Code: [Select]
#scpiCmd TEMPC? holding? 0x05
#scpiCmd VSet holding 0x08 (value) *100
#scpiCmd VSet? holding? 0x08 /100
#scpiCmd ISet holding 0x09 (value) *1000
#scpiCmd ISet? holding? 0x09 /1000
#scpiCmd Volt? holding? 0x0a /100
#scpiCmd OPC? holding? 0x12
#scpiCmd OPC holding 0x12 (value)

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 27, 2020, 12:28:18 am
I got time to add a #cmdDelayTime

Something like:

#cmdDelayTime 50

May fix the timeout.

This is V0.46 and only a .jar file.

HKJ,

I am mostly finished with the device file for the Riden RD6006. Intermittently I am still getting Rx Timeout at the default baud rate of 115200 (see below). Do you have any suggestions that would help this issue, see attached device file for the current settings

[attach=1]

Code: [Select]
;; RD6006: Tx <values?>
;; RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; COM7: Tx: 01 03 00 08 00 01 05 C8
;; COM7: Rx: 01 03 02 01 4A 38 23
;; COM7: Tx: 01 03 00 09 00 01 54 08
;; COM7: Rx: 01 03 02 00 FA 38 07
;; COM7: Tx: 01 03 00 0A 00 01 A4 08
;; COM7: Rx: 01 03 02 00 FD 79 C5
;; COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; COM7: Rx: 01 03 02 00 FB F9 C7
;; COM7: Tx: 01 03 00 0D 00 01 15 C9
;; COM7: Rx: 01 03 02 00 3F F8 54
;; COM7: Tx: 01 03 00 21 00 01 D4 00
;; COM7: Rx: 01 03 02 00 04 B9 87
;; COM7: Tx: 01 03 00 23 00 01 75 C0
;; COM7: Rx: 01 03 02 00 1E 38 4C
;; COM7: Tx: 01 03 00 26 00 02 25 C0
;; COM7: Rx: 01 03 04 00 00 00 69 3A 1D
;; COM7: Tx: 01 03 00 28 00 02 44 03
;; COM7: Rx: 01 03 04 00 00 01 0B BA 64
;; RD6006: Rx <3.3000000000000003 0.25 2.5300000000000002 0.251 0.63 0.04 30 0.105 0.267>
;; RD6006: Delay: 100ms
;; RD6006: Rx as numbers <3.3000000000000003 0.25 2.5300000000000002 0.251 0.63 0.04 30.0 0.105 0.267>
;; RD6006: Tx <values?>
;; RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; COM7: Tx: 01 03 00 08 00 01 05 C8
java.lang.NullPointerException
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.readHoldingInput(DeviceModbus.java:445)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModbus.java:268)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:102)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:146)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:183)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:225)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:305)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:38)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:907)
;; RD6006: Rx Timeout
;; RD6006: Delay: 100ms
;; RD6006: Rx as numbers <NaN>
;; RD6006: Tx <values?>
;; RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; COM7: Tx: 01 03 00 08 00 01 05 C8
;; COM7: Rx: 01 03 02 01 4A 38 23
;; COM7: Tx: 01 03 00 09 00 01 54 08
;; COM7: Rx: 01 03 02 00 FA 38 07
;; COM7: Tx: 01 03 00 0A 00 01 A4 08
;; COM7: Rx: 01 03 02 00 FD 79 C5
;; COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; COM7: Rx: 01 03 02 00 FB F9 C7
;; COM7: Tx: 01 03 00 0D 00 01 15 C9
;; COM7: Rx: 01 03 02 00 3F F8 54
;; COM7: Tx: 01 03 00 21 00 01 D4 00
;; COM7: Rx: 01 03 02 00 04 B9 87
;; COM7: Tx: 01 03 00 23 00 01 75 C0
;; COM7: Rx: 01 03 02 00 1E 38 4C
;; COM7: Tx: 01 03 00 26 00 02 25 C0
;; COM7: Rx: 01 03 04 00 00 00 6A 7A 1C
;; COM7: Tx: 01 03 00 28 00 02 44 03
;; COM7: Rx: 01 03 04 00 00 01 0C FB A6
;; RD6006: Rx <3.3000000000000003 0.25 2.5300000000000002 0.251 0.63 0.04 30 0.106 0.268>
;; RD6006: Delay: 100ms
;; RD6006: Rx as numbers <3.3000000000000003 0.25 2.5300000000000002 0.251 0.63 0.04 30.0 0.106 0.268>
;; RD6006: Tx <values?>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 27, 2020, 07:33:51 am
I am mostly finished with the device file for the Riden RD6006. Intermittently I am still getting Rx Timeout at the default baud rate of 115200 (see below). Do you have any suggestions that would help this issue, see attached device file for the current settings

I have uploaded a new .jar file with a answer timeout, this timeout is from the end of transmission until it receives the first byte of the answer. If nothing is received within the timeout it will retransmit the request.

The setting is:
#answerTimeout 20

The value 20 is probably a good value, you will have to check the log, and you have to that at both 115200 and 9600 baud. What you must look for is duplicate "Tx: xx xx xx xx" (i.e. when the same Tx is repeated without any Rx in between). If they occur regulary your timeout is too short.

The main 1 second  message timeout is still active (#readingDelay) and if the communication time is above that the message will fail. That timeout applies to the "values?" command.

When working with timeouts it may be a good idea to change a line in the TextControllerDebug.bat file to:

java -jar TestController.jar debugTime %1 %2 %3 %4 %5 %6 %7 %8 %9

The you will get time stamps on each debug line and can see exactly how fast things are running.
Title: Re: Program that can log from many multimeters.
Post by: voltsandjolts on April 27, 2020, 10:26:07 am
Thanks for this useful software  :-+
I have attached a settings file for Keithley 2000.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 27, 2020, 10:39:34 am
Thanks for this useful software  :-+
I have attached a settings file for Keithley 2000.

Thanks, it will be included in the next release.
I have add a #author statement with your handle.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 03:07:04 am
HKJ,

I tried every combination using #answerTimeout and #cmdDelayTime. Adding #answerTimeout made it worst doing multiple retransmitions.

Below is using #cmdDelayTime 50 #answerTimeout 20- I tried as high as 200 same results for all Tx

Code: [Select]
;; 22:37:34.384 COM5: Set params: 115200
;; 22:37:34.584 : Tx <holdingl? 0x01>
;; 22:37:34.584 COM5: Tx: 01 03 00 01 00 02 95 CB
;; 22:37:34.608 COM5: Tx: 01 03 00 01 00 02 95 CB
;; 22:37:34.631 COM5: Tx: 01 03 00 01 00 02 95 CB
;; 22:37:34.655 COM5: Tx: 01 03 00 01 00 02 95 CB
;; 22:37:34.677 COM5: *** Timeout ***
;; 22:37:34.677 COM5: Rx: 01 03 04 00 00 07 39 38 11
;; 22:37:34.677 : Tx <holding? 0x03 /100>
;; 22:37:34.787 COM5: Tx: 01 03 00 03 00 01 74 0A
;; 22:37:34.810 COM5: Tx: 01 03 00 03 00 01 74 0A
;; 22:37:34.834 COM5: Tx: 01 03 00 03 00 01 74 0A
;; 22:37:34.857 COM5: Tx: 01 03 00 03 00 01 74 0A
;; 22:37:34.879 COM5: *** Timeout ***
;; 22:37:34.949 COM5: Rx: 01 03 02 00 80 B9 E4
;; Found Riden RD6006 on USB2.0-Serial (COM5) sn: 1849

The below is not using any #answerTimeout or #cmdDelayTime, it runs smooth for over 5 minutes and then I get the below.

Code: [Select]
;; 22:57:55.746 RD6006: Tx <values?>
;; 22:57:55.747 RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; 22:57:55.748 COM5: Tx: 01 03 00 08 00 01 05 C8
java.lang.NullPointerException
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.readHoldingInput(DeviceModbus.java:448)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModbus.java:271)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:102)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:146)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:183)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:225)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:305)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:38)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:907)
;; 22:57:56.751 RD6006: Rx Timeout
;; 22:57:56.752 RD6006: Rx as numbers <NaN>
;; 22:57:56.752 RD6006: Tx <values?>


I have uploaded a new .jar file with a answer timeout, this timeout is from the end of transmission until it receives the first byte of the answer. If nothing is received within the timeout it will retransmit the request.

The setting is:
#answerTimeout 20

The value 20 is probably a good value, you will have to check the log, and you have to that at both 115200 and 9600 baud. What you must look for is duplicate "Tx: xx xx xx xx" (i.e. when the same Tx is repeated without any Rx in between). If they occur regulary your timeout is too short.

The main 1 second  message timeout is still active (#readingDelay) and if the communication time is above that the message will fail. That timeout applies to the "values?" command.

When working with timeouts it may be a good idea to change a line in the TextControllerDebug.bat file to:

java -jar TestController.jar debugTime %1 %2 %3 %4 %5 %6 %7 %8 %9

The you will get time stamps on each debug line and can see exactly how fast things are running.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 04:35:16 am
Please upload a section where everything runs smooth and with any #cmdDelayTime or #answerTimeout, I would like to see the time stamps for that.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 04:46:21 am
HKJ,

Good morning, thanks for looking into this. Below is 3 executions of values? #cmdDelayTime and #answerTimeout are not being used. It is almost 1:00 am here in the US, after this post I am gong to get some sleep.

Code: [Select]
;; 00:44:37.128 RD6006: Tx <values?>
;; 00:44:37.128 RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; 00:44:37.128 COM7: Tx: 01 03 00 08 00 01 05 C8
;; 00:44:37.159 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:37.160 COM7: Tx: 01 03 00 09 00 01 54 08
;; 00:44:37.266 COM7: Rx: 01 03 02 01 F4 B8 53
;; 00:44:37.267 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 00:44:37.372 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:37.373 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 00:44:37.478 COM7: Rx: 01 03 02 01 48 B9 E2
;; 00:44:37.479 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 00:44:37.584 COM7: Rx: 01 03 02 00 6C B8 69
;; 00:44:37.591 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 00:44:37.691 COM7: Rx: 01 03 02 00 06 38 46
;; 00:44:37.698 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 00:44:37.797 COM7: Rx: 01 03 02 00 1D 78 4D
;; 00:44:37.803 COM7: Tx: 01 03 00 26 00 02 25 C0
;; 00:44:37.899 COM7: Rx: 01 03 04 00 00 00 62 7B DA
;; 00:44:37.911 COM7: Tx: 01 03 00 28 00 02 44 03
;; 00:44:38.002 COM7: Rx: 01 03 04 00 00 01 26 7A 79
;; 00:44:38.016 RD6006: Rx <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.06 29 0.098 0.294>
;; 00:44:38.023 RD6006: Rx as numbers <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.06 29.0 0.098 0.294>
;; 00:44:38.141 RD6006: Tx <values?>
;; 00:44:38.142 RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; 00:44:38.144 COM7: Tx: 01 03 00 08 00 01 05 C8
;; 00:44:38.219 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:38.219 COM7: Tx: 01 03 00 09 00 01 54 08
;; 00:44:38.320 COM7: Rx: 01 03 02 01 F4 B8 53
;; 00:44:38.329 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 00:44:38.429 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:38.429 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 00:44:38.540 COM7: Rx: 01 03 02 01 48 B9 E2
;; 00:44:38.540 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 00:44:38.640 COM7: Rx: 01 03 02 00 6C B8 69
;; 00:44:38.654 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 00:44:38.752 COM7: Rx: 01 03 02 00 07 F9 86
;; 00:44:38.759 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 00:44:38.857 COM7: Rx: 01 03 02 00 1D 78 4D
;; 00:44:38.865 COM7: Tx: 01 03 00 26 00 02 25 C0
;; 00:44:38.965 COM7: Rx: 01 03 04 00 00 00 62 7B DA
;; 00:44:38.971 COM7: Tx: 01 03 00 28 00 02 44 03
;; 00:44:39.069 COM7: Rx: 01 03 04 00 00 01 27 BB B9
;; 00:44:39.078 RD6006: Rx <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.07 29 0.098 0.295>
;; 00:44:39.085 RD6006: Rx as numbers <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.07 29.0 0.098 0.295>
;; 00:44:39.162 RD6006: Tx <values?>
;; 00:44:39.162 RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holdingl? 0x28 /1000>
;; 00:44:39.162 COM7: Tx: 01 03 00 08 00 01 05 C8
;; 00:44:39.178 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:39.178 COM7: Tx: 01 03 00 09 00 01 54 08
;; 00:44:39.283 COM7: Rx: 01 03 02 01 F4 B8 53
;; 00:44:39.283 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 00:44:39.388 COM7: Rx: 01 03 02 01 4A 38 23
;; 00:44:39.388 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 00:44:39.496 COM7: Rx: 01 03 02 01 48 B9 E2
;; 00:44:39.497 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 00:44:39.600 COM7: Rx: 01 03 02 00 6C B8 69
;; 00:44:39.609 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 00:44:39.701 COM7: Rx: 01 03 02 00 07 F9 86
;; 00:44:39.716 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 00:44:39.811 COM7: Rx: 01 03 02 00 1E 38 4C
;; 00:44:39.823 COM7: Tx: 01 03 00 26 00 02 25 C0
;; 00:44:39.922 COM7: Rx: 01 03 04 00 00 00 62 7B DA
;; 00:44:39.927 COM7: Tx: 01 03 00 28 00 02 44 03
;; 00:44:40.021 COM7: Rx: 01 03 04 00 00 01 27 BB B9
;; 00:44:40.035 RD6006: Rx <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.07 30 0.098 0.295>
;; 00:44:40.042 RD6006: Rx as numbers <3.3000000000000003 0.5 3.3000000000000003 0.328 1.08 0.07 30.0 0.098 0.295>


Please upload a section where everything runs smooth and with any #cmdDelayTime or #answerTimeout, I would like to see the time stamps for that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 11:01:17 am
Good morning, thanks for looking into this. Below is 3 executions of values? #cmdDelayTime and #answerTimeout are not being used. It is almost 1:00 am here in the US, after this post I am gong to get some sleep.

What I can see from this is that each transaction takes slightly above 100ms and assuming that you use 115200 baud this means #answerTimeout must be at least 100 to work, maybe 120 to 150 is better.

But is also means you have to either increase #readingDelay or to collect fewer data. The total data collection is is nearly a second. For reliable 1 second logging I would prefer it below 700ms (0.7second). It may still be necessary to increase #readingDelay at that level if the power supply sometimes is slow to answer or a retransmission is needed, but a single slow collection once in a while will not affect logging.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 11:52:18 am
V0.50 is up.
One new device included: Keithley 2000

Added logging directly to disk (Table will still be updated), this is designed for long logging session and has some side effects:
A memory optimizer is enabled, this will kick in at 30000 records (repeatedly) and throw 2/3 of the data in the table out and reduce the data sample rate for the table. It do not affect the logging to disk. This means it is possible to log for years without running out of memory ;)
When the optimizer has reduced data rate it is not possible to save the table anymore, use the copy that is already being saved to disk.
The disk copy is being completely saved to disk at regular intervals.

I have fixed some bugs and made som improvements on the save dialogs, it is not directly visible.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 12:52:58 pm
HKJ,

I reduced  the number of data points being collected and are used the below setting. No matter what #answerTimeout setting used every holding command has 4 Tx's before receiving a response. 

V0.50
Logging 1 second
#port comfixedbaud
#baudrate 115200
#cmdDelayTime 50
#answerTimeout 150
#readingDelay 2

Code: [Select]
;; 08:43:38.141 RD6006: Tx <values?>
;; 08:43:38.148 RD6006: Tx <holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23>
;; 08:43:38.179 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:38.333 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:38.487 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:38.640 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:38.795 COM7: *** Timeout ***
;; 08:43:38.795 COM7: Rx: 01 03 02 01 4A 38 23
;; 08:43:38.845 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:38.998 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:39.150 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:39.303 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:39.457 COM7: *** Timeout ***
;; 08:43:39.464 COM7: Rx: 01 03 02 01 48 B9 E2
;; 08:43:39.522 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:39.682 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:39.842 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:40.001 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:40.160 COM7: *** Timeout ***
;; 08:43:40.167 COM7: Rx: 01 03 02 00 6C B8 69
;; 08:43:40.225 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:40.384 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:40.542 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:40.703 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:40.862 COM7: *** Timeout ***
;; 08:43:40.869 COM7: Rx: 01 03 02 00 07 F9 86
;; 08:43:40.926 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:41.085 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:41.243 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:41.402 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:41.561 COM7: *** Timeout ***
;; 08:43:41.568 COM7: Rx: 01 03 02 00 1B F8 4F
;; 08:43:41.575 RD6006: Rx <3.3000000000000003 0.328 1.08 0.07 27>
;; 08:43:41.582 RD6006: Rx as numbers <3.3000000000000003 0.328 1.08 0.07 27.0>
;; 08:43:41.588 RD6006: Tx <values?>
;; 08:43:41.594 RD6006: Tx <holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23>
;; 08:43:41.625 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:41.778 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:41.932 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:42.086 COM7: Tx: 01 03 00 0A 00 01 A4 08
;; 08:43:42.241 COM7: *** Timeout ***
;; 08:43:42.241 COM7: Rx: 01 03 02 01 4A 38 23
;; 08:43:42.291 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:42.446 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:42.601 COM7: Tx: 01 03 00 0B 00 01 F5 C8
;; 08:43:42.650 COM7: Rx: 01 03 02 01 48 B9 E2
;; 08:43:42.700 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:42.857 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:43.015 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:43.175 COM7: Tx: 01 03 00 0D 00 01 15 C9
;; 08:43:43.333 COM7: *** Timeout ***
;; 08:43:43.339 COM7: Rx: 01 03 02 00 6C B8 69
;; 08:43:43.396 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:43.556 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:43.715 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:43.873 COM7: Tx: 01 03 00 21 00 01 D4 00
;; 08:43:44.033 COM7: *** Timeout ***
;; 08:43:44.040 COM7: Rx: 01 03 02 00 06 38 46
;; 08:43:44.096 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:44.255 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:44.414 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:44.571 COM7: Tx: 01 03 00 23 00 01 75 C0
;; 08:43:44.730 COM7: *** Timeout ***
;; 08:43:44.737 COM7: Rx: 01 03 02 00 1B F8 4F
;; 08:43:44.743 RD6006: Rx <3.3000000000000003 0.328 1.08 0.06 27>
;; 08:43:44.750 RD6006: Rx as numbers <3.3000000000000003 0.328 1.08 0.06 27.0>

Good morning, thanks for looking into this. Below is 3 executions of values? #cmdDelayTime and #answerTimeout are not being used. It is almost 1:00 am here in the US, after this post I am gong to get some sleep.

What I can see from this is that each transaction takes slightly above 100ms and assuming that you use 115200 baud this means #answerTimeout must be at least 100 to work, maybe 120 to 150 is better.

But is also means you have to either increase #readingDelay or to collect fewer data. The total data collection is is nearly a second. For reliable 1 second logging I would prefer it below 700ms (0.7second). It may still be necessary to increase #readingDelay at that level if the power supply sometimes is slow to answer or a retransmission is needed, but a single slow collection once in a while will not affect logging.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 28, 2020, 01:40:27 pm
Although it is certainly still being developed, it has now become so good that I use this program almost every day.
I really wanted to thank you for that.  :-+

And also many thanks to MikeLud.
He designed the definition and even the mode windows for the SDM3055 (mode, according to my wishes).  :-+

Together with saving the positions, everything now fits very nicely.

Screenshot example on optics SDM3055 Temp and Volt DC:

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 02:58:36 pm
I reduced  the number of data points being collected and are used the below setting. No matter what #answerTimeout setting used every holding command has 4 Tx's before receiving a response. 

It is very strange, with the M9712C I am testing with I can set the #answerTimeout to 13 and I will get occasionally retransmits with a higher value there is no retransmits.
I have uploaded a new jar file (V0.51) where I have switched to another time in java (From currentTimeMillis() to nanoTime()), all settings and other code is exactly the same. I wonder if this will change anything.
Technically there is no guarantee that millis will increase every millisecond, but it is a long time since I have seen it being really slow (Originally it was something like a increased by 55 every 55 millisecond on Windows)

The only problem I see with the M9712C is that I have to unplug/replug the USB interface if I power of the load or I get 100% timeout.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 03:12:17 pm
And also many thanks to MikeLud.

He have done a fine job with the Siglent, but I have only included the 3065x with the full setup. I hope he will say ok for the 3055 soon.
And I wonder if it is possible to duplicate to support modes both with and without x (It only needs are few lines at the top of the file to enable both versions).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 05:00:56 pm
HKJ,

No matter what I do I can not get it to run 100% timeout free. The best I can get it is maybe 2 to 5 timeout in and hour. The only issue with this is when the timeout happens it records all the data for that time as zero. Maybe a workaround can be to ignore the data if a timeout happens and use ether the previous data or the next valid data without a timeout

Thanks
MikeLud
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 05:43:02 pm
HKJ,

You can use the attached as the final version for the Siglent SDM3055, When I work on updating the SDM3045X file I will look at combining all of the Siglent SDM's into one file. Also I notice that in your download you have two files for the SDM3065X one ending with -4.

[attach=1]

And also many thanks to MikeLud.

He have done a fine job with the Siglent, but I have only included the 3065x with the full setup. I hope he will say ok for the 3055 soon.
And I wonder if it is possible to duplicate to support modes both with and without x (It only needs are few lines at the top of the file to enable both versions).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 05:55:50 pm
You can use the attached as the final version for the Siglent SDM3055, When I work on updating the SDM3045X file I will look at combining all of the Siglent SDM's into one file. Also I notice that in your download you have two files for the SDM3065X one ending with -4.

Done. It looks like that get adding when I download, I have removed the extra file.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 28, 2020, 06:13:01 pm
Hello HKJ,

some time ago I asked you for an additional / cloned log button on the chart page...

You gave me the hint with the shortcuts. Unfortunately, this is not that effective as I have to press more buttons, instead of just using the mouse.

In order to encourage you to do so, I tried to implement my wish in a picture, as it is probably easier to get the idea behind it, when being able to see the result?  ;)

Pic One

In addition to this, I asked for a custom png format, which can be saved, in order to keep the resolution your pc requires, because it is much easier to handle and shorten periodic steps, to concentrate on the work itself.
 
Pic Two


I know, that you have lots of work to do, to manage all the additions, but maybe others find this also helpful?  ;)

Thank you very much!  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2020, 06:38:42 pm
some time ago I asked you for an additional / cloned log button on the chart page...

You gave me the hint with the shortcuts. Unfortunately, this is not that effective as I have to press more buttons, instead of just using the mouse.

In order to encourage you to do so, I tried to implement my wish in a picture, as it is probably easier to get the idea behind it, when being able to see the result?  ;)

I do not really like this for a couple of reasons:
1) The Chart is only accessible if you have log data
2) Log is not just log, you also have to select sample rate and now you also have the direct to disk option.


In addition to this, I asked for a custom png format, which can be saved, in order to keep the resolution your pc requires, because it is much easier to handle and shorten periodic steps, to concentrate on the work itself.

I am more thinking about making the 4 fixed formats customable, it means you could have your four favorite resolutions ready all the time.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 28, 2020, 08:33:58 pm
HKJ,

One question, did you try changing the baud rate on your M9712C to 115200 to see if you have the same issues I am having at this speed.

I reduced  the number of data points being collected and are used the below setting. No matter what #answerTimeout setting used every holding command has 4 Tx's before receiving a response. 

It is very strange, with the M9712C I am testing with I can set the #answerTimeout to 13 and I will get occasionally retransmits with a higher value there is no retransmits.
I have uploaded a new jar file (V0.51) where I have switched to another time in java (From currentTimeMillis() to nanoTime()), all settings and other code is exactly the same. I wonder if this will change anything.
Technically there is no guarantee that millis will increase every millisecond, but it is a long time since I have seen it being really slow (Originally it was something like a increased by 55 every 55 millisecond on Windows)

The only problem I see with the M9712C is that I have to unplug/replug the USB interface if I power of the load or I get 100% timeout.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 09:16:07 am
One question, did you try changing the baud rate on your M9712C to 115200 to see if you have the same issues I am having at this speed.

No, I have always been running at 9600 baud. Now I tried it and it did not work at all. Problem was I did not set the baudrate.

V0.52 is up
It fixes the baudrate problem and add a configuration for image sizes, now everybody can get there favorite sizes, not only me ;)

(http://lygte-info.dk/pic/cpf5/imagesizes.png)
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 29, 2020, 10:35:39 am
HKJ,

I just tried V0.52 and there is no change I still am getting timeouts at 115200 |O. I ran a test overnight at 9600 and had no timeouts

V0.52 is up
It fixes the baudrate problem and add a configuration for image sizes, now everybody can get there favorite sizes, not only me ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 11:10:56 am
I just tried V0.52 and there is no change I still am getting timeouts at 115200 |O. I ran a test overnight at 9600 and had no timeouts

I am out of ideas for now. I have tried other baudrates?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 29, 2020, 11:16:40 am
HKJ,

The only issue with this is when the timeout happens it records all the data for that time as zero. Maybe a workaround can be to ignore the data if a timeout happens and use ether the previous data or the next valid data without a timeout

Thanks
MikeLud

I just tried V0.52 and there is no change I still am getting timeouts at 115200 |O. I ran a test overnight at 9600 and had no timeouts

I am out of ideas for now. I have tried other baudrates?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 11:46:33 am
The only issue with this is when the timeout happens it records all the data for that time as zero. Maybe a workaround can be to ignore the data if a timeout happens and use ether the previous data or the next valid data without a timeout

I have implemented that for one channel devices (Like DMM's), but not for multi channel stuff. Maybe I will.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 01:07:08 pm
Have you checked the #answerTimeout setting with the new version?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 29, 2020, 02:02:43 pm
Have you checked the #answerTimeout setting with the new version?

HKJ,

Yes, I tried 150 and 200. Another thought I have is on the Load Devices tab on each line have a read me button that will open up a popup. In the popup for this device I can have "For this device to work you must go to the setup menu on the RD6006 and change the baudrate from 115200 to 9600.  Consult User Manual for directions." With this I will set the buadrate at 9600.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 02:33:22 pm
Yes, I tried 150 and 200.

Let me get this right: At 115200 it mostly works, but once in a while there is a timeout. If you use the #answerTimeout  it will not work at all, all calls timeout.

Another thought I have is on the Load Devices tab on each line have a read me button that will open up a popup. In the popup for this device I can have "For this device to work you must go to the setup menu on the RD6006 and change the baudrate from 115200 to 9600.  Consult User Manual for directions." With this I will set the buadrate at 9600.

I have been thinking in the same direction. There are a couple of cases where it would be useful.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 29, 2020, 02:45:57 pm
Let me get this right: At 115200 it mostly works, but once in a while there is a timeout. If you use the #answerTimeout  it will not work at all, all calls timeout.

HKJ,

The above statement is correct and on 9600 it works perfect with no timeouts
Title: Re: Program that can log from many multimeters.
Post by: Mr. Scram on April 29, 2020, 03:42:08 pm
At the risk of asking an obtuse question, can this application also read from devices over GPIB?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2020, 05:15:35 pm
At the risk of asking an obtuse question, can this application also read from devices over GPIB?

Only if it is presented as a serial port or a network socket.
Title: Re: Program that can log from many multimeters.
Post by: Mr. Scram on April 29, 2020, 06:24:21 pm
Only if it is presented as a serial port or a network socket.
I just checked and it seems to be just presented as a GPIB Interface. I guess I'll have to look into obtaining a handful of RS232 to USB converters. This application looks too good to pass up on.
Title: Re: Program that can log from many multimeters.
Post by: Gandalf_Sr on April 29, 2020, 11:29:12 pm
I had the same question, I have an Agilent GPIB to network bridge and wondered what it would take to make the GPIB devices appear as serial ports.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 04:43:29 am
I had the same question, I have an Agilent GPIB to network bridge and wondered what it would take to make the GPIB devices appear as serial ports.

The way to try a connection is:
1) Write a device definition file in the device directory, with this contents:

#idString xxx,xxx,
#name xxx
#handle xxx
#port 5025

The port must match the connected device!
2) Restart test controller and select device, enter IP address in the red field:

(http://lygte-info.dk/pic/Projects/TestController/ExamplesConnect/testDevice.png)

3) Press "Reconnect" and look on the first screen. It hopefully shows something like:

;; 10.0.0.79 Device do not match: KEITHLEY INSTRUMENTS,MODEL DMM6500,04395798,1.0.02a

4) Modify the new device file with the above name:

#idString KEITHLEY INSTRUMENTS,MODEL DMM6500,
#name Keithley DMM6500
#handle DMM6500
#port 5025

5) Restart TestController, remove the xxx device and select the above device on the "Load devices" page and enter the IP address again. Then press "Reconnect"

6) It hopefully gives you this message on the first screen (With the device name you are working with):

;; Found Keithley DMM6500 on 10.0.0.79 sn: 4395798

You are online with the device and can write SCPI commands on the TestController command line and start making a fully featured definition file.
See other files in the devices directory for examples, the manual is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)


Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 11:41:05 am
Would you have time to continue working on the definition for the Siglent SDG ?

I still found that with V pp you can only choose whole numbers.
2.5 V e.g. are not accepted with a comma or a dot and as a replacement e.g. 2500 mV inputs are also not accepted.
V rms would still be good.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 11:50:17 am
The latest is wrong from me.

V intermediate values are nevertheless carried out.
However, it is not displayed in the mode window (the value is displayed there, e.g. when 2.5V input is reset to 0)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 12:18:59 pm
The latest is wrong from me.

V intermediate values are nevertheless carried out.
However, it is not displayed in the mode window (the value is displayed there, e.g. when 2.5V input is reset to 0)

I was not aware it was wrong, I will look at it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 12:28:39 pm
V0.53 is up

It has a new #notes tag that can be used to add a note to a device definition.

After my explanation on how to start a new device definition, I decided it was way to cumbersome and have made a function to help:

On the "Load devices" right click in the filter box or combobox and select the option:
(http://lygte-info.dk/pic/Projects/TestController/ExamplesConnect/NewDevice.png)

This popup will show:
(http://lygte-info.dk/pic/Projects/TestController/ExamplesConnect/NewDevice1.png)

In most cases it is enough to fill in a address and then press the 3 buttons in sequence.
It may be necessary to adjust the device name and handle before pressing the second button.
Right click to copy the device filename to the clipboard.

When pressing the "Load new device" all currently loaded devices are unloaded and the new device is loaded as the only device. It will also close this popup.

This do not make a device work in TestController, it only makes the connection to the device.



Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 30, 2020, 12:30:18 pm
He have done a fine job with the Siglent, but I have only included the 3065x with the full setup. I hope he will say ok for the 3055 soon.
And I wonder if it is possible to duplicate to support modes both with and without x (It only needs are few lines at the top of the file to enable both versions).

Attached is a device file that supports Siglent SDM3000 series DMM in one file. The only model tested is the SDM3065X so if anyone has the SDM3045X or SDM3055 please test and let me know the issues you are having so I can correct them. One setting item I am not sure about is the Speed setting for the AC Current and AC Voltage on the SDM3045X , this was not fully documented. For each mode there is a corresponding setup tab giving you remote control of the soft buttons on the bottom of the screen.

[attach=1]

[attachimg=2]

[attachimg=3]

[attachimg=4]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 12:44:54 pm
Thanks, I will include it in the next update.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 12:55:32 pm
V0.53 got a extra update with a fixed SDG2122X
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 01:08:33 pm
...The only model tested is the SDM3065X so if anyone has the SDM3045X or SDM3055 please test and let me know the issues you are having so I can correct them...

Afterwards I can at least test it with the 3055 and report it to you.


V0.53 got a extra update with a fixed SDG2122X

So fast?
Will look after.
For the SDG1000X, only the frequency limits actually have to be changed ?!? (at least that's how I had done it successfully with the old version).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 30, 2020, 01:09:16 pm
HKJ,

Attached is a device file for the Riden RD6006.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 01:12:54 pm
So fast?

The problem was some regex that said [0-9]+, but had to be [0-9.]+, it was very obvious in debug mode (At least for me).

For the SDG1000X, only the frequency limits actually have to be changed ?!? (at least that's how I had done it successfully with the old version).

Please post the changed definition or email it to me.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 01:14:39 pm
Attached is a device file for the Riden RD6006.

Thanks, it will be included in next update.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 01:18:51 pm
Again SDG's ... 2000X to 1000X Series.

If, as far as the operation of the SDG in the program is concerned, only the limits of the frequencies are left
(I have not yet been able to discover any other differences when setting the values in the mode window)
you should actually have the definitions for e.g. SDG1032X and 1062X derived from 2122 already make finished ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 01:20:52 pm
If, as far as the operation of the SDG in the program is concerned, only the limits of the frequencies are left
(I have not yet been able to discover any other differences when setting the values in the mode window)
you should actually have the definitions for e.g. SDG1032X and 1062X derived from 2122 already make finished ?

I may get around to do something with #metadef then.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 01:23:55 pm

For the SDG1000X, only the frequency limits actually have to be changed ?!? (at least that's how I had done it successfully with the old version).

Please post the changed definition or email it to me.

I still have to check whether I have done everything correctly, then I will send it.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 30, 2020, 01:50:16 pm
HKJ,

One thing you are missing for the modbus protocal is to have a #SlaveAddress tag
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 01:54:09 pm
MikeLud, haven't tested the new SDM3000 definition, just read it.

Could it be that in #metadef the range boundaries (up to 6 boundaries and up to 2 boundaries) were confused between the three SDMs ?
As far as I know, the ranges up to 6 were on the 3045X
(The 3055 definitely has the ... 2 as the range limits).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 30, 2020, 02:05:36 pm
MikeLud, haven't tested the new SDM3000 definition, just read it.

Could it be that in #metadef the range boundaries (up to 6 boundaries and up to 2 boundaries) were confused between the three SDMs ?
As far as I know, the ranges up to 6 were on the 3045X
(The 3055 definitely has the ... 2 as the range limits).

klausES,

How the #metadef for each SDM works it removes the item (range) from the setup tab

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 02:35:11 pm
One thing you are missing for the modbus protocal is to have a #SlaveAddress tag

I was very much in doubt about the slave address, my conclusion was:

When using a device on a RS232 connection there will only be one device, i.e. it can be configured as 1.
TestController cannot handle a 485 or 422 bus with multiple devices on, it needs a separate port for each device (At least for now). If TestController was handling multiple devices the address must be configured on the "Load Devices" page, not with a tag.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 05:09:13 pm
Got SDG1062X and 1032X ready.
Also adjusted period for these two.
Should now be error free.

Oh well, the voltage display in the mode window now also works with x.x values (thank you).

You hadn't added V rms yet (this is not supposed to be a push),
but should I still upload these two SDG1000X for you?
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 05:14:52 pm
...How the #metadef for each SDM works it removes the item (range) from the setup tab

After trying it out, I understood what you meant.
SDM3055 runs with it. Thank you.

(I had to get used to the slightly different setup window. all good).  ;)
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 30, 2020, 05:19:56 pm
Got SDG1062X and 1032X ready.
Also adjusted period for these two.
Should now be error free.

Klaus,
I am working on some changes to the SDGxxxxX device  (using an SDG1062X as a test bed). This will support setting HLEV and LLEV amplitudes as an alternative to AMP and OFFSET; also will support polarity inversion and output channel addition ("wave Combine").

If you can upload your files, perhaps I can merge these changes when they are ready.

Thanks,

Hexley
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 05:20:32 pm
Current definition for Siglent SDG1032X and SDG1062X (checked on both).
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 05:22:18 pm
OK. (that was almost at the same time ...)  ;D
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 05:27:35 pm
The two definitions originally come from HKJ from an SDG2122X, not mine.
I only adjusted the limits for the two SDG1000X.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 06:06:45 pm
I will stay away from the SDG's for now and wait for Hexley.
I hope he has noticed that it is not a clean SCPI device, it has some code support for the #askValues.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on April 30, 2020, 07:56:46 pm
Attached is a device file that supports Siglent SDM3000 series DMM in one file. The only model tested is the SDM3065X so if anyone has the SDM3045X or SDM3055 please test and let me know the issues you are having so I can correct them. One setting item I am not sure about is the Speed setting for the AC Current and AC Voltage on the SDM3045X , this was not fully documented. For each mode there is a corresponding setup tab giving you remote control of the soft buttons on the bottom of the screen.

HKJ,

So far 2 out of the 3 SDM's have been tested and are working. Do you still have the SDM3045X so you can test the last device. One setting item I am not sure about is the Speed setting for the AC Current and AC Voltage on the SDM3045X , this was not fully documented.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2020, 08:29:05 pm
So far 2 out of the 3 SDM's have been tested and are working. Do you still have the SDM3045X so you can test the last device. One setting item I am not sure about is the Speed setting for the AC Current and AC Voltage on the SDM3045X , this was not fully documented.

I will find the meter and take a look at it tomorow.
Title: Re: Program that can log from many multimeters.
Post by: klausES on April 30, 2020, 09:20:44 pm
A purely theoretical question (since the workload would certainly be too great ...)

Would it be possible to operate an SDG remotely like on the control panel ?
Similar to what Siglent did with its control panel in EasyDmm for the SDMs ?

There must be no feedback to display the states, which, like EasyDMM, is the same as the device display,
a display of the states in rows, columns, radio buttons would be enough.

Why this had siglent done for the SDM but never for the SDG is a mystery to me.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 30, 2020, 09:29:04 pm
Is it just me, or did the page about scripting a SCSI DMM recently lose much of its content?

I need the syntax for the ":readmath:" functions, but they seem to have vanished.  :(
Title: Re: Program that can log from many multimeters.
Post by: tautech on April 30, 2020, 10:13:38 pm
A purely theoretical question (since the workload would certainly be too great ...)

Would it be possible to operate an SDG remotely like on the control panel ?
Similar to what Siglent did with its control panel in EasyDmm for the SDMs ?

There must be no feedback to display the states, which, like EasyDMM, is the same as the device display,
a display of the states in rows, columns, radio buttons would be enough.

Why this had siglent done for the SDM but never for the SDG is a mystery to me.
Maybe the Equation Editor in EasyWaveX can do what you want ?
Or is it a Virtual instrument you seek ?
AFAIK Siglent have never had a virtual instrument interface for their AWG's.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 01, 2020, 12:22:20 am
Is it just me, or did the page about scripting a SCSI DMM recently lose much of its content?

I need the syntax for the ":readmath:" functions, but they seem to have vanished.  :(

Hexley,

Try this link https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Some_functions_that_can_be_used_in_readmath (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Some_functions_that_can_be_used_in_readmath)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 04:27:19 am
A purely theoretical question (since the workload would certainly be too great ...)

Would it be possible to operate an SDG remotely like on the control panel ?

If you mean a layout similar to the SDG control panel, the answer is definitely no. The control panels you build in TestController uses a fairly simple language and a limited amount of control elements. This works great for building a rudimentary control panel, but not for making anything remotely similar to real instrument control panel.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 06:07:17 am
So far 2 out of the 3 SDM's have been tested and are working. Do you still have the SDM3045X so you can test the last device. One setting item I am not sure about is the Speed setting for the AC Current and AC Voltage on the SDM3045X , this was not fully documented.

The speed setting works fine on 3045, but mine do not have PT1000 (I do not know if it is a old sw version or if unsupported on 3045).
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 01, 2020, 08:59:48 am
...but mine do not have PT1000 (I do not know if it is a old sw version or if unsupported on 3045).

As far as I know the operation of PT1000 in the 3045X is not mentioned in the documentation,
nor as a new function in the firmware history.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 01, 2020, 11:48:19 am
The speed setting works fine on 3045, but mine do not have PT1000 (I do not know if it is a old sw version or if unsupported on 3045).

HKJ,

I just checked the SDM3045X Firmware History and it does not show add PT1000 support. You can try updating the firmware to see if was just undocumented. If you fine that the current firmware still does not support PT1000 I will update the device file.

Firmware link https://www.siglenteu.com/service-and-support/firmware-software/digital-multimeters/ (https://www.siglenteu.com/service-and-support/firmware-software/digital-multimeters/)

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 12:09:26 pm
I just checked the SDM3045X Firmware History and it does not show add PT1000 support. You can try updating the firmware to see if was just undocumented. If you fine that the current firmware still does not support PT1000 I will update the device file.

I am running that firmware version.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 01, 2020, 12:14:16 pm
I just checked the SDM3045X Firmware History and it does not show add PT1000 support. You can try updating the firmware to see if was just undocumented. If you fine that the current firmware still does not support PT1000 I will update the device file.

I am running that firmware version.

HKJ,

File updated

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 12:50:47 pm
File updated

I have updated and PT1000 is gone.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 01, 2020, 01:37:06 pm
Managed to do rms (dB), frequency and phase* with my HMO 1022 scope 8)
However, there seems to be a division-by-zero error when the phase goes to/through Zero. This error does not come from the scope as it displays small phase angles correctly when queried.

The pic shows what happens when switching off the signal even briefly (switching transient when changing the frequency, for example). Phase and frequency do not recover. RMS does.

This applies to Chart only. Table and Current values are OK.

More info: Its only the automatic scale ranging which is upset. Setting the phase range manually is OK. :phew:

*Phase logging is important when aligning tape heads for Zero phase between channels.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 02:10:38 pm
Managed to do rms (dB), frequency and phase* with my HMO 1022 scope 8)
However, there seems to be a division-by-zero error when the phase goes to/through Zero. This error does not come from the scope as it displays small phase angles correctly when queried.

Can you save a CSV file with the problematic data and send to me, then I will look at it.

The values may be correct, I will see that in the CSV file, but there are definitely way to many zeros, it has to switch number format.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 01, 2020, 03:04:29 pm
Managed to do rms (dB), frequency and phase* with my HMO 1022 scope 8)
However, there seems to be a division-by-zero error when the phase goes to/through Zero. This error does not come from the scope as it displays small phase angles correctly when queried.

Can you save a CSV file with the problematic data and send to me, then I will look at it.

The values may be correct, I will see that in the CSV file, but there are definitely way to many zeros, it has to switch number format.

HKJ,

I see something similar when using the /factor 330 /100 should equal 3.3 not 3.3000000000000003.  The data is saved correctly in the csv file. Also in the csv file when using Excel to convert the dateTime column to a true date format it cannot.

[attach=1]

Code: [Select]
;; RD6006: Tx <values?>
;; RD6006: Tx <holding? 0x08 /100;holding? 0x09 /1000;holding? 0x0A /100;holding? 0x0B /1000;holding? 0x0D /100;holding? 0x21 /100;holding? 0x23;holdingl? 0x26 /1000;holding? 0x28 /1000>
;; COM3: Tx: 01 03 00 08 00 01 05 C8
;; COM3: Rx: 01 03 02 01 4A 38 23
;; COM3: Tx: 01 03 00 09 00 01 54 08
;; COM3: Rx: 01 03 02 01 F4 B8 53
;; COM3: Tx: 01 03 00 0A 00 01 A4 08
;; COM3: Rx: 01 03 02 01 4A 38 23
;; COM3: Tx: 01 03 00 0B 00 01 F5 C8
;; COM3: Rx: 01 03 02 01 47 F9 E6
;; COM3: Tx: 01 03 00 0D 00 01 15 C9
;; COM3: Rx: 01 03 02 00 6B F9 AB
;; COM3: Tx: 01 03 00 21 00 01 D4 00
;; COM3: Rx: 01 03 02 00 07 F9 86
;; COM3: Tx: 01 03 00 23 00 01 75 C0
;; COM3: Rx: 01 03 02 00 1C B9 8D
;; COM3: Tx: 01 03 00 26 00 02 25 C0
;; COM3: Rx: 01 03 04 00 00 00 93 BA 5E
;; COM3: Tx: 01 03 00 28 00 01 04 02
;; COM3: Rx: 01 03 02 00 00 B8 44
;; RD6006: Rx <3.3000000000000003 0.5 3.3000000000000003 0.327 1.07 0.07 28 0.147 0.0>
;; RD6006: Rx as numbers <3.3000000000000003 0.5 3.3000000000000003 0.327 1.07 0.07 28.0 0.147 0.0>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 03:21:27 pm
I see something similar when using the /factor 330 /100 should equal 3.3 not 3.3000000000000003.  The data is saved correctly in the csv file. Also in the csv file when using Excel to convert the dateTime column to a true date format it cannot.

Floating point precision is always limited on a computer. Internally I uses the double format with 64 bits precision, but if you include enough digits you will often see an error.
Messtechniker may have two problems, one is that I do not switch to scientific notation, but shows all the digits, the other is the large value.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 01, 2020, 04:21:53 pm
Please find enclosed a .csv file (rename .txt. to .csv) where at first I am logging along nicely followed by switching the signal source off and then on again. See corresponding Screenshots 1 and 2.

Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 01, 2020, 04:35:04 pm
Here is an updated file for the SDG 1062X waveform generator. This adds the functions mentioned in my earlier post, plus a new one -- the ability to specify the expected load impedance.

That allows one to set accurate levels at loads other than just 50 ohms and High-Z. So, for instance, one could specify 600 ohms if used in an audio environment, or 75 ohms for certain RF work, etc., and the instrument would then adjust its internal calibration so that the requested output level was indeed presented to the load.

HKJ :
(1) I did not look at the #meta tags so this needs some work to merge with the 2122 parent; sorry.

(2) For some reason the letter "K" is not rendering in the upper limit for the load Z variable. See the attached pic, where the text "50 - 100K" shows up as "50 - []". Is this an encoding issue, perhaps?[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 04:42:50 pm
Please find enclosed a .csv file (rename .txt. to .csv) where at first I am logging along nicely followed by switching the signal source off and then on again. See corresponding Screenshots 1 and 2.

And the CSV file is mostly useless because I did not save the very high values correctly (A Java issue). I have worked a bit on it in a update, you can try this jar file: httpp://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://httpp://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 04:53:59 pm
Here is an updated file for the SDG 1062X waveform generator. This adds the functions mentioned in my earlier post, plus a new one -- the ability to specify the expected load impedance.

I will take a look at it tomorrow. The problem with the K is probably because 100K is a invalid number, it has to be 100k
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 04:56:42 pm
Managed to do rms (dB), frequency and phase* with my HMO 1022 scope 8)

Did you do you own dB calculations or did you use the build in dB functions?
dBV(voltage): Calculate relative to 1V
dBm(power): Calculate relative to 1mW
dBm(voltage, impedance): Calculate relative to 1mW
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 01, 2020, 05:32:26 pm
Hexley, I'm testing your SDG1062X definition.
Just started but it looks good so far.

How difficult is it to include V rms there ?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 01, 2020, 05:44:26 pm
dB calculation is relative to 0,775 mV = 0 dBu using the math of Test Controller. :-+
like such: log((HMO1022.RMS/0.775)*(HMO1022.RMS/0.775))*10

Low dB values (below 0.0775 mV) bottom out at -20 dB. This is due to the scope.

Must stop now - getting too tired. :palm:



Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 06:09:19 pm
dB calculation is relative to 0,775 mV = 0 dBu using the math of Test Controller. :-+
like such: log((HMO1022.RMS/0.775)*(HMO1022.RMS/0.775))*10

Low dB values (below 0.0775 mV) bottom out at -20 dB. This is due to the scope.

I do not have a dBu version, but I do have a sqr function (and a sqrt function). I believe that dBm(value,600) is the same as dBu
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 01, 2020, 06:16:37 pm
How difficult is it to include V rms there ?

To specify the output level in RMS Volts rather than peak-to-peak volts would require math operations that depend on the waveshape.

For waves with a 50% "duty cycle", like sine or square or tirangle waves, the conversion factors between Vpp and Vrms are well known constants and easy to apply. But for non-symmetric waves like pulse or sawtooth, things get messy, as you have to account for duty cycle which is of course a variable quantity. And for some waves, like ARB, there is no way around doing a point-wise calculation to get the root of the mean squared-values in order to get an accurate RMS number.

So I guess the answer is that a general solution is "quite difficult", so we will have to do the rms conversion manually in cases where we can, like sine waves. No doubt that is one reason HKJ included the pop-up calculator.  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2020, 06:29:19 pm
To specify the output level in RMS Volts rather than peak-to-peak volts would require math operations that depend on the waveshape.

Correct and they are build into the generator for some waveforms, due to the "some" (and a bit of laziness) I decided not to include it. But if you decide to include it it would be nice  ;D

The calculator is because I like that style of calculator and the one I wrote before ( http://miscel.dk/MiscEl/miscel.html (http://miscel.dk/MiscEl/miscel.html) ) is a bit dated (Last update is more than 8 years ago). The typical calculator with buttons for each digit and function is silly in my opinion (Except if you are using a touch screen).
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 01, 2020, 06:57:09 pm
Correct and they are build into the generator for some waveforms,

Well, well. Turns out the SDG programming reference has been revised along the way -- the original one did not mention Vrms (nor DBM, for that matter).

I have downloaded the revised version, and will take another look at Vrms...

[Edit: Here is a version that supports Vrms and dBm input for setting the amplitude.]
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 01, 2020, 10:37:22 pm
With my old generators there was only V pp, so of course I couldn't avoid calculating,
with the SDG I found it very convenient (ok, maybe I got lazy) to be able to enter rms directly.

Thank you very much for V rms.  :-+
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 02, 2020, 07:02:09 am
And the CSV file is mostly useless because I did not save the very high values correctly (A Java issue). I have worked a bit on it in a update, you can try this jar file: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://httpp://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Much better now with the above TestController.jar. :-+
See pic and Test.txt resp. Test.csv.

Also cleaned up my quick-and-dirty dBu (i.e. dB unloaded) calculation: 
It now runs: log(sqr(HMO1022.RMS/0.775))*10
(Initially I did not use the sqr operator because of a bad experience with it in connection with another program :palm:).

Anyway I'm getting quite a lot of fun out of this. :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 07:21:47 am
Also cleaned up my quick-and-dirty dBu (i.e. dB unloaded) calculation: 
It now runs: log(sqr(HMO1022.RMS/0.775))*10

You could also have used: dBm(HMO1022.RMS,600)

Have you found out how to control the sequence of the scales?
The first one checked goes to the left, next one is first to the right, then second to the right. I.e. remove all checkmarks, then check them in the sequence you want the scales.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 02, 2020, 08:10:02 am
Have you found out how to control the sequence of the scales?
The first one checked goes to the left, next one is first to the right, then second to the right. I.e. remove all checkmarks, then check them in the sequence you want the scales.
Yep. Nice and easy. :-+ 8)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 11:09:37 am
V0.55 is up

The updated Siglent SDG is included, I added 1000X, 2000X & 6000X series. I change the impedance setting to a combobox, because I want a possibility to return to HiZ (This is not the ideal solution).

I have added help to the Math page. There is now a list of support functions and description of Math types. I anybody has ideas to useful function or types, please post.

Large values is handle better now. It will switch to scientific notation when value is too high for the format. Very close to zero values will be shown as 0.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 02, 2020, 12:55:23 pm
V0.55 is up

The updated Siglent SDG is included, I added 1000X, 2000X & 6000X series. I change the impedance setting to a combobox, because I want a possibility to return to HiZ (This is not the ideal solution).

I have added help to the Math page. There is now a list of support functions and description of Math types. I anybody has ideas to useful function or types, please post.

Large values is handle better now. It will switch to scientific notation when value is too high for the format. Very close to zero values will be shown as 0.

HKJ,

You added SiglentSDM30xxx.txt to V0.55 but did not remove the old device files. Thanks again for all the great work you have done.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 01:07:01 pm
You added SiglentSDM30xxx.txt to V0.55 but did not remove the old device files. Thanks again for all the great work you have done.

Oops, I have updated the zip file.
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 02, 2020, 02:25:53 pm
...I change the impedance setting to a combobox, because I want a possibility to return to HiZ...

With the other version, I had asked myself whether the maximum possible 100k there would correspond
to the actual HiZ from the point of view of the SDG and its calculated voltage ?
(If certainly not far off).

It's good to be able to return to HiZ. The values from the list will suffice in practice.
Maybe after the free entry of the digits (version of Hexley) the return to HiZ could only have been put on an extra button ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 03:09:54 pm
With the other version, I had asked myself whether the maximum possible 100k there would correspond
to the actual HiZ from the point of view of the SDG and its calculated voltage ?
(If certainly not far off).

It's good to be able to return to HiZ. The values from the list will suffice in practice.
Maybe after the free entry of the digits (version of Hexley) the return to HiZ could only have been put on an extra button ?

I may design a new control for number + one other condition. I am thinking about it, but have not done anything yet.
The return to HiZ could have been an extra button, but you would still have an error condition in the numeric field.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 02, 2020, 05:00:07 pm
I did a quick experiment to test the behavior of 100K vs HZ.

With the SDG1062X set to HZ and set to 1.000 Vrms output, the reading on a DMM with 10 Meg input impedance was 1.0008 VAC.
With the SDG1062X set to 100K and set to 1.000 Vrms output, the reading on a DMM with 10 Meg input impedance was 1.0012 VAC.

So yes, there is some error introduced by using 100k rather than HZ when the load is >100K, but as a practical matter it may be acceptable.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 05:20:16 pm
So yes, there is some error introduced by using 100k rather than HZ when the load is >100K, but as a practical matter it may be acceptable.

Yes, the generator has 50ohm output impedance (Nearly all generators have that).
You can call my change a bit of OCD, but I do not want a red field in the setup menu when everything is ok and I if I can select a mode, I also want a function to deselect it.
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 02, 2020, 06:24:21 pm
Maybe there is a solution for both ?

Do not know if this works... if e.g. the second lowest position of the now existing values in the drop down list,
(after 100k and before the point HiZ) an entry field for numerical entry possible ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 02, 2020, 06:31:07 pm
HKJ,

I can not get the Updater control to work, am I using correctly? I want to update  the 3 Status  every 1 second.

Code: [Select]
#cmdSetup indicatornum Status Main
:read: Mode?
CV 0 blue
CC 1 red

#cmdSetup indicatornum Status Main
:read: ERROR?
OK 0 blue
OVP 1 red
OCP 2 red

#cmdSetup indicatornum Status Main
:read: BattM?
Batt_Mode_Off 0 blue
Batt_Mode_On 1 red

#cmdSetup Updater update
:update: Status
1
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 06:57:49 pm
Maybe there is a solution for both ?

Do not know if this works... if e.g. the second lowest position of the now existing values in the drop down list,
(after 100k and before the point HiZ) an entry field for numerical entry possible ?

No, that sounds rather messy. At the moment I have two solutions in mind:
1) And a "Reset" button (Name must be customable).
2) Use a empty text field as a special value .

The second solution is my favorite, but I need a way to show that an empty text field is a valid value. I could add "Empty" to the value range field, but I am not sure it is the best solution. Maybe showing - as a empty value would work (Input would accept both a empty field and -).
A couple of opinions would help me here.


I can not get the Updater control to work, am I using correctly? I want to update  the 3 Status  every 1 second.

You code looks correct, I will take a closer look tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 02, 2020, 07:28:34 pm
...
2) Use a empty text field as a special value .
...

Should mean;
another extra entry field in the window for free entry ?
and still your dropdown list remains with your given values and you can still return to HiZ in the list ?

If so, I would agree  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 07:43:59 pm
Should mean;
another extra entry field in the window for free entry ?
and still your dropdown list remains with your given values and you can still return to HiZ in the list ?

If so, I would agree  :)

No, the setting is not important enough to get two lines in the configuration (it is already rather long), it is either a combobox or a text field where empty means HiZ.
I like the combobox box because it is easy to use, but a text field gives way more possibilities.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 02, 2020, 07:56:03 pm
A (possibly useful) observation: the SDG1062X will set itself in HZ mode if the numeric entry is >= 1 000 000.

So, for example, if the free-form entry field is used to specify, say,  10 000 000 ohms (after changing the limits test boundary), the unit will display "Load: HZ". But the received message will still generate an error, of course, due to the non-numeric content.

Just passing this along as food for thought in case it simplifies at least the transmit side of things.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2020, 08:09:38 pm
Just passing this along as food for thought in case it simplifies at least the transmit side of things.

It would be possible to increase the maximum value, but I do not like that type of solutions (It would be possible to handle it on the rx side with a more advanced :readmath: (a ?: expression).
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 02, 2020, 11:38:55 pm
...I like the combobox box because it is easy to use...

Me too. it is nice to use.
I add 600 ohms to the dropdown list as an interim solution, just because I need this value more often.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2020, 07:55:56 am

A new jar file with the "Updater" issue fixed.
I have modified the Number & NumberInt controls to support a value that is used when the input field is empty. This means the SDG definition is back to a number field for impedance (From next full update) and leaving that field empty will select HiZ.
The tags used for this is:
:emptyvalue: 0
:emptywrite: C2:OUTP LOAD,HZ

Due to the input parsing the HiZ state returns 0, but to set it I must write HZ (As long as read/write value is the same numeric value, only the :emptyvalue: tag is needed).

Without this tag everything works as before and a empty field is an error.

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 03, 2020, 09:59:03 am
In the chart window i find it a bit annoying never to know how the first sample and the last sample relate to a specific point of time.
Would it not be better to rename "First sample to display" to something like "Display time range start" and "Display time range end" ?

Also: Sill have been caught out several times :palm: by "X" shutting down immediately without further warning thus loosing data when not setting Direct to disk.

Also: For very long term logging (incubator over 21 days or so or weather data over a month) it is not necessary to log every 3 seconds thus creating huge files. In this case logging every minute or every 10 minutes is absolutely sufficient.

Also: Does logging resume after a PC shutdown? Might be important for long term logging. Might not be so important, as for long term logging I use a laptop anyway.

Just a few ideas. :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2020, 10:54:42 am
In the chart window i find it a bit annoying never to know how the first sample and the last sample relate to a specific point of time.
Would it not be better to rename "First sample to display" to something like "Display time range start" and "Display time range end" ?

The first/last sample can be either time or sample number. If you prefix with # it will be sample number, it will also be sample number if you load a csv file without a time column. You can do a couple of trick with these fields, like write "-60" in the first field, then you will get a curve for the last minute of data that updates while logging is running.

Also: Sill have been caught out several times :palm: by "X" shutting down immediately without further warning thus loosing data when not setting Direct to disk.

I will think about it.

Also: For very long term logging (incubator over 21 days or so or weather data over a month) it is not necessary to log every 3 seconds thus creating huge files. In this case logging every minute or every 10 minutes is absolutely sufficient.

The 3 seconds was a bug, it is supposed to be 10 seconds.
You can use logging intervals up to 1 hour, either using the command line ("#log sampleTime") or using the direct to disk option.
Anyway I have nothing against huge log files, for some of my battery test I have done 1 second logging for a couple of weeks.

Also: Does logging resume after a PC shutdown? Might be important for long term logging. Might not be so important, as for long term logging I use a laptop anyway.

It do not, the software do not have code to handle any types of shutdown.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 03, 2020, 12:35:56 pm
Thanks for the hints. :-+.

Probably time to start thinking about writing a
complete user manual in which everything is described
(something I did for a living for about 10 years,
40 years ago :palm:, so I know how boring this can be.
But once you have taken the time to do the basic
framework properly, it will be an easy downhill battle :blah: :horse:) 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2020, 12:53:09 pm
Probably time to start thinking about writing a
complete user manual in which everything is described

It will be a couple of webpages, like the ones about configuring devices.
I have mostly done the one about the "Commands" page.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 03, 2020, 01:01:21 pm
A new jar file with the "Updater" issue fixed.

HKJ,

Tested the fix and all good. :-+
Title: Re: Program that can log from many multimeters.
Post by: BILLPOD on May 03, 2020, 05:19:13 pm
Hello HKJ,
     I am new poster here on EEVblog, so I am not familiar with all the formalities here, so excuse me if I don't have a grasp of all the proper posting procedures.
     I find your TestController program very interesting and am trying it out.  It recognizes and works with my Brymen BM869S meter, but it won't work with my Fluke 189.
     When I click on 'Commands' in the 'Type' column it says: "Serial Fixed Baudrate",
whereas with the Brymen iit says: "USBHID", also the address column is shaded in pink.
      What am I doing wrong?  Thank you for your time. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2020, 06:11:14 pm
Hello HKJ,
     I am new poster here on EEVblog, so I am not familiar with all the formalities here, so excuse me if I don't have a grasp of all the proper posting procedures.
     I find your TestController program very interesting and am trying it out.  It recognizes and works with my Brymen BM869S meter, but it won't work with my Fluke 189.
     When I click on 'Commands' in the 'Type' column it says: "Serial Fixed Baudrate",
whereas with the Brymen iit says: "USBHID", also the address column is shaded in pink.
      What am I doing wrong?  Thank you for your time.

They are connect to Windows in different ways. The Fluke uses a serial port and you must specify it in the red field.
Click on the red field, press F2 and then right click with your mouse. This will give you a list of serial ports available on your computer.
You can also use the device manager to find the serial port and directly type the name in the field (It will be com and a number on windows).

Title: Re: Program that can log from many multimeters.
Post by: BILLPOD on May 03, 2020, 07:54:40 pm
     Thank you very much HKJ.  Too late today, but I will do as you say tomorrow afternoon.
One more thing though;  I know you have made many revisions, and the amount of work you and others have done is very much appreciated, but is the download version at your site the latest
edition, (0.52?)?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2020, 08:34:05 pm
     Thank you very much HKJ.  Too late today, but I will do as you say tomorrow afternoon.
One more thing though;  I know you have made many revisions, and the amount of work you and others have done is very much appreciated, but is the download version at your site the latest
edition, (0.52?)?

The download version at my site gets update frequently, I believe it is V0.55 now. Sometimes I also publish a jar only file, this is mostly to help people that find a bug or are trying to integrate more devices. The changes will show up in the next regular release.

It is not necessary to use the latest release, but keep an eye on this thread to see if there are updates that is important for your. Lately there have been new releases every few days, but there will soon be longer between them.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 04, 2020, 01:07:10 am
HKJ,

I think there is a bug with #cmdSetup comboboxhot. The first time you open up the setup window #cmdSetup comboboxhot will put that control into a nonstop read loop, even if you close the setup window it stays in the read loop.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 04, 2020, 12:26:11 pm
V0.57 is up

Bug from MikeLud is fixed.

The program has a export option now, this will export in the usual csv formats, but included columns, column format, included rows and column names can be adjusted.
If columns format is modified the file can probably not be loaded into TestController again.

The export function is at an early stage, i.e. there will probably be some errors.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 04, 2020, 01:09:26 pm
V0.57 is up

Bug from MikeLud is fixed.

HKJ,

Tested, all good.

Thanks
MikeLud
Title: Re: Program that can log from many multimeters.
Post by: BILLPOD on May 04, 2020, 06:10:48 pm
     Thank you very much HKJ.  Too late today, but I will do as you say tomorrow afternoon.
One more thing though;  I know you have made many revisions, and the amount of work you and others have done is very much appreciated, but is the download version at your site the latest
edition, (0.52?)?
     Thanks HKJ, I did what you said and I got my Fluke 189 connected on com 3.  Now the only problem is to get the program tp open reliably;  I often have to make several attempts at opening/running 'Windows Batch File' before it will open.  Many times it tries to open, but just flashes on the screen momentarily.
     I will put your program in my tool kit and will try it from time to time to see what improvements you have made.  Again, thank you and the others here that have worked to get this program to where it is.  I am sure others, as well as myself, appreciate it.  CIAO! :-+
Title: Re: Program that can log from many multimeters.
Post by: BILLPOD on May 04, 2020, 06:14:04 pm
OOPS, my new message went in with the Quote.  I'm just learning the ropes here :-//
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 04, 2020, 06:20:10 pm
Now the only problem is to get the program tp open reliably;  I often have to make several attempts at opening/running 'Windows Batch File' before it will open.  Many times it tries to open, but just flashes on the screen momentarily.

The best way to get more information is to use the debug batch file, but you may have to edit it and add a line with "pause" at the end.
Title: Re: Program that can log from many multimeters.
Post by: klausES on May 04, 2020, 08:11:08 pm
Short question:
If a V rms value has been entered for the SDG, V pp is still displayed in current values, chart etc.
Is it possible that the V rms value would be displayed in current values, chart, log etc. (either instead of V pp or both) ?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 04, 2020, 08:37:59 pm
HKJ,

Is there a way to set a variable and have a control make changes to that variable. I was able to get it to work by writing to a free modbus address and reading back to set the variable see code below. I rather not do this, if there is another way please let me know.

Thanks Mike

[attachimg=1]

Code: [Select]
#scpiCmd MN? holding? 0x80
:setvar: MNS=value
#scpiCmd MN holding 0x80 (value)
#scpiCmd MV? holding? (MNS) /100
#scpiCmd MV holding (MNS) (value) *100
#scpiCmd MI? holding? (MNS+1) /1000
#scpiCmd MI holding (MNS+1) (value) *1000
#scpiCmd OVP? holding? (MNS+2) /100
#scpiCmd OVP holding (MNS+2) (value) *100
#scpiCmd OCP? holding? (MNS+3) /1000
#scpiCmd OCP holding (MNS+3) (value) *1000

#cmdSetup comboboxhot Memory Memory
:read: MN?
:write: MN
:update: V-Set I-Set OVP OCP
:updatedelayed: 0.3
M0 80
M1 84
M2 88
M3 92
M4 96
M5 100
M6 104
M7 108
M8 112
M9 116

#cmdSetup number V-Set Memory
:read: MV?
:write: MV
V 0 60

#cmdSetup number I-Set Memory
:read: MI?
:write: MI
V 0 6

#cmdSetup number OVP Memory
:read: OVP?
:write: OVP
V 0 62

#cmdSetup number OCP Memory
:read: OCP?
:write: OCP
V 0 6.2
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 04, 2020, 08:45:28 pm
Is there a way to set a variable and have a control make changes to that variable. I was able to get it to work by wiring to a free modbus address and reading back to set the variable see code below. I rather not do this, if there is another way please let me know.

Some, check Maynuo and :setvar: tag. For now it only works in #scpiCmd
Title: Re: Program that can log from many multimeters.
Post by: VNUTDENYER on May 05, 2020, 02:01:22 pm
 Does anyone know if this SW can support HP3478A, E1410A, OR E1412A?  Search on 3478A finds similar query post 272.  Maybe it is close enough to an existing definition for an edit  (which I will do, test, upload)?  Read whole thread,very impressive work.  Was planning on buying usb/gpib adapter using prologix commands until i found this. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 05, 2020, 02:21:25 pm
Does anyone know if this SW can support HP3478A, E1410A, OR E1412A?  Search on 3478A finds similar query post 272.  Maybe it is close enough to an existing definition for an edit  (which I will do, test, upload)?  Read whole thread,very impressive work.  Was planning on buying usb/gpib adapter using prologix commands until i found this.

You need a serial or socket connection (this can be with a adapter). Then you can use the build in new device guide to setup a connection.
The actual definition is probably close to the Keysight bench meters and you can check the SCPI commands from the command line.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 05, 2020, 02:31:56 pm
I looked in the manual for the HP3478A and it is not SCPI, this means it will not work with the SCPI driver. It may be possible to use the "Single value" driver to read one mode from the meter (Like DCV), anything more will require programming by me.
Title: Re: Program that can log from many multimeters.
Post by: VNUTDENYER on May 05, 2020, 03:28:20 pm
Thanks, HKJ, I somehow missed SCPI requirement while also reading other threads where SCPI commands used to control GPIB bus into 3478.  So maybe using HW from those threads and your SW would be MMIH (don't you just hate when someone pops in something like this w/o defining it)?  MMIH=match made in heaven.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 05, 2020, 04:02:17 pm
Thanks, HKJ, I somehow missed SCPI requirement while also reading other threads where SCPI commands used to control GPIB bus into 3478.  So maybe using HW from those threads and your SW would be MMIH (don't you just hate when someone pops in something like this w/o defining it)?  MMIH=match made in heaven.

The software has 3 drivers that can be changed by users, they are SCPI, Modbus and SingleValue (The last for devices that returns a single value, it can work with or without polling the device). It also has a couple of other drivers, but they are mostly made to fit a specific device.
And it has a couple of connections: socket and serial as the mains one, it can also do LXI and HID, but both needs more work.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 06, 2020, 08:23:06 am
V0.60 is up.

It is a couple of minor updates/changes:
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 06, 2020, 10:00:02 am
And here we go again  :palm:
Since I have a few two-wire Pt 1000 temperature sensors, I would like to include this type in the popup menu for the 34465A.
There is the SCPI command RTD for this type of sensor which works and the button is there :-+.
But in the manual I cannot find a SCPI command to specify R0 (1000 Ohm in my case, 100 being the default) nor is there an SCPI command for Low Power. Have these commands been forgotten perhaps, or have they simply not been included in the manual?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 06, 2020, 10:52:41 am
And here we go again  :palm:
Since I have a few two-wire Pt 1000 temperature sensors, I would like to include this type in the popup menu for the 34465A.
There is the SCPI command RTD for this type of sensor which works and the button is there :-+.
But in the manual I cannot find a SCPI command to specify R0 (1000 Ohm in my case, 100 being the default) nor is there an SCPI command for Low Power. Have these commands been forgotten perhaps, or have they simply not been included in the manual?

Could it be:
[SENSe:]TEMPerature:TRANsducer:{FRTD|RTD}:RESistance[:REFerence]{<reference>|MIN|MAX|DEF}
[SENSe:]TEMPerature:TRANsducer:{FRTD|RTD}:RESistance[:REFerence]?[{MIN|MAX|DEF}]

There is a group of commands for configuring each mode.

You probably have to use a "Abort" before the command and then restart the trigger again after.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 07, 2020, 10:24:46 am
Hi HKJ,

I've been using your excellent program on my Keysight 34465A with no problems with a MacBook Pro (macOS 10.15.4) and Java 8.

[Edit: Updated TestController from 0.57 to 0.60 and issue persists]

However, I've just received a Brymen 869s with the USB interface, and the program now crashes as soon as I add the Brymen and try to connect. I then have to edit the settingsLoad.txt file and disable the Brymen before I can get the program to run without crashing.

I started the program from the command line with the debug option (below), and full dump log attached.

java -jar TestController.jar debug %1 %2 %3 %4 %5 %6 %7 %8 %9
Starting
;; Start thread for: cu.Bluetooth-Incoming-Port
;; Start thread for: tty.Bluetooth-Incoming-Port
;; Stopping thread for: tty.Bluetooth-Incoming-Port
;; Start thread for: HIDv0820p0001 - Brymen BM869s
;; HIDv0820p0001: Found usb device: IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/XHC1@14/XHC1@14000000/HS02@14200000/Superior DMM@14200000/IOUSBHostInterface@0/AppleUserUSBHostHIDDevice
;; Stopping thread for: HIDv0820p0001 - Brymen BM869s
;; cu.Bluetooth-Incoming-Port: Set params: 9600
;; cu.Bluetooth-Incoming-Port: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; cu.Bluetooth-Incoming-Port: Rx: timeout
;; cu.Bluetooth-Incoming-Port: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; cu.Bluetooth-Incoming-Port: Rx: timeout
;; Stopping thread for: cu.Bluetooth-Incoming-Port
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007fff2fcc399f, pid=13128, tid=0x000000000000ed0b
#
# JRE version: Java(TM) SE Runtime Environment (8.0_121-b13) (build 1.8.0_121-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.121-b13 mixed mode bsd-amd64 compressed oops)
# Problematic frame:
# C  [CoreFoundation+0x4799f]  CFSetGetValue+0x21
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /Applications/TestController/hs_err_pid13128.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp (http://bugreport.java.com/bugreport/crash.jsp)
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
zsh: abort      java -jar TestController.jar debug %1 %2 %3 %4 %5 %6 %7 %8 %9
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 07, 2020, 11:54:31 am
However, I've just received a Brymen 869s with the USB interface, and the program now crashes as soon as I add the Brymen and try to connect. I then have to edit the settingsLoad.txt file and disable the Brymen before I can get the program to run without crashing.

I can not guarantee it will every work, but I have not given up yet.

My HID implementation is not very good, I use file access to read the HID devices and it obvious do not work on your computer. I do also use a HID library, but I can only use it to find the file path, it will not read any data on windows (It may work on mac/linux, I need to test that).

I plan on looking at the HID driver, but it may be some time before I get around to do it. I have planned some improvement to the setup definitions first and I also want to do some more manual writing.

None of the settings files are needed to start the program, it will create a new one if it is missing. I.e. deleting the file or directory is also possible. You will, of course, reset the program to initial state doing that.


Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 07, 2020, 12:18:12 pm
Ok, thank you anyway.

I have also tried it on a Windows 10 virtual machine running on the MacBook and it works OK with the Brymen software included with the interface module. I haven't yet tried TestController, as I need to install Java first.

If ever you need help to troubleshoot the HID setup on Mac, then please feel free to ask.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 07, 2020, 12:48:49 pm
I now have TestController running in Windows 10 as a VM on the MacBook Pro, and all is working  ;D

As this is using the same USB hardware port, it would seem that the program only crashes when running natively on the Mac.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 07, 2020, 01:01:37 pm
V0.61 is up.

This version add a few functions related to NTC's, basically any ohmmeter can show temperature with any NTC.

The functions are (The ones ending in T takes a temperature argument and returns a resistance);
ntc(coef,r), ntcB(r0,t0,beta,r), ntcSH(a,b,c,r), ntcT(coef,t), ntcBT(r0,t0,beta,t), ntcSHT(a,b,c,t)

The coef is a structure that can be filled with:
globalvar coef=ntcCoef(r1,t1,r2,t2,r3,t3);
globalvar coef=ntcCoef(r1,t1,r2,t2);
globalvar coef=ntcCoef(a,b,c);
globalvar coef=ntcCoef(r0,beta);  This initialization assumes that r0 is for 25 degree

The way to use it is to stick a line in .../documents/TestController/Settings/autorun.txt
With the desired initialization:
=globalvar ntc1=ntcCoef(22k,5,10k,25,4k,45)

Then the short form with "coef" parameter can be used on the math page or in the calculator (coef has to be replaces with the actual name, in the above ntc1).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 01:02:08 am
Since the Keysight 344xxA meters are close to the Siglent meters and have similar SCPI commands I converted the advanced Siglent device file to a device file that supports Keysight 34461A, 34465A, and 34470A. I do not have any of the Keysight meters so I could not test if it works. I still need to complete the setup for the temperature. For now if anyone has one of the Keysight's meters please test the file and let me know if you find any issue and I will correct them in the next couple of days   

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 07:24:10 am
Since the Keysight 344xxA meters are close to the Siglent meters and have similar SCPI commands I converted the advanced Siglent device file to a device file that supports Keysight 34461A, 34465A, and 34470A. I do not have any of the Keysight meters so I could not test if it works. I still need to complete the setup for the temperature. For now if anyone has one of the Keysight's meters please test the file and let me know if you find any issue and I will correct them in the next couple of days   

The setup menus looks nice, but nothing works. The problem probably is that the meter will not accept much while running in a trigger mode.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 10:38:22 am
Since the Keysight 344xxA meters are close to the Siglent meters and have similar SCPI commands I converted the advanced Siglent device file to a device file that supports Keysight 34461A, 34465A, and 34470A. I do not have any of the Keysight meters so I could not test if it works. I still need to complete the setup for the temperature. For now if anyone has one of the Keysight's meters please test the file and let me know if you find any issue and I will correct them in the next couple of days   

The setup menus looks nice, but nothing works. The problem probably is that the meter will not accept much while running in a trigger mode.

Try this, I adjusted the #askValues and #prepareSample to match what the Siglent has.

[attach=1]

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 11:23:41 am

Try this, I adjusted the #askValues and #prepareSample to match what the Siglent has.


It did not fix it, I press the setup button just after starting TestController, i.e. before look at Current values or logging. The Setup menu do not open, but the meter beeps and shows a couple of errors (The menu will open after many timeouts).
The mode you uses do not look good on the meter, each time you start the trigger it replaces all digits with dots, until it has a value. I.e. the display is flashing all the time.

This time I did what I should have done the first time around: Made a logfile.
I did one for each of you two configurations

http://lygte-info.dk/pic/Projects/TestController/log1.dat (http://lygte-info.dk/pic/Projects/TestController/log1.dat)

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 12:14:02 pm
It did not fix it, I press the setup button just after starting TestController, i.e. before look at Current values or logging. The Setup menu do not open, but the meter beeps and shows a couple of errors (The menu will open after many timeouts).
The mode you uses do not look good on the meter, each time you start the trigger it replaces all digits with dots, until it has a value. I.e. the display is flashing all the time.

This time I did what I should have done the first time around: Made a logfile.
I did one for each of you two configurations

HKJ,

This should fix all of the timeouts, I will look into the trigger issue later today, I have to start my normal job.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 01:40:12 pm
This should fix all of the timeouts, I will look into the trigger issue later today, I have to start my normal job.

It works now, except for the trigger issue. The display  flicker on the meter and logging is slow, my old definition can basically sample at 0.01s intervals, yours a 0.5s intervals.
I have not tested everything, just tried a bit in some of the modes.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 04:53:16 pm
It works now, except for the trigger issue. The display  flicker on the meter and logging is slow, my old definition can basically sample at 0.01s intervals, yours a 0.5s intervals.
I have not tested everything, just tried a bit in some of the modes.

HKJ,

The attached might fix the trigger issue.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 05:20:43 pm
The attached might fix the trigger issue.

No, the DMM do not know the *trg command.
The best is to have a continuous trigger running on the meter, then the display on the meter will show a value and data:last? will return immediately with the last converted value.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 06:29:42 pm
No, the DMM do not know the *trg command.
The best is to have a continuous trigger running on the meter, then the display on the meter will show a value and data:last? will return immediately with the last converted value.

HKJ,

I adjusted the #askValues and #prepareSample back to the original settings you had in the single device file. I am not sure the first file that did not work was because of all the timeouts so now I have time out fixed maybe this file will work

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 07:16:45 pm
I adjusted the #askValues and #prepareSample back to the original settings you had in the single device file. I am not sure the first file that did not work was because of all the timeouts so now I have time out fixed maybe this file will work

No timeouts, but the DMM beeps and refuses the command from the setup popup.
Mt guess is that you need to start each setting with "abort" and finish with a reinitialization of triggering.
I could add a SCPI command/tag like [prepareSample] to redo the #prepareSample sequence. I believe that is a nicer way to do it, compared to add the full sequence to each setting write.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 08, 2020, 07:46:58 pm
No timeouts, but the DMM beeps and refuses the command from the setup popup.
Mt guess is that you need to start each setting with "abort" and finish with a reinitialization of triggering.
I could add a SCPI command/tag like [prepareSample] to redo the #prepareSample sequence. I believe that is a nicer way to do it, compared to add the full sequence to each setting write.

HKJ,

How does the #cmdMode handle reinitialization the triggering?  You only have abort & *cls before the SCPI commands
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2020, 07:50:04 pm
How does the #cmdMode handle reinitialization the triggering?  You only have abort & *cls before the SCPI commands

abort will stop any triggering mode, any #cmdMode means the #prepareSample will be used before data is collected next time.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 09, 2020, 12:45:07 am
Hi HKJ,

Thanks for your hard work to create this logging utility.  From a few hours trying it out it seems to work well.  :-+

Attached is a device file for Owon ODP6033 or ODP3033 or ODP3063 power supplies.  All in one family and all triple supplies with various combinations of voltages and currents.  I wrote the device file for all three but I only have the ODP6033 to test with.  The hardest part was that the English language SCPI documentation on Owon's web site seems to be completely wrong.  Fortunately the Chinese one is correct but not knowing Chinese and using Google translate is a challenge.

I have a Keithley model 2100 6.5 digit meter.  It is rebranded by Keithley from Array which sells this device under their own name as an M3500a.  It supports VISA SCPI but the only interface is USB TMC.  From what I can see this program has limited support for USB connections that are not set up as COM ports.  Is there a way to make a device file and talk to this device?

gby

Next up will be a device file for a Sorenson XG 600 Power supply when I have time.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 09, 2020, 01:31:51 am
HKJ,

I think I fixed the trigger issue, please try the attached.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 05:11:07 am
Attached is a device file for Owon ODP6033 or ODP3033 or ODP3063 power supplies.  All in one family and all triple supplies with various combinations of voltages and currents.  I wrote the device file for all three but I only have the ODP6033 to test with.  The hardest part was that the English language SCPI documentation on Owon's web site seems to be completely wrong.  Fortunately the Chinese one is correct but not knowing Chinese and using Google translate is a challenge.

Thanks, it will be included in the next update.

I have a Keithley model 2100 6.5 digit meter.  It is rebranded by Keithley from Array which sells this device under their own name as an M3500a.  It supports VISA SCPI but the only interface is USB TMC.  From what I can see this program has limited support for USB connections that are not set up as COM ports.  Is there a way to make a device file and talk to this device?

Sorry, I only have support for serial ports and partially support for HID devices for now.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 05:18:36 am
I think I fixed the trigger issue, please try the attached.

Mostly fixed. It works, but sometimes the trigger fails to initializes. Changing mode and back will fix it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 09, 2020, 06:37:06 am

Small correction for Keysight344xxA.txt
relating to 2 wire resistance low power:
For this to work the corresponding entry should read:

:write: abort;*cls;RES:POW:LIM
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 09:02:08 am
V0.62 is up.

It includes the 3 Owon PS from gby.
I have change the initialization of the setup menu, now it will show the popup first and then initialize it, it is a fraction of a second slower, but that is more than compensated for by making popup visible much faster.

The above also means I could add a preview of the popups, it is found by right clicking the master device selection combobox.

(http://lygte-info.dk/pic/cpf5/PreviewMenu.png)

The preview do not communicate, this means all text field will be empty, radiobuttons will not be selected, etc.. It is possible to play with the popups.
It also means the :visible: tag will be enabled for all lines, this can be seen in the Siglent SDG popups. When using a it while connected to a device the :visible: tag will work as before.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 09, 2020, 11:26:28 am

Mostly fixed. It works, but sometimes the trigger fails to initializes. Changing mode and back will fix it.

Small correction for Keysight344xxA.txt
relating to 2 wire resistance low power:
For this to work the corresponding entry should read:

:write: abort;*cls;RES:POW:LIM

Made some adjustments, increased the the delay before initializes the trigger and fixed the 2 wire resistance low power.  Please test and let me know the outcome.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 11:53:07 am

Made some adjustments, increased the the delay before initializes the trigger and fixed the 2 wire resistance low power.  Please test and let me know the outcome.


I modified this entry:
#cmdSetup info Active_Mode
:read: FUNC?

This looks to have fixed the problems with triggering stopping.

I will include this definition from next version (This do not mean I have checked everything).

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 09, 2020, 11:57:38 am
The above also means I could add a preview of the popups, it is found by right clicking the master device selection combobox.

(http://lygte-info.dk/pic/cpf5/PreviewMenu.png)

Great feature, this let me see what I am doing when making the device file for the Keysight344xxA. Also it would let others see some sample to get ideas when creating a new device file
Title: Re: Program that can log from many multimeters.
Post by: gby on May 09, 2020, 03:13:44 pm
HKJ,

IMHO the change to show the popup right away and then fill the values in is definitely better.  Always a bit of confusion when you click something to be on and nothing happens for seconds.  I also think the preview mode for popups in the LOAD time on device selection is great.

I have a device that communicates with Telnet on port 23 using just ASCII text.  But, it is not SCPI compliant.  For example using Putty to connect, typing *IDN? returns
    Error: [0085] Command was not found.
to the *IDN? query.  However communication is simple ascii text exchange over Telnet.  To retrieve data values using Putty you send something like AXIS1.VL.FB and it returns something like
   6.769 [rpm]
   -->
where the "-->" is a prompt.  Any way to hook a device like this up to TextController?  I would think nearly everything needed to work with such a device is already in TestController.

I tried to create a device file for this device on port 23 with the correct IP address and when I run in debug mode I get:
;; Start thread for: COM1
;; Start thread for: 192.168.1.162 - Kollmorgen AKD2G Servo
;; 192.168.1.162: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Set params: 9600
;; 192.168.1.162: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; Stopping thread for: 192.168.1.162 - Kollmorgen AKD2G Servo
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM1: Rx: timeout
;; Stopping thread for: COM1

I assume it stopped the thread for the Kollmorgen AKD2G Servo device because it did not like the response to the *IDN? query with just the 0x0A line feed at the end.  Or, I suppose it is possible that the device did not respond at all with only a LF and no CR at the end??  Any thoughts on connecting to this device?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 03:20:52 pm
I have a device that communicates with Telnet on port 23 using just ASCII text.  But, it is not SCPI compliant.  For example using Putty to connect, typing *IDN? returns
    Error: [0085] Command was not found.

The standard driver is strictly SCPI, I do have other drives, but none to handle the above.
I may add that at a later date.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 09, 2020, 03:47:08 pm
HKJ, thanks for the quick reply and thanks for considering supporting even more device types.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 04:03:11 pm
I have been working on a new cmdSetup control that can be used to show/hide other controls. I hope this will work much better than the :visible: control for showing/hiding many controls. This control will not always work with the preview, I will probably improve that a bit.
It do not work across pages, but pulls all named controls to its own page. "page.name" must be used to identify controls on pages.

The other controls are defined as usually, then one or more "selector" controls can be added, each with a list of control to handle.
What line of controls are enabled depends on the expression, it is possible to use either numeric or text values for selection lines.

#cmdSetup selector Test
expression
value1 control {control {control {control {control ...}}}}
value2 control {control {control {control {control ...}}}}
...

Doing updates and/or enable on the selector will affect all visible controls in it.

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

This is a very early version and not tested very much.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 09, 2020, 04:21:50 pm
HKJ,

I am trying to use the combobox and comboboxHot setup commands, the issue I am having is when it does a read and the value comes back in scientific notation it does not convert to a number like all of the other setup commands. Is it possible have this conversion.

Thanks
MikeLud
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 04:29:57 pm
I am trying to use the combobox and comboboxHot setup commands, the issue I am having is when it does a read and the value comes back in scientific notation it does not convert to a number like all of the other setup commands. Is it possible have this conversion.

The combobox control works with strings, i.e. it do not do any number conversion of the received value. A comboboxint may be useful, but for floating point I cannot see it as very useful.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 09, 2020, 04:51:42 pm
The combobox control works with strings, i.e. it do not do any number conversion of the received value. A comboboxint may be useful, but for floating point I cannot see it as very useful.

How I am trying to use it is to cleanup the setup tabs (make it less busy) by changing some of the radio types to a combobox so you do not have a mile long radio control.

[attachimg=1]

[attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2020, 04:57:39 pm
How I am trying to use it is to cleanup the setup tabs (make it less busy) by changing some of the radio types to a combobox so you do not have a mile long radio control.

List the values returned from the meter as the values for the comboxbox using the text directly.
Title: Re: Program that can log from many multimeters.
Post by: Dwaine on May 10, 2020, 03:01:34 am
I just tried this program to watch a charging of a car battery.  Great application it worked well.  I was using a Keysight U1272A to log the voltage during the charge.  Remote x11 session from my linux server to my Windows 10 laptop. 

Quick question.  How do you set the baud rate from 9600 to 19200?  I tried to change the config file but it always tries 9600 baud.   Also, the only option for measurement is DC Voltage.  How do you pick other measurements?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2020, 04:16:30 am
Quick question.  How do you set the baud rate from 9600 to 19200?  I tried to change the config file but it always tries 9600 baud.   Also, the only option for measurement is DC Voltage.  How do you pick other measurements?

Baudrate is part of the driver definition and I forgot there is a baudrate setting on the meter.
To select range you have to turn the range switch on the meter, then use the mode button in TestController and press "Check mode" on the popup.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2020, 09:50:53 am
V0.64 is up

It is with a working selector control and I have modified the Keysight344xx to use it:

(http://lygte-info.dk/pic/cpf5/selectorTest1.png)

Now the setup window will track the selected mode and it updates much faster, because only the visible controls are updated.

I also fixed some bugs with current input selection.
The temperature selection only has thermocouplers and are missing RTD, I did not fix that.

The selector is the last control in the file, if it is removed it will revert to the old layout.

I hope there are baudrate selection on the Keysight handheld now (I did not test).
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 10, 2020, 01:54:22 pm
HKJ,

I made some changes to the Keysight344xxA device file. I need to work on the temperature selection, I am not sure how I am going to set it up maybe I will use the new selector control

Change 1: removed all of the not needed :update: & :updatedelayed: tags since you added #;init at the end of the :write: tags
Change 2: Changed all radio controls that have more then 3 items to a comboboxHot control
Change 3: added Ratio setup

[attachimg=1]

[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: gby on May 10, 2020, 04:44:07 pm
I am working on a device file for Sorenson/Ametek XG series power supply and have run into an issue.  On a device popup I am trying to have on/off button with "indicator light".  Unfortunately the power supply SCPI code for turning output on/off and for reading the state of the output is not symmetric.  Setting the state you must use "on" or "off" as the value sent.  The same command as a query returns "0" or "1".  If you send "0" or "1" as the value the supply ignores the command/does nothing.  The code I am using is:

#cmdSetup buttonsOn Main_Output
:read: OUTP:POW:STAT?
:write: OUTP:POW:STAT
:color: (0,255,0)
:tip: Turn output on or off
:updatealloff:
Off off
On on

With the above code the buttons successfully turn the output on or off.  However, the indicator light is always off.  If I change the last two lines to Off 0, On 1 the on/off buttons do not work but with manually sending the on/off command the indicator light works.

Any idea to have the buttons and the indicator light work?

(https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/?action=dlattach;attach=988242)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2020, 05:00:02 pm
I am working on a device file for Sorenson/Ametek XG series power supply and have run into an issue.  On a device popup I am trying to have on/off button with "indicator light".  Unfortunately the power supply SCPI code for turning output on/off and for reading the state of the output is not symmetric.  Setting the state you must use "on" or "off" as the value sent.  The same command as a query returns "0" or "1".  If you send "0" or "1" as the value the supply ignores the command/does nothing.  The code I am using is:

You need to use something called :readmath: something like:

:readmath: getElement("off on",value);

will probably fix it. It will return "off" when value is 0 and "on" when value is 1
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 10, 2020, 06:00:19 pm
HKJ,

I am working on finishing the Temperature setup. I am using the new new selector control, can you check if I am on the right track.

Thanks
MikeLud

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2020, 06:43:16 pm
I am working on finishing the Temperature setup. I am using the new new selector control, can you check if I am on the right track.

Sorry, but there are a few issues with that.
1) A control can only be used in one selector and when you(me) use "Temperature." all controls on the Temperature page are used once, but you also try to use some of them in a second selector.
2) Only top levels selectors can handle more than one control. I can fix that, but not today.
3) The current version to not support multilevel selectors, but that was an easy fix and you can download a new jar file with it from the usual link.

4) To preview a selector page place it as the first line.
 

I also got a timeout:
;; 20:22:59.656 K34465: Rx as number <100.0>
;; 20:22:59.656 K34465: Tx <TEMP:TRANS:FRTD:OCOM?>
;; 20:23:09.657 K34465: Rx Timeout
;; 20:23:09.662 K34465: Rx as number <NaN>
Title: Re: Program that can log from many multimeters.
Post by: gby on May 10, 2020, 07:54:36 pm
HKJ, thanks for the :readmath: getElement("off on",value); tip.  Ufortunately either I am using this idea wrong or something is not working about this idea.  I updated the buttonsOn code to:
Code: [Select]
#cmdSetup buttonsOn Main_Output
:read: OUTP:POW:STAT?
:readmath: getElement("Off On",value);
:write: OUTP:POW:STAT
:color: (0,255,0)
:tip: Turn Main output on or off
:updatealloff:
Off Off
On On
Testing the above the indicator is always on.  Using debug mode I see the readmath is clearly taking the returned 0 or 1 value and changing it to On or Off.  See cut and paste from debug showing all the lines from when I turned the popup on until it populated/was done.  At the end Rx is set to Off but the indicator stays on/lit.  The last line says Rx NaN which is true, but does that indicate a problem?  Suggestions to clean this up/make it work?  In case it helps I have attached the full work in progress device file.  I tested with Ver 0.64.
Code: [Select]
;; A600V1_4A: Tx <SOUR:VOLT:LEV:IMM:AMPL?>
;; A600V1_4A: Rx <625.00000>
;; A600V1_4A: Rx as number <625.0>
;; A600V1_4A: Tx <SOUR:CURR:LEV:IMM:AMPL?>
;; A600V1_4A: Rx <1.46600>
;; A600V1_4A: Rx as number <1.466>
;; A600V1_4A: Tx <SOUR:VOLT:PROT?>
;; A600V1_4A: Rx <660.00000>
;; A600V1_4A: Rx as number <660.0>
;; A600V1_4A: Tx <SOUR:CURR:PROT?>
;; A600V1_4A: Rx <1.54000>
;; A600V1_4A: Rx as number <1.54>
;; A600V1_4A: Tx <OUTP:POW:STAT?>
;; A600V1_4A: Rx <0>
;; A600V1_4A: Rx after :readmath: getElement("Off On",value); <Off>
;; A600V1_4A: Rx as number <NaN>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2020, 08:00:35 pm
Testing the above the indicator is always on.  Using debug mode I see the readmath is clearly taking the returned 0 or 1 value and changing it to On or Off.  See cut and paste from debug showing all the lines from when I turned the popup on until it populated/was done.  At the end Rx is set to Off but the indicator stays on/lit.  The last line says Rx NaN which is true, but does that indicate a problem?  Suggestions to clean this up/make it work?  In case it helps I have attached the full work in progress device file.  I tested with Ver 0.64.

As default buttonson is expecting a numeric result, place a :string: on the next line and it will expect a string result.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 10, 2020, 08:29:07 pm
HKJ, adding :string: got it to work fine.  Thanks for your patience to help me.  Have a great evening.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 11, 2020, 01:50:02 am
I also got a timeout:
;; 20:22:59.656 K34465: Rx as number <100.0>
;; 20:22:59.656 K34465: Tx <TEMP:TRANS:FRTD:OCOM?>
;; 20:23:09.657 K34465: Rx Timeout
;; 20:23:09.662 K34465: Rx as number <NaN>

HKJ,

I fixed the timeout and added all of the controls on the temperature setup.  Please check out.

Thanks
MikeLud

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 08:17:41 am
V0.66 is up

The Keysight 344xx is updated, I fixed a few bugs with temperature, but not everything:

Do not work:
;; 08:40:18.852 K34465: Tx <abort>
;; 08:40:18.852 K34465: Tx <*cls>
;; 08:40:18.852 K34465: Tx <TEMP:TRANS:RTD:OCOM 1>  <- Meter report error
;; 08:40:18.852 K34465: Tx <init>
;; 08:40:18.852 K34465: Tx <TEMP:TRAN:RTD:OCOM?>
;; 08:40:19.084 K34465: Rx <0>   <- value is not changed
;; 08:40:19.084 K34465: Rx as number <0.0>

Meter has a Auto zero setting in 2W and Tcouple mode


This version includes a new driver called "ascii", it is very similar to the Modbus driver with command definition, but this time it is plain ascii commands that is defined. This will hopefully make it possible to connect to a lot of non-scpi equipment.
I have updated the manual here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 11, 2020, 12:39:03 pm
The Keysight 344xx is updated, I fixed a few bugs with temperature, but not everything:

Do not work:
;; 08:40:18.852 K34465: Tx <abort>
;; 08:40:18.852 K34465: Tx <*cls>
;; 08:40:18.852 K34465: Tx <TEMP:TRANS:RTD:OCOM 1>  <- Meter report error
;; 08:40:18.852 K34465: Tx <init>
;; 08:40:18.852 K34465: Tx <TEMP:TRAN:RTD:OCOM?>
;; 08:40:19.084 K34465: Rx <0>   <- value is not changed
;; 08:40:19.084 K34465: Rx as number <0.0>

Meter has a Auto zero setting in 2W and Tcouple mode

HKJ,

Hopefully I have everything now. I am still going to do a complete proof of the device file, let me know if you see anything.

Fix 1: Corrected all of the TRANS errors they should have been TRAN. This was cause by cutting and pasting an error in the manual.
Fix 2: Added Auto zero setting in 2W and Tcouple mode

[attachimg=1]

[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 01:00:17 pm
Thermistor 2.25kohm do not work on 34465 (That is the one I am using for testing), the other two values works fine:
;; 14:45:26.353 K34465: Tx <abort>
;; 14:45:26.354 K34465: Tx <*cls>
;; 14:45:26.354 K34465: Tx <TEMP:TRAN:THER:TYPE +2500>
;; 14:45:26.354 K34465: Tx <init>
;; 14:45:26.556 K34465: Tx <TEMP:TRAN:THER:TYPE?>
;; 14:45:26.675 K34465: Rx <+10000>

Looks like a missing :string: tag
;; 14:47:57.940 K34465: Tx <abort>
;; 14:47:57.940 K34465: Tx <*cls>
;; 14:47:57.940 K34465: Tx <TEMP:TRAN:TC:RJUN:TYPE FIX>
;; 14:47:57.941 K34465: Tx <init>
;; 14:47:58.141 K34465: Tx <TEMP:TRAN:TC:RJUN:TYPE?>
;; 14:47:58.283 K34465: Rx <FIX>
;; 14:47:58.283 K34465: Rx as number <NaN>
;; 14:47:58.284 K34465: Tx <TEMP:NULL:VALUE?>
;; 14:47:58.286 K34465: Rx <+0.00000000E+00>


I also get an error from the meter when enabling "Null" in RTD 2W, RTD 4W, thermis2W, but not in thermis4W & Tcouple. There are no errors when disabling it.
The low looks fine enough, here is one fro RTD 2W:
;; 14:58:26.262 K34465: Tx <abort>
;; 14:58:26.262 K34465: Tx <*cls>
;; 14:58:26.262 K34465: Tx <TEMP:NULL:STAT 1>
;; 14:58:26.262 K34465: Tx <init>
;; 14:58:26.463 K34465: Tx <TEMP:NULL:STAT?>
;; 14:58:26.543 K34465: Rx <1>
;; 14:58:26.543 K34465: Rx as number <1.0>
;; 14:58:26.543 K34465: Tx <TEMP:NULL:VALUE?>
;; 14:58:26.546 K34465: Rx <-5.83932611E-01>
;; 14:58:26.546 K34465: Rx as number <-0.583932611>
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 11, 2020, 01:48:57 pm
Thermistor 2.25kohm do not work on 34465 (That is the one I am using for testing), the other two values works fine:

Looks like a missing :string: tag

I also get an error from the meter when enabling "Null" in RTD 2W, RTD 4W, thermis2W, but not in thermis4W & Tcouple. There are no errors when disabling it.
The low looks fine enough, here is one fro RTD 2W:

HKJ,

Attached is an updated device file. I am not sure why enabling "Null" in RTD 2W, RTD 4W, thermis2W does not work, do you have any ideas.

Fix 1:  Thermistor 2.25kohm had wrong value +2500 changed to +2250
Fix 2:  Added :string: tag to #cmdSetup radio Offset Temperature2

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 02:16:11 pm
Attached is an updated device file. I am not sure why enabling "Null" in RTD 2W, RTD 4W, thermis2W does not work, do you have any ideas.
Fix 1:  Thermistor 2.25kohm had wrong value +2500 changed to +2250
Fix 2:  Added :string: tag to #cmdSetup radio Offset Temperature2

The string tag fixed that problem, the 2.25k thermistor do not work, do the meter even support it? Maybe I have an old software version?

The beep when enabling "null" is strange, because the command works, even when I get the error message on the meter.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 11, 2020, 02:52:23 pm
Attached is an updated device file. I am not sure why enabling "Null" in RTD 2W, RTD 4W, thermis2W does not work, do you have any ideas.
Fix 1:  Thermistor 2.25kohm had wrong value +2500 changed to +2250
Fix 2:  Added :string: tag to #cmdSetup radio Offset Temperature2

The string tag fixed that problem, the 2.25k thermistor do not work, do the meter even support it? Maybe I have an old software version?

The beep when enabling "null" is strange, because the command works, even when I get the error message on the meter.

HKJ,

2.25k thermistor was added in Firmware Revision 3.00 Enhancements and Fixes. The current firmware is Revision 3.02, link below. Maybe I need to add a #notes Requires Firmware Revision 3.00 or higher.

For the null issue maybe it needs a delay so I adjusted the below line, try the attached
:write: abort;*cls;[100];TEMP:NULL:STAT #;init

https://www.keysight.com/main/software.jspx?ckey=2367633&lc=eng&cc=US&nid=-32051.1242960&id=2367633 (https://www.keysight.com/main/software.jspx?ckey=2367633&lc=eng&cc=US&nid=-32051.1242960&id=2367633)

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 03:26:01 pm
2.25k thermistor was added in Firmware Revision 3.00 Enhancements and Fixes. The current firmware is Revision 3.02, link below. Maybe I need to add a #notes Requires Firmware Revision 3.00 or higher.

Thanks for the link, now some of meters are up to date:
;; Keysight Technologies,34461A,MY53214390,A.03.02-02.40-03.02-00.52-01-01 
;; Keysight Technologies,34465A,MY57502236,A.03.02-02.40-03.02-00.52-03-01 
;; Keysight Technologies,34470A,MY54700281,A.03.02-02.40-03.02-00.52-02-01 

But none of them will handle the 2.25kohm thermistor. I found out what the problem was with the null: The meter must have a valid reading when I activate it. Why it reports error in command, instead of something more like invalid input, it not something that can guess.

The 34461 has a couple of problems with temperature, it has much less support for different thermo sensors than the bigger model.
Here is one of the problems:
;; 17:23:28.006 K34461: Tx <TEMP:TRAN:RTD:OCOM?>
;; 17:23:38.006 K34461: Rx Timeout
;; 17:23:38.006 K34461: Rx as number <NaN>
;; 17:23:38.006 K34461: Tx <TEMP:TRAN:THER:POW:LIM:STAT?>
;; 17:23:48.006 K34461: Rx Timeout

Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 11, 2020, 04:04:16 pm
My 34465A has the option of a 2.252 kohm thermistor, not 2.25 kohm

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 04:20:41 pm
My 34465A has the option of a 2.252 kohm thermistor, not 2.25 kohm

That was the issue, now it is working.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 11, 2020, 07:16:00 pm
Thanks for the massive amount of work you put into this. :-+
RTD 2W now works on my 34465A which is great news.  8)
But a small bug remains here:
RTD 2W LP does not work. LP is not displayed and the temperature value does not change slightly as it should.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2020, 07:42:53 pm
Thanks for the massive amount of work you put into this. :-+
RTD 2W now works on my 34465A which is great news.  8)
But a small bug remains here:
RTD 2W LP does not work. LP is not displayed and the temperature value does not change slightly as it should.

There is a typo in the settings, the correct is:
#cmdSetup radio RTD_2w_Low-Power Temperature2
:write: abort;*cls;TEMP:TRAN:RTD:POW:LIM:STAT #;init
:read: TEMP:TRAN:RTD:POW:LIM:STAT?
:update: Null_Value
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 12, 2020, 02:40:17 am
My 34465A has the option of a 2.252 kohm thermistor, not 2.25 kohm
There is a typo in the settings, the correct is:
#cmdSetup radio RTD_2w_Low-Power Temperature2
:write: abort;*cls;TEMP:TRAN:RTD:POW:LIM:STAT #;init
:read: TEMP:TRAN:RTD:POW:LIM:STAT?
:update: Null_Value

HKJ,

I did a good hard look at the device file, hopefully I did not miss anything. Remove all features that the 34461A does not have.

I was thinking of changing all of the Mode conf: (resets all settings to default) commands to  func (keeps last settings) and add on the top of each setup a reset to default button using the conf: command. What are your thoughts, good idea?

[attach=1]

Fix1: Corrected 2.252 kohm thermistor
Fix2: Corrected #cmdSetup radio RTD_2w_Low-Power Temperature2 typo.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 07:14:48 am
I was thinking of changing all of the Mode conf: (resets all settings to default) commands to  func (keeps last settings) and add on the top of each setup a reset to default button using the conf: command. What are your thoughts, good idea?

I do have that much of an opinion on it, with the current menus it is very fast to setup the meter either way around.
Maybe change you note to say "3.00 to support all functions" or something similar, because it mostly work on older versions.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on May 12, 2020, 08:00:11 am
Fluke 289 vs. TestController:

Is it possible to log VAC in "Peak" mode, which allows measuring with 100 ms response time instead of the usual 1 sec. periode?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 08:40:45 am
Fluke 289 vs. TestController:

Is it possible to log VAC in "Peak" mode, which allows measuring with 100 ms response time instead of the usual 1 sec. periode?

You can select any mode you wish on the meter.
It only logs the main value and there it will log everything the meter shows. You can use a fast sample rate if you wish.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 12, 2020, 12:35:59 pm
Re: TestController ascii Driver With Kollmorgen AKD2G Servo

I am trying out the new ascii driver with a telnet port 23 connected ascii device.   Below is the debug log from startup with only that one device file checked in "load devices" tab.

After it settled I typed "axis1.vl.fb<enter key>" and after a moment "axis1.il.fb<enter key>.  This sequence gives the below debug log:
Code: [Select]
Starting
;; Start thread for: 192.168.1.162 - Kollmorgen AKD2G Servo
;; Found Kollmorgen AKD2G Servo on 192.168.1.162
axis1.vl.fb
;; AKD2G: Tx <axis1.vl.fb>
axis1.il.fb
;; AKD2G: Tx <axis1.il.fb>

The above log seems to have no Rx results and it seems to echo the sent characters.  In a telnet program each of these queries would return a value, the units, CR with "-->" as a prompt.  Such as the below:

Code: [Select]
Error: [0085] Command was not found.
-->axis1.vl.fb
59.372 [rpm]
-->axis1.il.fb
-0.002 [Arms]
-->

The "Error: [0085] Command was not found." came after Putty telnet first connects and I hit the <enter key> before anything else to get that cleared up.  Not sure why the initial connection confuses the device but a simple <enter key> gets it going.

Attached is the full device file I used.

Suggestions for next steps to start getting replies/working communication?
Title: Re: Program that can log from many multimeters.
Post by: PushUp on May 12, 2020, 01:15:18 pm
You can select any mode you wish on the meter.
It only logs the main value and there it will log everything the meter shows. You can use a fast sample rate if you wish.

I tried to measure/log the "Peak" with 100 ms response time from +332,7 VAC till -332,4 VAC as shown in the display, but only got the average in TestController... - what do I miss?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 01:22:03 pm
I tried to measure/log the "Peak" with 100 ms response time from +332,7 VAC till -332,4 VAC as shown in the display, but only got the average in TestController... - what do I miss?

The +/- peak is not the main meter reading, I only read the main value.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 01:31:52 pm
Suggestions for next steps to start getting replies/working communication?

You have to do it indirectly, the software only handles SCPI like commands, the driver will translate these to ascii commands.

This means you have to define SCPI versions of you commands:
#scpiCmd axis1? txrx? axis1.(value)

Then use
axis1? vl.fb
axis1? il.fb

You could also use the txrx? directly from the command line:
txrx? axis1.vl.fb
txrx? axis1.il.fb
But that is for testing and not recommended for as a implementation.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 12, 2020, 04:09:44 pm
V0.66 is up

This version includes a new driver called "ascii", it is very similar to the Modbus driver with command definition, but this time it is plain ascii commands that is defined. This will hopefully make it possible to connect to a lot of non-scpi equipment.

HKJ,

I am using the new ascii driver to create a device driver for FY6800 Signal Generator and are having issues sending integers greater then 999999 it converts it to scientific notation and the Signal Generator is expecting an integer.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 04:40:35 pm
I am using the new ascii driver to create a device driver for FY6800 Signal Generator and are having issues sending integers greater then 999999 it converts it to scientific notation and the Signal Generator is expecting an integer.

You are supposed to be able to do something like (int(value)), but the int function has a problem in the current version (It will be fixed in next version).
Another way is to use (formatDouble(value,1,20,0,0))
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 12, 2020, 06:25:03 pm
I am using the new ascii driver to create a device driver for FY6800 Signal Generator and are having issues sending integers greater then 999999 it converts it to scientific notation and the Signal Generator is expecting an integer.

You are supposed to be able to do something like (int(value)), but the int function has a problem in the current version (It will be fixed in next version).
Another way is to use (formatDouble(value,1,20,0,0))

My mistake I should have said float, the value is 0.000001 to 60000000.000000 hz
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2020, 06:36:35 pm
You are supposed to be able to do something like (int(value)), but the int function has a problem in the current version (It will be fixed in next version).
Another way is to use (formatDouble(value,1,20,0,0))

My mistake I should have said float, the value is 0.000001 to 60000000.000000 hz

The specification for formatDouble is formatDouble(value,minIntegerDigits,maxIntegerDigits,minFractionalDigits,maxFractionalDigits), i.e. you can do: formatDouble(value,1,10,0,6)
You need the bracket around everything to active the parser.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on May 13, 2020, 05:25:56 am
The +/- peak is not the main meter reading, I only read the main value.

Oh, I see. In this case the Keysight U1273A is superior to the Fluke 289, which has separated functions for +Peak and -Peak by just switching manually between them... - thank you for the info, HKJ!
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 13, 2020, 12:39:39 pm
The specification for formatDouble is formatDouble(value,minIntegerDigits,maxIntegerDigits,minFractionalDigits,maxFractionalDigits), i.e. you can do: formatDouble(value,1,10,0,6)
You need the bracket around everything to active the parser.

HKJ,

Thanks for the above clarification, the next issue I am having is when trying to divide the returned value by 1000. It is not work the same as it did in the modbus driver
Code: [Select]
#scpiCmd RMA? txrx? RMA /1000
Never mind, I was able to figure it out using :readmath:
Code: [Select]
#cmdSetup number P-P_Amplitude Output_1
:read: RMA?
:readmath: ((value)/10000)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 13, 2020, 01:00:25 pm
Thanks for the above clarification, the next issue I am having is when trying to divide the returned value by 1000. It is not work the same as it did in the modbus driver

Never mind, I was able to figure it out using :readmath:

Exactly, I did not add shortcuts for multiplying or dividing in this driver. I assumed when using ascii most devices would return non-scaled values.


And just a note: You do not need  brackets around (value), but it do not do any harm. I uses two strategies for handling the parameters for readmath:
Any (value) string it directly replaced with the received value. If there are a () pair left the parser/calculator will handle it with the received value set up as a variable called value.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 14, 2020, 12:23:28 am
Exactly, I did not add shortcuts for multiplying or dividing in this driver. I assumed when using ascii most devices would return non-scaled values.

And just a note: You do not need  brackets around (value), but it do not do any harm. I uses two strategies for handling the parameters for readmath:
Any (value) string it directly replaced with the received value. If there are a () pair left the parser/calculator will handle it with the received value set up as a variable called value.

HKJ,

I was able to do all of the scaling needed in the #cmdSetup but now I can not figure out how the do it with #askValuesMathFormat. I am able to get it to work if only logging one value but if I do more then one I can not get it to work.

Thanks
Mike

Code: [Select]
; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value Frequency1 Hz SI
#value Amplitude1 V SI
#value Offset1 V SI
#value DutyCycle1 % D1
#value Frequency2 Hz SI
#value Amplitude2 V SI
#value Offset2 V SI
#value DutyCycle2 % D1

; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues RMF?;RMA?;RMO?;RMD?;RFF?;RFA?;RFO?;RFD?
#askValuesMathFormat
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2020, 04:15:23 am
I was able to do all of the scaling needed in the #cmdSetup but now I can not figure out how the do it with #askValuesMathFormat. I am able to get it to work if only logging one value but if I do more then one I can not get it to work.

Why do you need a #askValuesMathFormat if you already have scaled the values correctly? mathFormat is not easy to use when you have many values, because you need to process everything in one expression.
If you need to get rid of units use #askValueReadFormat.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 14, 2020, 06:13:59 am
Why do you need a #askValuesMathFormat if you already have scaled the values correctly? mathFormat is not easy to use when you have many values, because you need to process everything in one expression.
If you need to get rid of units use #askValueReadFormat.

HKJ,

The readmath does not work correctly under #scpiCmd see below I get NaN
Code: [Select]
#scpiCmd RMA? txrx? RMA
:readmath: (value/10000)
;; 01:59:28.445 FY6800: Tx <RMF?>
;; 01:59:28.445 FY6800: Tx <txrx? RMF>
;; 01:59:28.454 COM5: Tx: <RMF.> 52 4D 46 0A
;; 01:59:28.454 COM5: Rx: <00010000.000000> 30 30 30 31 30 30 30 30 2E 30 30 30 30 30 30
;; 01:59:28.454 FY6800: Rx <00010000.000000>
;; 01:59:28.454 FY6800: Tx <RMA?>
;; 01:59:28.454 FY6800: Tx <txrx? RMA>
;; 01:59:28.459 COM5: Tx: <RMA.> 52 4D 41 0A
;; 01:59:28.459 COM5: Rx: <50000> 35 30 30 30 30
;; 01:59:28.459 FY6800: Rx <=5>
;; 01:59:28.459 FY6800: Tx <RMO?>
;; 01:59:28.469 FY6800: Tx <txrx? RMO>
;; 01:59:28.477 COM5: Tx: <RMO.> 52 4D 4F 0A
;; 01:59:28.482 COM5: Rx: <0> 30
;; 01:59:28.488 FY6800: Rx <0>
;; 01:59:28.494 FY6800: Tx <RMD?>
;; 01:59:28.500 FY6800: Tx <txrx? RMD>
;; 01:59:28.509 COM5: Tx: <RMD.> 52 4D 44 0A
;; 01:59:28.515 COM5: Rx: <50000> 35 30 30 30 30
;; 01:59:28.520 FY6800: Rx <50000>
;; 01:59:28.526 FY6800: Tx <RFF?>
;; 01:59:28.533 FY6800: Tx <txrx? RFF>
;; 01:59:28.541 COM5: Tx: <RFF.> 52 46 46 0A
;; 01:59:28.547 COM5: Rx: <00010000.000000> 30 30 30 31 30 30 30 30 2E 30 30 30 30 30 30
;; 01:59:28.553 FY6800: Rx <00010000.000000>
;; 01:59:28.559 FY6800: Tx <RFA?>
;; 01:59:28.565 FY6800: Tx <txrx? RFA>
;; 01:59:28.573 COM5: Tx: <RFA.> 52 46 41 0A
;; 01:59:28.580 COM5: Rx: <50000> 35 30 30 30 30
;; 01:59:28.586 FY6800: Rx <50000>
;; 01:59:28.593 FY6800: Tx <RFO?>
;; 01:59:28.599 FY6800: Tx <txrx? RFO>
;; 01:59:28.608 COM5: Tx: <RFO.> 52 46 4F 0A
;; 01:59:28.615 COM5: Rx: <0> 30
;; 01:59:28.621 FY6800: Rx <0>
;; 01:59:28.628 FY6800: Tx <RFD?>
;; 01:59:28.634 FY6800: Tx <txrx? RFD>
;; 01:59:28.642 COM5: Tx: <RFD.> 52 46 44 0A
;; 01:59:28.648 COM5: Rx: <50000> 35 30 30 30 30
;; 01:59:28.655 FY6800: Rx <50000>
;; 01:59:28.661 FY6800: Rx as numbers <10000.0 NaN 0.0 50000.0 10000.0 50000.0 0.0 50000.0>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2020, 06:52:31 am
The readmath does not work correctly under #scpiCmd see below I get NaN

I can see the problem, it was a typo in my code. You can get a new jar file from the usual link.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 14, 2020, 12:42:40 pm
The readmath does not work correctly under #scpiCmd see below I get NaN
I can see the problem, it was a typo in my code. You can get a new jar file from the usual link.

HKJ,

I hate to be a pain, but now the value is only be returned as whole number.

Code: [Select]
#scpiCmd RMA? txrx? RMA
:readmath: (formatDouble(value/10000,1,2,4,4))

;; 08:38:54.861 FY6800: Tx <RMA?>
;; 08:38:54.865 FY6800: Tx <txrx? RMA>
;; 08:38:54.869 COM5: Tx: <RMA.> 52 4D 41 0A
;; 08:38:54.869 COM5: Rx: <121234> 31 32 31 32 33 34
;; 08:38:54.871 FY6800: Rx <12.0000>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2020, 12:50:47 pm
I hate to be a pain, but now the value is only be returned as whole number.

Code: [Select]
#scpiCmd RMA? txrx? RMA
:readmath: (formatDouble(value/10000,1,2,4,4))

That is the correct result  :)
It is because you are dividing a integer with a integer, then the result will be a integer. It is very easy to fix, instead of dividing by 10000 you divide by 10000.0
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 14, 2020, 01:07:19 pm
I hate to be a pain, but now the value is only be returned as whole number.

Code: [Select]
#scpiCmd RMA? txrx? RMA
:readmath: (formatDouble(value/10000,1,2,4,4))

That is the correct result  :)
It is because you are dividing a integer with a integer, then the result will be a integer. It is very easy to fix, instead of dividing by 10000 you divide by 10000.0

HKJ,

Tried but no luck. I even tried *0.0001

Thanks
MikeLud
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2020, 01:15:09 pm
Tried but no luck. I even tried *0.0001

Ok, I found the problem. For now you can do:
double(value)/10000
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 14, 2020, 01:21:47 pm
Tried but no luck. I even tried *0.0001

Ok, I found the problem. For now you can do:
double(value)/10000

HKJ,

Works like a charm, thanks.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2020, 01:31:14 pm
Works like a charm, thanks.

From next release both methods will work.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 16, 2020, 03:23:37 pm
V0.68 is up

It is mostly bug fixes, that includes the bugs discussed above and a some others.
I have added a indication to show when logging to disk.
And the newest version of the Keysight Bench multimeter definition is included.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 16, 2020, 03:43:54 pm
Not sure if this a bug, or intentional?

On the Load Devices screen, at the bottom where the list of devices is populated, the list is replicated twice, so after you reach Voltcraft, it begins again at Agilant.

It does this on both Mac and Windows 10.

However, if I just press return into the Filter box, the list reduces to just one complete set.

[Screenshot from Windows.]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 16, 2020, 03:50:38 pm
Not sure if this a bug, or intentional?

Thanks.
That is a bug, it looks like I fill the combobox twice, without clearing it in between. It will not harm anything and it will be fixed in next release.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 16, 2020, 03:52:10 pm
Thanks.
That is a bug, it looks like I fill the combobox twice, without clearing it in between. It will not harm anything and it will be fixed in next release.

Thank you, thought it was just me going mad in lockdown :)
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 12:43:27 am
HKj,

How would I write the below readmath expression.

Code: [Select]
#scpiCmd C1:RDO? txrx? RMO
#if value>10000
:readmath: double(value-4294967296)/1000
#else
:readmath: double(value)/1000
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 12:56:02 am
HKJ,

Attached are updated device files. Also I am almost finished with a device that will support FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-50M, and FeelElec FY6900-60M.

[attach=1]
[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2020, 03:36:10 am
How would I write the below readmath expression.

Code: [Select]
#scpiCmd C1:RDO? txrx? RMO
#if value>10000
:readmath: double(value-4294967296)/1000
#else
:readmath: double(value)/1000

:readmath: value>10000?double(value-4294967296)/1000:double(value)/1000

or

:readmath: double(value>10000?value-4294967296:value)/1000



HKJ,

Attached are updated device files. Also I am almost finished with a device that will support FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-50M, and FeelElec FY6900-60M.

I will include the updates in next release and look forward to the FeelElec.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 04:03:41 am
How would I write the below readmath expression.

Code: [Select]
#scpiCmd C1:RDO? txrx? RMO
#if value>10000
:readmath: double(value-4294967296)/1000
#else
:readmath: double(value)/1000
:readmath: value>10000?double(value-4294967296)/1000:double(value)/1000
or
:readmath: double(value>10000?value-4294967296:value)/1000


HKJ,

Thanks, I also figured it out using the  below code, i know it has unnecessary () but it worked
Code: [Select]
:readmath: ((value>10000)?"double(value-4294967296)/1000":"double(value)/1000")
Below is what I am going to use, it is much cleaner
Code: [Select]
:readmath: double(value>10000?value-4294967296:value)/1000
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2020, 04:25:27 am
Thanks, I also figured it out using the  below code, i know it has unnecessary () but it worked
Code: [Select]
:readmath: ((value>10000)?"double(value-4294967296)/1000":"double(value)/1000")

I am a bit surprised it worked, due to the quotes.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 04:28:42 am
HKJ,

Attached is a device file that supports FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-50M, and FeelElec FY6900-60M. I tested only the FeelElec FY6800-60M but should work on all the other models.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2020, 05:25:10 am
Attached is a device file that supports FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-50M, and FeelElec FY6900-60M. I tested only the FeelElec FY6800-60M but should work on all the other models.

A few comments:
Try to support the #verifyDevice command, it will prevent selecting the wrong device.
Handles are best without a - in the name, because they are used as variables names also. The easiest way is to drop the "-20M" etc. from the handle.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 01:45:56 pm
Attached is a device file that supports FeelElec FY6600-20M, FeelElec FY6600-30M, FeelElec FY6600-50M, FeelElec FY6600-60M, FeelElec FY6800-20M, FeelElec FY6800-30M, FeelElec FY6800-50M, FeelElec FY6800-60M, FeelElec FY6900-20M, FeelElec FY6900-30M, FeelElec FY6900-50M, and FeelElec FY6900-60M. I tested only the FeelElec FY6800-60M but should work on all the other models.

A few comments:
Try to support the #verifyDevice command, it will prevent selecting the wrong device.
Handles are best without a - in the name, because they are used as variables names also. The easiest way is to drop the "-20M" etc. from the handle.

HKJ,

Changes made, added #verifyDevice and removed -xx from handles.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2020, 01:51:46 pm

Changes maded, added #verifyDevice and removed -xx from handles.


Thanks, it will be included in the next update.

I look at bit on the datasheets for them and it looks like the 6900 series has slightly higher output voltage.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 17, 2020, 02:41:36 pm
Thanks, it will be included in the next update.

I look at bit on the datasheets for them and it looks like the 6900 series has slightly higher output voltage.

HKJ,

Adjusted Max Vpp also adjusted Min/Max Offset.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2020, 05:41:45 pm
Adjusted Max Vpp also adjusted Min/Max Offset.

I have included it to next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 18, 2020, 01:59:13 pm
V 0.69 is up.

This includes FeelElec, Riden, Siglent from MikeLud
The calculator have got two more formats to select (Integer & String).
The first user documentation page is ready, it is for the Commands page. Pressing F1 on the command page will load a browser with it. There is also a link from the intro page to it.

If more explanation is needed for some parts of the page, please ask (It is not supposed to cover scripting or calculator stuff).
Title: Re: Program that can log from many multimeters.
Post by: gby on May 19, 2020, 02:05:24 pm
Device file for Sorenson/Ametek XG 850 family of 850 W power supplies.  There is also the nearly identical XG 1500 series 1500 W supplies.  Each of these series have 12 different Voltage, Amperage combinations.  So, if the device file supported all 24 variations via #metadef it would add 24 entries to the selections drop down.  24 entries would just make that list a bunch longer and tedious to scroll through.  So, I made a device file for the one version I have, included info in the file on the others, and via #metadef supported just one other so that another user would have an example to follow if they had one of the others in this series.

Ametek XG 600-1.4 and family device file attached for anyone to use.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 19, 2020, 02:21:08 pm
Device file for Sorenson/Ametek XG 850 family of 850 W power supplies.  There is also the nearly identical XG 1500 series 1500 W supplies.  Each of these series have 12 different Voltage, Amperage combinations.  So, if the device file supported all 24 variations via #metadef it would add 24 entries to the selections drop down.  24 entries would just make that list a bunch longer and tedious to scroll through.  So, I made a device file for the one version I have, included info in the file on the others, and via #metadef supported just one other so that another user would have an example to follow if they had one of the others in this series.

Thanks, this will be included in the next release.
There is no reason to worry about a long list in the combobox, just use the filter function to limit it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 19, 2020, 03:02:17 pm
The Keysight 34465A is capable of measuring its internal temperature through
SYST:TEMP? which works nicely on the command line. Since Keysight344xxA.txt has become quite complex, I do not feel up to the task of modifying it without messing something else up.  :scared:
Maybe you or someone else would like to include the internal temperature sensor some day.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 19, 2020, 03:09:22 pm
The Keysight 34465A is capable of measuring its internal temperature through
SYST:TEMP? which works nicely on the command line. Since Keysight344xxA.txt has become quite complex, I do not feel up to the task of modifying it without messing something else up.  :scared:
Maybe you or someone else would like to include the internal temperature sensor some day.

It could be shown in the setup menu, but it would not be a good idea to include it in the logging.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 19, 2020, 03:33:15 pm
Device file for Sorenson/Ametek XG 850 family of 850 W power supplies.

If you want to experiment, try defining the datatype of on/off columns as:
digital(on)

I.e.
#value Main_On - digital(on)
#value Aux_On - digital(on)

Note: I have not tested that the parsing works.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 19, 2020, 06:52:41 pm
The Keysight 34465A is capable of measuring its internal temperature through
SYST:TEMP? which works nicely on the command line. Since Keysight344xxA.txt has become quite complex, I do not feel up to the task of modifying it without messing something else up.  :scared:
Maybe you or someone else would like to include the internal temperature sensor some day.

Messtechniker

I added system temperature to the bottom of each setup page please test.

[attachimg=1]
[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 19, 2020, 07:18:23 pm
Messtechniker

I added system temperature to the bottom of each setup page please test.

It works in a way, but adding this line will improve it significantly:
:readmath: formatDouble(value,1,3,1,1)

Without that it do do something like: 3.234E+1

I will include it.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 19, 2020, 07:30:47 pm
It works in a way, but adding this line will improve it significantly:
:readmath: formatDouble(value,1,3,1,1)

Without that it do do something like: 3.234E+1

I will include it.

HKJ,

Readmath added.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 20, 2020, 09:11:38 am
Delighted  :-+ System temp now works. Very useful. 8)
Title: Re: Program that can log from many multimeters.
Post by: Neomys Sapiens on May 21, 2020, 12:32:53 am
It really looks like a fine piece of SW, but that is all it does for me right now...

I have tried to get to terms with the explanations provided, but couldn't.
If I wanted to write such a driver file for a non-SCPI multimeter and taking your 'skeleton file' for start, does this mean that I would have to find, edit and insert all the SCPI commands from some roughly comparable meter first? And then add the 'translation sequences'?
But lacking a SCPI compatible multimeter, this is a bit of a tedious exercise. Can someone point me to a good description of the SCPI command applicable to a DMM? If I select one at random, I might well end up with a manual which is making a positive outcome even less probable.

Basically, I would like to get my Schlumberger 7151 running with it, using a RS-232 connection.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 21, 2020, 04:12:51 am
They way to do it is to make some SCPI equivalent command for your meters commands. Then you define the different functions with these commands.
The only example for non-SCPI at the current time is FeelElecFY6x00-xxM
For a bench DMM start by looking at KeithleyDMM6500 when you have something similar to that working, you can look at Keysight/Siglent definitions, they have a much more advanced configuration.

Title: Re: Program that can log from many multimeters.
Post by: Dwaine on May 21, 2020, 04:55:38 am
Has anyone completed a config file for the Rigol DM3068 meter?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 22, 2020, 09:17:26 am
Has anyone completed a config file for the Rigol DM3068 meter?

I have found my old DM3068 and made a definition for it:
http://lygte-info.dk/pic/Projects/TestController/Rigol%20DM30xx.txt (http://lygte-info.dk/pic/Projects/TestController/Rigol%20DM30xx.txt)

The definition support DM3068, DM3058 & DM3058E (If the *idn? line from DM3058E says DM3058 a small modification must be done, if anybody test, please post the result).

I have used the Rigol command set and that was a bad idea, this command set only have a minimum of commands and do not support all meter functions.
It looks like the best support is by using Agilent command set, but I will not use time to change my device file at the current time.
This definition will also be included with the next update.
Title: Re: Program that can log from many multimeters.
Post by: Grandchuck on May 23, 2020, 05:29:37 pm
Just got this working and found something a bit peculiar.  The region in the attached file marked with arrows is unstable ... seems to be twitching a little.

Great utility BTW.  Thanks for sharing!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 23, 2020, 05:42:22 pm
Just got this working and found something a bit peculiar.  The region in the attached file marked with arrows is unstable ... seems to be twitching a little.

That may happen when logging is active, the chart is based on a subset of the logged data and that subset may wary with each update.
The subset is limited by screen resolution, but there is also a hard limit of 5000 points. Zooming is not affect by the limit.

With all that noise, try making a math channel with a low pass filter, that way you can isolate the low frequency component. Using the high pass filter you can isolate the high frequency part (In both cases it will not be perfect). You can also subtract 10 from the data, this way you will have a more sensible scale.
A math channel can be created before you start logging or after you stop logging, but not while logging.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 02:29:02 pm
V0.70 is up.

It includes the Rigol definition.
I have improved some slowdowns in the UI when using slow devices.
It has a couple more manual pages (Current values, Table, Chart).
I have added a test/demo function, when starting the program with an empty "Load devices" page it will ask:

(http://lygte-info.dk/pic/Projects/TestController/Screens/Demo.png)

Answer Yes and the 3 virtual generators will be loaded and logging started. This means all pages will be enabled and show something.


Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 24, 2020, 05:57:54 pm
HKJ,

It looks like there is a bug when using a device with COM/USB ports in V0.70, when on the Current Values tab you get the below errors

Bryman BM869s
Code: [Select]
;; 13:36:42.551 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:42.561 BM869: Tx <VALUE?>
;; 13:36:42.731 BM869: Rx <-50u>
;; 13:36:42.741 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:42.771 BM869: Tx <VALUE?>
Thread for BM869Exception in thread "Thread-31"
;;-50u
java.lang.NullPointerException
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)       at java.util.ArrayList.rangeCheck(Unknown Source)

        at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)   at java.util.ArrayList.remove(Unknown Source)

        at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:361)    at java.util.Collections$SynchronizedList.remove(Unknown Source)

        at dk.hkj.devices.DeviceUsbHidDMM$TranslatingInterface.read(DeviceUsbHidDMM.java:132)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;; 13:36:42.981 BM869: Tx <VALUE?>
;; 13:36:43.131 BM869: Rx <-50u>
;; 13:36:43.131 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:43.191 BM869: Tx <VALUE?>
;; 13:36:43.331 BM869: Rx <-50u>
;; 13:36:43.331 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:43.401 BM869: Tx <VALUE?>
;; 13:36:43.531 BM869: Rx <-50u>
;; 13:36:43.541 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:43.611 BM869: Tx <VALUE?>
;; 13:36:43.721 BM869: Rx <-50u>
;; 13:36:43.721 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:43.821 BM869: Tx <VALUE?>
;; 13:36:43.921 BM869: Rx <-50u>
;; 13:36:43.921 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:44.031 BM869: Tx <VALUE?>
;; 13:36:44.128 BM869: Rx <-50u>
;; 13:36:44.128 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:44.237 BM869: Tx <VALUE?>
;; 13:36:44.316 BM869: Rx <-50u>
;; 13:36:44.316 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:44.440 BM869: Tx <VALUE?>
;; 13:36:44.524 BM869: Rx <-50u>
;; 13:36:44.524 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:44.643 BM869: Tx <VALUE?>
;; 13:36:44.704 BM869: Rx <-50u>
;; 13:36:44.704 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:44.852 BM869: Tx <VALUE?>
;; 13:36:44.902 BM869: Rx <-50u>
;; 13:36:44.902 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:45.068 BM869: Tx <VALUE?>
;; 13:36:45.296 BM869: Rx <-50u>
;; 13:36:45.296 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:45.481 BM869: Tx <VALUE?>
;; 13:36:45.690 BM869: Rx <-50u>
;; 13:36:45.690 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:45.900 BM869: Tx <VALUE?>
;; 13:36:46.076 BM869: Rx <-50u>
;; 13:36:46.076 BM869: Rx as numbers <-4.9999999999999996E-5>
;; 13:36:46.106 BM869: Tx <VALUE?>
;;-50uException in thread "Thread-47"
java.lang.NullPointerException
Thread for BM869        at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)

        at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0  at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:361)

        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.remove(Unknown Source)
        at java.util.Collections$SynchronizedList.remove(Unknown Source)
        at dk.hkj.devices.DeviceUsbHidDMM$TranslatingInterface.read(DeviceUsbHidDMM.java:132)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;; 13:36:46.313 BM869: Tx <VALUE?>
;; 13:36:46.476 BM869: Rx <-50u>
;; 13:36:46.478 BM869: Rx as numbers <-4.9999999999999996E-5>


FeelElec FY6800-60M
Code: [Select]
;; 13:44:25.424 FY6800: Rx <50.0>
;; 13:44:25.424 FY6800: Tx <C2:RDF?>
;; 13:44:25.424 FY6800: Tx <txrx? RFF>
;; 13:44:25.426 COM5: Tx: <RFF.> 52 46 46 0A
;; 13:44:25.428 COM5: Rx: <00010000.000000> 30 30 30 31 30 30 30 30 2E 30 30 30 30 30 30
Thread for FY6800Exception in thread "Thread-24"
java.lang.NullPointerException
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0  at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)

        at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)   at java.util.ArrayList.rangeCheck(Unknown Source)

        at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:361)    at java.util.ArrayList.remove(Unknown Source)

        at java.util.Collections$SynchronizedList.remove(Unknown Source)
        at dk.hkj.comm.TranslatingInterface.read(TranslatingInterface.java:30)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:38)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;;00010000.000000
;; 13:44:25.570 FY6800: Tx <C1:RDF?>
;; 13:44:25.570 FY6800: Tx <txrx? RMF>
;; 13:44:25.573 COM5: Tx: <RMF.> 52 4D 46 0A
;; 13:44:25.574 COM5: Rx: <00010000.000000> 30 30 30 31 30 30 30 30 2E 30 30 30 30 30 30
;; 13:44:25.575 FY6800: Rx <00010000.000000>
;; 13:44:25.575 FY6800: Tx <C1:RDA?>
;; 13:44:25.575 FY6800: Tx <txrx? RMA>
;; 13:44:25.577 COM5: Tx: <RMA.> 52 4D 41 0A
;; 13:44:25.578 COM5: Rx: <50000> 35 30 30 30 30


Fluke 289
Code: [Select]
;; 13:55:09.243 F289: Rx <0.0000E0>
;; 13:55:09.243 F289: Rx as numbers <0.0>
;; 13:55:09.433 F289: Tx <VALUE?>
;; 13:55:09.436 COM4: Tx: <QM.> 51 4D 0D
;; 13:55:09.455 COM4: Rx: <0> 30
;; 13:55:09.455 COM4: Rx: <0.0000E0,VDC,NORMAL,NONE> 30 2E 30 30 30 30 45 30 2C 56 44 43 2C 4E 4F 52 4D 41 4C 2C 4E 4F 4E 45
Thread for F289
Exception in thread "Thread-33" ;;0.0000E0
java.lang.NullPointerException
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)
        at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)   at java.util.ArrayList.rangeCheck(Unknown Source)

        at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:361)    at java.util.ArrayList.remove(Unknown Source)

        at java.util.Collections$SynchronizedList.remove(Unknown Source)
        at dk.hkj.comm.TranslatingInterface.read(TranslatingInterface.java:30)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;; 13:55:09.634 F289: Tx <VALUE?>
;; 13:55:09.637 COM4: Tx: <QM.> 51 4D 0D
;; 13:55:09.646 COM4: Rx: <0> 30
;; 13:55:09.646 COM4: Rx: <0.0000E0,VDC,NORMAL,NONE> 30 2E 30 30 30 30 45 30 2C 56 44 43 2C 4E 4F 52 4D 41 4C 2C 4E 4F 4E 45
;; 13:55:09.646 F289: Rx <0.0000E0>
;; 13:55:09.648 F289: Rx as numbers <0.0>
;; 13:55:09.835 F289: Tx <VALUE?>
;; 13:55:09.837 COM4: Tx: <QM.> 51 4D 0D
;; 13:55:09.855 COM4: Rx: <0> 30
;; 13:55:09.856 COM4: Rx: <0.0000E0,VDC,NORMAL,NONE> 30 2E 30 30 30 30 45 30 2C 56 44 43 2C 4E 4F 52 4D 41 4C 2C 4E 4F 4E 45


Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 06:22:48 pm
It looks like there is a bug when using a device with COM/USB ports in V0.70, when on the Current Values tab you get the below errors

That is the part I have worked on to avoid slow downs, but it looks like I am missing some locks (I do not see the problems on my machine).

I have modified the code slight here:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 24, 2020, 07:00:14 pm
It looks like there is a bug when using a device with COM/USB ports in V0.70, when on the Current Values tab you get the below errors

That is the part I have worked on to avoid slow downs, but it looks like I am missing some locks (I do not see the problems on my machine).

I have modified the code slight here:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

HKJ,

Still looks like there is an issue. With Bryman BM869s only enabled I get the below errors. With Fluke 289 only enabled it works fine. If I have both the Bryman BM869s and Fluke 289 enabled it work fine.

Bryman BM869s
Code: [Select]
;; 14:44:03.719 BM869: Tx <VALUE?>
;; 14:44:03.911 BM869: Rx <24.4>
;; 14:44:03.911 BM869: Rx as numbers <24.4>
;; 14:44:03.921 BM869: Tx <VALUE?>
Thread for BM869
Exception in thread "Thread-60" ;;24.4java.lang.NullPointerException
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

        at java.util.ArrayList.rangeCheck(Unknown Source)       at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)

        at java.util.ArrayList.remove(Unknown Source)   at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)

        at java.util.Collections$SynchronizedList.remove(Unknown Source)        at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:376)

        at dk.hkj.devices.DeviceUsbHidDMM$TranslatingInterface.read(DeviceUsbHidDMM.java:132)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;; 14:44:04.123 BM869: Tx <VALUE?>
;; 14:44:04.301 BM869: Rx <24.4>
;; 14:44:04.301 BM869: Rx as numbers <24.4>
;; 14:44:04.320 BM869: Tx <VALUE?>
;; 14:44:04.501 BM869: Rx <24.4>
;; 14:44:04.501 BM869: Rx as numbers <24.4>
;; 14:44:04.520 BM869: Tx <VALUE?>
;; 14:44:04.692 BM869: Rx <24.4>
;; 14:44:04.692 BM869: Rx as numbers <24.4>
;; 14:44:04.721 BM869: Tx <VALUE?>
;; 14:44:04.891 BM869: Rx <24.4>
;; 14:44:04.891 BM869: Rx as numbers <24.4>
;; 14:44:04.922 BM869: Tx <VALUE?>
;;24.4Exception in thread "Thread-65" java.lang.NullPointerException
        at dk.hkj.main.PaneCurrentValues.updateDirect(PaneCurrentValues.java:396)

Thread for BM869
        at dk.hkj.main.PaneCurrentValues.access$8(PaneCurrentValues.java:392)java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

        at dk.hkj.main.PaneCurrentValues$AsyncUpdate.run(PaneCurrentValues.java:376)    at java.util.ArrayList.rangeCheck(Unknown Source)

        at java.util.ArrayList.remove(Unknown Source)
        at java.util.Collections$SynchronizedList.remove(Unknown Source)
        at dk.hkj.devices.DeviceUsbHidDMM$TranslatingInterface.read(DeviceUsbHidDMM.java:132)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:103)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:150)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:187)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:229)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:319)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:327)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1007)
;; 14:44:05.124 BM869: Tx <VALUE?>
;; 14:44:05.282 BM869: Rx <24.4>
;; 14:44:05.282 BM869: Rx as numbers <24.4>
;; 14:44:05.323 BM869: Tx <VALUE?>
;; 14:44:05.482 BM869: Rx <24.4>
;; 14:44:05.482 BM869: Rx as numbers <24.4>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 07:09:48 pm

Still looks like there is an issue. With Bryman BM869s only enabled I get the below errors. With Fluke 289 only enabled it works fine. If I have both the

I have added a lock to the Brymen, same link as before.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 24, 2020, 08:03:54 pm

Still looks like there is an issue. With Bryman BM869s only enabled I get the below errors. With Fluke 289 only enabled it works fine. If I have both the

I have added a lock to the Brymen, same link as before.

HKJ,

It looks to be fixed, back to normal. Also are you going to add the Keysight344xxA device file that has system temperature to V0.70.

Thanks,
MikeLud

It works in a way, but adding this line will improve it significantly:
:readmath: formatDouble(value,1,3,1,1)

Without that it do do something like: 3.234E+1

I will include it.

HKJ,

Readmath added.

(Attachment Link)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 08:12:38 pm
It looks to be fixed, back to normal. Also are you going to add the Keysight344xxA device file that has system temperature to V0.70.

Thanks for testing.

I have updated the .zip file and added the Keysight with temperature to it, i.e. it is V0.72 now.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 24, 2020, 09:19:59 pm
Thanks for testing.

I have updated the .zip file and added the Keysight with temperature to it, i.e. it is V0.72 now.

HKJ,

The .zip file is still V0.70.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 09:34:32 pm
The .zip file is still V0.70.

I hope it is updated now.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 24, 2020, 09:44:59 pm
Still .70

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 24, 2020, 10:14:35 pm
Still .70

(Attachment Link)

HKJ,

Same here, still V0.70
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 24, 2020, 10:32:29 pm
I get V0.72 when I download.

Sometimes the webserver is slow to publish when I upload a changed file, it may be due to some caching.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 25, 2020, 11:36:48 am
Now seeing 0.72  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 25, 2020, 12:33:47 pm
Now seeing 0.72  :-+

And the last upload I did was when I wrote "I hope".
Title: Re: Program that can log from many multimeters.
Post by: Grandchuck on May 25, 2020, 04:13:19 pm
Good idea about the LPF ... but not able to get it working.  No values are being recorded.  I have tried it with Source formula cleared (blank) and also without the Math: portion and also with (sum*(samples-1)+lastValue/samples entered under Source formula.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 25, 2020, 04:55:58 pm
Good idea about the LPF ... but not able to get it working.  No values are being recorded.  I have tried it with Source formula cleared (blank) and also without the Math: portion and also with (sum*(samples-1)+lastValue/samples entered under Source formula.

You use the name of the value you want filtered as you source formula: K34465.VoltageDC
You can, of course, do much more than that, but for just filtering a value you only need that name.

I will hopefully be easier when I publish the documentation for that page.
Title: Re: Program that can log from many multimeters.
Post by: Grandchuck on May 25, 2020, 05:34:31 pm
Thanks!
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 26, 2020, 07:35:17 am
Any ideas about doing X/Y graphing?
Could be useful in connection with temperature coefficient
measurements on resistors among others.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 07:52:09 am
Any ideas about doing X/Y graphing?
Could be useful in connection with temperature coefficient
measurements on resistors among others.

I have been thinking about it, but not done anything yet.

I will probably have to disable the cursor in X/Y mode.
I may also have to increase the maximum number of points to plot in X/Y mode and this may affect update speed when working with large datasets.

The general issue is that the data on the Y axis will not necessary be a steady increasing value, but may jump around, that is the reason for the above two points.
Title: Re: Program that can log from many multimeters.
Post by: tautech on May 26, 2020, 08:28:45 am
Can someone do a description for SDL1000X loads because I wouldn't know where to start ?  :palm:
https://int.siglent.com/upload_file/user/SDL1000X/SDL1000X_Programming_Guide_V1.0.pdf
TIA
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 09:10:34 am
Can someone do a description for SDL1000X loads because I wouldn't know where to start ?  :palm:
https://int.siglent.com/upload_file/user/SDL1000X/SDL1000X_Programming_Guide_V1.0.pdf

I can get your started. Connect the load to the computer, the select the "Load devices" page and right click on the combo box. Select "Create new SCPI..."
Run through the four buttons on that page, if you uses a network connection you need to fill in the IP address.

Then add to the new device file:

#value Voltage V D3
#value Current A D3

#askValues MEAS:VOLT?;MEAS:CURR?


This ought to get your two columns with values from the load.
Next is setting up the load in some mode, we can talk about that if the above works.

Title: Re: Program that can log from many multimeters.
Post by: tautech on May 26, 2020, 09:38:04 am
Can someone do a description for SDL1000X loads because I wouldn't know where to start ?  :palm:
https://int.siglent.com/upload_file/user/SDL1000X/SDL1000X_Programming_Guide_V1.0.pdf

I can get your started. Connect the load to the computer, the select the "Load devices" page and right click on the combo box. Select "Create new SCPI..."
Run through the four buttons on that page, if you uses a network connection you need to fill in the IP address.

Then add to the new device file:

#value Voltage V D3
#value Current A D3

#askValues MEAS:VOLT?;MEAS:CURR?


This ought to get your two columns with values from the load.
Next is setting up the load in some mode, we can talk about that if the above works.
OK, thanks much but it's getting late here and rainy day forecast tomorrow so maybe a better time for a play.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 01:06:48 pm
V0.73 is up.

I noticed that the last version could have a high cpu load and memory consumption, this is fixed.
I have added Std.Dev. Math types, both a running version and one that calculates for all data.

I have been working on a review of East Tester ET3240 and at the same time I added it to TestController. This definition is rather primitive due to lack of documentation, but can log data. If anybody have some documentation on the "SCPI" protocol I am very interest in it.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 26, 2020, 01:55:02 pm
Can someone do a description for SDL1000X loads because I wouldn't know where to start ?  :palm:
https://int.siglent.com/upload_file/user/SDL1000X/SDL1000X_Programming_Guide_V1.0.pdf

I can get your started. Connect the load to the computer, the select the "Load devices" page and right click on the combo box. Select "Create new SCPI..."
Run through the four buttons on that page, if you uses a network connection you need to fill in the IP address.

Then add to the new device file:

#value Voltage V D3
#value Current A D3

#askValues MEAS:VOLT?;MEAS:CURR?


This ought to get your two columns with values from the load.
Next is setting up the load in some mode, we can talk about that if the above works.

Worked for me , thank you, I was wondering where to start with this  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 02:13:13 pm
Worked for me , thank you, I was wondering where to start with this  :)

You can add these lines to the file:


#finalCmd :INP 0


#cmdSetup number Current
:read: :CURR?
:write: :CURR
Amps 0 30

#cmdsetup buttonsOn Status
:write: :INP
:read: :INP?
off 0
on 1



There need to many more #cmdSetup entries for a full definition, but it is hard to do without the load to test on.
You may get some inspiration from the Itech/Bk/Maynuo definitions (They are fairly identical).
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 26, 2020, 02:18:00 pm

You can add these lines to the file:


#finalCmd :INP 0


#cmdSetup number Current
:read: :CURR?
:write: :CURR
Amps 0 30

#cmdsetup buttonsOn Status
:write: :INP
:read: :INP?
off 0
on 1

There need to many more #cmdSetup entries for a full definition, but it is hard to do without the load to test on.

Works a treat  :-+ thank you.

I'll work on this and also a Siglent SPD3303X-E, and hopefully make some contribution to the project.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 02:24:24 pm
I'll work on this and also a Siglent SPD3303X-E, and hopefully make some contribution to the project.

Sounds good.
When finished with a definition, check the manufacturer model range, you may be able to support multiple models with only a little extra work by using #meta and #metadef and some edit instruction.
Title: Re: Program that can log from many multimeters.
Post by: tautech on May 26, 2020, 07:36:12 pm
I'll work on this and also a Siglent SPD3303X-E, and hopefully make some contribution to the project.

Sounds good.
When finished with a definition, check the manufacturer model range, you may be able to support multiple models with only a little extra work by using #meta and #metadef and some edit instruction.
With the SPD3303X and X-E, the supplied SW package EasyPower already supports 1mV/mA resolution by default which is only available in the X model UI vs 10mV/mA in the UI of X-E models.
Hope that makes sense.

The SDL1000X range consists of 4 models, X and X-E in 200 and 300W versions and again X versions have the 10x higher resolution of 0.1mV/mA.
We do have a beta version of EasySDL SW made available by a member that provided a link to an ISO of the factory shipped CD however it's never been released publically and apparently is back having rework to fix bugs.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 26, 2020, 07:54:06 pm
With the SPD3303X and X-E, the supplied SW package EasyPower already supports 1mV/mA resolution by default which is only available in the X model UI vs 10mV/mA in the UI of X-E models.
Hope that makes sense.

The SDL1000X range consists of 4 models, X and X-E in 200 and 300W versions and again X versions have the 10x higher resolution of 0.1mV/mA.
We do have a beta version of EasySDL SW made available by a member that provided a link to an ISO of the factory shipped CD however it's never been released publically and apparently is back having rework to fix bugs.

They probably returns different answers to the *IDN? request and that must match for the software to work.
The difference in digits and power can also easily be handled, but is not vital for function.

Title: Re: Program that can log from many multimeters.
Post by: tautech on May 26, 2020, 08:14:24 pm
With the SPD3303X and X-E, the supplied SW package EasyPower already supports 1mV/mA resolution by default which is only available in the X model UI vs 10mV/mA in the UI of X-E models.
Hope that makes sense.

The SDL1000X range consists of 4 models, X and X-E in 200 and 300W versions and again X versions have the 10x higher resolution of 0.1mV/mA.
We do have a beta version of EasySDL SW made available by a member that provided a link to an ISO of the factory shipped CD however it's never been released publically and apparently is back having rework to fix bugs.

They probably returns different answers to the *IDN? request and that must match for the software to work.
Not for SDP3303X and X-E models, both get the same setting resolution when driving them with the EasyPower SW.

For SDL loads I cannot say yet as another member suspects the HW is identical for 200 and 300W models so maybe just maybe the EasySDL SW doesn't distinguish between models either.  :-//
We will know in the near future I suspect.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on May 27, 2020, 01:50:30 am
HKJ,

A new 60V/12A Riden Power Supply (RD6012) was released the other day. Attached is an updated device file that supports both RD6006 and RD6012 (RD6012 not tested).

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 27, 2020, 04:35:30 am
A new 60V/12A Riden Power Supply (RD6012) was released the other day. Attached is an updated device file that supports both RD6006 and RD6012 (RD6012 not tested).

Thanks. The old Riden definition has been replaced, the definition will be included from next update.
Title: Re: Program that can log from many multimeters.
Post by: Grandchuck on May 27, 2020, 02:26:19 pm
Thanks for adding standard deviation ... a nice feature!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 27, 2020, 03:19:47 pm
Thanks for adding standard deviation ... a nice feature!

If you want larger numbers you can multiply with 1e3 or 1e6 in the "Source formula" column, that would scale std.div. a similar amount.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on May 28, 2020, 09:25:55 pm
Is it possible to popup the "values from chart" window a bit more to the left or even in the middle? Any time I click into the chart graph, in order to see the values, the window is outside of my display - see my attachment.

I assume, that you wanted to have a clear view to the graph, however, even in the same session, you need to pick the window to the readable place on the display, when clicking a 2nd time into the graph (after it disappeared), which is a little awkward in my opinion, to drag and drop the window with the mouse again and again. Do I have an option to tweak it?  :-/O

One Linux-Question:
Has anybody managed to use a Brymen with TestController so far?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 29, 2020, 05:15:52 am
Is it possible to popup the "values from chart" window a bit more to the left or even in the middle? Any time I click into the chart graph, in order to see the values, the window is outside of my display - see my attachment.

I assume, that you wanted to have a clear view to the graph, however, even in the same session, you need to pick the window to the readable place on the display, when clicking a 2nd time into the graph (after it disappeared), which is a little awkward in my opinion, to drag and drop the window with the mouse again and again. Do I have an option to tweak it?  :-/O

If you run the window a bit below full screen it will work, but I will adjust the position a bit for the next version.


One Linux-Question:
Has anybody managed to use a Brymen with TestController so far?

I doubt it, the method I uses to read HID is obvious only valid on Windows. I hope to fix it at some time in the future.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on May 29, 2020, 08:21:56 am
Has anybody managed to use a Brymen with TestController so far?

As per HKJ's comment:

I can get a Brymen 869S working with Windows 10, but the communication is patchy with macOS, and the program generally crashes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 29, 2020, 01:22:57 pm
V0.74 is up.

This is minor improvements and one new definition.

Added interface popup to the preview function
Included Riden RD6012
Added new version notification
Added units to the chart and histogram scales
Modified values popup position to better handle the screen edge.

The new version notification, first time it will be visible is when I do the next update:

(http://lygte-info.dk/pic/cpf5/NewVersion.png)

Click on it to get a list of changes.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 31, 2020, 06:54:43 pm
Hi HKJ,

I am trying to work with a device using the ascii driver and I am trying to have the end of line be carriage return line feed.  My device file has:

#port 23
#eol \r\n
#driver ascii

Running TestController in debug mode no matter what I do with the #eol line in the device file debug output shows what I type plus 0x0A at the end which is line feed.  Am I using the syntax/order wrong or does the ascii driver not use the #eol command?  Simply asked, how do I use the ascii driver with end of line being CRLF (\r\n)?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2020, 07:09:08 pm
I am trying to work with a device using the ascii driver and I am trying to have the end of line be carriage return line feed.  My device file has:

#port 23
#eol \r\n
#driver ascii

Running TestController in debug mode no matter what I do with the #eol line in the device file debug output shows what I type plus 0x0A at the end which is line feed.  Am I using the syntax/order wrong or does the ascii driver not use the #eol command?  Simply asked, how do I use the ascii driver with end of line being CRLF (\r\n)?

The Ascii driver is installing its own comm driver and skips setting up the eol sequence.
I plan on releasing a new version tomorrow and it will be fixed there.

You may be able to do a work around by placing ("\r") at the then of you #scpiCmd commands (I have not tested if it works).


Title: Re: Program that can log from many multimeters.
Post by: gby on May 31, 2020, 07:44:43 pm
HKJ, thanks for the quick answer.  I tried adding "\r" in the commands before and I tried again just now adding to #scpiCmd lines.  TestController just adds those characters and does not change \r to 0x0F.  That is, I get 5C 72 0A instead of 0F 0A at end of line.


I will wait for word of next version with #eol working with ascii driver to try again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2020, 08:37:00 pm
HKJ, thanks for the quick answer.  I tried adding "\r" in the commands before and I tried again just now adding to #scpiCmd lines.  TestController just adds those characters and does not change \r to 0x0F.  That is, I get 5C 72 0A instead of 0F 0A at end of line.

Did you put the \r in brackets and quotes?
Title: Re: Program that can log from many multimeters.
Post by: gby on May 31, 2020, 11:28:28 pm
Pardon my ignorance, but I am not sure what "put the \r in brackets and quotes" exactly means.  Below are variations I tried and all of them ended up just sending the added character and none added the \r (0x0D).

#scpiCmd A1:RDKVP? txrx? AXIS1.VL.KP"\r"
#scpiCmd A1:RDKVP? txrx? AXIS1.VL.KP["\r"]
#scpiCmd A1:RDKVP? txrx? AXIS1.VL.KP{"\r"}
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2020, 06:58:46 am
Pardon my ignorance, but I am not sure what "put the \r in brackets and quotes" exactly means.  Below are variations I tried and all of them ended up just sending the added character and none added the \r (0x0D).

The correct one was:

#scpiCmd A1:RDKVP? txrx? AXIS1.VL.KP("\r")

but it did not work anyway.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2020, 07:04:35 am
V0.75 is up

With one significant improvement (y-scale), a lot of small details and some more documentation:
   Chart Y scale can be any column, but only time column will give access to cursor.
   Fixed: Finding formats when loading files did not really work, it works now.
   East Tester ET3240 update, it now includes control of the meter.
   Added functions to support RTD sensors: RTD("PT100",resistance)
   Added functions to support thermocouple sensors: thermocouple("J",voltage)
   Added a solve() function to calculator.
   Added a poly() function to calculator.
   Fixed: #eol can be used on Ascii devices.
   Published documentation for supported function in the calculator. This page also means I have removed some documentation from other pages. https://lygte-info.dk/project/TestControllerFunctions%20UK.html (https://lygte-info.dk/project/TestControllerFunctions%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2020, 07:10:06 am
Just a note:

I was out of screen space on the chart page, this means the y-scale selection is hidden.
Rigth click on the hh:mm:ss checkbox to see it:
(https://lygte-info.dk/pic/Projects/TestController/DocChart/ScalePopup.png)
Title: Re: Program that can log from many multimeters.
Post by: gby on June 01, 2020, 12:13:51 pm
HKJ thanks for the update.  I can confirm:

    Fixed: #eol can be used on Ascii devices.

now works with the ascii driver.  The device I am trying to talk to just never responded to communications before and is now replying with the #eol \r\n setting and the ascii driver.

Now I just need to work through all the details before sharing a device setup file...except now is time for my day job.

Thanks for all your work.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 01:20:40 am
Hi @HKJ, I have a HP 34401A connected to my PC via CH340 RS232 to USB adapter. I tried to connect to TestController with no success.
I have used this setup with Agilent DMM Utility so I know it works.
Any advice?
enut11
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2020, 04:39:16 am
Hi @HKJ, I have a HP 34401A connected to my PC via CH340 RS232 to USB adapter. I tried to connect to TestController with no success.
I have used this setup with Agilent DMM Utility so I know it works.
Any advice?

The first thing to try is starting in debug mode, you can post the output here or send me a mail.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 06:01:28 am
Not sure what you mean by debug mode.
When I enter the 34401A meter info in the Load Devices screen I see this:
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 06:04:56 am
then, when I click Reconnect I hear a beep from the 34401A and 'Rmt' and 'Error' appear on the 34401A display but I do not see my meter in the Commands screen.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2020, 06:12:37 am
Not sure what you mean by debug mode.

There is a "testControllerDebug.bat" file that can be used to start testController.
If you are running on a non-windows system you need to start it with a command line something like this: "java -jar TestController.jar debug"

Then it will list all steps it do to connect.

When using debug mode it is best only to enable the device being debugged, to keep the debug output as simple as possible.


Can it be that the baudrate setting is wrong?
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 06:37:41 am
Thanks, I will try now. Baud rate is always 9600. Also looking at the AgilentHP34401A.txt file
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 06:49:46 am
is this what you need?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2020, 07:39:47 am
is this what you need?

Yes, you only need to copy the text, not the full picture.

It looks like baudrate or parity/bits. You can specify something like "9600O71" instead of just 9600, if that is required.
Note: I do not have a 34401A meter, the definition was made by "maukka".
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 07:42:18 am
This is what my PC reports
How do I get in touch with "maukka"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2020, 08:18:05 am
This is what my PC reports
How do I get in touch with "maukka"

If that is the correct setting, just try using it in the baudrate field on the "load devices" page:
9600E72

I found the manual for the 34401A, the baudrate and parity is a setting in the meter, factory default is 9600E72

maukka is a name here on EEVBlog.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 09:12:46 am
No, it did not work for me. :(
Title: Re: Program that can log from many multimeters.
Post by: maukka on June 02, 2020, 09:44:35 am
Here's how my settings looks like.

(https://i.imgur.com/muPmOli.png)

Please check that the connection is working with a terminal program such as Coolterm (https://freeware.the-meiers.org/).

(https://i.imgur.com/cirf4bT.png)

(https://i.imgur.com/9chwXKJ.png)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2020, 10:36:08 am
It may be a good idea to check the actual settings in the 34401A.
Title: Re: Program that can log from many multimeters.
Post by: maukka on June 02, 2020, 10:42:50 am
My 34401A settings under I/O menu:

Interface: RS-232
Baud rate: 9600 baud
Parity: none 8 bits
Language: SCPI
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 02, 2020, 09:02:29 pm
Hi @maukka
Thanks for responding.

I can talk to my 34401A using Keysight connection expert  and log using Agilent dmm utility so the r3232/usb interface works.

When I start TestController I get an 'ERROR' on the 34401A.

My Com port setting is the same on my PC and TestController but I note that you use different com port in TestController (Com8) compared to your PC (Com3).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2020, 04:29:27 am
I can talk to my 34401A using Keysight connection expert  and log using Agilent dmm utility so the r3232/usb interface works.

Are you sure the Agilent tool uses the PC parameters and not its own?
The best way is to check the baud settings directly on the meter.
Title: Re: Program that can log from many multimeters.
Post by: maukka on June 03, 2020, 04:50:22 am
My Com port setting is the same on my PC and TestController but I note that you use different com port in TestController (Com8) compared to your PC (Com3).

Looks like the program finds the meter just fine automatically even when the com port settings are wrong.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2020, 05:30:25 am
Looks like the program finds the meter just fine automatically even when the com port settings are wrong.

Only happens when you have checked "Scan serial ports" and you devices answers a *idn? on 9600 baud.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 03, 2020, 05:49:15 am
I can talk to my 34401A using Keysight connection expert  and log using Agilent dmm utility so the r3232/usb interface works.

Are you sure the Agilent tool uses the PC parameters and not its own?
The best way is to check the baud settings directly on the meter.

@HKJ, yes my 34401A reports 9600 baud when queried through its front panel menu.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 03, 2020, 05:54:55 am
Given that @maukka can use his 34401A with TestController program and I cannot, there must be a difference in the way my CH340 RS232/USB interface works compared to the Keyspan USB Serial interface.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2020, 06:04:43 am
@HKJ, yes my 34401A reports 9600 baud when queried through its front panel menu.

What about parity and bits?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2020, 06:09:49 am
Given that @maukka can use his 34401A with TestController program and I cannot, there must be a difference in the way my CH340 RS232/USB interface works compared to the Keyspan USB Serial interface.

That may be, but TestController can probably handle it. The only other options I can think of is handshake signals and you can also specify them in the baud rate setting.
At the end of the baud rate string you can add:
D to force DTR high or d to force DTR low.
R to force RTS high or r to force RTS low.

But as long as you receive data from the meter it is not the handshake signals.
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 03, 2020, 06:57:29 am
OK, I can now connect my 34401A to TestController

I copied the Agilent file and made some changes to the TXT file. I think a mistake on my part in not correctly specifying the #idstring line for the meter.

Currently logging and it seems to work. I will test it further.

Meanwhile, how do I re-scale the Y-axis on the Chart window?

BTW, fantastic program @HKJ. Thank you for making it available to Forum members. Much appreciated :)  :-+
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 03, 2020, 07:12:20 am
@HKJ, yes my 34401A reports 9600 baud when queried through its front panel menu.

What about parity and bits?

I have set my meter and PC to 9600 Baud, 8 Data, 1 Stop, No Parity

BTW, I found how to re-scale the chart thanks.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2020, 07:38:07 am
Meanwhile, how do I re-scale the Y-axis on the Chart window?

Depends:
You can always type start and end samples/times in the two boxes.
When using "Time" as axis you can click on the chart to get a cursor, then right click to get a zoom menu.
When using other scales you have to adjust it in "Scales for chart"

X-axis is always adjusted in "Scales for chart"
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 03, 2020, 01:52:24 pm
Just used the xy capability to log tracking of ganged pots.
Shown are the basic measurement circuit and the results for a dual 10k logarithmic pot which is in spec +/- 3 dB and a dual 22k linear pot. The X-scale is actually in dB.
Great fun. :-+

 
Title: Re: Program that can log from many multimeters.
Post by: enut11 on June 03, 2020, 09:33:47 pm
Meanwhile, how do I re-scale the Y-axis on the Chart window?

Depends:
You can always type start and end samples/times in the two boxes.
When using "Time" as axis you can click on the chart to get a cursor, then right click to get a zoom menu.
When using other scales you have to adjust it in "Scales for chart"

X-axis is always adjusted in "Scales for chart"

Thank you for that.

I am now setting up a Keysight 34461A DMM which is connected via USB to my PC (USB 2.0 TMC488 & MTP protocol).
How do I set the port ID for this meter?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 04, 2020, 04:05:04 am
I am now setting up a Keysight 34461A DMM which is connected via USB to my PC (USB 2.0 TMC488 & MTP protocol).
How do I set the port ID for this meter?

At the current time I do not support USB TMC, use a network connection.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 04, 2020, 12:40:29 pm
One thing I plan on implementing is support GPIB interface.
I have looked at AR488: https://github.com/Twilight-Logic/AR488 (https://github.com/Twilight-Logic/AR488)
That is a never implementation of http://egirland.blogspot.com/2014/03/arduino-uno-as-usb-to-gpib-controller.html (http://egirland.blogspot.com/2014/03/arduino-uno-as-usb-to-gpib-controller.html)
That again is based on some GPIB interface (Prologix) that uses ++ as command escape.

The hardware is a Arduino and a GPIB connector or cable. I have lots of Arduinos, but it may take more than two months to get a GPIB cable (Ebay often takes that long).

It will be possible to add multiple GPIB adapters and each adapter can support one or more devices.

The idea is a list of GPIB adapters and then you specify adapter name (here A) and GPIB address:
(http://lygte-info.dk/pic/cpf5/gpib1.png)

Then there is a separate configuration to define all the connected GPIB adapters:
(http://lygte-info.dk/pic/cpf5/gpib2.png)

From next version it will be possible to list multiple interfaces/ports for a device, i.e. it can both have usb, socket and GPIB with the same definition.

It may also be possible to support other adapters, but it will not be customable, I need to have the adapter and do some programming.

NOTE: The above it not available in the current or next couple of version of testController.


Any comments or ideas?
Title: Re: Program that can log from many multimeters.
Post by: Hexley on June 04, 2020, 04:09:23 pm
One thing I plan on implementing is support GPIB interface.
...
Any comments or ideas?

Comments:

1. Support for GPIB would be very useful.
2. The National Instruments GPIB controllers are also popular. One that is frequently mentioned is  the NI-GPIB-USB-HS. I have one that you are welcome to use for development, though shipping from the States to Denmark is not ideal.
3. The Prologix and NI adapters for GPIB-USB would have to be plugged into the machine running TestController in order to access the USB port. Any plans to support **remote** GPIB adapters? That is, having TestController run on a network machine rather than on the machine with the controller itself?

Regards,
Hexley
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 04, 2020, 04:53:56 pm

In some of my old equipment I found a PrologixEthernet interface, with this as test I expect to make PrologixUSB, PrologicEthernet and AR488 interfaces. I will first be able to test the AR488 interface when I get a cable.

2. The National Instruments GPIB controllers are also popular. One that is frequently mentioned is  the NI-GPIB-USB-HS. I have one that you are welcome to use for development, though shipping from the States to Denmark is not ideal.

With USB interfaces I can only handle the types that uses a virtual serial port. What do this interface do?

3. The Prologix and NI adapters for GPIB-USB would have to be plugged into the machine running TestController in order to access the USB port. Any plans to support **remote** GPIB adapters? That is, having TestController run on a network machine rather than on the machine with the controller itself?

I suppose with the PrologixEthernet it may be possible to do some remote interface. I could also make a version of AR488 that uses a network connection (That would be fairly easy).
Then you only need a small driver that copies data directly between USB and a socket. I do not know if something like this already exists, but it would be easy to do in Java.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on June 04, 2020, 05:08:55 pm

2. The National Instruments GPIB controllers are also popular. One that is frequently mentioned is  the NI-GPIB-USB-HS. I have one that you are welcome to use for development, though shipping from the States to Denmark is not ideal.

With USB interfaces I can only handle the types that uses a virtual serial port. What do this interface do?

The NI interface uses their NI-488.2 driver package, not a virtual serial port. So maybe not a good fit for TestController; better for LabView I guess.

I suppose with the PrologixEthernet it may be possible to do some remote interface. I could also make a version of AR488 that uses a network connection (That would be fairly easy).
Then you only need a small driver that copies data directly between USB and a socket. I do not know if something like this already exists, but it would be easy to do in Java.

A networked version of the AR488 plus a little Java driver sounds ideal.  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 06:16:58 am
V0.76 is up.

With these changes:
   Added scroll bars to notes popup.
   It is possible to define multiple port types for a device (They must all be listed on the same line)
   Added voltage divider functions function to calculator: vdiv() & vdiv2().
   Restored cursor for all time based columns.
   Added support for GPIB using either Prologix or AR488 adapters (AR488 is a super set of Prologix, it is DIY and requires a Arduino and a GPIB cable/connector).

When using GPIB the address field must be GPIB adapter id (Defined on the GPIB popup), a colon and the GPIB address of the device. This could be A:5 for the first adapter and GPIB address 5. The id do not have to be a single letter, it can be changed on the GPIB popup.
The Settings column on the GPIB popup can be used for commands to the adapter, use ; between multiple commands. If some devices requires commands here, I would like to hear about it, I may have to make that command supported in the device configuration.

The GPIB interface is only tested with a Prologix Ethernet adapter, it will still be months before I can check the AR488, but because it is basically the same as Prologix I hope it will work.



Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 08:19:38 am
I forgot to add:

To use the GPIB on existing devices the definition file have to be edited.
Find the "#port xxxx" definition and add GPIB to it: "#port xxxx GPIB"
It may also be possible to add LXI to the line: "#port xxxx LXI GPIB", this has nothing to do with GPIB, but it another way to connect through a network.

If getting either LXI or GPIB to work on a existing device, please post a line here with the device filename and the #port line used, then I can update the original.
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on June 06, 2020, 09:02:54 am
Hi all...i've got a 61B version that it's recognized as "61E" but still in timing out conditions (physical RS232C port derived from Intel ICH7R).

Marco1971
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 09:31:59 am
Hi all...i've got a 61B version that it's recognized as "61E" but still in timing out conditions (physical RS232C port derived from Intel ICH7R).

I supposed you mean UNI-T 61B, the meter is not support and it is nothing like the UNI-T 61E.
The data is a encoding of the segments on the display, this means I need a meter with this chip to make a decoder for it.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 10:28:52 am
Hi all...i've got a 61B version that it's recognized as "61E" but still in timing out conditions (physical RS232C port derived from Intel ICH7R).

I supposed you mean UNI-T 61B, the meter is not support and it is nothing like the UNI-T 61E.
The data is a encoding of the segments on the display, this means I need a meter with this chip to make a decoder for it.

The uni-t 61B uses the fortune fs9922 dmm3 (4000 count) chip, from my experience the fs9922 dmm4 (6000 count) uses the same serial protocol.
These chips are in a whole lot of handheld dmm's, I have meters with both chips.
If you want I could test your code.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 10:31:15 am
The serial data description starts on page 29.
https://www.ic-fortune.com/upload/Download/FS9922-DMM3-DS-11_EN.pdf (https://www.ic-fortune.com/upload/Download/FS9922-DMM3-DS-11_EN.pdf)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 11:44:24 am
If you want I could test your code.

I do not know if that will work, but lets try:

Replace you current .jar file with this one:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)


Add these lines to the top of "SimpleDMM.txt":
#metadef
#idString UNI-T,UT61B,
#name UNI-T UT61B
#handle UT61B
#subDriver 5
#baudrate 2400N81Dr

Connect UT61B to PC and enable computer connection.
Start test controller, preferable in debug mode.
Clear log window, select UT61B as only loaded device, specify serial port and press reconnect.

I hope it will recognize the meter and work in some ranges.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 12:15:41 pm
If you want I could test your code.

I do not know if that will work, but lets try:

Replace you current .jar file with this one:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)


Add these lines to the top of "SimpleDMM.txt":
#metadef
#idString UNI-T,UT61B,
#name UNI-T UT61B
#handle UT61B
#subDriver 5
#baudrate 2400N81Dr

Connect UT61B to PC and enable computer connection.
Start test controller, preferable in debug mode.
Clear log window, select UT61B as only loaded device, specify serial port and press reconnect.

I hope it will recognize the meter and work in some ranges.

I feel dumb, were can I find SimpleDMM.txt ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 12:21:49 pm
I feel dumb, were can I find SimpleDMM.txt ?

In the "Devices" subdir, there is files for all supported devices in that directory (Many files defines multiple devices).
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on June 06, 2020, 12:37:56 pm
Following above instructions, in capacitance meter mode i get...displayed "09.29 nF"

Marco
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 12:51:54 pm
I feel dumb, were can I find SimpleDMM.txt ?

In the "Devices" subdir, there is files for all supported devices in that directory (May files defines multiple devices).

Here: TestController.jar\dk\hkj\devices  I have a whole bunch of .class files, no .txt
btw, I've opened the .jar with winrar because that is what I have.  :-//
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 12:59:36 pm
Here: TestController.jar\dk\hkj\devices  I have a whole bunch of .class files, no .txt
btw, I've opened the .jar with winrar because that is what I have.  :-//

It is not inside the .jar file, you must use the jar file together with a full download of TestController.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 01:45:39 pm
I have tried to fix the problem Marco1971 saw. There is a new version (0.79)  at the above link.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 02:22:05 pm
I have tried to fix the problem Marco1971 saw. There is a new version (0.79)  at the above link.

Both versions are working with my hacked Ohmeron mt488e (fs9922dmm3).  :-+
Some functions/ranges need some work.
Do I need to report them all or are you still writing to complete the code?
Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on June 06, 2020, 02:23:17 pm
With new 0.79 file all ranges are correctly displayed, excluding temperature in °C/°F and all current ranges (a.c and d.c).
Displayed -4.4 °C versus actually 24 ambient temperature in °C.



Marco
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 02:36:22 pm
Both versions are working with my hacked Ohmeron mt488e (fs9922dmm3).  :-+
Some functions/ranges need some work.a
Do I need to report them all or are you still writing to complete the code?

With new 0.79 file all ranges are correctly displayed, excluding temperature in °C/°F and all current ranges (a.c and d.c).

Please explain exactly what is wrong. Generally I convert °F readings to °C reading in TestController, you can add a math column with °F if you want.
What must be checked is that the correct column name is used and that the decimal point is correct.
I am also missing some overload handling, if I have guessed correctly it will be fixed in the next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 02:38:30 pm
Displayed -4.4 °C versus actually 24 ambient temperature in °C.

That one was a easy fix, both F & C checked for C and the F to C conversion was activated.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 03:08:25 pm
DC Voltage:
400 mV range doesn't work.(<NaN>)
4 V range has decimal point in the wrong place i.e.: dmm displays 0.994V software 99,4V
400 V range doesn't work. (<NaN>)

note this chip has a separate 40mV DC function, that does work correctly in software.

 
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 03:17:11 pm
DC current:

40mA range works correctly
400ma range doesn't work (<NaN>)

20A range has decimal point in the wrong place i.e.: dmm displays 0.098A software 9,8A

Edit to add:

200uA range doesn't work (<NaN>)
2000uA range works correctly
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 03:28:47 pm
New jar file up (V0.80)

It fixes the temperature problem and hopefully the decimal placement and adds permanent hex dump (Will be removed when the ranges works).
It may also fix OL in ohm ranges, if not I need the hex dump.
Please post the a line of hex dump for the ranges that shows NaN or other wrong values.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 03:53:00 pm
New jar file up (V0.80)

It fixes the temperature problem and hopefully the decimal placement and adds permanent hex dump (Will be removed when the ranges works).
It may also fix OL in ohm ranges, if not I need the hex dump.
Please post the a line of hex dump for the ranges that shows NaN or other wrong values.

First check in V0.80 shows the DCV 400mv still doesn't work, were can I find the HEX dumps?  |O
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 04:02:15 pm
First check in V0.80 shows the DCV 400mv still doesn't work, were can I find the HEX dumps?  |O

It is something like this:
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A

In the log window.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 06:27:17 pm
First check in V0.80 shows the DCV 400mv still doesn't work, were can I find the HEX dumps?  |O

It is something like this:
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A
;; COM11: Rx: 1.234  2B 31 32 33 34 20 30 78 78 78 78 78 0D 0A

In the log window.

Ok, on the 400mV range it doesn't show hex, neither in the cmd.exe.
On working ranges it does.
The meter does work on this range with other software.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 06:55:26 pm
Ok, on the 400mV range it doesn't show hex, neither in the cmd.exe.
On working ranges it does.
The meter does work on this range with other software.

I have modified the start of message detection, I hope this helps (V0.81).
Its not really a question about what software the meter works on, the problem is that I need to get the decoder correct for the meter. It is not difficult, but it is slow when somebody else do the testing. As long as some people do test and post results I will get the meter working.
I have programmed a Arduino to simulate the meter (more or less), it will repeat any hex dump I put into it. This means any hex dump that do not decode correctly I can easily simulate and fix.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 07:25:08 pm
Ok, on the 400mV range it doesn't show hex, neither in the cmd.exe.
On working ranges it does.
The meter does work on this range with other software.

I have modified the start of message detection, I hope this helps (V0.81).
Its not really a question about what software the meter works on, the problem is that I need to get the decoder correct for the meter. It is not difficult, but it is slow when somebody else do the testing. As long as some people do test and post results I will get the meter working.
I have programmed a Arduino to simulate the meter (more or less), it will repeat any hex dump I put into it. This means any hex dump that do not decode correctly I can easily simulate and fix.

Much appreciated, will test with 0,81
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 07:36:36 pm
098,3mV = 0A 2B 30 39 38 33 20 34 11 00 40 80 09 0D

edit to add:

0,097V = 0A 2B 30 30 39 37 20 31 11 00 00 80 00 0D
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 06, 2020, 07:38:48 pm
If getting either LXI or GPIB to work on a existing device, please post a line here with the device filename and the #port line used, then I can update the original.

HKJ,

LXI works for the Siglent SDM's line shown below.  I notes that when using LXI the Rx line has the > on the next line. I am making some changes to the device file. I will send an update file in the next day or two including LXI.
Code: [Select]
#port 5024 LXI
Code: [Select]
;; 15:26:48.437 SDM3065X: Tx <DATA:LAST?>
;; 15:26:48.516 SDM3065X: Rx <+2.25545080E+01    C
>
;; 15:26:48.566 SDM3065X: *OPC waited: 32ms
;; 15:26:48.566 SDM3065X: Rx as numbers <22.554508>
;; 15:26:48.638 SDM3065X: Tx <DATA:LAST?>
;; 15:26:48.758 SDM3065X: Rx <+2.25566770E+01    C
>
;; 15:26:48.808 SDM3065X: *OPC waited: 33ms
;; 15:26:48.808 SDM3065X: Rx as numbers <22.556677>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 08:03:54 pm
098,3mV = 0A 2B 30 39 38 33 20 34 11 00 40 80 09 0D

My start of block detection was still faulty, I hope it is fixed now.
The decimal placement  that is specified to be 0, 1, 2, 3 was 4
For now I have just put a 1 factor in, but it will probably have to be adjusted.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2020, 08:06:50 pm
LXI works for the Siglent SDM's line shown below.  I notes that when using LXI the Rx line has the > on the next line. I am making some changes to the device file. I will send an update file in the next day or two including LXI.
Code: [Select]
#port 5024 LXI

I will wait for your update. The > on the next line means I am not stripping the LF character, I may add that.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 06, 2020, 08:59:47 pm
098,3mV = 0A 2B 30 39 38 33 20 34 11 00 40 80 09 0D

My start of block detection was still faulty, I hope it is fixed now.
The decimal placement  that is specified to be 0, 1, 2, 3 was 4
For now I have just put a 1 factor in, but it will probably have to be adjusted.

dcV:

40mV     OK
400mV   meter: 198.1mV software: 1,981V

400mV   meter: 198.1mV software: 1,981V
4V          OK
40V        OK
400V      meter: 046,8V   software: 468V
1000V    OK

Will test other functions tomorrow..
Thanks again.


Title: Re: Program that can log from many multimeters.
Post by: gby on June 06, 2020, 09:26:20 pm
I am trying out logging at the fastest rate with a single fast device.  Specifically I choose the 0.01 sec per sample point option.  Sometimes I see a fairly major glitch in the chart data.  At first I thought it was the device and/or communications issue.  But, I really don't think so.  I examined the details of the point Index number versus the time stamp and I am seeing the sample time interval almost double.

I took a short log session to .csv and then in Excel plotted the time stamp versus index number.  That graph clearly shows a glitch followed by the sample interval time increasing by almost exactly 2x.  What is going on here???  Is this a bug in the code or is the code trying to be smart and adjust the sample time slower when the sampling does not keep up?

Second issue with logging at 0.01 sec intervals:  In the Table tab the time column only shows up to 0.1 sec resolution.  Certainly when sampling at the 0.03 second or the 0.01 second interval you want to see two digits after the decimal.  I get that for slower sampling it may not be needed to show the extra digit, but would it hurt?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 07, 2020, 04:35:34 am
I took a short log session to .csv and then in Excel plotted the time stamp versus index number.  That graph clearly shows a glitch followed by the sample interval time increasing by almost exactly 2x.  What is going on here???  Is this a bug in the code or is the code trying to be smart and adjust the sample time slower when the sampling does not keep up?

The software will adjust sample interval if it gets behind.
I run the sample code with fairly high priority in the system, but the OS may have other tasks it want to do first, that may delay a sample. If you give any command to the device while sampling it may also delay sampling.

Second issue with logging at 0.01 sec intervals:  In the Table tab the time column only shows up to 0.1 sec resolution.  Certainly when sampling at the 0.03 second or the 0.01 second interval you want to see two digits after the decimal.  I get that for slower sampling it may not be needed to show the extra digit, but would it hurt?

Internally I use millisecond resolution, but because most devices are fairly slow I have limited the table to 0.1 sec resolution. I believe it is easier to read numbers with fewer digits.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 07, 2020, 04:39:51 am

dcV:

40mV     OK
400mV   meter: 198.1mV software: 1,981V

400mV   meter: 198.1mV software: 1,981V
4V          OK
40V        OK
400V      meter: 046,8V   software: 468V
1000V    OK


jar file V0.83 where the extra factor is 0.1
I was missing the hex dump to confirm it was the extra decimal location.
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 07, 2020, 09:20:24 am

dcV:

40mV     OK
400mV   meter: 198.1mV software: 1,981V

400mV   meter: 198.1mV software: 1,981V
4V          OK
40V        OK
400V      meter: 046,8V   software: 468V
1000V    OK

jar file V0.83 where the extra factor is 0.1
I was missing the hex dump to confirm it was the extra decimal location.

dcV is 100% now  :-+
I start checking other functions.

I've also discovered I can use ctrl-c to copy data from the command screen (right click copy doesn't work) so that makes it easier for me to include the hex dump when something isn't right. :palm:

edit:

dcA is 100%
resistance is 100%
Temperature in C is correct, in F converts to C in software, maybe intentional.
Frequency including duty cycle is 100% up to 99,99Khz range, above untested.
acV is 100%
diode and continuity is 100%
capacitance is 100%

A minor imperfection is that on all ranges that I've noticed OL is displayed as 0, for instance MOhm range:

Code: [Select]
;; COM6: Rx: 0.0  2B 3F 30 3A 3F 20 32 21 00 10 20 29 0D 0A
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 07, 2020, 10:49:09 am
A minor imperfection is that on all ranges that I've noticed OL is displayed as 0, for instance MOhm range:
Code: [Select]
;; COM6: Rx: 0.0  2B 3F 30 3A 3F 20 32 21 00 10 20 29 0D 0A

I had guessed wrong about how overload was signaled, it is fixed now. I will not upload a new version yet.
How many meters is covered by this definition? Uni-T UT61B, UT61C, UT61D, but what other brands and models?
Title: Re: Program that can log from many multimeters.
Post by: The Soulman on June 07, 2020, 01:35:35 pm

How many meters is covered by this definition? Uni-T UT61B, UT61C, UT61D, but what other brands and models?

After searching the Sigrok website I've came up with these:

EZA EZ-735
Victor 70C
Victor 86C
Voltcraft VC830
Voltcraft VC850
SparkFun 70C

And also:

Peaktech 2025

And thanks to UltraDMM:

Pro'sKit MT-1820
Uni-t UT60A
Uni-t UT60D
DigiTek DT-9602R+



And probably some more.

My Metrawatt 2+ and Ohmeron MT488E also work but not out of the box because the serial out isn't implemented from the factory..

edit: added a few
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 07, 2020, 02:20:05 pm
I will wait for your update. The > on the next line means I am not stripping the LF character, I may add that.

HKJ,

Attached is an updated device file for the Siglent SDM's

Changes:
Improved read speed, old speed about 800ms to new speed about 70ms
Added LXI support

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 07, 2020, 02:36:27 pm
After searching the Sigrok website I've came up with these:

That was a long list, I have added them all for next releaes.

Thanks for all the help with the implementation.

Attached is an updated device file for the Siglent SDM's

Will be included in next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2020, 02:28:00 pm
V0.84 is up, it is mostly about the meters added above.

   Added Uni-t UT61B, UT61C, UT61D (Fortune FS9922-DMM3 & FS9922-DMM4 DMM chips) with help from "The Soulman"
   Added a lot of other similar meters, thanks to "The Soulman" from EEVBlog forum
   Updated Siglent bench meter definitions , thanks to "MikeLud" from EEVBlog forum
   Added manual/help pages for Histogram, Scales, Range and Math.

Title: Re: Program that can log from many multimeters.
Post by: Marco1971 on June 08, 2020, 02:49:20 pm
Many many thanks HKJ...for your work.

Marco1971
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 08, 2020, 03:01:30 pm
V0.84 is up, it is mostly about the meters added above.

   Added Uni-t UT61B, UT61C, UT61D (Fortune FS9922-DMM3 & FS9922-DMM4 DMM chips) with help from "The Soulman"
   Added a lot of other similar meters, thanks to "The Soulman" from EEVBlog forum
   Updated Siglent bench meter definitions , thanks to "MikeLud" from EEVBlog forum
   Added manual/help pages for Histogram, Scales, Range and Math.

HKJ,

V0.84 shows V0.76 in about

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2020, 03:08:12 pm
V0.84 shows V0.76 in about

You have been to fast to download, the webserver has some caching that can delay a upload before is available. It is very frustrating but I cannot do anything about it (I could, of course, wait some time before saying a new version was uploaded).
Title: Re: Program that can log from many multimeters.
Post by: klausES on June 08, 2020, 04:05:08 pm
Perhaps it would help to avoid this, but in any case it would clarify if the uploaded zip name ends with Vx.xx
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2020, 04:53:55 pm
Perhaps it would help to avoid this, but in any case it would clarify if the uploaded zip name ends with Vx.xx

Then I would have to modify the webpage each time I made a new version and that would have the same problem with caching.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 08, 2020, 07:45:47 pm
HKJ,

What about keeping the file on something like GitHub, I was going to say what about attaching the file to the post but the size is past the 5,000 KB limit
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2020, 08:27:21 pm
What about keeping the file on something like GitHub, I was going to say what about attaching the file to the post but the size is past the 5,000 KB limit

I have never gotten around to learn github, but I do have more than TestController that could benefit from it.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 09, 2020, 09:22:40 am

In some of my old equipment I found a PrologixEthernet interface, with this as test I expect to make PrologixUSB, PrologicEthernet and AR488 interfaces. I will first be able to test the AR488 interface when I get a cable.

2. The National Instruments GPIB controllers are also popular. One that is frequently mentioned is  the NI-GPIB-USB-HS. I have one that you are welcome to use for development, though shipping from the States to Denmark is not ideal.

With USB interfaces I can only handle the types that uses a virtual serial port. What do this interface do?

3. The Prologix and NI adapters for GPIB-USB would have to be plugged into the machine running TestController in order to access the USB port. Any plans to support **remote** GPIB adapters? That is, having TestController run on a network machine rather than on the machine with the controller itself?

I suppose with the PrologixEthernet it may be possible to do some remote interface. I could also make a version of AR488 that uses a network connection (That would be fairly easy).
Then you only need a small driver that copies data directly between USB and a socket. I do not know if something like this already exists, but it would be easy to do in Java.

There are also National Instruments serial to GPIB adapters, like GPIB-232CT and GPIB-232CT-A.
Manual of the GPIB-232CT:
https://www.ni.com/pdf/manuals/320114.pdf (https://www.ni.com/pdf/manuals/320114.pdf)
and manual of the GPIB-232CT-A:
https://www.ni.com/pdf/manuals/370898a.pdf (https://www.ni.com/pdf/manuals/370898a.pdf)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 09, 2020, 10:38:52 am
There are also National Instruments serial to GPIB adapters, like GPIB-232CT and GPIB-232CT-A.
Manual of the GPIB-232CT:
https://www.ni.com/pdf/manuals/320114.pdf (https://www.ni.com/pdf/manuals/320114.pdf)
and manual of the GPIB-232CT-A:
https://www.ni.com/pdf/manuals/370898a.pdf (https://www.ni.com/pdf/manuals/370898a.pdf)

Being serial they are probably fairly easy to implement, but I do not have any of them to test with.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 09, 2020, 11:04:48 am
Have one of them (the older GPIB-232CT that can be found quite cheap on ebay), and a solartron 7150plus to try it out. This evening i connect all together and try to send something to it...
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 09, 2020, 09:03:59 pm
Managed to get some values, reset the device, lock front panel, disable display, etc.
It's quite simple.
interesting gpib interface commands are:
clr x - reset the x gpib device
wr #n,x - send n bytes to x gpib device
rd #n,x - read n bytes from x gpib device

The solartron output a continuous stream of data every display update. It output a 7.5digit value  :scared:
But can be configured also for "single shot" measurement.
For example, the "wr #2,1<cr lf>M2" put the meter in ohm reading.
In continuous data stream can be buffered 65KB of data. The problem is that the buffer can be truncated everywhere.
So issuing a "wr #2,1<cr lf>T0" is disabled the continuous pooling, and can request a single value reading with "wr #1,1<cr lf>G" followed by "rd #10,1" gets 10 byte from the meter.
The meter manual can be found here:
http://bee.mif.pg.gda.pl/ciasteczkowypotwor/Solartron/Solartron_Schlumberger_7150_Plus_User_Manual.pdf (http://bee.mif.pg.gda.pl/ciasteczkowypotwor/Solartron/Solartron_Schlumberger_7150_Plus_User_Manual.pdf)

Seem quite easy to interface with this gpib adapter
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 04:52:37 am
The manual looks like it the adapter is easy to use, but I cannot test it.
It also looks like you usually do not need the byte count.

TestController is not good at the streaming data from the Solartron, it works better when requesting a value.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 07:00:04 am
From the tests that i've done both wr and rd commands need the byte count. The wr isn't much a problem as you know what you are sending, the rd, in "single value" mode accept a bigger buffer than the actual data to receive. If you are waiting a max 10byte value, you can read 20 bytes without any problem.
Yes, the streamed data isn't much useful, better the ask/aswer mode. The multimeter at poweron os in T1 mode, bit can be switched back easily win the "wr #2,1<cr lf>T0" command, issued after when the connection is made, or after a reset of the device
With the "driver" needed to handle the gpib adapter, i can write myself the dmm definition.

---edit---

Reading the manual seem that in the wr command if you send a cr lf at the end of the command, the byte count can omitted.
For the read, the buffer size must be specified. But it's not a problem if the size is bigger than actual data, the result is sent anyway.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 08:13:53 am
If you want to test, I can make the definitions.
According to the manual it do not look like it need the count when writing, it is supposed to terminate on CR or LF.
The read look more problematic, because it will always transmit the number of bytes you requested, this means if I just request a large number of bytes, I will slow the communication down.
I want to keep the different drivers fairly compatible, this means I cannot add a byte count to the read command, but I could add a global gpib byte count, that is only used by some interfaces. The disadvantage is that it will be the same for all answers from that device. A default value for that count would have to be fairly high, like 50 or 100 bytes, to work with most devices.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 08:41:33 am
This evening i'll try the write command without byte count, followed by crlf, and confirm the manual.
For the read, a general configurable byte count i think that is ok, my meter send for example "+.0000000 V DC", so a buffer lenght of 15 will be ok for every range/type of measurement.
At best, a configurable byte count for every gpib address (as the same serial comm port can serve multiple gpib devices), so that if you have a device that output at max 15 byte, and the other 200 byte, the first one isn't slowed down.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 08:49:43 am
At best, a configurable byte count for every gpib address (as the same serial comm port can serve multiple gpib devices), so that if you have a device that output at max 15 byte, and the other 200 byte, the first one isn't slowed down.

Yes, it would be for separate for each device, then main GPIB class already has code to keep separate settings for each device.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 09:10:06 am
I think that it work like a charm!
Doing a parametrized byte lenght for every command for a specified device seem way an overkill. If you have a 6.5 digit meter, most of the times it output the same byte count, there isn't the chance that it output for example a 200byte buffer.
Different thing is if you connect for example a scope, that you can receive a single value or maybe a whole waveform, but this isn't the case.

I can do all the needed tests. The only problem is that by now i have only the solartron with gpib, so i can't test the interface with other devices (or the meter with other interfaces). I plan to use an usb to rs232 with it, but by now, for testing, i'm using a true com port.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 11:21:40 am
A completely untested version of NI interface: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

You can use:
#gpibReadCount
in the device definition, to specifiy how many chars to read.
You will have to use the ascii type definition for the Solartron.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 12:33:25 pm
Thanks! This evening i'll try it!
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 07:10:58 pm
With this simple starting definition:
Code: [Select]

#idString SOLARTRON,7150PLUS,
#name Solartron 7150Plus
#handle 7150PLUS
#driver SingleValue
#port GPIB
#gpibReadCount 15

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si V DC

#askValues G

#interfaceType DMM
#interface readValue 0


; Initial commands to meter when establishing connection
#initCmd  T0

I get only

Code: [Select]
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; Stopping thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus

I'm sure to have made a mistake  |O
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 07:26:32 pm
I'm sure to have made a mistake  |O

Have you done the GPIB setup correctly?

On the GBIB popup you need to define serial port and baudrate.
On the device list you need a reference to the GPIB driver (i.e. the id) and the GPIB address, it can be something like "A:5"
For GPIB device with id A and GPIB address 5.

And do not use a SingleValue driver, you need a Ascii driver. Look in the  FeelElecFY6x00-xxM.txt file for inspiration (You can ignore the #cmdSetup part). The Keithley2000.txt file is a simple dmm definition, but it missing the #scpiCmd's that is needed for Ascii devices.


Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 07:38:47 pm
I was using singlevalue only for testing, as it's simpler than the scpi-like ascii syntax (that i need to study a bit  :palm:)
Yes, the configuration of the gpib is ok, set the adapter at A address, the dmm is at 1 gpib address, at correct com port/com speed.
I not know why, but after some close/reopening of the program i've got:
Code: [Select]
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; 150PLUS: Tx <T0>
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; Mode reported: <>
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A
;; COM9: Rx: timeout
;; COM9: Tx: <RD 15,1.> 52 44 20 31 35 2C 31 0A


One thing about the RD command, it need an # before the byte number to read.

I see also a dot after the gpib address.

And this:
Code: [Select]
;; COM9: Tx: <.> 0A
at startup is a bit strange
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2020, 07:51:11 pm
I uploaded a new version with a #

It looks like you have not define a poll value

Ascii and SingleValue drivers will accept a device when the port is found. The Ascii driver can be configured to require a specific answer before it accept that the device is present and it is strongly recommended to do that (But not before you have the communication working).

When the device is accepted you can use the command line in TestController to send commands to the device. With the Ascii driver you either use tx/txrx/txrx? before each command or the defined scpiCmd's
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 10, 2020, 11:00:55 pm
Whoa, the language in the definition files is a true programming language  :scared: :scared:

ended up with this:
Code: [Select]
#idString SOLARTRON,7150PLUS,
#name Solartron 7150Plus
#handle 7150PLUS
#driver Ascii
#port GPIB
#gpibReadCount 15

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si V DC

#initCmd init

#interfaceType DMM
#interface readValue 0

#cmdMode VDC M0
*cls;
:SENSE:FUNCTION:ON "M0"
sense:voltage:dc:nplc 1;

#askMode  mode?

#scpiCmd values? txrx? G

#scpiCmd init tx T0

#scpiCmd mode? txrx? M?

#askValues values?

That obviously not work  :-DD |O

i get this:
Code: [Select]
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: timeout
;; 50PLUS: Rx Timeout
I always see this:
Code: [Select]
;; COM9: Tx: <.> 0AThat is strange
And also the ending dot here:
Code: [Select]
;; COM9: Tx: <WRT 1.>
Then, why after:
Code: [Select]
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A

(Excluding the dot..) It do:
Code: [Select]
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
And not an rd for read the device mode?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 06:57:33 am
Whoa, the language in the definition files is a true programming language  :scared: :scared:

Yes, but you only have access to a small part of it.

#initCmd init

The ascii driver only understands tx/txrx/txrx?, anything else must be defined with #scpiCmd


;; COM9: Tx: <T0.> 54 30 0A

The dot is used to show non-printable characters, here it is a LF or 0A code, as can be see in the hex part.

Then, why after:
Code: [Select]
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A

(Excluding the dot..) It do:
Code: [Select]
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
And not an rd for read the device mode?

The driver keeps track of timeout setting and when it is changed it will send a new timeout command to the gpib device. As long as the gpib controller is only handling one device you will probably only see the TMO command once.

To do a read you do a txrx? (txrx works the same way, but you will not get the result) and then you are supposed to see:
WRT deviceAddress
The actual string you want to write
Optional a TMO
A RD #chars,deviceAddress
And then the result, it can either be a timeout or a string.

A write is done with tx and you will see:
WRT deviceAddress
The actual string you want to write


For a more simple definition use:
#value VoltageDC V si

and put a ; before #askmode:
;#askMode

This means TestController will always show one data value for the device called "VoltageDC"
Then you can work with #askValues to get the readings from the meter.
Probably something like:
#scpiCmd value? txrx? G
#askValues value?

And you need to init the meter for single shot measurements:
#scpiCmd sampleMode tx T(value)
#initCmd sampleMode 0


When you have this working, you can implement the different modes and maybe also add range and sample time selections.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 09:08:46 am
#initCmd init

The ascii driver only understands tx/txrx/txrx?, anything else must be defined with #scpiCmd

Actually i've specified:
Code: [Select]
#initCmd init
#scpiCmd init tx T0
Code: [Select]
#askMode  mode?
#scpiCmd mode? txrx? M?
Code: [Select]
#askValues values?
#scpiCmd values? txrx? G

So i think that was right.

;; COM9: Tx: <T0.> 54 30 0A

The dot is used to show non-printable characters, here it is a LF or 0A code, as can be see in the hex part.
Got it, so at startup is sent an LF.

Then, why after:
Code: [Select]
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A

(Excluding the dot..) It do:
Code: [Select]
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
And not an rd for read the device mode?

The driver keeps track of timeout setting and when it is changed it will send a new timeout command to the gpib device. As long as the gpib controller is only handling one device you will probably only see the TMO command once.

To do a read you do a txrx? (txrx works the same way, but you will not get the result) and then you are supposed to see:
WRT deviceAddress
The actual string you want to write
Optional a TMO
A RD #chars,deviceAddress
And then the result, it can either be a timeout or a string.

A write is done with tx and you will see:
WRT deviceAddress
The actual string you want to write


For a more simple definition use:
#value VoltageDC V si

and put a ; before #askmode:
;#askMode

This means TestController will always show one data value for the device called "VoltageDC"
Then you can work with #askValues to get the readings from the meter.
Probably something like:
#scpiCmd value? txrx? G
#askValues value?

And you need to init the meter for single shot measurements:
#scpiCmd sampleMode tx T(value)
#initCmd sampleMode 0


When you have this working, you can implement the different modes and maybe also add range and sample time selections.

From what i see, what i've wrote must work.

I not know if the TMO put  between the wrt and the rd can cause problems.
#scpiCmd must be specified BEFORE using it? Or the order of the commands doesn't matter?



Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 11, 2020, 09:51:20 am
Just to show what Test Controller can do (in X/Y mode) some Bode plots. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 10:39:41 am
#scpiCmd must be specified BEFORE using it? Or the order of the commands doesn't matter?

The order do not matter, all # commands are read and sorted before the definition is used.

I will suggest try using the tx/txrx/txrx? commands from the command line in debug mode, this way you can try commands and see answers very easily.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 10:41:41 am
Just to show what Test Controller can do (in X/Y mode) some Bode plots. :-+

You need a generator you can control from TestController. The you could automate the sweeps very easily.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 12:29:36 pm
Just to show what Test Controller can do (in X/Y mode) some Bode plots. :-+
Sooo nice!
What have you used for read back the values? Need something that have a flat curve in frequency response.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 12:30:28 pm
#scpiCmd must be specified BEFORE using it? Or the order of the commands doesn't matter?

The order do not matter, all # commands are read and sorted before the definition is used.

I will suggest try using the tx/txrx/txrx? commands from the command line in debug mode, this way you can try commands and see answers very easily.
Ok, this evening that i go home i try! Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 12:39:48 pm
Ok, this evening that i go home i try! Thanks!

If you find something I need to change in the NS driver, I can do that fairly fast.
Also note that you can send some initial commands to it: On the GPIB page the settings field is for sending commands to the GPIB driver (Use ; as delimiter between the commands).
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 11, 2020, 02:49:48 pm

You need a generator you can control from TestController. The you could automate the sweeps very easily.

Yep. I know and I am looking for an UNI-T UTG 962 which is currently not
available from a renowned source in Germany :palm:. If not available until Black Friday its then the going to be a Siglent SDG2042X provided it is substantially discounted then. :popcorn:
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 11, 2020, 02:51:14 pm
Just to show what Test Controller can do (in X/Y mode) some Bode plots. :-+

Messtechniker,

You beat me to it, yesterday I wrote the attached script to do a frequency sweep. I still need to make a device file for my scope to read some measurements for the Bode Plot

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 11, 2020, 02:56:12 pm
Just to show what Test Controller can do (in X/Y mode) some Bode plots. :-+
Sooo nice!
What have you used for read back the values? Need something that have a flat curve in frequency response.
Since I do not own/need a proper signal generator (yet), I simply used the sweep function of Audio Tester driving my PC sound card. Flat enough for most purposes.
This quick-and-dirty approach has its limitations. The frequency-to-voltage conversion is inherently slow. :palm: And the X-axis is linear with log being more common.
Title: Re: Program that can log from many multimeters.
Post by: Mr. Scram on June 11, 2020, 03:24:15 pm
You need a generator you can control from TestController. The you could automate the sweeps very easily.
I gather we could we add oscilloscopes too? I've been meaning to write a bode program for my oscilloscope, but if we can do it in TestController, that'd be even better.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 04:46:03 pm
Question: Can't be done simply with a (qood quality) DMM?
DMM True RMS converters have a quite wide bandwidth with flat curve.

If doing with scope, would be nice to also measure the phase shift, but it for sure need some sort of sync between scope and sig generator.
But i think tha't way too much
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 05:17:45 pm
Question: Can't be done simply with a (qood quality) DMM?
DMM True RMS converters have a quite wide bandwidth with flat curve.
Look at the name of his axis, 34465 is a Keysight bench meter.

I will have to look at bit more on logarithmic axis.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 06:18:09 pm
I will suggest try using the tx/txrx/txrx? commands from the command line in debug mode, this way you can try commands and see answers very easily.

Tried  to send a" txrx? G" and i've got:
Code: [Select]
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: timeout
java.lang.NullPointerException
        at dk.hkj.shared.SharedInterfaceNSGPIB232CT.read(SharedInterfaceNSGPIB232CT.java:58)
        at dk.hkj.shared.SharedInterface.writeRead(SharedInterface.java:258)
        at dk.hkj.comm.GpibInterface.writeRead(GpibInterface.java:63)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:95)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:153)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:100)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:151)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:188)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:230)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:70)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:675)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1140)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1138)
        at dk.hkj.main.PaneCommand$15.keyTyped(PaneCommand.java:632)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; 50PLUS: Rx Timeout

Sending a "tx M1" for switch to Vac it not give any error, but the meter not switch.
Quote
;; 50PLUS: Tx <tx M1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M1.> 4D 31 0A

Maybe the simple LF isn't enough? Send with keyboard using the "enter" key (i suppose a cr+lf) was working

Tried to send also a "CLR 1" GPIB Command in the gpib window, he sent it:
Code: [Select]
;; COM9: Tx: <CLR 1.> 43 4C 52 20 31 0A
But the meter had not reset
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 06:25:43 pm
Tried  to send a txrx? G and i've got:

It just means timeout and that I was a missing null pointer check in the code. This will be fixed in next version
I will not be posting a update for that alone.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 06:28:13 pm
Sorry, i've edited the message adding details...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 06:32:22 pm
Tried to send also a "CLR 1" GPIB Command in the gpib window, he sent it:
Code: [Select]
;; COM9: Tx: <CLR 1.> 43 4C 52 20 31 0A
But the meter had not reset

At the current time not CR or LF reach the meter, but the GPIB controller uses a control line to signal end of message.
Can you try from a terminal program and use the character count to send/not send a CR or LF to the meter?

If you can confirm this is the problem I will modify the driver to use the count parameter to get the CR/LF to the meter.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 06:39:41 pm
Using putty i've tried and work sending both "CLR 1 Ctrl+M" (CR) and "CLR 1 Ctrl+J" (LF).
I think that i attach the logic analyzer to see what's going on...
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 11, 2020, 06:51:03 pm
Found it. In the GPIB configuration page i've set as baudrate 19200, but actually the data is output at 9600bps
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2020, 08:15:49 pm
Found it. In the GPIB configuration page i've set as baudrate 19200, but actually the data is output at 9600bps

Thanks, I will take a look at it tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 12, 2020, 02:24:29 am
HKJ,

I am creating a device file for my Siglent SDS1204X-E and I am having issues reading the first value, I am getting "Rx timeout 1000ms   In buffer: C1-C2:MEAD PHA,0.06degree". I looks like it is reading the value but it is stuck in the buffer. Also to do a :readmath: on each value I am using the ASCII driver.

Code: [Select]
;; 22:12:36.326 SDS1204XE: Tx <C1-C2:PHA?>
;; 22:12:36.327 SDS1204XE: Tx <txrx? C1-C2:MEAD? PHA>
;; 22:12:36.329 192.168.1.212: Tx: <C1-C2:MEAD? PHA.> 43 31 2D 43 32 3A 4D 45 41 44 3F 20 50 48 41 0A
;; 22:12:37.329 192.168.1.212: Rx timeout 1000ms   In buffer: C1-C2:MEAD PHA,0.06degree
;; 22:12:43.833 SDS1204XE: Rx Timeout
;; 22:12:43.833 SDS1204XE: Tx <C1:RMS?>
;; 22:12:43.833 SDS1204XE: Tx <txrx? C1:PAVA? RMS>
;; 22:12:43.834 192.168.1.212: Tx: <C1:PAVA? RMS.> 43 31 3A 50 41 56 41 3F 20 52 4D 53 0A
;; 22:12:43.862 192.168.1.212: Rx: <C1:PAVA RMS,1.80E+00V> 43 31 3A 50 41 56 41 20 52 4D 53 2C 31 2E 38 30 45 2B 30 30 56 0A
;; 22:12:43.862 SDS1204XE: Rx <1.80E+00V>
;; 22:12:43.862 SDS1204XE: Tx <C2:RMS?>
;; 22:12:43.863 SDS1204XE: Tx <txrx? C2:PAVA? RMS>
;; 22:12:43.863 192.168.1.212: Tx: <C2:PAVA? RMS.> 43 32 3A 50 41 56 41 3F 20 52 4D 53 0A
;; 22:12:43.888 192.168.1.212: Rx: <C2:PAVA RMS,1.80E+00V> 43 32 3A 50 41 56 41 20 52 4D 53 2C 31 2E 38 30 45 2B 30 30 56 0A
;; 22:12:43.889 SDS1204XE: Rx <1.80E+00V>
;; 22:12:43.890 SDS1204XE: Rx as numbers <1.8 1.8>

Code: [Select]
#author MikeLud
#idString Siglent Technologies,SDS1204X-E,
#name Siglent SDS1204X-E
#handle SDS1204X-E
#driver Ascii
#port 5024

#scpiCmd C1-C2:PHA? txrx? C1-C2:MEAD? PHA
:readmath: getElement(value,1,",")
#scpiCmd C1:RMS? txrx? C1:PAVA? RMS
:readmath: getElement(value,1,",")
#scpiCmd C2:RMS? txrx? C2:PAVA? RMS
:readmath: getElement(value,1,",")


; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value Delay Degree D2
#value C1:RMS V si
#value C2:RMS V si

; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues C1-C2:PHA?;C1:RMS?;C2:RMS?

; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat uuu

;Accept this delay when reading values (seconds)
#readingDelay 5

; Initial commands to meter when establishing connection
#initCmd MEAD PHA,C1-C2;PACU RMS,C1;PACU RMS,C2

; Prepare the meter to response to #askValues
#prepareSample
abort
sample:count 1
trig:source imm
trig:count inf
init
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2020, 04:37:40 am
I am creating a device file for my Siglent SDS1204X-E and I am having issues reading the first value, I am getting "Rx timeout 1000ms   In buffer: C1-C2:MEAD PHA,0.06degree". I looks like it is reading the value but it is stuck in the buffer.

This means TestController is missing a CR or LF character (Either one will do).

Also to do a :readmath: on each value I am using the ASCII driver.

Nice trick, you could also do a long and more complex :readmath: that would handle everything.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2020, 06:23:22 am
Found it. In the GPIB configuration page i've set as baudrate 19200, but actually the data is output at 9600bps

Thanks, I will take a look at it tomorrow.

New version that initializes the baudrate (Big oops).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 12, 2020, 07:46:59 am
I'll try it this evening that i go home after work, thanks!
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 12, 2020, 01:45:29 pm
I am creating a device file for my Siglent SDS1204X-E and I am having issues reading the first value, I am getting "Rx timeout 1000ms   In buffer: C1-C2:MEAD PHA,0.06degree". I looks like it is reading the value but it is stuck in the buffer.
This means TestController is missing a CR or LF character (Either one will do).

Where do I add \n or is this a scope bug that I can't fix.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2020, 02:31:49 pm
Where do I add \n or is this a scope bug that I can't fix.

It is something to do with the scope. Some ideas:
1) Longer timeout, maybe the timeout is too short.
2) Because you are using ascii driver, you can do a trick: Send this command with "tx", then send another command that will answer. You are now supposed to get both answers on the same line.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 12, 2020, 07:22:12 pm
So, now seem all correct. At power on i get:
Code: [Select]
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; 50PLUS: Rx <M0>
Seem perfect! It also return the correct mode (M0)

If i do, from the command window, a "txrx? G" for getting a single shot value, this is the result:
Code: [Select]
txrx? G
;; 50PLUS: Tx <txr (i've set 15 bytex? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: <+.0000330  V DC15> 2B 2E 30 30 30 30 33 33 30 20 20 56 20 44 43 31 35
;; 50PLUS: Rx <+.0000330  V DC15>
;; +.0000330  V DC15
It return 17 bytes instead of 15 (I've set 15 byte return value), witht that strange "15" at the end.
And if i do a second time the "txrx? G" it goes in timeout
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 12, 2020, 07:42:56 pm
Where do I add \n or is this a scope bug that I can't fix.

It is something to do with the scope. Some ideas:
1) Longer timeout, maybe the timeout is too short.
2) Because you are using ascii driver, you can do a trick: Send this command with "tx", then send another command that will answer. You are now supposed to get both answers on the same line.

Tried idea 2, no luck, the scope only accepts one SCPI command at a time.  I checked with Wireshark and the scope is definitely not send "0A" at the end of the string as the others responses do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2020, 07:55:13 pm
It return 17 bytes instead of 15 (I've set 15 byte return value), witht that strange "15" at the end.
And if i do a second time the "txrx? G" it goes in timeout

It is supposed to send the requested number of bytes, using 0 pads if necessary and then terminate with the number of significant bytes.
I check for a 0 in the message and will strip everything after it, but if you use a byte count at the exact number of bytes, I will not get any zero bytes and will not strip any data (I do not use the byte count when stripping data).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2020, 07:57:56 pm
Tried idea 2, no luck, the scope only accepts one SCPI command at a time.  I checked with Wireshark and the scope is definitely not send "0A" at the end of the string as the others responses do.

You can use a [delay] specification to fix it.
Both the delay and the Tx is a hack to fix a faulty answer and may fail to work at the next software update!
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 12, 2020, 08:37:36 pm
Trying to understand what's going on, i've played with realterm.
First of all, if before doing anything i do a read (at poweron or after a "clr 1" - that reset the gpib device at address 1) i get
Code: [Select]
send:
rd #100,1<cr>
72 64 20 23 31 30 30 2C 31 0D


receive:
37 31 35 30 2B 20 56 41 43 2E 41 43 0D 0A * 2B 2E 30 30 30 30 33 34 30 20
20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33 34 30 20 20 56 20 44 43 0D 0A
2B 2E 30 30 30 30 33 34 30 20 20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33
34 30 20 20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33 34 30 20 20 56 20 44
43 0D 0A 2B 31 30 30 0D 0A
 
7150+ VAC.AC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+100<cr><lf>

Where is an * means that there was a little pause.
Here i can see that the solartron after every command send a <cr><lf>.
Maybe we can use a parameter like #gpibReadCount, eventually #gpibReadStopChar to stop the read also if the buffer isn't all received, but i've received the "end of data"? So we don't read any garbage.
It can be also seen that at the first read the meter output the model name, can this be useful?
It send the model name only if i not send anything before.
If for example i send an M? for asking the actual mode, it return the mode followed by cr lf
Other thing that can be noticed is that at the end of the 100byte buffer the gpib interface send the total bytes received, followed by <cr><lf>
Maybe this can be useful?

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 14, 2020, 04:05:24 pm
HKJ,

You might want to add error checking when entering Minimum and Maximum values in the Scales for chart tab. If you enter a Max value less then the Min value or a Min value greater then the Max value and you enable that value on the Chat tab it cause the program to lockup.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2020, 04:34:34 pm
You might want to add error checking when entering Minimum and Maximum values in the Scales for chart tab. If you enter a Max value less then the Min value or a Min value greater then the Max value and you enable that value on the Chat tab it cause the program to lockup.

I do have a trap to prevent that, but it was wat to fine for the chart library, I have adjusted it.


I also wonder if masterx81 has tried TestController with the fixed baudrate setting.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 14, 2020, 04:49:24 pm
So, now seem all correct. At power on i get:
Code: [Select]
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; 50PLUS: Rx <M0>
Seem perfect! It also return the correct mode (M0)

If i do, from the command window, a "txrx? G" for getting a single shot value, this is the result:
Code: [Select]
txrx? G
;; 50PLUS: Tx <txr (i've set 15 bytex? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #15,1.> 52 44 20 23 31 35 2C 31 0A
;; COM9: Rx: <+.0000330  V DC15> 2B 2E 30 30 30 30 33 33 30 20 20 56 20 44 43 31 35
;; 50PLUS: Rx <+.0000330  V DC15>
;; +.0000330  V DC15
It return 17 bytes instead of 15 (I've set 15 byte return value), witht that strange "15" at the end.
And if i do a second time the "txrx? G" it goes in timeout
Hi! Yes tested it but as you see the returned byte count cause problems
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 14, 2020, 04:49:59 pm
Trying to understand what's going on, i've played with realterm.
First of all, if before doing anything i do a read (at poweron or after a "clr 1" - that reset the gpib device at address 1) i get
Code: [Select]
send:
rd #100,1<cr>
72 64 20 23 31 30 30 2C 31 0D


receive:
37 31 35 30 2B 20 56 41 43 2E 41 43 0D 0A * 2B 2E 30 30 30 30 33 34 30 20
20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33 34 30 20 20 56 20 44 43 0D 0A
2B 2E 30 30 30 30 33 34 30 20 20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33
34 30 20 20 56 20 44 43 0D 0A 2B 2E 30 30 30 30 33 34 30 20 20 56 20 44
43 0D 0A 2B 31 30 30 0D 0A
 
7150+ VAC.AC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+.0000340  V DC<cr><lf>
+100<cr><lf>

Where is an * means that there was a little pause.
Here i can see that the solartron after every command send a <cr><lf>.
Maybe we can use a parameter like #gpibReadCount, eventually #gpibReadStopChar to stop the read also if the buffer isn't all received, but i've received the "end of data"? So we don't read any garbage.
It can be also seen that at the first read the meter output the model name, can this be useful?
It send the model name only if i not send anything before.
If for example i send an M? for asking the actual mode, it return the mode followed by cr lf
Other thing that can be noticed is that at the end of the 100byte buffer the gpib interface send the total bytes received, followed by <cr><lf>
Maybe this can be useful?
And here there are some thoughts
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2020, 05:01:05 pm
Hi! Yes tested it but as you see the returned byte count cause problems

Try use a slightly higher byte count, the code looks for a 0 byte and strips everything after it.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 14, 2020, 08:23:33 pm
With a buffer of 20 it still do sometimes strange things:
Code: [Select]
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; 50PLUS: Rx <M0>
txrx? M?
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; 50PLUS: Rx <M0>
;; M0
txrx? M?
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; 50PLUS: Rx <M0>
;; M0
txrx? M?
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <4> 34
;; 50PLUS: Rx <4>
;; 4
txrx? M?
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <4> 34
;; 50PLUS: Rx <4>
;; 4

I've repeated several times the M? command and after some tries it goes crazy. If sending manually the txrx? G for read the current value, after smoe tries it return timeout
The "4" returned now seem the received byte count (M0 CR LF)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2020, 08:14:13 am
I've repeated several times the M? command and after some tries it goes crazy. If sending manually the txrx? G for read the current value, after smoe tries it return timeout
The "4" returned now seem the received byte count (M0 CR LF)

I am a bit puzzled about what goes on. Before each communication I flush the communication buffer, i.e. it cannot be old data, but I do not flush anything between the writes and read, except if I get a zero byte?
Could there be some extra 0 bytes?
I have uploaded a new version (0.88) that strips any leading or trailing zero bytes, before checking for zero bytes in the message (I doubt it will help).
I have also added code to show when I flush and the raw received data (Only on console output).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 15, 2020, 08:31:22 am
Really strange. this evening i'll try the new version.
And try try also doing the same thing manually with realterm to see what's going on. can't the bytecount be used to do a basic "error checking" of the transmission?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2020, 08:50:06 am
can't the bytecount be used to do a basic "error checking" of the transmission?

Yes and no, the driver I am using is the line based driver, i.e. it will terminate reception on a CR or LF character. This basically means that if I get a answer like M0<CR><LF>4 the driver will return M0 and next read will return 4. Because I flush the receive buffer I am not supposed to ever see the 4.
If the answer is like: M0<00><00><00>4<CR><LF> the driver will return the full line, but the NI interface will spot the zeroes and strip them together with anything after them.
Title: Re: Program that can log from many multimeters.
Post by: MiroS on June 15, 2020, 09:34:22 am
Hi,
I started using it yesterday to grab 1(t) response from heating object to model DUT, program is very usefull for my purpose.
Please see the list of possible improvements:

1. Start, pause,stop buttons would be nice addtion.
2. Automatic triggering would be very usefull, e.g. start logging if measured value is 'bigger/equal/less than'
3. Clear button for content of table /chart, now I have to leve program and run it again
4. I see that quite often at first run program is hanging, I have to kill it and start it again, killing in Windows 10 sometimes has trouble to kill this app

Other than that I found it quite usefull   :-+





Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2020, 10:04:32 am
1. Start, pause,stop buttons would be nice addtion.

You have start and stop buttons.
Why a pause button,, you can log for a very log time.

2. Automatic triggering would be very usefull, e.g. start logging if measured value is 'bigger/equal/less than'
You can do that with scripting. Write something like this in the log window:

#wait dmmName.voltageDC>10
#log 1

Then press "Run"

3. Clear button for content of table /chart, now I have to leve program and run it again
The table/chart will automatic clear when you start a new log.

4. I see that quite often at first run program is hanging, I have to kill it and start it again, killing in Windows 10 sometimes has trouble to kill this app
I have never seen this and due to that it is a bit hard to fix.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 15, 2020, 10:46:53 am
can't the bytecount be used to do a basic "error checking" of the transmission?

Yes and no, the driver I am using is the line based driver, i.e. it will terminate reception on a CR or LF character. This basically means that if I get a answer like M0<CR><LF>4 the driver will return M0 and next read will return 4. Because I flush the receive buffer I am not supposed to ever see the 4.
If the answer is like: M0<00><00><00>4<CR><LF> the driver will return the full line, but the NI interface will spot the zeroes and strip them together with anything after them.
Uh, ok, obviously if the driver is a cr/lf line based, it's quite difficult.
Actually the NI interface send all the 00's.
If i read a 4 byte with a 10 byte buffer (like M 0 CR LF) in realterm i read "M 0 CR LF 0x00 0x00 0x00 0x00 0x00 0x00 1 0 CR LF"
Title: Re: Program that can log from many multimeters.
Post by: MiroS on June 15, 2020, 11:08:19 am
>You have start and stop buttons.
Where they are ? I can see Start/Stop in timer , but this actually is not stopping grabing data, e.g  in Chart tab

Pause is usefull e.g. if you will pause DUT to bring a cup of tee or you will know that next hour nothing usefull will not happened or  no need to capture useless data just waiting for event to restart capturing data.
I think Pause can be scripted as well - I could net find a description for commands other in exaples, but I think with some experiments I can learn myself how to use it, anyway that would be bit wired setup for Pause :)

>The table/chart will automatic clear when you start a new log.
OK, but I think it will be still usefull, like cleanning chart , but lesving table, or the other way, or both.

>I have never seen this and due to that it is a bit hard to fix.
OK, clear. Java is wired/not very reliable  framework. There is something happening with connections , in my setup I have UT61E to grab current and BM869s to temperature. This is requireing to add/remodve/reconnect a few times before they will work at the same time, sometim it will stick to UT61E hard that even if I remove it Current valuse will show UT61E as DC volatege , no matter that UT61E is on AC Amp range. I think that may be something close to Java framework used for communication.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2020, 11:31:19 am
If i read a 4 byte with a 10 byte buffer (like M 0 CR LF) in realterm i read "M 0 CR LF 0x00 0x00 0x00 0x00 0x00 0x00 1 0 CR LF"

According to some of you examples above, there is not always a CR LF after the data and before the byte count.
But as I wrote above a multi line answer is handled: Anything after the first line is thrown away.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2020, 11:44:01 am
>You have start and stop buttons.
Where they are ? I can see Start/Stop in timer , but this actually is not stopping grabing data, e.g  in Chart tab

The log button is the start/stop button.


Pause is usefull e.g. if you will pause DUT to bring a cup of tee or you will know that next hour nothing usefull will not happened or  no need to capture useless data just waiting for event to restart capturing data.

The captured may not be needed, but the software has no problem handling them. It may get a bit slow if you capture millions of data points, but that takes days.

I think Pause can be scripted as well - I could net find a description for commands other in exaples, but I think with some experiments I can learn myself how to use it, anyway that would be bit wired setup for Pause :)
Commands are documented in the help window, type a # in the command line.
You cannot pause logging.



>The table/chart will automatic clear when you start a new log.
OK, but I think it will be still usefull, like cleanning chart , but lesving table, or the other way, or both.

The table and charts are linked together. The chart will always show data from the table.
You can always disable curves in the chart.


OK, clear. Java is wired/not very reliable  framework. There is something happening with connections , in my setup I have UT61E to grab current and BM869s to temperature. This is requireing to add/remodve/reconnect a few times before they will work at the same time, sometim it will stick to UT61E hard that even if I remove it Current valuse will show UT61E as DC volatege , no matter that UT61E is on AC Amp range. I think that may be something close to Java framework used for communication.

In my experience Java is very reliable and nearly never crashes.
The library I uses to handle USB HID has some problems and my workaround is not perfect.
Serial interfaces works fairly well, but if you remove a USB interface and then reconnect it, you need to do a reconnect.
It will not help to add/remove devices, it is not related to the connection, but is only a shorthand list of devices to select from.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 15, 2020, 12:01:52 pm
Uhm, as i remember i've never seen a cr lf before the byte count. The bytecount is placed after the buffer (filled by 0x00's if the data not fill the buffer) and followed by cr lf
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 15, 2020, 01:27:41 pm
Where do I add \n or is this a scope bug that I can't fix.

It is something to do with the scope. Some ideas:
1) Longer timeout, maybe the timeout is too short.
2) Because you are using ascii driver, you can do a trick: Send this command with "tx", then send another command that will answer. You are now supposed to get both answers on the same line.

HKJ,

I reported this issue to Siglent, hopefully they will fix it soon, below is their response.

Hi Mike

Thanks for your feedback. It does be a issue. I have forwarded to our R&D department and the engineers will fix it asap.

Thank you and have a good day.


Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 15, 2020, 10:09:29 pm
Where do I add \n or is this a scope bug that I can't fix.

It is something to do with the scope. Some ideas:
1) Longer timeout, maybe the timeout is too short.
2) Because you are using ascii driver, you can do a trick: Send this command with "tx", then send another command that will answer. You are now supposed to get both answers on the same line.

HKJ,

I tried LXI mode and now I am able to get the values to read. I am having issue writing the readmath, how do I have all 3 values to read correctly 

Code: [Select]
;; 17:50:14.852 SDS1204XE: Tx <C1:PAVA? RMS>
;; 17:50:15.187 SDS1204XE: Rx <RMS,6.22E-01
>
;; 17:50:15.189 SDS1204XE: Tx <C2:PAVA? RMS>
;; 17:50:15.524 SDS1204XE: Rx <RMS,7.09E-01
>
;; 17:50:15.526 SDS1204XE: Tx <C1-C2:MEAD? FRR>
;; 17:50:16.541 SDS1204XE: Rx <FRR,9.21E-05>
;; 17:50:16.542 SDS1204XE: Rx after :readmath: getElement(value,1,",") <6.22E-01 RMS>
;; 17:50:16.543 SDS1204XE: Rx as numbers <0.622 0.0>
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 15, 2020, 10:32:35 pm
New version, nothing changed.
One thing to notice is that it remain stuck always at the 3° send of the txrx? m? (like in the previous "dump")

Some data playing by hand with realterm:
Code: [Select]
tx c63 l6C r72  20 131  0D                                                         
tx W57 R52 T54  20 131  0D  0A
tx T54 030  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F 0D  0A
tx T54 M4D O4F  20 131 .2E 030  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D  0A
rx (after timeout) 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D  0A 
rx (after timeout) 00  00  00  00  00  00  00  00  00  00  00 00  00  00  00  00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D  0A 
rx (after timeout)00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D  0A
rx (after timeout)00  00  00 00  00  00  00  00  00  00  00  00  00  00  00  00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D 0A
rx (after timeout)00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D 0A
rx M4D 030  0D  0A 
rx (after timeout)00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 00 434  0D  0A
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
tx R52 D44  20 #23 232 030 ,2C 131  0D  0A
rx M4D 030  0D  0A
rx (after timeout)00  00  00  00  00  00  00  00  00  00  00 00  00  00  00  00 434  0D  0A

all work as it should... The only difference that i see is that using copy paste from notepad it paste a cr lf
If after the "bug" i exit testcontroller, and open the serial port with realterm, and sent the same request, it works:
Code: [Select]
tx W57 R52 T54  20 131  0D  0A
tx M4D ?3F  0D  0A
R52 D44  20 #23 232 030 ,2C 131  0D 0A
rx M4D 030  0D  0A
rx (after timeout) 00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 00 434  0D  0A

There are some other tests that i can try?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2020, 07:04:46 am
New version, nothing changed.

I do not see any logs from it with Raw and flush tags.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 16, 2020, 07:33:07 am
Sorry, I've not included them. But i've not notice any difference from the logs of the Previous versions. I not used the zip from the site as was missing the ni gpib driver, so i'm using the last jar file
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2020, 07:48:55 am
Sorry, I've not included them. But i've not notice any difference from the logs of the Previous versions. I not used the zip from the site as was missing the ni gpib driver, so i'm using the last jar file

With these intermittent updates you use the zip as a base and then replace the jar.  The current jar is V0.88
The extra logging is only to the dos window, not the log window of TestController.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 16, 2020, 08:41:16 am
Yes, correct, Before I've uncompressed the zip, when i've seen the missing NI card i've overwrited the jar.
This evening i'll check on the dos window...
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 16, 2020, 09:41:54 pm
Got the problem. with TMO set at 1.0 i can read values at max 1hz rate. if i do it faster, it give the problems. I've tried to send manually a tmo .1,.1 but not seem better.
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 1.0.> 54 4D 4F 20 31 2E 30 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>
txrx? m?
;; 50PLUS: Tx <txrx? m?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <m?.> 6D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>
;; M0

txrx? m?
;; 50PLUS: Tx <txrx? m?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <m?.> 6D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>
;; M0
txrx? m?
;; 50PLUS: Tx <txrx? m?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <m?.> 6D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <4> 34
Raw: 34
;; 50PLUS: Rx <4>
;; 4
txrx? m?
;; 50PLUS: Tx <txrx? m?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <m?.> 6D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <4> 34
Raw: 34
;; 50PLUS: Rx <4>
;; 4
txrx? m?
;; 50PLUS: Tx <txrx? m?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <m?.> 6D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>
;; M0

I've seen the end gpib command, that must flush the buffer immediately. Can't be used to speed up things?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 16, 2020, 11:03:20 pm
Below is a Bode Plot using Test Controller and a comparison with Siglent SDS1204X-E doing the same Bode Plot of a 20k low pass filter. Also attached is the script used and a device file for the Siglent SDS1204X-E, the device file is very rough just enough to do the Bode Plot.

[attachimg=1]
[attachimg=2]
[attach=3]
[attach=4]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2020, 09:32:09 am
Got the problem. with TMO set at 1.0 i can read values at max 1hz rate. if i do it faster, it give the problems. I've tried to send manually a tmo .1,.1 but not seem better.
I've seen the end gpib command, that must flush the buffer immediately. Can't be used to speed up things?

I cannot flush the buffer in the NI interface, but I have changed some other stuff:

Minimum timeout can now be specified down to 0.7sec

In the definition it is posssble to use "#gpibReadEol characterDecimalCode" to define a EOL character. This will usually be something like:
#gpibReadEol 10
Command is translated to "EOS R,10"

It is also possible to use:
#gpibReadEol eoi
This is the default setting for NI, but I do not know if it looks for the EOI signal (Command is translated to: "EOS D").


I hope this will fix the waiting for timeout.
Version is 0.89

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 17, 2020, 09:51:06 am
I've read a bit better the manual, and seem that the eos can solve the "wait" problem after the answer (before sending the filling 0x00, after the timeout).
I've not fully understood the eoi part, as it must do what we want (the talker sends the signal that the transmission is ended), but in any case the eos must be enough.

Really thanks, this evening i'll try it!
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 17, 2020, 09:29:45 pm
Uhm, in the definition file i've specified
#gpibReadEol 10
but i get an
EOS R,49
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <EOS R,49.> 45 4F 53 20 52 2C 34 39 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>

Tried also with #gpibReadEol 13, same thing.

Tested also the #gpibReadEol eoi, but seem not interpreted as i not see the command to the GPIB inetrface:
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
Raw: 4D 30
;; 50PLUS: Rx <M0>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2020, 06:54:44 am
Uhm, in the definition file i've specified
#gpibReadEol 10
but i get an
EOS R,49

That is the problem with untested code, I do not catch the silly bugs. I hope it is fixed now.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 18, 2020, 10:10:23 am
No problem! This evening i'll try it, thanks!!
Title: Re: Program that can log from many multimeters.
Post by: HighVoltage on June 18, 2020, 10:33:39 am
Bookmarked

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 18, 2020, 12:50:03 pm
HKJ,

How do I write the #askValuesMathFormat to remove the NaN.  I tried getElement(value,1,",") but this did not work.

Code: [Select]
;; 08:43:49.193 SDS1204XE: Tx <C1-C2:MEAD? PHA>
;; 08:43:49.586 SDS1204XE: Rx <PHA,-30.38>
;; 08:43:49.586 SDS1204XE: Tx <C1:PAVA? RMS>
;; 08:43:49.651 SDS1204XE: Rx <RMS,1.51E+00
>
;; 08:43:49.652 SDS1204XE: Tx <C2:PAVA? RMS>
;; 08:43:49.735 SDS1204XE: Rx <RMS,1.76E+00
>
;; 08:43:49.736 SDS1204XE: Rx as numbers <NaN -30.38 NaN 1.51 NaN 1.76>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2020, 01:23:49 pm
HKJ,

How do I write the #askValuesMathFormat to remove the NaN.  I tried getElement(value,1,",") but this did not work.

;; 08:43:49.736 SDS1204XE: Rx as numbers <NaN -30.38 NaN 1.51 NaN 1.76>

The easiest way is to use #askValuesReadFormat instead, it is designed to handle this type of format:

#askValuesReadFormat xfxf

Will skip 1 and 3 item and return 2 and 4 item as numbers.



Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 18, 2020, 01:28:05 pm
HKJ,

How do I write the #askValuesMathFormat to remove the NaN.  I tried getElement(value,1,",") but this did not work.

;; 08:43:49.736 SDS1204XE: Rx as numbers <NaN -30.38 NaN 1.51 NaN 1.76>

The easiest way is to use #askValuesReadFormat instead, it is designed to handle this type of format:

#askValuesReadFormat xfxf

Will skip 1 and 3 item and return 2 and 4 item as numbers.

HKJ,

Works perfect

Thanks
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 18, 2020, 09:22:29 pm
Seem all good!!
Now reading the m? several times it not give any problem!

When requesting the data (g command) there is a wait after sending the request and the answer, but i think that is normal.
In T0 mode the meter is in hold state, so also the display does not update, and i think the ADC isn't working. When you request the data it takes the samples and when the conversion, averaging, etc are taken it display the result.

There is still one thing to fix: At the first start it not answer correctly:
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx A; tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <A; tx T0.> 41 3B 20 74 78 20 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <7150+ VAC.AC> 37 31 35 30 2B 20 56 41 43 2E 41 43
Raw: 37 31 35 30 2B 20 56 41 43 2E 41 43
;; 50PLUS: Rx <7150+ VAC.AC>
Unknown mode: 7150+ VAC.AC
Known modes: M0,
I think that the TMO and EOS commands are better to be placed before the wrt for asking the mode.

Curious thing: if i go in the current values window it query correctly the value (after the first one):
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx AT0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <AT0.> 41 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <7150+ VAC.AC> 37 31 35 30 2B 20 56 41 43 2E 41 43
Raw: 37 31 35 30 2B 20 56 41 43 2E 41 43
;; 50PLUS: Rx <7150+ VAC.AC>
Unknown mode: 7150+ VAC.AC
Known modes: M0,
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
Raw: 30
;; 50PLUS: Rx <0>
;; 50PLUS: Rx as numbers <0.0>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0000300  V DC> 2B 2E 30 30 30 30 33 30 30 20 20 56 20 44 43
Raw: 2B 2E 30 30 30 30 33 30 30 20 20 56 20 44 43
;; 50PLUS: Rx <+.0000300  V DC>
;; 50PLUS: Rx as numbers <3.0E-5 NaN NaN>

But if i do it manually from the command window (the same "txrx? G" command), it not work as it should:
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx AT0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <AT0.> 41 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <7150+ VAC.AC> 37 31 35 30 2B 20 56 41 43 2E 41 43
Raw: 37 31 35 30 2B 20 56 41 43 2E 41 43
;; 50PLUS: Rx <7150+ VAC.AC>
Unknown mode: 7150+ VAC.AC
Known modes: M0,
txrx? G
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
Raw: 30
;; 50PLUS: Rx <0>
;; 0
txrx? G
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.+.0000300  V DC> 2B 2E 2B 2E 30 30 30 30 33 30 30 20 20 56 20 44 43
Raw: 2B 2E 2B 2E 30 30 30 30 33 30 30 20 20 56 20 44 43
;; 50PLUS: Rx <+.+.0000300  V DC>
;; +.+.0000300  V DC
txrx? G
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
Raw: 30
;; 50PLUS: Rx <0>
;; 0

txrx? G
;; 50PLUS: Tx <txrx? G>
Flush
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.2> 2B 2E 32
Raw: 2B 2E 32
;; 50PLUS: Rx <+.2>
;; +.2

In any case now i can start to work on the definition file... And i need to play with the output data format as seem that Si not handle it, and also see if i can read at poweron the model name to verify  that it match the definition file.
Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2020, 07:33:32 am
A few comments:

With Ascii devices a ; in tx/txrx/txrx? definition is transmitted, not used to split commands. You can still use ; on the SCPI level to split commands.

The reason I do all the settings before the RD command is to support multiple devices on the same GPIB bus with different settings. The code keeps track of the actual setting and will only use a command if a setting have to be changed, i.e. with one device you will usually only see them once.

SCPI & ASCII drivers can only handle a command and optional answer scheme, they are not designed for devices that stream values. That is the reason you have to use the T0 mode. A driver like SingleValue is designed to handle streaming devices, but cannot do any control.

The SI format (like the other formats) is only a formatter, it do not have anything to do with reading the value from the device.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 19, 2020, 08:31:37 am
A few comments:

With Ascii devices a ; in tx/txrx/txrx? definition is transmitted, not used to split commands. You can still use ; on the SCPI level to split commands.
I think that you are referring to the try to send A (reset) and after the T0 command, to be sure to reset any previous setting set on the meter (and on exit i do the same)
I've tried to  do "tx A; tx T0", tx A; T0" but none worked, so i've done "tx AT0" ad is working as it should as the meter accept commands in cascade.

The reason I do all the settings before the RD command is to support multiple devices on the same GPIB bus with different settings. The code keeps track of the actual setting and will only use a command if a setting have to be changed, i.e. with one device you will usually only see them once.
With only the TMO was all ok, but after adding the EOS, the device seem to reset the M? request, and output the model (like it has not received the "M?" request)

SCPI & ASCII drivers can only handle a command and optional answer scheme, they are not designed for devices that stream values. That is the reason you have to use the T0 mode. A driver like SingleValue is designed to handle streaming devices, but cannot do any control.
Yeah, do know that, was only a thing that i've noticed, when the program read in sequence it's absolutely not a problem.

The SI format (like the other formats) is only a formatter, it do not have anything to do with reading the value from the device.
Yes, do know that, i've only noticed that the SI format wasn't handling the "+.0000000" format
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2020, 09:11:14 am
I think that you are referring to the try to send A (reset) and after the T0 command, to be sure to reset any previous setting set on the meter (and on exit i do the same)

That is correct.


With only the TMO was all ok, but after adding the EOS, the device seem to reset the M? request, and output the model (like it has not received the "M?" request)

I have made a change (V0.91), it will also send the EOS command during initialization, this means only if you have two devices with different EOS settings will it try to send the command before doing a RD


Yes, do know that, i've only noticed that the SI format wasn't handling the "+.0000000" format

Again, it is not the SI format that fails, but the number parsing. It do not like a number starting with a .
Try adding a :readmath: or #askValuesMathFormat (Name depends on where you use it) with something like: replace(replace(value,"+.","0."),"-.","-0.");

Title: Re: Program that can log from many multimeters.
Post by: SharpDome on June 19, 2020, 05:04:59 pm
I'm using a Brymen BM829s. I'm getting inconsistent behavior measuring DC volts. 

With the meter showing 9.313 DC volts on its screen using the DC volts dial position, the "Current values" tab shows negative infinity:

Code: [Select]
Name         Unit Current Minimum Maximum Range Average Slope
BM829.VoltageDC V -∞ 0 0 0 0 -

If I switch to the "Auto Check" dial position, the voltage is displayed correctly, but with no decimal places. "Current values" also sometimes switches to negative infinity, and back to 9 volts.

Code: [Select]
Name         Unit Current Minimum Maximum Range Average Slope
BM829.VoltageDC V 9 6.17 9 2.83 8.21965 30.1767m

Am I doing something wrong with my settings or how I'm using the application, or is something else going on?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2020, 05:12:08 pm
I'm using a Brymen BM829s. I'm getting inconsistent behavior measuring DC volts. 

Am I doing something wrong with my settings or how I'm using the application, or is something else going on?

The problem may be my USBHID code. Try starting the program in debug mode with the .bat file, it shows what is going on.
Title: Re: Program that can log from many multimeters.
Post by: SharpDome on June 19, 2020, 05:45:20 pm
I ran the debug mode and logged the output to a text file. While on the DCV dial setting, it starts with a few NaN and then just loops over and over with -Infinity:

Code: [Select]
Starting
;; Start thread for: HIDv0820p0001 - Brymen BM829s
;; HIDv0820p0001: Found usb device: \\?\hid#vid_0820&pid_0001#7&2ea69c6a&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
;; Found Brymen BM829s on HIDv0820p0001
;; BM829: Tx <VALUE?>
;; BM829: Rx <>
;; BM829: Rx as numbers <NaN>
;; BM829: Tx <VALUE?>
;; BM829: Rx <>
;; BM829: Rx as numbers <NaN>
;; BM829: Tx <VALUE?>
;; BM829: Rx <>
;; BM829: Rx as numbers <NaN>
;; BM829: Tx <VALUE?>
;; BM829: Rx <-?>
;; BM829: Rx as numbers <-Infinity>
;; BM829: Tx <VALUE?>
;; BM829: Rx <-?>
;; BM829: Rx as numbers <-Infinity>
;; BM829: Tx <VALUE?>
;; BM829: Rx <-?>
;; BM829: Rx as numbers <-Infinity>

When in the Auto Check dial position, the values seem to start OK, but then fall back to -Infinity. The correct values seem to correlate with when the Auto Check function is showing a changing voltage reading, but then fall back to -Infinity once the value stabilizes and is no longer changing:

Code: [Select]
Starting
;; Start thread for: HIDv0820p0001 - Brymen BM829s
;; HIDv0820p0001: Found usb device: \\?\hid#vid_0820&pid_0001#7&2ea69c6a&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
;; Found Brymen BM829s on HIDv0820p0001
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <-?>
;; BM829: Rx as numbers <-Infinity>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>
;; BM829: Tx <VALUE?>
;; BM829: Rx <9>
;; BM829: Rx as numbers <9.0>

Out of curiosity, I tried the DCV dial position again and noticed that as long as the voltage reading is changing on the DMM screen, then a value is being correctly reported. When the reading is no longer changing, -Infinity is the result.

Also, as mentioned, even when the values are being correctly read, they are only showing a single digit, and not the 4 digits displayed on the DMM screen.

Hope this helps!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2020, 05:51:54 pm
I ran the debug mode and logged the output to a text file. While on the DCV dial setting, it starts with a few NaN and then just loops over and over with -Infinity:

Code: [Select]
Starting
;; BM829: Tx <VALUE?>
;; BM829: Rx <>
;; BM829: Rx as numbers <NaN>
;; BM829: Tx <VALUE?>
;; BM829: Rx <>
;; BM829: Rx as numbers <NaN>

What I notice is the missing answers (Rx <>), I will try checking tomorrow, but most likely my computer works. This means I cannot solve it (I do not want to get into low level cross platform programming).
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 19, 2020, 10:03:47 pm
almost there
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <init>
;; National Instruments GPIB-232CT A:1: Tx <tx AT0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <AT0.> 41 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; 50PLUS: Tx <mode?>
;; 50PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <7150+ VAC.AC> 37 31 35 30 2B 20 56 41 43 2E 41 43
;; 50PLUS: Rx <7150+ VAC.AC>
Unknown mode: 7150+ VAC.AC
Known modes: M0,
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: timeout
;; 50PLUS: Rx <null>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <null>
;; 50PLUS: Rx as numbers <0.0>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16130  V DC> 2B 31 34 2E 31 36 31 33 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16130  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16130  V DC>
;; 50PLUS: Rx as numbers <14.1613>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16160  V DC> 2B 31 34 2E 31 36 31 36 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16160  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16160  V DC>
;; 50PLUS: Rx as numbers <14.1616>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16170  V DC> 2B 31 34 2E 31 36 31 37 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16170  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16170  V DC>
;; 50PLUS: Rx as numbers <14.1617>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16170  V DC> 2B 31 34 2E 31 36 31 37 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16170  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16170  V DC>
;; 50PLUS: Rx as numbers <14.1617>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16170  V DC> 2B 31 34 2E 31 36 31 37 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16170  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16170  V DC>
;; 50PLUS: Rx as numbers <14.1617>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16180  V DC> 2B 31 34 2E 31 36 31 38 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16180  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16180  V DC>
;; 50PLUS: Rx as numbers <14.1618>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16180  V DC> 2B 31 34 2E 31 36 31 38 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16180  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16180  V DC>
;; 50PLUS: Rx as numbers <14.1618>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16190  V DC> 2B 31 34 2E 31 36 31 39 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16190  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16190  V DC>
;; 50PLUS: Rx as numbers <14.1619>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16190  V DC> 2B 31 34 2E 31 36 31 39 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16190  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16190  V DC>
;; 50PLUS: Rx as numbers <14.1619>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16190  V DC> 2B 31 34 2E 31 36 31 39 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16190  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16190  V DC>
;; 50PLUS: Rx as numbers <14.1619>
;; 50PLUS: Tx <values?>
;; 50PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+14.16200  V DC> 2B 31 34 2E 31 36 32 30 30 20 20 56 20 44 43
;; 50PLUS: Rx <+14.16200  V DC>
;; 50PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <+14.16200  V DC>
;; 50PLUS: Rx as numbers <14.162>

I not understand why, but the first read value is always "7150+ VAC.AC". Maybe as the first thing that i do is a reset, it put it in the output buffer also if then i ask the mode with m? (before now, sending manual commands i never noticed it, seemed that asking the mode cancelled the first read of the model name)

Can i, in the definition, do a read of this value at init for get the model number?

Using
Code: [Select]
#verifyDevice 7150+ Model?
#scpiCmd Model? txrx?


i get
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; : Tx <txrx?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <.> 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; National Instruments GPIB-232CT A:1: **Device do not match** <0>

And... why at this read it not output the model? tomorrow i'll play a bit more...
One question, i've tried "#verifyDevice 7150+ VAC.AC Model?" but it crashes, i need "7150+ VAC.AC" between '' or ""?
Title: Re: Program that can log from many multimeters.
Post by: SharpDome on June 19, 2020, 10:24:12 pm
What I notice is the missing answers (Rx <>), I will try checking tomorrow, but most likely my computer works. This means I cannot solve it (I do not want to get into low level cross platform programming).

Sounds good, thank you. If it helps, my desktop environment is Windows 10 Pro x64, and I was using JRE 8u251.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 20, 2020, 03:24:39 am
Attached is a device file that supports the below Siglent Scopes, the only scope tested is the SDS1204X-E. The file is still a work in progress. The file is setup to log C1-C4 V RMS and C1-C4 V Pk-Pk. Please let me know if you find any issues with the file or any suggestions

Siglent SDS1052A, Siglent SDS1052DL+, Siglent SDS1072A, Siglent SDS1072CFL, Siglent SDS1072X-E, Siglent SDS1074CFL, Siglent SDS1074X-E, Siglent SDS1102A, Siglent SDS1102CFL, Siglent SDS1102CML+, Siglent SDS1102X, Siglent SDS1102X+, Siglent SDS1102X-C, Siglent SDS1102X-E, Siglent SDS1104CFL, Siglent SDS1104X-C, Siglent SDS1104X-E, Siglent SDS1122E+, Siglent SDS1152A, Siglent SDS1152CML+, Siglent SDS1202CFL, Siglent SDS1202F+, Siglent SDS1202X, Siglent SDS1202X+, Siglent SDS1202X-C, Siglent SDS1202X-E, Siglent SDS1204CFL, Siglent SDS1204X-C, Siglent SDS1204X-E, Siglent SDS1302CFL, Siglent SDS1304CFL, Siglent SDS2072, Siglent SDS2072X, Siglent SDS2074, Siglent SDS2074X, Siglent SDS2102, Siglent SDS2102X, Siglent SDS2102X-E, Siglent SDS2104, Siglent SDS2104X, Siglent SDS2202, Siglent SDS2202X, Siglent SDS2202X-E, Siglent SDS2204, Siglent SDS2204X, Siglent SDS2302, Siglent SDS2302X, Siglent SDS2304, Siglent SDS2304X, Siglent SDS2352X-E

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 06:17:41 am
Attached is a device file that supports the below Siglent Scopes, the only scope tested is the SDS1204X-E. The file is still a work in progress. The file is setup to log C1-C4 V RMS and C1-C4 V Pk-Pk. Please let me know if you find any issues with the file or any suggestions

I will include it, but maybe adding a note describing that it uses the scope as a voltmeter would be a good idea.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 06:53:54 am
Can i, in the definition, do a read of this value at init for get the model number?

Using
Code: [Select]
#verifyDevice 7150+ Model?
#scpiCmd Model? txrx?

One question, i've tried "#verifyDevice 7150+ VAC.AC Model?" but it crashes, i need "7150+ VAC.AC" between '' or ""?

The problem is that the device id is only one word in #verifyDevice
The trick is to replace spaces with _:
#verifyDevice 7150+_VAC.AC Model?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 08:47:30 am
Sounds good, thank you.

I was convinced I had checked the BM829 multiple times, but the segment definitions was wrong, it works now.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 08:49:01 am
V0.92 is up

There is nothing really new in it:
   Support for National Instruments GPIB-232CT is added.
   Fixed bug in Brymen BM829s, BM827s, BM822s, BM821s
   Added Siglent scopes as voltmeters (Thanks to MikeLud).
   Charts could have a scale problem if maximum was equal or lower than minimum, this is fixed.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 11:34:44 am
Managed to get it work, but had to remove the reset at connect. And i'm not able to read the model number (that is presented after a reset).
Tried also with
Code: [Select]
#verifyDevice 7150+_VAC.AC Reset;Model?
#scpiCmd Reset tx A
#scpiCmd Model? txrx?

but nothing. In any case it's a non blocking thing.

Some question:
Seem that i can't switch from remote to local. In remote it goes as soon as the meter receive a GPIB command, but at disconnect i can only do a reset (or manually press the local button on the front panel. Seem that there is a GTL command to do that, but doing a "tx GTL" does nothing. I think that is a command at GPIB level.

Another one:
Somethimes the meter does strange things:
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.M1> 2B 2E 4D 31
;; SOL7150PLUS: Rx <+.M1>
Unknown mode: +.M1
Known modes: M0, M1,

The "+." seem a residue of a previous buffer.

Then, while in VDC i can always get a coorect value, every sample taken,in VAC sometimes the meter return nothing.
Code: [Select]
Starting
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Tx <tx M1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M1.> 4D 31 0A
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M1> 4D 31
;; SOL7150PLUS: Rx <M1>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.+.0002990  V AC> 2B 2E 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002990  V AC> 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <2.99E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003000  V AC> 2B 2E 30 30 30 33 30 30 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003000  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003000  V AC>
;; SOL7150PLUS: Rx as numbers <3.0E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0003010  V AC> 2B 2E 30 30 30 33 30 31 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0003010  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0003010  V AC>
;; SOL7150PLUS: Rx as numbers <3.01E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002980  V AC> 2B 2E 30 30 30 32 39 38 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002980  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002980  V AC>
;; SOL7150PLUS: Rx as numbers <2.98E-4>
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0002990  V AC> 2B 2E 30 30 30 32 39 39 30 20 20 56 20 41 43
;; SOL7150PLUS: Rx <+.0002990  V AC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(value,"+.","0."),"-.","-0."); <0.0002990  V AC>
;; SOL7150PLUS: Rx as numbers <2.99E-4>

How i can filter those null readings?
For decoding the value i'm using
Code: [Select]
#askValues txrx? G
#askValuesReadFormat u
#askValuesMathFormat replace(replace(value,"+.","0."),"-.","-0.");


Thanks, and sorry to bother you so much :(
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 02:28:12 pm
Seem that i can't switch from remote to local. In remote it goes as soon as the meter receive a GPIB command, but at disconnect i can only do a reset (or manually press the local button on the front panel. Seem that there is a GTL command to do that, but doing a "tx GTL" does nothing. I think that is a command at GPIB level.

You cannot do commands to the GPIB interface, the idea is the different GPIB interfaces all works with the same device definition (There will probably be a few exceptions) and also that the same device definitions can handle multiple interfaces on the same device.

Then, while in VDC i can always get a coorect value, every sample taken,in VAC sometimes the meter return nothing.

You may need a longer timeout value (It is called #readingDelay).


You may also want to play with #cmdSetup, that way you can change range and mode of the meter.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 02:41:04 pm
You cannot do commands to the GPIB interface, the idea is the different GPIB interfaces all works with the same device definition (There will probably be a few exceptions) and also that the same device definitions can handle multiple interfaces on the same device.
And adding an option on the gpib setup window to send the commands REN and GTL to the gpib address so that can be done separately for every device?

You may need a longer timeout value (It is called #readingDelay).
I'll try it, thanks!
You may also want to play with #cmdSetup, that way you can change range and mode of the meter.
Ok, i'll do it
Title: Re: Program that can log from many multimeters.
Post by: SharpDome on June 20, 2020, 02:43:38 pm
I was convinced I had checked the BM829 multiple times, but the segment definitions was wrong, it works now.

I just tested the updated version and everything is now working as expected with my BM829s. Thank you!
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 04:32:38 pm
The "#readingDelay" seem to not do nothing, i've tried values from 1 to 10000, and nothing change.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 04:47:43 pm
The "#readingDelay" seem to not do nothing, i've tried values from 1 to 10000, and nothing change.

It looks like I am only using it for SCPI devices, I will fix that tomorrow.
You can use #gpibWriteReadDelay to give the meter more time for doing the conversion. The time is in milliseconds, i.e. a value around 500 is probably fine.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 05:35:19 pm
It works! 500ms do the job.
I was playing with cmdsetup, using as template one made by Mikelud...  :scared: :scared: Really complex! First it's better that i get all modes working.
I was searching on the other definitions but i've not found, how to apply a math only to one mode (the meters return kohm, and i want to multiply by 1000 for have ohm).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2020, 05:56:53 pm
I was playing with cmdsetup, using as template one made by Mikelud...  :scared: :scared: Really complex! First it's better that i get all modes working.

MikeLud is very good at using the #cmdSetup definitions and has made some great device definitions with it, but it is not required to make them as complete as he do.
Check the documentation: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu

I was searching on the other definitions but i've not found, how to apply a math only to one mode (the meters return kohm, and i want to multiply by 1000 for have ohm).

I will have to think a bit about this, the software do not have an easy to way to apply scale factors to some modes. Depending on parser used for the value it may handle a trailing k as a factor 1000.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 08:50:42 pm

I will have to think a bit about this, the software do not have an easy to way to apply scale factors to some modes. Depending on parser used for the value it may handle a trailing k as a factor 1000.
On the other driver i used the SI decoding (in the protek) and the testcontroller was handling it ok.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 20, 2020, 11:44:57 pm
I was playing with the cmdsetup...
My meter is quite strange (and is also different from the manual!)
If i send a range request R? while in manual range mode, it answer for example R01 if in manual (0), range 200mV (1).
If i send a range request R? while in auto range mode, it answer for example R11 if in auto (1), range 200mV (1).
If i send an R0 it goes in auto mode.
If i send an R01 it goes in manual mode, range 1(200mv)
So, i've put a button for auto range, and a combo for the various ranges
Code: [Select]
#cmdSetup button Range_AUTO VDC
:write: R0

#cmdSetup comboboxHot Range VDC
:write: #
:read: Range?
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:
As i can't find another way to do it.
In any case, if i let the combo to sent the command, it not works, but if i send it manually, it works:

Code: [Select]
Sent from the combobox change:
;; SOL7150PLUS: Tx <R02>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R01> 52 30 31
;; SOL7150PLUS: Rx <R01>

Sent manually:
tx R02
;; SOL7150PLUS: Tx <tx R02>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R02.> 52 30 32 0A
txrx? R?
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R02> 52 30 32
;; SOL7150PLUS: Rx <R02>
;; R02
Why it has not sent the R02 code?

Would be nice also to leave the combobox without nothing selected if i press the auto button. Or would be great to have nothing selected of the read value isn't in the list.
I can't put the "auto" in the combobox as if i set to write the R0 command, it not select the auto item if (for example) "R11" is read from the meter.

Thanks!

---EDIT---

Got what i was doing wrong, the command needed to be:
:write: tx #
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 21, 2020, 07:20:07 am
A new .jar file (V0.93)
It will use the "#readingDelay" for gpib interfaces.
I have also added a SI decoder to the #askValuesReadFormat, use the letter s.

The letter must be next to the number, this means it may be necessary to extend the #askValuesMathFormat with something like:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," kohm","k ohm");

For your range selection you could add something like:
:readmath: replace(value,"R1","R0")
To make it show the actual range in auto ranging mode. It will not update when the range changes, you have to press "Setup" again to get it updated.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 09:18:40 am
I'll try it, thanks!
Sorry but in #value command, the "data type" isn't related to the format of the input string?
And, i've seen that the d type have only 6 decimal digits, but my meter can output also 7 digits...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 21, 2020, 09:45:33 am
Sorry but in #value command, the "data type" isn't related to the format of the input string?
And, i've seen that the d type have only 6 decimal digits, but my meter can output also 7 digits...

No. Input is parsed into a double, this is a very high precision value and is also used for all calculations.
The Dx & SI formats are used to format the double when showing the values.
The D6 is 6 digits after the decimal point, there may be 1 or more before the point.
When saving a CSV file it will have higher resolution than the table.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 10:07:46 am
Aaahhh ok i tought that the si was for the input parsing!

In any case,  now, when the meter output the 7 number after decimal point, isn't recognized as a valid number anymore.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 21, 2020, 10:20:42 am
In any case,  now, when the meter output the 7 number after decimal point, isn't recognized as a valid number anymore.

Show a log of what is going on and you definition.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 12:31:03 pm
The "#askValuesReadFormat s" seem to not work as it should:
Code: [Select]
#askValues txrx? G
#askValuesReadFormat s
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," ","");

Code: [Select]
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+0.000340  KOHM> 2B 30 2E 30 30 30 33 34 30 20 20 4B 4F 48 4D
;; SOL7150PLUS: Rx <+0.000340  KOHM>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <+0.000340KOHM>
;; SOL7150PLUS: Rx as numbers <NaN>


;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <+.0000290  V DC> 2B 2E 30 30 30 30 32 39 30 20 20 56 20 44 43
;; SOL7150PLUS: Rx <+.0000290  V DC>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <0.0000290VDC>
;; SOL7150PLUS: Rx as numbers <NaN>

The strings "+0.000340KOHM" and  "0.0000290VDC" seem correct. Tried also to remove the DC and OHM part without success


For the problem in 6.5 digit mode, it goes in rx timeout:
Code: [Select]
;; SOL7150PLUS: Tx <txrx? G>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <G.> 47 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Rx after :readmath: replace(replace(replace(value,"+.","0."),"-.","-0.")," ",""); <0>
;; SOL7150PLUS: Rx as numbers <0.0>
Tried to increase the #gpibWriteReadDelay up to 1000 without success.
If i exit the program, and do the request manually via realterm, it works:
Code: [Select]
w77 r72 t74  20 131  0D
g67 0D
r72 d64  20 #23 232 030 ,2C 131  0D
+2B .2E 030 030 030 030 333 030 838  20  20 V56  20 D44 C43  0D  0A
00  00  00 131 737  0D 0A
       

One more question, how i can enable (or made visible) a control only based on the selected mode?
With:
Code: [Select]
;Mode-------------------------------------------------------------------------------------------
#cmdSetup info ActiveMode
:read: Mode?
:readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";")
:updatemodechange:

;VDC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VDC
:write: tx #
:read: Range?
:enable: ActiveMode=="VDC"
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

It give me
Code: [Select]
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownException: Variable not found ActiveMode
ActiveMode==____<----____"VDC"

This is the current definition
Code: [Select]

#idString SOLARTRON,7150PLUS,
#name Solartron 7150Plus
#handle SOL7150PLUS
#driver Ascii
#port GPIB
#gpibReadCount 20
#gpibReadEol 10
;#gpibReadEol eoi

#gpibWriteReadDelay 500

;#verifyDevice 7150+_VAC.AC Reset;Model?
;#scpiCmd Reset tx A
;#scpiCmd Model? txrx?

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si VDC
#value VoltageAC V si VAC
#value Resistance ohm si OHM

#initCmd SingleValue
;#scpiCmd RemoteEnable tx REN
#scpiCmd SingleValue tx T0

#finalCmd tx T1

#interfaceType DMM BMM
#interface readValue 0

#cmdModeLayout 3 5

#cmdMode VDC M0
tx M0

#cmdMode VAC M1
tx M1

#cmdMode OHM M2
tx M2



;Mode-------------------------------------------------------------------------------------------
#cmdSetup info ActiveMode
:read: Mode?
:readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";")
:updatemodechange:

;VDC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VDC
:write: tx #
:read: Range?
;:enable: inList(ActiveMode,"VDC");
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

#cmdSetup comboboxHot Integration_Time VDC
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
10x400ms(6x9's) I4
:updatemodechange:

;VAC-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range VAC
:write: tx #
:read: Range?
AUTO R0
200mV R01
2V R02
20V R03
200V R04
2000V R05
:updatemodechange:

#cmdSetup comboboxHot Integration_Time VAC
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
:updatemodechange:

;OHM-------------------------------------------------------------------------------------
#cmdSetup comboboxHot Range OHM
:write: tx #
:read: Range?
AUTO R0
20KOhm R03
200KOhm R04
2Mohm R05
20Mohm R06
:updatemodechange:

#cmdSetup comboboxHot Integration_Time OHM
:write: tx #
:read: txrx? I?
6.66ms(3x9's) I0
40.0ms(4x9's,50Hz) I1
50.0ms(4x9's,60Hz) I2
100ms(4x9's) I6
400ms(5x9's) I3
10x400ms(6x9's) I4
:updatemodechange:

#askMode Mode?
#scpiCmd Mode? txrx? M?

#scpiCmd Range? txrx? R?

#askValues txrx? G
#askValuesReadFormat s
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," ","");
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 21, 2020, 01:46:05 pm
The strings "+0.000340KOHM" and  "0.0000290VDC" seem correct. Tried also to remove the DC and OHM part without success

The parser duo not know what ohm or vdc is, it only knows "k" and it must be a lower case k
That was the reason for the way I wrote this:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," KOHM","k ohm");

One more question, how i can enable (or made visible) a control only based on the selected mode?

You use the selector control: #cmdSetup selector Mode_settings
It is used at the bottom of the Keysight344xxA and SiglentSDM30xxx definitions.



Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 21, 2020, 01:50:01 pm
One more question, how i can enable (or made visible) a control only based on the selected mode?

masterx81

You can try the below

Code: [Select]
#cmdSetup selector Mode_settings
:read: Mode?
:updatemodechange:
M0 VDC.
M1 VAC.
M2 OHM.

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 02:09:35 pm
masterx81

You can try the below

Code: [Select]
#cmdSetup selector Mode_settings
:read: Mode?
:updatemodechange:
M0 VDC.
M1 VAC.
M2 OHM.


It did exactly what i was trying to do  :-+ :-+ Thanks!
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 02:20:42 pm
The parser duo not know what ohm or vdc is, it only knows "k" and it must be a lower case k
That was the reason for the way I wrote this:
#askValuesMathFormat replace(replace(replace(value,"+.","0."),"-.","-0.")," KOHM","k ohm");
Missed that was case sensitive  |O
It works, also on voltage ranges.

You use the selector control: #cmdSetup selector Mode_settings
It is used at the bottom of the Keysight344xxA and SiglentSDM30xxx definitions.
Yes, done!

Remain only the strange RX timeout on 6.5 mode, that i not really know what can be....
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 21, 2020, 09:55:48 pm
I was playing for try to figure out what cause the timeout in 6.5digit mode, and i've noticed that the #readingDelay with gpib NI pause the read after the RD command. Would'nt be more correct to do the pause before sending the rd command?

Another one:
I'm playing with the null command (for zeroing any offset), the Z command.
I've set a ButtonsOn

Code: [Select]
#cmdSetup buttonsOn Null
:read: txrx? Z?
:write: tx #
:tip: Set or Cancel Null
:string:
Cancel Z0
Set Z1


If i do a Cancel (Z0) it work alzays.. But when i send a Z1, it goes in timeout, and after that, any command return timeout. If i send manually the txrx? z? for asking if we are in null, it return both the previous request, and the current one. Sometimes it start responding simply retrying several times
Here is a log:
Code: [Select]
;; COM9: Set params: 19200
;; Start thread for: National Instruments GPIB-232CT A:1 - Solartron 7150Plus
;; COM9: Tx: <EOS R,10.> 45 4F 53 20 52 2C 31 30 0A
;; COM9: Tx: <.> 0A
;; National Instruments GPIB-232CT A:1: Tx <SingleValue>
;; National Instruments GPIB-232CT A:1: Tx <tx T0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <T0.> 54 30 0A
;; Found Solartron 7150Plus on National Instruments GPIB-232CT A:1
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <TMO 0.95.> 54 4D 4F 20 30 2E 39 35 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx M1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M1.> 4D 31 0A
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M1> 4D 31
;; SOL7150PLUS: Rx <M1>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VAC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M1>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M1>
;; SOL7150PLUS: Tx <tx M0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M0.> 4D 30 0A
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R11> 52 31 31
;; SOL7150PLUS: Rx <R11>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
---First Timeout, sending Z1
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: timeout
;; SOL7150PLUS: Rx <null>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
----Unblocked itself, return previous buffer + new one.
;; COM9: Rx: <Z1Z0> 5A 31 5A 30
;; SOL7150PLUS: Rx <Z1Z0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <Mode?>
;; SOL7150PLUS: Tx <txrx? M?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <M?.> 4D 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <M0> 4D 30
;; SOL7150PLUS: Rx <M0>
;; SOL7150PLUS: Rx after :readmath: getElement("VDC;VAC;OHM",listIndex(unQuote(value),"M0 M1 M2"," "),";") <VDC>
;; SOL7150PLUS: Cache Tx: <Mode?> Rx: <M0>
;; SOL7150PLUS: Tx <Range?>
;; SOL7150PLUS: Tx <txrx? R?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <R?.> 52 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <R15> 52 31 35
;; SOL7150PLUS: Rx <R15>
;; SOL7150PLUS: Tx <txrx? I?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <I?.> 49 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <I3> 49 33
;; SOL7150PLUS: Rx <I3>
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
----I force a Z1:
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
---And also this time problem with the answer
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: timeout
;; SOL7150PLUS: Rx <null>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z0>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z0.> 5A 30 0A
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
---I send manually the txrx? z?, and it work and "unblock"
txrx? z?
;; SOL7150PLUS: Tx <txrx? z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <z?.> 7A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z1Z1> 5A 31 5A 31
;; SOL7150PLUS: Rx <Z1Z1>
;; Z1Z1


I've tried with:
#gpibWriteReadDelay 1000
#readingDelay 1
But it's always the same.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 22, 2020, 04:42:38 am
I was playing for try to figure out what cause the timeout in 6.5digit mode, and i've noticed that the #readingDelay with gpib NI pause the read after the RD command. Would'nt be more correct to do the pause before sending the rd command?

The #readingDelay is a maximum time, this means if the answer arrives before the specified time, the processing will continue. To do that is must be where the software waits for the answer.
#gpibWriteReadDelay is always added, i.e. even if the device answers faster it will wait the specified delay.


Another one:
I'm playing with the null command (for zeroing any offset), the Z command.
I've tried with:
#gpibWriteReadDelay 1000
#readingDelay 1
But it's always the same.

I would expect it is a timeout because the meter needs some time to do the zeroing, try adding a wait after the command:
:write: tx #;[3000]

Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 22, 2020, 07:33:01 am
The #readingDelay is a maximum time, this means if the answer arrives before the specified time, the processing will continue. To do that is must be where the software waits for the answer.
#gpibWriteReadDelay is always added, i.e. even if the device answers faster it will wait the specified delay.
Ok, so in case of the NI gpib interface isn't much useful, as i need some time between the wrt and the rd.

I would expect it is a timeout because the meter needs some time to do the zeroing, try adding a wait after the command:
:write: tx #;[3000]
Nice! In this way i can set a pause only for specific commands, and leave the other commands that answer fast untouched!
This evening i'll try it, thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 22, 2020, 08:02:10 am
The #readingDelay is a maximum time, this means if the answer arrives before the specified time, the processing will continue. To do that is must be where the software waits for the answer.
#gpibWriteReadDelay is always added, i.e. even if the device answers faster it will wait the specified delay.
Ok, so in case of the NI gpib interface isn't much useful, as i need some time between the wrt and the rd.

It programs the gpib interface to wait about the same time for an answer.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 22, 2020, 12:54:05 pm
Having a bit of fun:

(http://lygte-info.dk/pic/cpf5/TCScales.png)

It will be include in the next release.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 22, 2020, 11:16:25 pm
I would expect it is a timeout because the meter needs some time to do the zeroing, try adding a wait after the command:
:write: tx #;[3000]
set the 3000ms pause, it pause correctly after the write, but the command go in timeout. If i send it manually, it works:
Code: [Select]
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z0> 5A 30
;; SOL7150PLUS: Rx <Z0>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Delay: 3000ms
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
;; SOL7150PLUS: Tx <tx Z1>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z1.> 5A 31 0A
;; SOL7150PLUS: Delay: 3000ms
;; SOL7150PLUS: Tx <txrx? Z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <Z?.> 5A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <0> 30
;; SOL7150PLUS: Rx <0>
txrx? z?
;; SOL7150PLUS: Tx <txrx? z?>
;; COM9: Tx: <WRT 1.> 57 52 54 20 31 0A
;; COM9: Tx: <z?.> 7A 3F 0A
;; COM9: Tx: <RD #20,1.> 52 44 20 23 32 30 2C 31 0A
;; COM9: Rx: <Z1> 5A 31
;; SOL7150PLUS: Rx <Z1>
;; Z1

For the 6.5 digit mode, or in general, it's possible that, if after a request i get a 0byte answer, redo the read (rd command) until i get a value?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 23, 2020, 06:18:59 am
set the 3000ms pause, it pause correctly after the write, but the command go in timeout. If i send it manually, it works:

Could it be because it need a longer timeout?
Like [9999]

For the 6.5 digit mode, or in general, it's possible that, if after a request i get a 0byte answer, redo the read (rd command) until i get a value?
I could add a command to do that, but is it really necessary?

Please try to establish if the meter sends a could of 0 characters or if a longer timeout could fix it.
Title: Re: Program that can log from many multimeters.
Post by: masterx81 on June 23, 2020, 07:16:14 am
I've tried several timeout, yesterday evening also from realterm (so sending slowly  the data) i've had to do 2/3 retries before have a value. I would sat that have a gpibReadRetryCount would be useful also for dump away some Random data That is Sent Sometimes, when a timeout happen. If the data received can't be parsed, retry n times to read (using the same delay as before).
I not know if it's a problem of the meter or of the ni interface ( i suspect from the meter, but this delays aren't documented).
Did you have seen the strange behaviour of the Z1 command?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 23, 2020, 11:45:31 am
V0.94 is up
It has some improvement to charting and scales as shown above:
   Option for SI prefixes on chart scales
   Option for logarithmic chart scales
   Settings for chart overload handling

I have also added two commands to the Ascii driver for masterx81:

rxUntil? timeoutInSeconds expression
rxAllUntil? timeoutInSeconds expression

They will repeatedly call the Rx function, until expression is true or timeoutInSeconds expires. rxAllUntil will return all data returned, rxUntil will only return the matching return value.


Can be used like this:

rxUntil? 5 indexOf(value,"T")>=0
or
rxUntil? 5 strlen(value)>=2

The two commands are completely untested


Title: Re: Program that can log from many multimeters.
Post by: tv84 on June 23, 2020, 12:39:44 pm
Attached is a device file that supports the below Siglent Scopes, the only scope tested is the SDS1204X-E. The file is still a work in progress. The file is setup to log C1-C4 V RMS and C1-C4 V Pk-Pk. Please let me know if you find any issues with the file or any suggestions

Siglent SDS1052A, Siglent SDS1052DL+, Siglent SDS1072A, Siglent SDS1072CFL, Siglent SDS1072X-E, Siglent SDS1074CFL, Siglent SDS1074X-E, Siglent SDS1102A, Siglent SDS1102CFL, Siglent SDS1102CML+, Siglent SDS1102X, Siglent SDS1102X+, Siglent SDS1102X-C, Siglent SDS1102X-E, Siglent SDS1104CFL, Siglent SDS1104X-C, Siglent SDS1104X-E, Siglent SDS1122E+, Siglent SDS1152A, Siglent SDS1152CML+, Siglent SDS1202CFL, Siglent SDS1202F+, Siglent SDS1202X, Siglent SDS1202X+, Siglent SDS1202X-C, Siglent SDS1202X-E, Siglent SDS1204CFL, Siglent SDS1204X-C, Siglent SDS1204X-E, Siglent SDS1302CFL, Siglent SDS1304CFL, Siglent SDS2072, Siglent SDS2072X, Siglent SDS2074, Siglent SDS2074X, Siglent SDS2102, Siglent SDS2102X, Siglent SDS2102X-E, Siglent SDS2104, Siglent SDS2104X, Siglent SDS2202, Siglent SDS2202X, Siglent SDS2202X-E, Siglent SDS2204, Siglent SDS2204X, Siglent SDS2302, Siglent SDS2302X, Siglent SDS2304, Siglent SDS2304X, Siglent SDS2352X-E

(Attachment Link)

HKJ,

Wouldn't it be possible to allow a more generic definition for a range of equipments in one setting only? Instead of having to define them to allow all BW model definitions. Something with generic chars (ex.: ** or xx).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 23, 2020, 01:06:29 pm
Wouldn't it be possible to allow a more generic definition for a range of equipments in one setting only? Instead of having to define them to allow all BW model definitions. Something with generic chars (ex.: ** or xx).

There are usually some small differences between models, meaning that the definitions are slightly different. I have tools that makes that fairly easy to handle. If you look in a definition for a range of equipment you will see that there is only a few lines (Depending on differences) for each device.
Wildcards would not help with that.

Finding specific devices on the list of supported devices is not really affected by the number of defined devices when you use the filter function. If you have a Siglent SDS1104CFL, just type 1104 in the filter box and you only have 3 devices to select between.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 23, 2020, 07:24:46 pm
V0.94 is up
It has some improvement to charting and scales as shown above:
   Option for SI prefixes on chart scales
   Option for logarithmic chart scales
   Settings for chart overload handling

HKJ,

I just tried using the SI prefixes and logarithmic chart scales, when both are checked the SI does not work see below. Si work without logarithmic.

[attachimg=1]
[attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 23, 2020, 07:34:19 pm
I just tried using the SI prefixes and logarithmic chart scales, when both are checked the SI does not work see below. Si work without logarithmic.

Strange, as you can see above it worked fine for me.
Can you post the CSV file of your data, I would like to try with the same data.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 23, 2020, 08:05:08 pm
I just tried using the SI prefixes and logarithmic chart scales, when both are checked the SI does not work see below. Si work without logarithmic.

Strange, as you can see above it worked fine for me.
Can you post the CSV file of your data, I would like to try with the same data.

HKJ,

See attached.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 23, 2020, 08:37:18 pm
See attached.

Thanks, the library I use for charts do really fight against number format overrides on logarithmic scales, but it is fixed for the next version.

(http://lygte-info.dk/pic/cpf5/TCFrequencySweep.png)

Doing frequency and phase sweeps of audio gear is a nice application for TestController.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on June 24, 2020, 12:59:16 am
HKJ,

While creating the Siglent Scope device file I notice the two items below.

1.  When using the #remove tag to remove the last section in the device file the device file will not load
2.  #replacetext does not work with #askValuesReadFormat, it does work with #askValues

Thanks
Mike
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 24, 2020, 10:01:08 am
1.  When using the #remove tag to remove the last section in the device file the device file will not load

This is fixed in the new jar file at the usual link (V0.95).

2.  #replacetext does not work with #askValuesReadFormat, it does work with #askValues

I do not really believe this, #replaceText do not check anything about tags, but simple do a plain text replacement.


To help with debugging #metadef there are some possibilities:
Add a "#metadebug" or "#metadebug save" tag on the line after a #metadef will list what that meta definition do and optionally save the processed output.
You must, of course, remove the #metadebug tag before publishing the definitions.


Title: Re: Program that can log from many multimeters.
Post by: ArsenioDev on June 26, 2020, 08:11:19 pm
Recently discovered this program which is just about the PERFECT thing for my networked hardware in the loop testing and general debugging rack. Only instruments I'd like to see added are the Korad KA3005P type power supplies and the Kunkin KP184 programmable load. Took a crack at adding the Korad since I have that on hand to no avail, not 100% sure what I'm doing wrong yet
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 26, 2020, 08:24:32 pm
Recently discovered this program which is just about the PERFECT thing for my networked hardware in the loop testing and general debugging rack. Only instruments I'd like to see added are the Korad KA3005P type power supplies and the Kunkin KP184 programmable load. Took a crack at adding the Korad since I have that on hand to no avail, not 100% sure what I'm doing wrong yet

If you have specific questions or wishes for improvement I am listening.
First location to look is the RidenRD60xx.txt file, it uses a Modbus driver.
Note: Modbus requires an address, I have defined that as 1, because the software will only handle one device on a RS232 connection and 1 is as good as any other address.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 29, 2020, 01:10:33 pm
V0.96 is up
It adds a script library, right click in the log window:
(http://lygte-info.dk/pic/cpf5/script1.png)

When selecting a entry it will be copied to the log window:
(http://lygte-info.dk/pic/cpf5/script2.png)

Adjust the parameters and press run to run the script.

Available scripts is filtered against loaded devices, this means a power supply, a electronic load or a waveform generator must be loaded for
any scripts to show up at the current time. The scripts are downloaded from my server on each program start (Missing connection means a local backup is used).

It is also possible to add scripts to the menu locally in the ..\Documents\TestController\ScriptLibrary directory.
Each script must start with (There can be more than one script in a file):
#scriptMenu menu entry

Example: #scriptMenu Power supply;Fuse test
The files must be called somethingScript.txt where something can be any name.


Usually a couple of DMM's will be used together with a script to log values in the tested circuit.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 01, 2020, 03:58:25 pm
HKJ,

It has taken a while, but with your help in supporting required functions I finally have a fully working set up file for Kollmorgen AKD2G servo drives.  See attached to include with next releases for all to use.

There are a couple of issues.  First, this device is not SCPI but Telnet ascii based.  That means that TestController doesn't get an answer to the *IDN? query and I can't use #metadef statements to customize the result.  The main issue is that AKD2G devices come as single motor or dual motor capable.

The other issue is that there are potentially 100's of different things you might want to log.  Including them all would not make sense and would greatly slow communications.  So, I just included a few useful and example signals in the #askValues line.

It is still very usable, but to really get what you want/want for a particular AKD2G servo model and particular test you would need to edit the #askValues line.

All in all a useful tool.  I might look to do a setup file for a Tektronix MDO3000 oscilloscope next depending on time and whether there is community interest.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 01, 2020, 04:32:20 pm
Interesting device, thanks. It will be included in next release.

I do not know if there is any idea in implementing a interface for it, but I suspect it is too complex for that.
Note: The purpose of the interface is to make scripts that work with many different brands of equipment without needed to change anything. Some examples of that can be seen in the last version of TestController.

There are a couple of issues.  First, this device is not SCPI but Telnet ascii based.  That means that TestController doesn't get an answer to the *IDN? query and I can't use #metadef statements to customize the result.  The main issue is that AKD2G devices come as single motor or dual motor capable.

The *idn? is not required for #metadef.
You can use the #verifyDevice to verify model
Title: Re: Program that can log from many multimeters.
Post by: gby on July 01, 2020, 07:12:12 pm
Good idea to at least have a simple interface popup.  I am trying to create a simple ON/OFF interface but I am stuck.  The device indicates status with AXIS1.ACTIVE, you turn it on with AXIS1.EN and you turn it off with AXIS.DIS.  I thought to use control buttonOn but I can't see a way to use one command for the ON button and a different command for the OFF button.  Any suggsetions?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 01, 2020, 07:26:38 pm
Good idea to at least have a simple interface popup.  I am trying to create a simple ON/OFF interface but I am stuck.  The device indicates status with AXIS1.ACTIVE, you turn it on with AXIS1.EN and you turn it off with AXIS.DIS.  I thought to use control buttonOn but I can't see a way to use one command for the ON button and a different command for the OFF button.  Any suggsetions?

The popup was not what I was thinking about with interface. See "Generic interface" in the documentation: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#A_generic_interface

The on/off button is not that hard (At least not when I have written the code), but it is untested:
#cmdSetup buttonsOn Output
:read: AXIS1.ACTIVE?
:readmath: getElement("AXIS.DIS AXIS1.EN",value)
:write: #
:tip: Turn output on or off
:updatealloff:
Off AXIS.DIS
On AXIS1.EN

It has to be the SCPI version of the command, you you must use tx/txrx/txrx? prefix
The getElement("AXIS.DIS AXIS1.EN",value) converts 0 to AXIS.DIS and 1 to AXIS1.EN that can then be matched to activation strings

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 01, 2020, 07:28:44 pm
For people using #metadef

I am working on a section tag, that will make it much easier on include/exclude large sections of a definition
Title: Re: Program that can log from many multimeters.
Post by: gby on July 01, 2020, 08:30:53 pm
The :readmath: getElement makes the buttons work fine.  Unfortunately the indicator light is always on. It never turns off.  Below is the setup code I have from your suggestion:
Code: [Select]
#cmdSetup buttonsOn Output
:read: AXIS1.ACTIVE?
:readmath: getElement("AXIS1.DIS AXIS1.EN",value)
:write: txrx #
:tip: Disable (Off) or Enable (On)
:color: (0,255,0)
:updatealloff:
Off AXIS1.DIS
On AXIS1.EN

I tried a few variations but nothing ever got the indicator light to turn off.  Below is debug output right from startup to just opening the control popup.  The device is off and the light should be off but is on.  The debug output shows the :read: giving 0 back.
Code: [Select]
Starting
;; Start thread for: 192.168.1.178 - Kollmorgen AKD2G Servo
;; Found Kollmorgen AKD2G Servo on 192.168.1.178
;; AKD2G: Tx <AXIS1.ACTIVE?>
;; AKD2G: Tx <txrx? AXIS1.ACTIVE>
;; 192.168.1.178: Tx: <AXIS1.ACTIVE..> 41 58 49 53 31 2E 41 43 54 49 56 45 0D 0A
;; 192.168.1.178: Rx: <0> 30 0D
;; AKD2G: Rx <0>
;; AKD2G: Rx after :readmath: getElement("AXIS1.DIS AXIS1.EN",value) <AXIS1.DIS>
;; AKD2G: Rx as number <NaN>
If I do the exact same sequence but have the output already On the result is the same except the :read: gives "1" back which selects "AXIS1.DIS".  Even though the read state is opposite the other the indicator light is still on.
Code: [Select]
Starting
;; Start thread for: 192.168.1.178 - Kollmorgen AKD2G Servo
;; Found Kollmorgen AKD2G Servo on 192.168.1.178
;; AKD2G: Tx <AXIS1.ACTIVE?>
;; AKD2G: Tx <txrx? AXIS1.ACTIVE>
;; 192.168.1.178: Tx: <AXIS1.ACTIVE..> 41 58 49 53 31 2E 41 43 54 49 56 45 0D 0A
;; 192.168.1.178: Rx: <1> 31 0D
;; AKD2G: Rx <1>
;; AKD2G: Rx after :readmath: getElement("AXIS1.DIS AXIS1.EN",value) <AXIS1.EN>
;; AKD2G: Rx as number <NaN>

So, what is used to decide the indicator light being on/off?  Or, better yet, how to make it work?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 01, 2020, 09:07:31 pm
So, what is used to decide the indicator light being on/off?  Or, better yet, how to make it work?

I was thinking about a combobox, the buttonson is more simple. Remove the :readmath: line
Title: Re: Program that can log from many multimeters.
Post by: gby on July 01, 2020, 10:06:02 pm
After removing the readmath line the indicator light is now always off.
Code: [Select]
#cmdSetup buttonsOn Axis_1_Enable
:read: AXIS1.ACTIVE?
:write: txrx #
:tip: Disable (Off) or Enable (On)
:color: (0,255,0)
:updatealloff:
Off AXIS1.DIS
On AXIS1.EN

Starting the control pop up with the output already on debug gives:
Code: [Select]
Starting
;; Start thread for: 192.168.1.178 - Kollmorgen AKD2G Servo
;; Found Kollmorgen AKD2G Servo on 192.168.1.178
;; AKD2G: Tx <AXIS1.ACTIVE?>
;; AKD2G: Tx <txrx? AXIS1.ACTIVE>
;; 192.168.1.178: Tx: <AXIS1.ACTIVE..> 41 58 49 53 31 2E 41 43 54 49 56 45 0D 0A
;; 192.168.1.178: Rx: <1> 31 0D
;; AKD2G: Rx <1>
;; AKD2G: Rx as number <1.0>
Note that the last debug line now shows 1.0 instead of just 1 with the readmath line.  Based on the web site doc saying "indicator, it will be on if the read value matches second parameter line" I tried the last two lines at 0.0 AXIS1.DIS and 1.0 AXIS1.EN.  Same thing buttonsOn indicator always off.

So far nothing I have tried has the buttonsOn indicator changing.  So, what am I missing??  :scared:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 02, 2020, 01:35:05 pm
So far nothing I have tried has the buttonsOn indicator changing.  So, what am I missing??  :scared:

I am misleading you, my last post was not correct.
You need the :readmath: line and also a :string: line
Title: Re: Program that can log from many multimeters.
Post by: gby on July 02, 2020, 03:00:22 pm
Thank you.  Adding the readmath back and adding the :string: tag got the indicator light to sort of work.  I then debugged it that the device wasn't indicating a changed state right away and that confused the indicator light.  Adding :updatedelayed: 0.1 fixed it.  So the working control, indicator is now:
Code: [Select]
#cmdSetup buttonsOn Axis1_Enable
:string:
:read: AXIS1.ACTIVE?
:readmath: getElement("AXIS1.DIS AXIS1.EN",value)
:write: txrx #
:tip: Disable (Off) or Enable (On)
:color: (0,255,0)
:updatedelayed: 0.1
:updatealloff:
Off AXIS1.DIS
On AXIS1.EN

I will work on some more popup controls and then look at the creating an interface for it.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 02, 2020, 04:08:06 pm
HKJ,

I am following your suggestion to use #verifyDevice given this device does not accept *IDN?.  I can get it to work inserting an exact string in for value for a specific model device.  However, there are multiple model numbers that need to match.  So, I tried putting expressions in for #verifyDevice value and adding :readmath: after the #verifyDevice line.  All these tries led to Java null pointer errors.

Is it possible to use #verifyDevice with an expression manipulating the returned value from the command such as match(<returned value>,regEx)?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 02, 2020, 04:44:18 pm
HKJ,

I am following your suggestion to use #verifyDevice given this device does not accept *IDN?.  I can get it to work inserting an exact string in for value for a specific model device.  However, there are multiple model numbers that need to match.  So, I tried putting expressions in for #verifyDevice value and adding :readmath: after the #verifyDevice line.  All these tries led to Java null pointer errors.

Is it possible to use #verifyDevice with an expression manipulating the returned value from the command such as match(<returned value>,regEx)?

You cannot use expressions with #verfiyDevice, but you can use :readmath: with #scpiCmd.

The idea is that you have a separate #metadef and for each device type. This #metadef will replace the #verifyDevice line. In the current version you can only do it with #replacetext, but from next version it will be possible to do direct replacement, i.e. simply add a #verifyDevice in the #metadef section.

If you really need a more flexible way to compare, I will have to look at adding regular expressions support to #verifyDevice. It can be a bit hard to learn, but it is extremely flexible way to match.



Title: Re: Program that can log from many multimeters.
Post by: gby on July 02, 2020, 07:03:16 pm
Clever idea to define a new #scpiCmd to use in the #verifyDevice with the required manipulation of the returned value in the new command.  I did that and it worked fine.

The only problem I had was all kinds of Java exceptions when using the :readmath: match(value,regEx).  Whatever regEx I put there just did not work.  Then I tried putting the regEx in quotes and that worked fine.  You might want to update the doc for the match(value,regEx) string function to mention using ""'s or have an example like what I ended up with:

   :readmath: match(value,"Drive.*AKD2G-...-.V..S-.*")

On to figuring out how to use this info to change available functions/commands/popup controls.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 02, 2020, 07:25:38 pm
The only problem I had was all kinds of Java exceptions when using the :readmath: match(value,regEx).  Whatever regEx I put there just did not work.  Then I tried putting the regEx in quotes and that worked fine.  You might want to update the doc for the match(value,regEx) string function to mention using ""'s or have an example like what I ended up with:

All the languages I am used to need RegEx in quotes, but you are correct that it is a good idea to include it in the documentation.

If you start playing with #metadef you will need the new version, please say when you need it and I will post a .jar file. The two changes are optional sections in a definition and #verifyDevice can be directly replaced.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 02, 2020, 07:35:28 pm
It may also be a good idea to define these two commands:

#scpiCmd getDeviceSW? ...
#scpiCmd getDeviceSN? ...

They are used to build a full *idn? answer with serial number and software version. This information is also used in the TestController popup with connected equipment.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 02, 2020, 11:33:40 pm
I will be working some more tomorrow, over the weekend.  I have plenty to do without an updated version and new features.  But, if it is ready I can start taking a look at it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 03, 2020, 02:23:49 pm
I will be working some more tomorrow, over the weekend.  I have plenty to do without an updated version and new features.  But, if it is ready I can start taking a look at it.

As long as no one need the improvements (It is only relevant for a few people), I will wait a bit with the next version, until I have something more.
Title: Re: Program that can log from many multimeters.
Post by: fragile on July 04, 2020, 09:13:11 pm
Is it cross platform? It sounds like you've put a lot of effort into this! I can't even imagine how to do something like you've accomplished. At my school we can use  visual studio. Do you use that?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 05, 2020, 04:44:13 am
Is it cross platform?

Being in Java the answer is yes, but USBHID interface is not.

It sounds like you've put a lot of effort into this! I can't even imagine how to do something like you've accomplished. At my school we can use  visual studio. Do you use that?

Java is not tied to a specific development platform and I have avoided using platform specific tools, i.e. I can use any Java development platform I wish and easily switch to another platform (I use Eclipse).
Title: Re: Program that can log from many multimeters.
Post by: PushUp on July 06, 2020, 02:06:16 pm
Have you changed something with the USBHID within 0.96?

When using my Brymen 867 (haven't checked my Elma 829s so far) it is not recognized with version 0.96 anymore.

However, versions 0.94 and 0.95 are still fine?!

Just for curiosity:
My Win7 is always offline, having no network connection at all, but TestController always shows "New Version", when using it? Is there a way to change it?

Thanx!  :-+
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 06, 2020, 02:29:49 pm
Have you changed something with the USBHID within 0.96?

When using my Brymen 867 (haven't checked my Elma 829s so far) it is not recognized with version 0.96 anymore.

However, versions 0.94 and 0.95 are still fine?!

HKJ

Same here my BM869s does not work with V0.96
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 06, 2020, 03:02:12 pm
Have you changed something with the USBHID within 0.96?

When using my Brymen 867 (haven't checked my Elma 829s so far) it is not recognized with version 0.96 anymore.

I change my 7 segment decoder to also support two words for a digit. I will fix it, probably tomorrow.


My Win7 is always offline, having no network connection at all, but TestController always shows "New Version", when using it? Is there a way to change it?

I will also take a look at this.

Title: Re: Program that can log from many multimeters.
Post by: ArsenioDev on July 07, 2020, 03:26:22 am
After trying a bunch of variants on the file I cannot get it to even get a hello from the Korad power supply :|
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2020, 04:39:58 am
After trying a bunch of variants on the file I cannot get it to even get a hello from the Korad power supply :|

If the sigrok description is corrent, I need to make a new driver before it will work:
https://sigrok.org/wiki/Korad_KAxxxxP_series

The problem is missing line terminations, this means all communication must terminate with a timeout and I do support that at the current time.
This sound rather silly, maybe it uses a space for ; for terminations?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2020, 07:47:35 am
V0.97 is up
It is a bugfix for Brymen, includes the new section possibility in definitions, adds two lux meters and a very advanced servo
   Added Kolmorgen servo by gby
   Added Gossen M5032 Lux meter
   Added UNI-T UT382 Lux meter
   Do not show "New version" when offline
   Restored Brymen multimeters, I had a error in V0.96 preventing them from working.
   Sections in definitions file for use with #metadef. This is an easier way to handle include/exclude of many lines.
   #verifyDevice can be replaced in #metadef


Debug of serial will list buffer data on timeout, I hope this help with figuring out the Korad termination
Title: Re: Program that can log from many multimeters.
Post by: gby on July 09, 2020, 12:47:42 am
HKJ,

I have a device which uses Modbus TCP communications.  I see the website lists Modbus RTU support and see it is used in the Maynuo M97 and RidenRD60 definitions with port com.  Just to see if it would work I made a definition file with port 502 which is the default Modbus TCP communications port like the below:
Code: [Select]
#idString Kollmorgen,AKD1G,Modbus
#name Kollmorgen AKD1G Servo
#handle AKD1GModbus
#port 502
#driver Modbus
Using Version 0.97 the result when trying to connect is just Java runtime errors.
Code: [Select]
Starting
Exception in thread "Thread-2" java.lang.ClassCastException: dk.hkj.comm.SocketInterface cannot be cast to dk.hkj.comm.SerialInterface
        at dk.hkj.devices.DeviceModbus.getCommInterface(DeviceModbus.java:496)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:899)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSocket(InterfaceThreads.java:500)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:613)

Does TestController support Modbus over TCP?  If it does what is a proper header definition?
If it doesn't, then how hard would it be to support Modbus TCP?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 09, 2020, 05:00:03 am
Does TestController support Modbus over TCP?  If it does what is a proper header definition?

No, I only support RTU.

If it doesn't, then how hard would it be to support Modbus TCP?

No, the problem is testing. I do not have anything that support Modbus TCP.
My drivers can support line and/or binary protocols. Serial support both, TCP only support line and I would need to add binary support.
I would also need to add another modbus frame format.

Modbus could also use Modbus Ascii on a TCP/IP connection, that would have worked with my line TCP driver, but would still need another frame format.



Title: Re: Program that can log from many multimeters.
Post by: gby on July 09, 2020, 10:58:07 am
HKJ,

Ah, not having a device to test with does make development hard.  If you want to try I could be your test case.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 09, 2020, 11:14:44 am
Ah, not having a device to test with does make development hard.  If you want to try I could be your test case.

I am up to it, but it will probably take many versions and a lot of time to get it working. You can look back to some of the other that have been done remote.
But first: Do you have any documentation of the modbus format for your device. I want to be sure it is modbus TCP/IP and not modbus ascii (That is considerable easier, because I can use the line based protocol).

Before I can start on it I will also need to be finished with the current addition to TestController, but that will probably be finished today or tomorrow.
It is trigger modes for logging: StartStopOnCommand, SingleOnCommand, SingleOnTrig, WhileTrig, StartOnTrig, StopOnTrig

I also have one question for the triggering modes: The onCommand is designed to control logging from a script, but they could also be controlled from a popupWindow, do anybody see any usage for that? (I.e. starting/stopping logging from a small popup window, it will add to the same table).
Title: Re: Program that can log from many multimeters.
Post by: gby on July 09, 2020, 12:42:55 pm
There should be full doc for the Modbus TCP Interface.  I will switch to pm to send links and/or files for the doc to not clutter up the main thread.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 09, 2020, 12:59:29 pm
I also have one question for the triggering modes: The onCommand is designed to control logging from a script, but they could also be controlled from a popupWindow, do anybody see any usage for that? (I.e. starting/stopping logging from a small popup window, it will add to the same table).

HKJ,

What would be a nice to have if you can make the scripts as a device file like the VirtualxxxxxGenerators, we can then make a button to do the triggers manually.

Also one of the new versions broke the RD60xx device file, attached is the fix.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 09, 2020, 01:50:15 pm
What would be a nice to have if you can make the scripts as a device file like the VirtualxxxxxGenerators, we can then make a button to do the triggers manually.

It would be easy enough to add a VirtualGenerator base class, but doing that for triggers would be silly.
The option for triggers is a small one-top window that can be used to start/stop logging or take a single sample when a button is pressed, depending on trigger mode.
The "Trig" modes use a expression to trigger where you can use any logged value (But not calculated/Math values) or date/time to control triggering.


Also one of the new versions broke the RD60xx device file, attached is the fix.

Please specify what the problem is, I had to compare files to find the change.
I wonder. I had a problem that I did not set the baudrate in some cases, could that be the issue and it now works at 115200.
Please check.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 09, 2020, 03:01:05 pm
Please specify what the problem is, I had to compare files to find the change.
I wonder. I had a problem that I did not set the baudrate in some cases, could that be the issue and it now works at 115200.
Please check.

HKJ,

The issue had nothing to do with the baudrate. The issue was when setting the below variable, I had to set it as an int, before I did not.

I did test the newest version at 115200 and it still has the intermittent timeout

Code: [Select]
#scpiCmd MN? holding? 0x80
:setvar: MNS=int(value)
Title: Re: Program that can log from many multimeters.
Post by: PushUp on July 09, 2020, 03:12:05 pm
Just a question @ HKJ:

TestController vs. Clamp Meter with Linux-Capability?

As the "Keysight Handheld Clamp Meter Series U1210":

(https://i.postimg.cc/GHtRyyZN/Bildschirmfoto-vom-2020-07-09-13-33-03.png) (https://postimg.cc/GHtRyyZN)

...has the same pc connectivity with its IR to USB U1173B cable, as the Keysight DMMs,...

(https://i.postimg.cc/NywZp9zQ/Adapter.png) (https://postimg.cc/NywZp9zQ)

...would it be the easiest manufacturer being able to integrate into TestController...or are there other/better solutions already ready to use?

(https://i.postimg.cc/6TTbVfpd/Bildschirmfoto-vom-2020-07-09-19-05-16.png) (https://postimg.cc/6TTbVfpd)

Keysight U1210-Series:
https://www.keysight.com/en/pcx-2832426/u1210-series-35-digit-handheld-clamp-meters?cc=GB&lc=eng (https://www.keysight.com/en/pcx-2832426/u1210-series-35-digit-handheld-clamp-meters?cc=GB&lc=eng)

Keysight IR to USB U1173B:
https://www.keysight.com/en/pd-2314431-pn-U1173B/handheld-digital-multimeter-pc-connectivity-cable?nid=-31912.1063037&cc=GB&lc=eng (https://www.keysight.com/en/pd-2314431-pn-U1173B/handheld-digital-multimeter-pc-connectivity-cable?nid=-31912.1063037&cc=GB&lc=eng)

PS: No need to push/stress yourself, I am happy with my Fluke 360, 376 and Benning CM11 - just in case there will be a real bargain...  ^-^

Thanx.  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 09, 2020, 04:15:45 pm
Just a question @ HKJ:

TestController vs. Clamp Meter with Linux-Capability?

As the "Keysight Handheld Clamp Meter Series U1210" has the same pc connectivity, e.g. IR to USB U1173B, as the Keysight DMMs, would it be the easiest manufacturer being able to integrate into TestController...or are there other/better solutions already ready to use?

If they use same style protocol as the DMM's, it is fairly easy to include them and this will also work on Linux.
If anybody see a document with the protocol please post a link.

I have a Agilent U1213A and it do not have any interface.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on July 10, 2020, 12:30:00 pm
Just a little brainstorming as far as Clamp Meters are concerned - this time no matter if Linux is usable...

As Brymen is cheaper and offers quite a variety of well equipped Clamp Meters (unfortunately with two different USB-Interfaces BRUA-19X & BRUA-13X), I would like to know, whether your USBHID-Driver immediately/mainly includes those Brymen Clamp Meters or do you also have to invest time and brain in order to adjust/renew the USBHID-Driver(s)?

...only some examples in different price categories...

Brymen BM197 Current Clamp Multimeter:
https://brymen.eu/shop/bm197/ (https://brymen.eu/shop/bm197/)
https://brymen.eu/shop/brua-19x-usb-kit-for-bm197-bm195/ (https://brymen.eu/shop/brua-19x-usb-kit-for-bm197-bm195/)

Brymen BM357 Current Clamp Multimeter:
https://brymen.eu/shop/bm357/ (https://brymen.eu/shop/bm357/)
https://brymen.eu/shop/brua-13x-usb-kit-for-bm357-18x-15x-13x/ (https://brymen.eu/shop/brua-13x-usb-kit-for-bm357-18x-15x-13x/)

All Brymen Clamp Meters:
https://brymen.eu/product-category/mierniki-cegowe/?orderby=price-desc (https://brymen.eu/product-category/mierniki-cegowe/?orderby=price-desc)

Some Brymen Clamp Meters by Welectron:
https://www.welectron.com/navi.php?k=55&Sortierung=4&af=90 (https://www.welectron.com/navi.php?k=55&Sortierung=4&af=90)


Thanx!  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 10, 2020, 01:00:43 pm
Just a little brainstorming as far as Clamp Meters are concerned - this time no matter if Linux is usable...

As Brymen is cheaper and offers quite a variety of well equipped Clamp Meters (unfortunately with two different USB-Interfaces BRUA-19X & BRUA-13X), I would like to know, whether your USBHID-Driver immediately/mainly includes those Brymen Clamp Meters or do you also have to invest time and brain in order to adjust/renew the USBHID-Driver(s)?

At the current time I have no clamp meters supported, neither as USBHID or as serial.
I believe the above above have a serial interface and it is fairly trivial to support, especially if I can find documentation on Brymens website.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 10, 2020, 01:31:10 pm
V0.98 is up
This version is about triggers.
   Added triggers to logging, can be used from script, manually or check sample values.
   Sometimes setup popup was not filled with values, this is fixed.
   Increased readout speed when not logging and devices delivers data fast.

There is now a advanced option when logging:
(http://lygte-info.dk/pic/Projects/TestController/DocLog/Advanced.png)

Just be aware that the chart may be misleading when using triggers due to missing data, because a continuous line is used when showing the data.
Title: Re: Program that can log from many multimeters.
Post by: MiroS on July 11, 2020, 09:36:51 pm
V0.98 is up
This version is about triggers.
   Added triggers to logging, can be used from script, manually or check sample values.
   Sometimes setup popup was not filled with values, this is fixed.
   Increased readout speed when not logging and devices delivers data fast.

That is nice :clap: I kinldy sugets to add interface to Octave and Python in math and add Arduino firmata as measuring device. That would open completely new world for this program.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 12, 2020, 06:46:56 am
That is nice :clap: I kinldy sugets to add interface to Octave and Python in math and add Arduino firmata as measuring device. That would open completely new world for this program.

I do not see the purpose in supporting other software to do the math. It is easy enough to export data to other software for processing using CSV files.

The firmate suggestion is interesting. It would have to be a interface and then the user would have to add the actual device definition for their Arduino.
Do anybody else have any comments/ideas about this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 12, 2020, 12:58:44 pm
V0.99 is up
   Added support for modbus on socket interface
   Added support for modbus TCP (Note: TCP/RTU mode is independent of used interface)   
   Fixed, chart zoom did not work with dataTime as scale
   Added a analog scale, it is called "Adjust scale" and is designed to help when doing adjustments.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/a1.png)

The main feature is a analog scale, it is not made to simulate a analog meter, but to help adjusting stuff.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/a2.png)

Type a value in the Ref field and it will be marked on the scale, this will also limit the auto scaling.
The deviation from Ref is shown after the measured value, in both absolute number and percent or ppm.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/a3.png)

Add a tolerance (can also be in percent or ppm) and the scale changes mode, it will center around Ref and mark the acceptable range in green.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/a4.png)

Fully zoomed scale and value is inside the acceptable range.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/a5.png)

It is possible to specify asymmetric ranges.

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/menu.png)

It is possible to add some smoothing to make the indicator move slower. It can update up to 10 times a second when used with fast meters.

This popup is found in the "Popups" menu.

Title: Re: Program that can log from many multimeters.
Post by: gby on July 12, 2020, 02:45:50 pm
HKJ,

Thanks very much for getting Modbus TCP on socket interface working.  I have a device using this interface and so far everything seems to work. 

With all this rapid progress you are dangerously close to a V1.0 release  :clap:
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 12, 2020, 03:13:04 pm

   Added a analog scale, it is called "Adjust scale" and is designed to help when doing adjustments.
Absolutely delighted to see this extremely useful operating mode. :-+
As they say in Germany: "Bin ganz aus dem Häuschen" i.e. "Completely over the moon" or "Thrilled to bits" :clap:
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 13, 2020, 06:27:24 am
Found a minor quirk. See pic.
And a second one
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 13, 2020, 07:58:08 am
With all this rapid progress you are dangerously close to a V1.0 release  :clap:

Yes, V1.00 will not be any special release, but simply another small improvement.

Absolutely delighted to see this extremely useful operating mode. :-+

In my testing it was much faster to use than a digital readout and much more precise than a normal analog readout.

Found a minor quirk. See pic.
And a second one

You have repeated the same picture twice.
I have adjusted the size of the fields (All of them), it will be included in the next version.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on July 13, 2020, 08:05:21 am
Off-Topic: "You have repeated the same picture twice."

No, the EEVblog forum has massive problems with uploaded attachements - they are often messed up!


@ Messtechniker: Your thumbnail pix are correct,...

(https://i.postimg.cc/zbpBJ1gR/Bildschirmfoto-vom-2020-07-13-12-15-02.png) (https://postimg.cc/zbpBJ1gR)

...but when clicking on it, both pictures are identical, which means, that the second uploaded attachement has immediately overwritten the first one!

(https://i.postimg.cc/V0MLcF7h/Bildschirmfoto-vom-2020-07-13-11-11-34.png) (https://postimg.cc/V0MLcF7h)

I think there is something messed up with thumbnail picture vs. link to uploaded picture?

It is better to use an external picture hoster: https://postimages.org/ (https://postimages.org/) taking the fifth line for forum entries, no registration required:

(https://i.postimg.cc/gXpPZP4g/Bildschirmfoto-vom-2020-07-13-11-21-32.png) (https://postimg.cc/gXpPZP4g)

@ HKJ: As you post your pix directly into the message, not at the bottom as an attachement, do you use your own/external file/picture hoster or do you use the forum integration for uploading pictures?

It should be fixed soon, in order to avoid a total mess in all threads, as I have found many messages suffering from this weird server problem, as also mentioned by TV84:
https://www.eevblog.com/forum/testgear/new-rigol-16-bit-function-generators-dg800900-series/msg3122658/#msg3122658 (https://www.eevblog.com/forum/testgear/new-rigol-16-bit-function-generators-dg800900-series/msg3122658/#msg3122658)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 13, 2020, 08:14:43 am
@ HKJ: As you post your pix directly into the message, not at the bottom as an attachement, do you use your own/external file/picture hoster or do you use the forum integration for uploading pictures?

I always links to my server.

The updated "Adjust scale" layout:

(http://lygte-info.dk/pic/Projects/TestController/DocAdjustScale/menu1.png)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 14, 2020, 08:20:57 am
Now using "Adjust scale" all the time. :-+ (old analogue electronics hand, you know) :)
Analogue circuits need to be adjusted all the time. :palm:
Currently only real instruments can be selected for "Adjust scale".
Would it be too difficult to include the math channels? :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 14, 2020, 08:50:13 am
Currently only real instruments can be selected for "Adjust scale".
Would it be too difficult to include the math channels? :phew:

The problem with Math channels is that they store sums, this means I can only use them one place at a time. This is either current values or logging (Where current values will piggyback when it is active).
I could use math channels of the "Formula" type without problems or I will have to create multiple instances of the math formulas.
Title: Re: Program that can log from many multimeters.
Post by: MiroS on July 14, 2020, 06:55:10 pm
There is bug in COM port, once you will start your Java first  all COM  ports are locked.
If you willl start the other way, first the other software than your program all works as expected, but not the other way.

Just learned that the same with HID devices, tested with  BM869s.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 14, 2020, 07:16:41 pm
There is bug in COM port, once you will start your Java first  all COM  ports are locked.
If you willl start the other way, first the other software than your program all works as expected, but not the other way.

Only if "Scan serial ports" are checked or you have enabled a device on that port.
It is fixed in next release.

Just learned that the same with HID devices, tested with  BM869s.

With USBHID I only open one device. The above fix may also help here if you have selected a wrong Brymen meter.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 15, 2020, 08:44:25 am
V1.00 is up
It is a lot of smaller details:
   Added: max/min modes to "Adjust scale", they will update ref to show the highest or lowest values seen
   Fixed: Chart search left/right zero/value might pick the entry next to best match.
   Added: Find max raise/fall rate on chart, it uses a 0.1% window (Min 4 samples) for calculating slope.
   Added: Relative values on chart value popup by placing a zero marker (This will only affect the popup, not scales and search).
   Fixed: When slow logging, math channels might be wrong if "Current values" was used at the same time.
   Added: AdjustScale supports math channels
   Added: Readout supports math channels
   Added: #CommandTime? that list how fast devices answer a request for values (Something that reads values must be used first).
   Fixed: Did not close failed connection, this could block ports for other programs while TestController is running.

Both Adjust scale and the large digit readout now supports Math channels:
(http://lygte-info.dk/pic/Projects/TestController/DocReadout/Digits.png)

I added relative readouts to the chart, place a zero marker and all values will be relative to it:
(http://lygte-info.dk/pic/Projects/TestController/DocChart/MarkerValues2.png)

It is possible to click on values to switch back to absolute (Removing the zero marker will switch all values to absolute):
(http://lygte-info.dk/pic/Projects/TestController/DocChart/MarkerValues3.png)

The magenta markers show what values are relative, the zero marker on the chart is also magenta.


Title: Re: Program that can log from many multimeters.
Post by: MiroS on July 15, 2020, 08:02:15 pm
There is bug in COM port, once you will start your Java first  all COM  ports are locked.
If you willl start the other way, first the other software than your program all works as expected, but not the other way.

Only if "Scan serial ports" are checked or you have enabled a device on that port.
It is fixed in next release.

Just learned that the same with HID devices, tested with  BM869s.

With USBHID I only open one device. The above fix may also help here if you have selected a wrong Brymen meter.

Problem gone sky with latest version  :clap:
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 17, 2020, 01:10:04 pm
A quote from Wikipedia: https://en.wikipedia.org/wiki/International_System_of_Units

General rules[Note 62] for writing SI units and quantities apply to text that is either handwritten or produced using an automated process:

    The value of a quantity is written as a number followed by a space (representing a multiplication sign) and a unit symbol; e.g., 2.21 kg, 7.3×102 m2, 22 K. This rule explicitly includes the percent sign (%)[27]:134 and the symbol for degrees Celsius (°C).[27]:133 Exceptions are the symbols for plane angular degrees, minutes, and seconds (°, ′, and ″, respectively), which are placed immediately after the number with no intervening space.

End of quote

Maybe - if not too difficult - you would like to follow these general rules in your prog. Depending if and how you implement this, I will correct the popup for my HMC 8043 with respect to this aspect.
Moreover, in some places you use "sec" as the unit for seconds whereas it should be "s".

Thanks for a fantastic prog. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 17, 2020, 02:43:09 pm
Maybe - if not too difficult - you would like to follow these general rules in your prog. Depending if and how you implement this, I will correct the popup for my HMC 8043 with respect to this aspect.
Moreover, in some places you use "sec" as the unit for seconds whereas it should be "s".

There is an idea behind how I do it. When I need to save space I leave out the space and it is most places in the program.
My routine to display with SI prefix can do it either way.
For calculator input fields I need the SI prefix to be part of the number, due to my parsing. In other input fields I do not enforce it.

The only place where I know I am using sec is in the virtual generators, where I had lot of space and wanted to make it very clear it was time that was specified.

Could you use the Adjust scale min/max for anything?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 17, 2020, 09:48:34 pm
Could you use the Adjust scale min/max for anything?
Have so far not found a use case for this. And can't imagine anything for it either.
Maybe someone else has an idea here.

Being fan of decibels I'd prefer to see in "Adjust scale"
for example instead of 600m 0.6 and so on. But that's only a very minor point
you should, in my opinion, not waste too much time to change this.

By the way. Defined in Math Unit a preceding space. See pic.

Love the autoranging when leaving the in-tolerance range. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 18, 2020, 08:05:02 am
Could you use the Adjust scale min/max for anything?
Have so far not found a use case for this. And can't imagine anything for it either.
Maybe someone else has an idea here.

The idea is it shows max/min value, then you can see exactly where you have to turn the adjustment back to for the best max/min adjustment.
It was a very simple function to add, I only had to update the ref field when the actual value was above/below the ref value.

Being fan of decibels I'd prefer to see in "Adjust scale"
for example instead of 600m 0.6 and so on. But that's only a very minor point
you should, in my opinion, not waste too much time to change this.

I have added a option in the popup menu, but default is SI.

Love the autoranging when leaving the in-tolerance range. :-+

? I use a 1-2-5 scale format for all the auto scaling (It uses the same code as my resistor matching to E values, that code will work with any set of values. Only difference is I have to select next larger value, not the closest value).
Title: Re: Program that can log from many multimeters.
Post by: gby on July 18, 2020, 10:04:54 pm
Hi HKJ,

I am trying to write a script to automate a test.  At a very basic level the same test needs to be run at a set of operating points.  The test sets an operating point, then iterates a value to sweep over a range, and then increments the operating point to start over.  Since the example logarithmic sweep script had a #while, #endwhile construct I thought this script would be easy.

Unfortunately I can't get it to work.  It seems like TestController scripts with nested #while, #endwhile loops ends both inner and outer loops at the first end condition of the inner loop.  I even made the outer loop an infinite loopp and got the same result.  Below is a simple example script showing the desired code type.

Code: [Select]
;Nested loops test
=var n=1
=var p=1

#while (n<10)
=n=n+1
=p=1

#while (p<10)
=p=p+1
#endwhile

#endwhile

When I run the above the log window output shows the outer loop counter n incrementing only once and the inner loop counter P incrementing the expected 9 times but only once.  See the full log window output in the attached file.

Is there a way to write a TestController script with nested loops?  If not, would that be an easy feature to add?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 19, 2020, 05:01:24 am
Is there a way to write a TestController script with nested loops?  If not, would that be an easy feature to add?

For now there is not, it is a thing a am planning on adding.

For now you can get around it by doing something like:
Code: [Select]
=var n=1
=var p=1

#while (n<10)
=p=p+1

#if (p>=10)
=n=n+1
=p=1
#endif

#endwhile
Title: Re: Program that can log from many multimeters.
Post by: gby on July 19, 2020, 03:20:55 pm
HKJ,

Using #if, #endif with the #while, #endwhile to indirectly do nested loop iteration is tricky.  I have to think further about how to use that idea to do what is needed...so far I haven't been able to get it to do what is needed.  But, I continue working on it.

I do have a couple of questions.  When I run the below test script:
Code: [Select]
=var n=1
=var p=1

=p=1

#if (p<=10)
=p=p+1
#delay 1
#endif
I get the following output from the console.  Note that even though logging is off that TestController is polling the device once to get the #askValues data values.  With longer test scripts I see this polling happening regularly.  To be clear, logging was never turned on.  Without turning on logging and just running a script why does TestController poll the device?
Code: [Select]
=var n=1
=var p=1
=p=1
#if (p<=10)
;; AKD1G: Tx <Drv.Flt?>
;; AKD1G: Tx <txrx? DRV.FAULTS>
;; 192.168.1.173: Tx: <DRV.FAULTS..> 44 52 56 2E 46 41 55 4C 54 53 0D 0A
;; 192.168.1.173: Rx: <No faults active> 4E 6F 20 66 61 75 6C 74 73 20 61 63 74 69 76 65 0D
;; AKD1G: Rx <0>
;; AKD1G: Tx <FB1.REGRDSineOffset?>
;; AKD1G: Tx <txrx? FB1.REG 2>
;; 192.168.1.173: Tx: <FB1.REG 2..> 46 42 31 2E 52 45 47 20 32 0D 0A
;; 192.168.1.173: Rx: <184> 31 38 34 0D
;; AKD1G: Rx <184>
;; AKD1G: Tx <FB1.REGFtLow?>
;; AKD1G: Tx <txrx? FB1.REG 27>
;; 192.168.1.173: Tx: <FB1.REG 27..> 46 42 31 2E 52 45 47 20 32 37 0D 0A
;; 192.168.1.173: Rx: <62> 36 32 0D
;; AKD1G: Rx <62>
;; AKD1G: Rx as numbers <0.0 184.0 62.0>
=p=p+1
#delay 1
#endif

Last question.  What are legal values for the #delay command?  When I try #delay integer values or 0.5 or 0.1 in the above test code things work.  When I try #delay 0.51 or 0.01 the script runs forever and I have to use the Abort button.  When stuck/not finishing the debug window showed no errors.  I know that 0.01 sec resolution is probably not needed but it seems like a bug for the script to freeze with no error message.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 19, 2020, 03:54:08 pm
Using #if, #endif with the #while, #endwhile to indirectly do nested loop iteration is tricky.  I have to think further about how to use that idea to do what is needed...so far I haven't been able to get it to do what is needed.  But, I continue working on it.

Nested #while will be support from next version

With longer test scripts I see this polling happening regularly.  To be clear, logging was never turned on.  Without turning on logging and just running a script why does TestController poll the device?

When using the "=" statements it will poll the device to setup variables for using in the statements.

Last question.  What are legal values for the #delay command?  When I try #delay integer values or 0.5 or 0.1 in the above test code things work.  When I try #delay 0.51 or 0.01 the script runs forever and I have to use the Abort button.  When stuck/not finishing the debug window showed no errors.  I know that 0.01 sec resolution is probably not needed but it seems like a bug for the script to freeze with no error message.

The delay command is faulty, this is fixed in next version.
Note: A fixed jar file is here: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on July 21, 2020, 09:56:50 am
Im fairly new into this but I would like to test the capacity of the battery pack (36v) for my electric bike. I really like the graphs of the program @HKJ made. Which multimeter (looking for a bang for buck) would be best suited to meassure the capacity (amp hours) for the battery pack I have?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 21, 2020, 10:38:27 am
Im fairly new into this but I would like to test the capacity of the battery pack (36v) for my electric bike. I really like the graphs of the program @HKJ made. Which multimeter (looking for a bang for buck) would be best suited to meassure the capacity (amp hours) for the battery pack I have?

You need an electronic load.
Look at BK-Precision, Itech and Maynuo brands (BK-Precision is the most expensive).
A 300W model will allow you to discharge with about 7A assuming initial voltage is 42V.
The PC interface is fairly expensive or you can make one yourself.

At the current time I only support one Maynuo model, but it is very easy to support more models, the only think I am missing is a model identifier. This software will list this value and raporting the model and this value I can add it (It is also possible to add yourself in the Maynuo M97xx definition file).

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 21, 2020, 11:12:09 am
V1.02 is up
It is mostly small improvements and a bugfix..
   Included command files to start TestController on linux command line (tcrun & tcrundebug)
   Added: Brymen BM197 & BM195 clamp meter
   Added: Brymen BM357s clamp meter
   Fixed: Bug in #DELAY
   Added: Nested #WHILE is now working
   Fixed: Second channel on TTi CPX400DP was not correctly defined.
   Added: "Adjust scale" has got an option to enable/disable SI format.

It includes support the the Brymen clamp meters that was asked about earlier. The interfaces for these meters includes a new battery lid for the meter with the interface.
BM357s is also a power meter and only AC current
BM197 is AC & DC current and is designed measure amps (not mA).
Title: Re: Program that can log from many multimeters.
Post by: gby on July 21, 2020, 10:38:05 pm
HKJ,

Thanks for getting nested #while loops working.  They seem to work fine and my test is running great now.    :clap:

Just a comment on usage.  To make the script easier to read I tried leading spaces in the lines inside a nested loop.  See code example below.  Running this code example yields an infinite loop and ";; Invalid device <>" lines in the command window output.  If you remove the spaces in front of "=inc=inc+1" the code works as expected.  Just be aware TestController seems to interpret leading spaces as a device name.
Code: [Select]
;Nested loops test
=var set=2
=var inc=3

=set=1

#while (set<2)
#delay 1
=set=set+1
=inc=1

#while (inc<3)
   =inc=inc+1
#endwhile

#endwhile
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 22, 2020, 04:48:22 pm
To make the script easier to read I tried leading spaces in the lines inside a nested loop.  See code example below.  Running this code example yields an infinite loop and ";; Invalid device <>" lines in the command window output.  If you remove the spaces in front of "=inc=inc+1" the code works as expected.  Just be aware TestController seems to interpret leading spaces as a device name.

When I made the command interpreter I believed it was a good idea to require # and = to be in column 1

I do have a more complete programming language in the expression interpreter and I am thinking on how to make it accessible for more advanced programming.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 22, 2020, 09:46:16 pm
HKJ,

I was just on your website and notice that the last part of page https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html) has half of the page in a code box

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 23, 2020, 06:44:21 am
I was just on your website and notice that the last part of page https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html) has half of the page in a code box

Page is back to normal again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 24, 2020, 12:54:42 pm
V1.03 is up
This is mostly new devices.
   Added: USBHID can now handle multiple meters by using the interface serial number as address (It is automatically added)
      For this to work connect one interface with a meter at a time, this will lock it to that meter.
      Multiple meters can share an address and it is possible to manually clear the address.
   Added: A extra SCPI driver that supports #scpiCmd and a few other details to adapt nearly SCPI devices to SCPI.
   Added: Korad power supplies, but only newer versions (Answer to *IDN? contains spaces between words).
   Added: All Maynuo loads with the help from a EEBLOG member, he send me a list with model codes.

Somebody here mailed me a list with all the id codes for Maynuo and I have added them to the definition.
The Korad supply was not strictly SCPI and I add to make a new driver for it.

I also fixed the issue with using multiple USBHID meters (At least for Brymen) by using the serial number of the interface cable as address:
(http://lygte-info.dk/pic/cpf5/USBHIDaddress.png)
Title: Re: Program that can log from many multimeters.
Post by: MiroS on July 26, 2020, 04:09:19 pm
New bug - if Arduino is connected before BM869s , BM869s is recognized , but not connected until I remove Arduino from USB port.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 26, 2020, 04:32:23 pm
New bug - if Arduino is connected before BM869s , BM869s is recognized , but not connected until I remove Arduino from USB port.

Just tried a Nano together with BM869s and did not see any problem.
If you are using a ATmega32U4 in USB mode you must not use the same vendor & product id.

Are you using a hub or directly connected to the computer?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 27, 2020, 06:58:30 am
V1.04 is up
This has a new popup and many small changes:
   Added: Definition file for binary DMM protocols
   Added: Program icon, image file is included as png and ico
   Added: Alarm setting than can make a visual and/or audible alarm when values are out of specified range.
   Added: Alarm commands: #SETALARM #ADJUSTALARM #CLOSEALARM
   Added: #CLOSEALL that will close all popups.
   Fixed: The 3 ways to close all popups (Reconnect, popups/closeAll, #closeAll) now works similar and closes all popups (Calculator & Timer only with #closeall)
   Added: Most # commands can now handle expressions, they must be in parenthesis ()
   Added: Integers can nearly everywhere be in decimal, hex or binary (Use prefix 0x/0b or postfix h/b)
   Added: Brymen BM251s, BM252s, BM255s and BM257s

It is now possible to add basically any DMM with a serial interface using either "Single value" or "Binary DMM protocol", documentation: http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)

I made a program icon, it is not great, but better than the standard Java icon: (http://lygte-info.dk/pic/Projects/TestController/CurveIcon.png)

The Brymen BM250s series meters has been added, for the money I believe you get a very good meter with computer interface (Interface is a separate buy).

I added a alarm popup:

(http://lygte-info.dk/pic/Projects/TestController/DocAlarm/Alarm.png)

The alarm is designed to be attention-grabbing, it can be used to signal when to stop a test (Like a battery discharge test with a resistor). Please do not complain here if somebody throws you computer out the nearest window ;D
It can also be configured to be more discrete.

The smaller versions of the alarm window:

(http://lygte-info.dk/pic/Projects/TestController/DocAlarm/Alarm1.png)
(http://lygte-info.dk/pic/Projects/TestController/DocAlarm/Alarm2.png)

Title: Re: Program that can log from many multimeters.
Post by: MiroS on July 28, 2020, 07:07:41 pm
New bug - if Arduino is connected before BM869s , BM869s is recognized , but not connected until I remove Arduino from USB port.

Just tried a Nano together with BM869s and did not see any problem.
If you are using a ATmega32U4 in USB mode you must not use the same vendor & product id.

Are you using a hub or directly connected to the computer?

Directly , no hub;  ATmega32U4 in USB plus  BM869s over Brymen cable. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 29, 2020, 04:28:45 am
Directly , no hub;  ATmega32U4 in USB plus  BM869s over Brymen cable.

Then it is probably not a power problem. I frequently uses a ATmega32U4 together with the Brymen and have seen no problem. Try another bootloaded on the Arduino, I usually uses the Leonardo version on my ProMicro boards.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on July 29, 2020, 10:25:33 am
Hi,
Congratulations for this excellent work!
Any chance to add the Kunkin KP184 electronic load ?

Thanks in advance!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 29, 2020, 10:46:18 am
Any chance to add the Kunkin KP184 electronic load ?

As far as I know it uses modbus and I am hoping somebody else will do the work of adding it.
It is something similar to the RidenRD60xx definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 29, 2020, 11:47:35 am
V1.05 is up.
It is mostly a bug fix.
   Changed: Readout will always show a value when started.
   Added: Lux meter CEM DT-1309
   Fixed: Current values did not reset time sums.
   Fixed: BM250 did give occasionally wrong readings on a slow computer.

I have also posted an article on how to use TestController for testing batteries:
http://lygte-info.dk/project/TestControllerDemoBattWithResistor%20UK.html (http://lygte-info.dk/project/TestControllerDemoBattWithResistor%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: SimonD on July 29, 2020, 01:10:19 pm
... i don`t have it yet (is on the road) but i think it works with an RS232 converted to usb with the help of a dongle interface, if that can help you...
Thanks again!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 29, 2020, 01:45:47 pm
... i don`t have it yet (is on the road) but i think it works with an RS232 converted to usb with the help of a dongle interface, if that can help you...

I supposed it uses a virtual serial port and that makes the communication easy to setup.
The work is defining the SCPI to modbus translation and making a setup panel in TestController, that is not very easy to do without the device.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 30, 2020, 05:20:38 pm
I have a Kunkin 184 and it is on my list to do a device file for it....but real busy right now and so won't get to it for a while.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 30, 2020, 07:11:54 pm
I just looked at the manual for the Kunkin KP184 and there are not that many modbus points so I will try to help out and make a device file for it. The only thing is I do not have one (unless someone wants to send me one I will happily accept it) so I will need someone to test it
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 31, 2020, 01:12:17 am
Attached is a device file fo the Kunkin KP184. I do not have a Kunkin KP184 so it is untested. Please let me know if there are any issues and I will try to fix them.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 31, 2020, 12:56:37 pm
I was just on your website and notice that the last part of page https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html) has half of the page in a code box

Page is back to normal again.

HKJ,
Modbus serial & network and Non-SCPI ascii devices part is missing from the web page. When I was working on the device file for the Kunkin KP184 I went to lookup something and it was not there.

Thanks,
Mike Lud
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 31, 2020, 01:30:54 pm
Modbus serial & network and Non-SCPI ascii devices part is missing from the web page. When I was working on the device file for the Kunkin KP184 I went to lookup something and it was not there.

Fixed, but it may be some time before the cache is updated.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 31, 2020, 03:52:55 pm
Modbus serial & network and Non-SCPI ascii devices part is missing from the web page. When I was working on the device file for the Kunkin KP184 I went to lookup something and it was not there.

Fixed, but it may be some time before the cache is updated.

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 31, 2020, 04:22:52 pm
Fixed, but it may be some time before the cache is updated.
Thanks

It will most likely happen again when I do some simple updates and skip checking the final result. I fix the problems as soon as I become award of them.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on July 31, 2020, 05:13:25 pm
Fixed, but it may be some time before the cache is updated.
Thanks

It will most likely happen again when I do some simple updates and skip checking the final result. I fix the problems as soon as I become award of them.

Anytime I can help, since you did so much work on this program and continuing to do so.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 31, 2020, 05:23:33 pm
Anytime I can help, since you did so much work on this program and continuing to do so.

What I like is getting bug reports, ideas for improvements and questions about the usage of the program (I use the question to thing about improvement in the user interface).
The program is getting close to what I wanted, but there is still some details I would like to improve and also some larger projects I may look at with it.
Next update I am working on it not the main program, but some improvements to the calculator (So it knows what 5j means).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 01, 2020, 01:06:51 pm
V1.06 is up
This is about complex numbers in the calculator and do not have any improvement to the general functionality of TestController.
   Added: Help page for calculator
   Added: Calculator quadratic equation solver.
   Added: Calculator complex electronic: cpxC(freq,C) cpxC(freq,C,Rs) cpxL(freq,L) cpxL(freq,L,Rs)
   Added: Calculator complex functions (Nearly all math functions)
   Added: Calculator complex support
   Added: Calculator hyperbolic trigonometry functions


Sticking a i or j after a number will switch that number into complex. Function will use complex if any of the arguments are complex. I.e. sqrt(-1) fails, but sqrt(-1+0i) returns +1i
This is also valid for qeq(a,b,c) (quadratic equation solver), add +0i to any of the arguments and it can return complex results.

The cpxC etc. functions are for handling capacitors and inductors like resistors when calculating:
(https://lygte-info.dk/pic/Projects/TestController/DocCalculator/input3.png)
Title: Re: Program that can log from many multimeters.
Post by: gby on August 01, 2020, 07:59:11 pm
Hi HKJ,

Since you asked for user input I have some questions, suggestions for TestController.

The device I am supporting (Kollmorgen Servo drive) literally has almost 1000 things you could poll and the dual motor version has almost 1500.  If the standard device file listed all of the possible things to log in the #askvalues statement that would chew up huge resources and be very slow.  So, when doing a particular test you have to modify the #askvalues and the corresponding #Value statements to select just the items you want to log in a custom/temporary device file.  Could there be a way with a script to temporarily define what should be logged?  That way there would be only one device file for the device and each test would use a script to tell TestController what to log that is needed for that test.  Or, perhaps create a way to re-define the existing log items in a script?

When using a script to do something like a frequency sweep we can have the logged variable from the generator for our frequency and some measurement device for our result.  In other words, exactly like the example frequency sweep script you provided.  I was trying to do a frequency sweep with a Siglent generator where the output was phase modulated.  So, the script had a loop to increment the frequency and wrote that set point to the Phase Modulation frequency.  Since the device file does not log modulation frequency you have to modify the device file to add a query to get that frequency into the logged data.  It would be easier if a script could just write a variable's value directly to a logging column.

Thanks in advance for any consideration of these ideas.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 01, 2020, 08:21:45 pm
Since you asked for user input I have some questions, suggestions for TestController.

I was hoping for ideas that was easier to do. But I like your idea and will see if I can do it some way.

Thinking about it, maybe you can already do it with the Math channels and the deviceRead() function. Only issue is that this will not run in parallel with all the other polls, but first be performed after they are finished. This means it will reduce the fastest logging rate.

Please report back if it works.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 01, 2020, 10:12:21 pm
I am willing to try, but I am having difficulty finding documentation on deviceRead().  I even went so far as to Google search your site for deviceRead via
site:lygte-info.dk/ deviceRead
and no pages came up.  I need a little help with what you meant by the deviceRead() function.

Did you mean create a Math channel that uses a script variable in it?
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on August 02, 2020, 05:32:54 am
Attached is a device file fo the Kunkin KP184. I do not have a Kunkin KP184 so it is untested. Please let me know if there are any issues and I will try to fix them.

(Attachment Link)

Has anybody tested the Kunkin KP184 device file, please let me know if it works so HKJ can add it to the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2020, 06:08:54 am
I am willing to try, but I am having difficulty finding documentation on deviceRead().  I even went so far as to Google search your site for deviceRead via
site:lygte-info.dk/ deviceRead
and no pages came up.  I need a little help with what you meant by the deviceRead() function.

Sorry about that, the only place where it is mentioned is probably the "Test interface" popup.
The format is deviceRead(deviceHandle,scpiCommands) i.e. something like: deviceRead("AKD2G","AXIS1.MOTOR.TEMP?")

Did you mean create a Math channel that uses a script variable in it?

Instead of using a formula based on the other channels, simply use the deviceRead(). A math channel can only return one value.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 02, 2020, 03:27:37 pm
HKJ,

I am working on trying your Math channel suggestion.  At first I could not get it to work at all because of errors.  Most of the returned values from device AKD2G are number followed by the units in []'s.  For example, motor speed variable AXIS1.VL.FB? returns "123 [rpm]".  Returns in this format for deviceRead() cause Java errors like:
           dk.hkj.vars.VarExceptions$ConversionException: -0.079 [V] could not be converted to double
and caused TestController to turn that Math Channel off and only report 0 for value's.  Using AKD2G device variables that returned numeric values only (no units) seemed to work. 

For the #askValues line I had to use #askValuesReadFormat fxfxfx to get the numbers to work for logging.  What would be the equivalent for the deviceRead() command?  Hopefully I don't have to add readMath to each SCPI command for this device to remove the asci units characters and always only return the number.  Having units come back should be useful somehow.

If this Math channels device(Read) method ends up working that will be a great solution to my suggestion.  The only extra step would be a way to specify the Math channels in a script.  Can that be done?

Just out of curiosity, where is the "Test interface" popup that has info on deviceRead?  The popup on the Math tab provides info on functions that can be used in the formula but I did not see deviceRead() there.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2020, 04:30:24 pm
I am working on trying your Math channel suggestion.  At first I could not get it to work at all because of errors.  Most of the returned values from device AKD2G are number followed by the units in []'s.  For example, motor speed variable AXIS1.VL.FB? returns "123 [rpm]".  Returns in this format for deviceRead() cause Java errors like:
           dk.hkj.vars.VarExceptions$ConversionException: -0.079 [V] could not be converted to double
and caused TestController to turn that Math Channel off and only report 0 for value's.  Using AKD2G device variables that returned numeric values only (no units) seemed to work. 

For the #askValues line I had to use #askValuesReadFormat fxfxfx to get the numbers to work for logging.  What would be the equivalent for the deviceRead() command?  Hopefully I don't have to add readMath to each SCPI command for this device to remove the asci units characters and always only return the number.  Having units come back should be useful somehow.

There are a couple of ways to do it, one is:
getMatch(deviceRead(...),"[-.0-9]+");

If this Math channels device(Read) method ends up working that will be a great solution to my suggestion.  The only extra step would be a way to specify the Math channels in a script.  Can that be done?

Yes, use the #math command. The help window will show format when you type it.

Just out of curiosity, where is the "Test interface" popup that has info on deviceRead?  The popup on the Math tab provides info on functions that can be used in the formula but I did not see deviceRead() there.

It is in the "Popups" on the command page.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 02, 2020, 05:45:38 pm
HKJ,

Using the #math statement in a script sounds great.  However, I can't seem to get any variation of the syntax to work.  I tried a number of variations of the syntax and all of them yielded failed error messages.  Below are some example attempts cut and pasted from the log window on the Commands tab.

   #math FB3_Sin V Formula - getMatch(deviceRead("AKD2G","FB3.SIGNALCOS?"),"[-.0-9]+") failed due to For input string: "-"
   #math "FB3_Sin" "V" "Formula" "-" "getMatch(deviceRead("AKD2G","FB3.SIGNALCOS?"),"[-.0-9]+")" failed due to For input string: "-"
   #math {"FB3_Sin" "V" "Formula" "-" {"getMatch(deviceRead("AKD2G","FB3.SIGNALCOS?"),"[-.0-9]+")"}} failed due to For input string: "-"
   #math {"FB3_Sin" "V" "Formula" "" {"getMatch(deviceRead("AKD2G","FB3.SIGNALCOS?"),"[-.0-9]+")"}} failed due to For input string: """"

No matter which syntax variation I tried it seemed to have issues with the "samples" input in the prototype list #MATH {name {unit type samples sourceFormula}} from the help window.  Leaving the "samples" out of the list did not work either.  Trying that gave no error message but no entry in the Math tab either.

So, I need a little bit more help on legal syntax for this command.  Could you provide a correct syntax example like the one above?

Also, in the Math tab does the "Samples" column have any significance/purpose for the Formula Type?  I am guessing it does nothing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2020, 06:24:52 pm
Using the #math statement in a script sounds great.  However, I can't seem to get any variation of the syntax to work.  I tried a number of variations of the syntax and all of them yielded failed error messages.  Below are some example attempts cut and pasted from the log window on the Commands tab.

You have to specify samples as 0
I will fix that in the syntax to accept -

Also, in the Math tab does the "Samples" column have any significance/purpose for the Formula Type?  I am guessing it does nothing.

Correct, it is ignored.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 02, 2020, 07:47:30 pm
HKJ,

Silly me.  I should have thought to try 0 for samples.  I agree it would be a good idea to accept "-" since that is what shows for Formulas in the Math tab.

I noticed that you can't delete a Math if it is enabled.  Is that necessary or could you implicitly disable it and then Remove when the user requests Remove? 

If defining Math logging channels a lot in scripts it would be good to be able to clear all the Math channels with a script statement.  I know that #math with no argument will disable the ones there, but I am concerned about accumulating a large number of Math logging channels.

Based on learning how to use Math channels to log I think the first item in my list was already covered.  Next comes the question of how to add script variables into the logging channels.  Can Math formulas reference script variables?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2020, 08:09:38 pm
Silly me.  I should have thought to try 0 for samples.  I agree it would be a good idea to accept "-" since that is what shows for Formulas in the Math tab.

I had fixed it about 5 minutes after I said I would fix it.

I noticed that you can't delete a Math if it is enabled.  Is that necessary or could you implicitly disable it and then Remove when the user requests Remove? 

It is a question about checking. The enable checkmark has some restrictions on when it can be removed and I was lazy when I programmed the delete and only used enable checkmark to check on.
The is also the detail that when a math channel is disabled a column change event must be performed on all pages.

If defining Math logging channels a lot in scripts it would be good to be able to clear all the Math channels with a script statement.  I know that #math with no argument will disable the ones there, but I am concerned about accumulating a large number of Math logging channels.

There is no problem with a lot of defined Math channels and you can remove more than one at a time from the Math page.
But maybe a option to delete a named math channel from script.

Based on learning how to use Math channels to log I think the first item in my list was already covered.  Next comes the question of how to add script variables into the logging channels.  Can Math formulas reference script variables?

Easily, but they must be defined as "globalvar", not only as "var" and you cannot define or change them in the math expression.
In the math definition you can only use one expression, it is not possible to have multiple statetemets with ; between.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 03, 2020, 10:07:28 pm
HKJ,

I did a test script to set #math to a script variable defined with an =globalvar statement and then incremented that variable in a #while loop.  It seems to work exactly as desired.  However, it was a bit confusing to know whether to put it in ()'s in the #math statement or not.
   #math FtLow - Formula 0 FtLow           works as desired:  log shows incrementing values for script variable
   #math FtLow - Formula 0 (FtLow)        converted the statement to #math FtLow - Formula 0 50 which is a fixed number
In scripts for # commands like #delay you now need ()'s around a variable but for this #math statement you don't.  I don't think it is a big inconsistency, but should be documented.

I am finding it amazing that TestController had the capability that I suggested already.  Just needed to know how  :)

Code: [Select]
; File test creating specific Math log channels via script
; #MATH {name {unit type samples sourceFormula}}

=var stepTime=0.5
=globalvar FtLow=50

; First disable existing Math channels by calling #math with no arguments
#math

#math FtLow - Formula 0 FtLow

#log (stepTime)

#while (FtLow<100)
#delay (3*stepTime)
=FtLow=FtLow+1
#endwhile

#log 0
="Done"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2020, 04:31:31 am
   #math FtLow - Formula 0 FtLow           works as desired:  log shows incrementing values for script variable
   #math FtLow - Formula 0 (FtLow)        converted the statement to #math FtLow - Formula 0 50 which is a fixed number
In scripts for # commands like #delay you now need ()'s around a variable but for this #math statement you don't.  I don't think it is a big inconsistency, but should be documented.

The # command use there parameters textually (Conditional statements excluded), except if you have parentheses, then that part is evaluated before the command is executed. I have mentioned it a few places in the documentation.
In Math, the calculator and after a = you are directly invoking the evaluator that will handle expression.

I am finding it amazing that TestController had the capability that I suggested already.  Just needed to know how  :)

I try to keep the possibilities in TestController fairly open, but still easy to use without needing advanced programming skills.

Try check the #HasLogged command, it is designed for synchronizing scripting with logging.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2020, 06:22:04 am
V1.07 is up
This has some improvement to scripting and a significant UI improvement (Restoring layouts)
   Added: #AlignGrid command, it will adjust nearly all open windows/popups onto a grid
   Fixed: Loaded files did not find unit on math channels
   Added: #SaveTable command to save all logged data
   Added: #LoadTable command to load previous logged date
   Added: #ScaleDelete command, this makes it possible for scripts to reduce the clutter on the "Scales for chart" list
   Added: #Scale command to define or change a scale from script
   Changed: Some # commands has been slightly adjusted, I do not believe they will be incompatible with old scripts
   Added: #MathDelete deletes one or more math entries
   Fixed: Script cannot modify used math entries while logging anymore
   Changed: Enabled Math entries can be delete, as long as no logging is running.
   Changed: Redefined "Load and run" button to load scripts into log window, except if script start with #autorun
   Fixed: Some multithreading issues in the user interface and scripts
   Added: Automatic add setup script to menu
   Added: Generating of setup script
   Added: Advance log can directly set above/below conditions without an expression

The main idea is that you can start here:
(http://lygte-info.dk/pic/Projects/TestController/DocCommands/TCBeforeLayout.png)

Do a right click and a left click and end up here (Another right/left click and you could be back to the starting point or another layout):
(http://lygte-info.dk/pic/Projects/TestController/DocCommands/TCAfterLayoutAligned.png)

It is, of course, possible to copy part of (or all) the generated script into your own test scripts.

This is done with a script that is accessible in a right click menu. To generate a script use:
(http://lygte-info.dk/pic/Projects/TestController/DocCommands/TCLayout.png)

It is possible to edit the script to only include some of the configuration and there is no limits on the number of configuration scripts that can be in the menu.


The "Save as menu and edit" function can also be used to add you own script to the menu (This can be done manually also). When the editor opens change the title after "#scriptMenu" (Especially get rid of the Setup word) and replace the script with your own script. The #autorun keyword means autostart when selected, if removed the script will be copied into the log window instead.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2020, 11:45:12 am

Code: [Select]
; File test creating specific Math log channels via script
; #MATH {name {unit type samples sourceFormula}}

=var stepTime=0.5
=globalvar FtLow=50

; First disable existing Math channels by calling #math with no arguments
#math

#math FtLow - Formula 0 FtLow
...

I played a bit with your script and found one serious issue. TestController will recalculate the table with enabled math channels and that spoils the result. The initial recalculation will be removed in next version, but if you do anything on the math page another recalculation will spoil it.
Fortunately I have implement a function to get rid of a math channel again (As you asked about) and using that before stopping the script will prevent recalculation later on. [/code]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2020, 05:23:24 pm
I looked more on the problem with updates and I believe that the best solution is a Math type that works like a "Formula" type, but will prevent recalculations of a table. This will then be the ideal type to use for extra data channels from a device or from variables in TestController added with Math channels.

Just now I call it NoUpdate, but it is not really a good name. Some other ideas I had was "NoRecalc" or "Original"
But neither is perfect.
If anybody has a good idea for a "Formula" type that block for refreshing data in a table to preserve the original result, please post it.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 05, 2020, 01:28:35 am
I'm not super familiar with SCPI as, like many others I presume, I get so far each time and give up because I can't find any program that works/is easy enough.

This looks great. I've tested it with my U1282A and it works just fine.

I have a small issue though. I'm trying to use with an "East Tester" ET5410 Electronic Load.

I keep getting "<Invalid device>".

From what I can tell, TestController is looking for the #idString to match the first two fields of the response to the *IDN command - is that correct?

Unfortunately, this ET5410 responds to the *IDN command with space-delimited fields, rather than comma-delimited. I suspect that is rendering TestController unable to match the strings to that in the definition.

I have tried changing the #idString in the definition text file to the entire *IDN response, followed by two commas, but that hasn't worked either.

Is there a simple work-around that I'm not seeing?
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 05, 2020, 02:49:28 am
I'm not super familiar with SCPI as, like many others I presume, I get so far each time and give up because I can't find any program that works/is easy enough.

This looks great. I've tested it with my U1282A and it works just fine.

I have a small issue though. I'm trying to use with an "East Tester" ET5410 Electronic Load.

I keep getting "<Invalid device>".

From what I can tell, TestController is looking for the #idString to match the first two fields of the response to the *IDN command - is that correct?

Unfortunately, this ET5410 responds to the *IDN command with space-delimited fields, rather than comma-delimited. I suspect that is rendering TestController unable to match the strings to that in the definition.

I have tried changing the #idString in the definition text file to the entire *IDN response, followed by two commas, but that hasn't worked either.

Is there a simple work-around that I'm not seeing?

Nevermind, found the Korad definition file referred to in the release notes and found the work-around!

Is there any way to view the release notes other than rolling back to a previous version of the software? Could not see a readme file or anything on the website.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 05, 2020, 04:19:35 am
Is there any way to view the release notes other than rolling back to a previous version of the software? Could not see a readme file or anything on the website.

I have not posted the release notes on my website, but you can find them in this thread and here they usually contains more explanation.

I hope you post the definition when you get it working (Remember the #author tag).
Title: Re: Program that can log from many multimeters.
Post by: nez on August 06, 2020, 10:31:49 pm
Is there a special step to get the Owon ODP6033 to work in Test Controller?

I noticed that gby contributed support, so I've tried adding it but it doesn't connect (using v1.07).  On the 'Load Devices' tab, it gets added with Type 'Socket', and the Address field empty and highlighted red.  I am connecting the device to my PC via USB.

[I'll attempt to add the screenshot, but forum attachments seem buggy right now]

I can get my BM869s multimeter to work in Test Controller, and I can get the ODP6033 to work in Owon's ODPEasyControl software (although Owon's software has the awkward step of entering the device's serial number every time when selecting Connect->USB).


Great job on this app by the way HKJ!

[attach=1]

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on August 06, 2020, 11:14:20 pm
nez,

The device file for the Owon ODP6033 is for IP communication. The address would be the IP address of the ODP6033.
Title: Re: Program that can log from many multimeters.
Post by: nez on August 06, 2020, 11:36:01 pm
The device file for the Owon ODP6033 is for IP communication. The address would be the IP address of the ODP6033.

Ah, makes sense thanks for the quick reply.  When I have time I may try to read into HKJ's documentation to see about a usb configuration.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 07, 2020, 04:07:30 am
Ah, makes sense thanks for the quick reply.  When I have time I may try to read into HKJ's documentation to see about a usb configuration.

If the Owon uses a virtual serial power for USB communication you only need to add the word "com" after the port number in the device definition file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 07, 2020, 01:39:27 pm
V1.08 is up
It adds more scripting commands and extra export options and improves using math channels for device and variables.
   Added: On/off button to the virtual generators (They have always supported on/off)
   Added: Export got a change sign option for each data field.
   Added: Export got a new data reduction method: change of value
   Added: Math type formulaNU (NU=No Update) for use with local variables or extra device data.
   Added: #SaveLog to save log window
   Added: #SaveChart to save a chart
   Added: #ChartY to define the Y-axis
   Added: #ChartSamples to control the first/last sample boxes
   Added: #ChartCurves to define what curves are on the chart

Charts can now be controlled from scripts, i.e. it is possible to make a automatic test that finish by saving some charts.

The export got a new data reduction method, it looks for changes in a column and output a line each time the change is above the threshold from last output line.

I had a small problem, I wanted some data in a format I could directly compile into a program. I had expected to find a tool for it on the inet, but failed. Now TestController can do it: #SaveTable has some extra format options: int/long/float/double that will generate some java code (can also be used in C/C++ with minor edits). The procedure will usually be to export the wanted columns first, then load the exported file and use the #SaveTable command.
Title: Re: Program that can log from many multimeters.
Post by: nez on August 08, 2020, 01:18:16 am
If the Owon uses a virtual serial power for USB communication you only need to add the word "com" after the port number in the device definition file.

Looks like the Owon uses USBTMC with the National Instruments VISA driver, rather than virtual COM (*similar situation to gby's Keithley).

Fortunately I don't really need it right now, so waiting for eventual support doesn't bother me!
Title: Re: Program that can log from many multimeters.
Post by: kharar on August 11, 2020, 11:05:04 am
I have not yet had the chance to test if it works at all, but...
At my work we have a KP284 which more or less is just two separate KP184 in one cabinet, but with just the RS-485 interface. Is there any chance the TestController Java program could be made working for both channels at the same time, like eg. expanding the address range to include 1 & 2 ?
We also have another KP284 at the local hackerspace Labitat and I assume it would be rather beneficial to a fair amount of users.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 11, 2020, 11:44:06 am
I have not yet had the chance to test if it works at all, but...
At my work we have a KP284 which more or less is just two separate KP184 in one cabinet, but with just the RS-485 interface. Is there any chance the TestController Java program could be made working for both channels at the same time, like eg. expanding the address range to include 1 & 2 ?

There are a couple of issues in it:
1) KP184: It is not tested yet that it works
2) RS485: I do not have any handling special handling of that (Is it needed)?
3) Multiple address on the modbus.

All issues can be solved without to much work from my side, but I need to know 1) works and if 2) is needed before I will look at 3)

At its simplest 3) can simply be an extra device called KM284 second supply, where I add a tag in the definition to change the modbus address.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 11, 2020, 01:16:09 pm
V1.09 is up
The main improvement is more virtual generators.
   Fixed: Help window continue to show help when entering parameters
   Added: Support for a #helpurl tag in device definitions, this will be used when F1 is pressed on the mode or setup popup.
   Added: Pressing F1 on the virtual generator setup page will open a browser on the help page.
   Added: Help page about the virtual generators.
   Added: Pattern generator that can make a sequence of values with either abrupt or ramp change between them.
   Added: User generator that can convert an expression into a curve that can be used to control a device.
   Added: Log generator that can be used to control a frequency generator
   Added: Battery simulation (Virtual battery generator) that can control a power supply.

The help page about virtual generators: http://lygte-info.dk/project/TestControllerVirtualDevices%20UK.html (http://lygte-info.dk/project/TestControllerVirtualDevices%20UK.html)

The new generators add a lot of possibilities to control external devices with a very simple script (It is listen on the documentation page). The most advanced is the battery simulator:

(https://lygte-info.dk/pic/Projects/TestController/DocVirtualDevices/VBG.png)

(https://lygte-info.dk/pic/Projects/TestController/DocVirtualDevices/VBGChart.png)

Reflect the voltage to a power supply from it and reflect the current consumption back to the generator and the power supply will simulate a battery (For slow load changes/pulses).
It supports many different types and sizes of batteries.


I have rewritten the test controller into page: https://lygte-info.dk/project/TestControllerIntro%20UK.html (https://lygte-info.dk/project/TestControllerIntro%20UK.html)

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 12, 2020, 04:52:34 pm
Since I now own a Siglent SDG 2042X, I am now upgrading may home grown measurement amplifiers and precision rectifiers to 1 MHz and producing a reasonably fast F/V converter. My VC940 is pretty slow in this area and the Keysight 34465A is only good up to around 400 kHz. The Siglent can, while sweeping, not be queried as to the momentary frequency.

While doing so, I was wondering on a different track why the sound card output can not be used with "Test Controller". Has nothing to do with my 1 MHz drive, but having 16+ bit AD/DA capability to measure voltages and frequencies is in my opinion an opportunity which should not be lost, if not too difficult to implement.

Any ideas? :palm:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 12, 2020, 05:52:42 pm
Since I now own a Siglent SDG 2042X, I am now upgrading may home grown measurement amplifiers and precision rectifiers to 1 MHz and producing a reasonably fast F/V converter. My VC940 is pretty slow in this area and the Keysight 34465A is only good up to around 400 kHz. The Siglent can, while sweeping, not be queried as to the momentary frequency.

Why not control the Siglent directly from TestController? It already contains script for doing a logarithmic frequency sweep. As for measuring voltage, it is possible to use the voltage measurement from a oscilloscope, TestController has a few (The dynamic range may be too low without changing input range on the scope).


While doing so, I was wondering on a different track why the sound card output can not be used with "Test Controller". Has nothing to do with my 1 MHz drive, but having 16+ bit AD/DA capability to measure voltages and frequencies is in my opinion an opportunity which should not be lost, if not too difficult to implement.

Any ideas? :palm:
I do not have any experience in sound analysis, not that it would be that hard to search a recorded curve for zero crossings and calculate frequency and rms values. This will, of course, only work for a fairly clean tone. The level will, of course, be relative, as far as I remember sound cards to not have any well defined calibrations.


Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 12, 2020, 08:24:14 pm

Why not control the Siglent directly from TestController? It already contains script for doing a logarithmic frequency sweep. As for measuring voltage, it is possible to use the voltage measurement from a oscilloscope, TestController has a few (The dynamic range may be too low without changing input range on the scope).

I do not have any experience in sound analysis, not that it would be that hard to search a recorded curve for zero crossings and calculate frequency and rms values. This will, of course, only work for a fairly clean tone. The level will, of course, be relative, as far as I remember sound cards to not have any well defined calibrations.

Will look into that script thing. My abilities are certainly not the best in this area :palm:. 

Tried doing the voltage measurements using my R&S HMO scope. Works mostly. The problem are measurement dropouts by the scope indicating a "?" every now and then.

Of course sound card inputs and outputs are not calibrated. But "Test Controller" has enough math functions to correct this. :-+

A few hours later. Got rid of that "?" problem simply by shutting down channel 2 and switching off all screen "number crunching". Getting nice and smooth data upon querying the HMO scope by Test controller". :-+
 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 12, 2020, 08:32:09 pm
Will look into that script thing. My abilities are certainly not the best in this area :palm:. 

You do not need any abilities to use the scripting, the scripts are ready for use:
Connect to the SDG, right click in the log window and select "Waveform generator, Logarithmic frequency sweep"
You might want to adjust some parameters at the top, but it is not required
Press run.

You also have to load the meter you want reading from, but it is not related to controlling the SDG.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 12, 2020, 09:15:18 pm
Thanks for the hint.  8) Will try as soon as I get up in the morning. 7 hours or so from now.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 13, 2020, 04:58:58 am
Thanks for the hint.  8) Will try as soon as I get up in the morning. 7 hours or so from now.

TextController has two scripts for controlling a AWG, if you load the "Virtual Log Generator", there is one where you use the VLG to control it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 13, 2020, 07:42:30 am
OK. The log generator script worked to an extent. Script controlled generator sweeping worked.  :-+
But experienced bad freezes before the graph completion.  :-- Had to restart windows and the Siglent in each case.  :palm:

Since Test Controller never crashed before, I think I'll go the F/V hardware route so that Test Controller will have to handle two DC voltages from two meters without using additional scripts. Something it has doing reliably before. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 13, 2020, 08:30:34 am
OK. The log generator script worked to an extent. Script controlled generator sweeping worked.  :-+
But experienced bad freezes before the graph completion.  :-- Had to restart windows and the Siglent in each case.  :palm:

Will you try running TestController in debug mode, I am very curious if there are some Java error messages and what they say.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 13, 2020, 02:45:28 pm
Will look in to this next week.  :scared: :)
Just wont to get my 1 MHz precision rectifier finished first. :phew:
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 13, 2020, 03:10:47 pm
What's also been bugging me is that upon starting to log and when changing to Chart,
the X-axis is always set to time and I will then have to change the X-axis type each time. I.e. the X-axis setting is not retained. By the time I have done that, a sweep, for example, has already finished.

Just one further idea: Why can't the generator which is to be controlled be selected through the VLG popup?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 13, 2020, 03:52:50 pm
What's also been bugging me is that upon starting to log and when changing to Chart,
the X-axis is always set to time and I will then have to change the X-axis type each time. I.e. the X-axis setting is not retained. By the time I have done that, a sweep, for example, has already finished.

Maybe I need to fix something here.

Just one further idea: Why can't the generator which is to be controlled be selected through the VLG popup?

Two reasons:
1) Devices are independent, i.e. they do not know anything about other devices.
2) Flexibility, you can control any parameter on a device, also parameters that are not directly available in TestController (i.e. needs a SCPI command)
Title: Re: Program that can log from many multimeters.
Post by: gby on August 13, 2020, 10:52:08 pm
HKJ,

I just updated to V1.09 and I think I found an obscure debug mode bug.  If I have one device checked in the Load Devices tab I get a happy
   ;; Found Kollmorgen AKD1G Servo on 192.168.1.173
connection when I start TestController.  If I then go to the Load devices tab and click the Reconnect button it happily reconnects.

If I start TestController in debug mode it connects properly when I start the program but when I go to the Load devices tab and click the Reconnect button it does not successfully reconnect.  This problem is repeatable.  Even though TestController says it did not connect, the native device communications software can not connect until I close TestController as if the port was being held by TestController.

Below is the result for the cmd prompt debug window from startup to end of pushing the Reconnect button.
Code: [Select]
Starting
;; Start thread for: 192.168.1.173 - Kollmorgen AKD1G Servo
;; : Tx <txrx? DRV.INFO>
;; 192.168.1.173: Tx: <DRV.INFO..> 44 52 56 2E 49 4E 46 4F 0D 0A
;; 192.168.1.173: Rx: <Drive model           : AKD-P00606-NBEC-0000> 44 72 69 76 65 20 6D 6F 64 65 6C 20 20 20 20 20 20 20 20 20 20 20 3A 20 41 4B 44 2D 50 30 30 36 30 36 2D 4E 42 45 43 2D 30 30 30 30 0D
;; Found Kollmorgen AKD1G Servo on 192.168.1.173
;; Start thread for: 192.168.1.173 - Kollmorgen AKD1G Servo
;; : Tx <txrx? DRV.INFO>
;; 192.168.1.173: Tx: <DRV.INFO..> 44 52 56 2E 49 4E 46 4F 0D 0A
;; 192.168.1.173: Rx timeout 1000ms   In buffer:
;; 192.168.1.173: **Device do not match** <Unknown>
;; : Tx <txrx? DRV.INFO>
;; 192.168.1.173: Tx: <DRV.INFO..> 44 52 56 2E 49 4E 46 4F 0D 0A
;; 192.168.1.173: Rx timeout 1000ms   In buffer:
;; 192.168.1.173: **Device do not match** <Unknown>
;; Stopping thread for: 192.168.1.173 - Kollmorgen AKD1G Servo

Odd that everything seems fine in normal mode and the problem is only in debug mode.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 13, 2020, 11:31:36 pm
HKJ,

I am working to start writing scripts using the #math script statement to record extra data from the device.  Inside the script I need to refer to the logged value.  Before, for values defined in the device file with #value and polled in #askValues, I used <Device name>.<signal name>.  For example, like AKD2G.A1_Current.  When using #math with formulaNU for extra log data how do you refer to the value in a script?

I tried math.<signal name> but got errors.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2020, 05:19:17 am
I just updated to V1.09 and I think I found an obscure debug mode bug. 

Please check on the dos window if there are some Java error messages.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2020, 05:24:03 am
I am working to start writing scripts using the #math script statement to record extra data from the device.  Inside the script I need to refer to the logged value.  Before, for values defined in the device file with #value and polled in #askValues, I used <Device name>.<signal name>.  For example, like AKD2G.A1_Current.  When using #math with formulaNU for extra log data how do you refer to the value in a script?

I tried math.<signal name> but got errors.

All regular values are created as <Device name>.<signal name> before starting on the Math, but the result from Math are not create as variables. This also means you do not have access to them in a script or other Math expressions.


Title: Re: Program that can log from many multimeters.
Post by: gby on August 14, 2020, 12:14:36 pm
I just updated to V1.09 and I think I found an obscure debug mode bug. 

Please check on the dos window if there are some Java error messages.

Unfortunately there were no Java error messages.  I started TestController in debug mode, saw proper connection, clicked Reconnect, and saw failed connection.  The dos window copy I gave in the previous post was the entire contents of the debug dos window.

I saw this issue with two different Socket type devices.  I also tried an LXI type device (Siglent SDG2042x) and that worked as it should.

I can say that the two devices that have this Reconnect problem both provide multi-line response to the query used as *IDN? for device identification.  So far TestController receives the first line, seems to ignore the follow on lines, and just works.  Perhaps the extra lines of info affects reconnection in debug mode but not in regular mode where the Reconnect button just works?

Can you think of anything else I could do to help get debug information on this issue?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2020, 12:30:11 pm
Can you think of anything else I could do to help get debug information on this issue?

I do not have any good ides, maybe it is because I close the communication port very fast after the last command.
Try replacing the .jar file with this one: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
It has a short delay from the last command until it closes the port.

Messtechniker may also like this version, it has a small charge to the chart.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 14, 2020, 04:13:51 pm
I do not have any good ides, maybe it is because I close the communication port very fast after the last command.
Try replacing the .jar file with this one: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
It has a short delay from the last command until it closes the port.

Messtechniker may also like this version, it has a small charge to the chart.

I tried this .jar version and got the same result.  In normal mode clicking reconnect works every time.  Clicking reconnect in debug mode fails every time.  dos window debug result was the same as before.  On the reconnect attempt the receive times out and nothing is gotten from the device query.

So, the reconnect function is doing something different in debug mode than in regular mode.  Or the communications buffer works slightly differently and debug mode remembers something it shouldn't from the first activity?

By the way, I found this issue while trying to debug a script that uses the #Device command to close active connections followed by #Device <name> <IP address> to connect.  When in debug mode running the script once connects and running it a second time it does not connect just like the reconnect button.  Again, no Java errors in dos window.

Also, I have a question.  In a script you can use the #Device <name> <IP address> command to connect to a device.  Can you do #Device <name> and leave out the IP address?  My thought is that if the device is already in the Load devices tab with an address it would default to that address.  But, it doesn't seem to work that way.  My challenge is that I am developing a test script in lab one and sending it to lab two to also use.  The IP addresses will be different.  You can edit the script, but I thought if the devices were in the Load devices tab why not leave the IP addresses out of the script to simplify use?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2020, 04:28:18 pm
I tried this .jar version and got the same result.  In normal mode clicking reconnect works every time.  Clicking reconnect in debug mode fails every time.  dos window debug result was the same as before.  On the reconnect attempt the receive times out and nothing is gotten from the device query.

So, the reconnect function is doing something different in debug mode than in regular mode.  Or the communications buffer works slightly differently and debug mode remembers something it shouldn't from the first activity?

I will have to look a bit more at it.

Just a note: You are aware when I say DOS window, I do not mean the log window. The Java error messages do not go into the log window, but only to the DOS/console window. They also do this without debug mode, but because there usually is no visible DOS/console window they are not seen.

Also, I have a question.  In a script you can use the #Device <name> <IP address> command to connect to a device.  Can you do #Device <name> and leave out the IP address?  My thought is that if the device is already in the Load devices tab with an address it would default to that address.  But, it doesn't seem to work that way.  My challenge is that I am developing a test script in lab one and sending it to lab two to also use.  The IP addresses will be different.  You can edit the script, but I thought if the devices were in the Load devices tab why not leave the IP addresses out of the script to simplify use?

It is supposed to work without the address and I can see it checkmarks the device on my machine.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 14, 2020, 05:25:10 pm

I will have to look a bit more at it.

Just a note: You are aware when I say DOS window, I do not mean the log window. The Java error messages do not go into the log window, but only to the DOS/console window. They also do this without debug mode, but because there usually is no visible DOS/console window they are not seen.

Yes, I know what you mean by DOS window.  I copied all the text from the DOS box into the first post on this problem.  Just now I repeated the issue, cut and pasted DOS box and TestController log window into two separate files and then did a file compare.  Except for a couple of space character differences they were identical.

It is supposed to work without the address and I can see it check marks the device on my machine.

Yes, I see now that #Device <name> without IP address does work as desired.  However, even in normal mode if I run the same script twice there is no connection the second time.  I have attached my test script.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2020, 06:00:10 pm
I wonder if it is timing issues, try a script with:

#CloseAll
#Device
#Reconnect
#WaitReady
#delay 5
#Device "Kollmorgen AKD1G Servo"
#Reconnect
#WaitReady

It will unload all devices, wait 5 seconds and then load the selected device.
If this fails it is probably not a timing issue, but something else.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 14, 2020, 10:16:45 pm
I wonder if it is timing issues, try a script with:

#CloseAll
#Device
#Reconnect
#WaitReady
#delay 5
#Device "Kollmorgen AKD1G Servo"
#Reconnect
#WaitReady

It will unload all devices, wait 5 seconds and then load the selected device.
If this fails it is probably not a timing issue, but something else.

Using the .jar version you linked a couple of post ago (says V1.10) I did the following:
0. Started TestController and made sure nothing is checked in Load devices tab.  Closed TestController.
1. Started TestController in debug mode.
2. Loaded a script with only the contents you list above.
3. Ran the script and everything worked.
4. Waited like 30 seconds doing nothing.
5. Ran the script again and it did not connect.

Attached is the complete contents of the debug DOS window from the above sequence.  Please note that even with the #delay commented out this script connects properly the first time.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 15, 2020, 07:05:49 am
Thanks for making the chart settings stick in V1.10.

When manually sweeping the Siglent I get those nasty
steps in my graphs instead of completely smooth curves.
What can I do to get rid of those?

Sweeping is initially in increments of 1000 Hz,
later on in 10000 Hz increments and slow enough.

The unit under test is a small 12 dB transformer recovered from an old telephone.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 15, 2020, 07:39:15 am
When manually sweeping the Siglent I get those nasty
steps in my graphs instead of completely smooth curves.
What can I do to get rid of those?

My first idea is to apply some smoothing.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 15, 2020, 01:01:37 pm
I wonder if it is timing issues, try a script with:

#CloseAll
#Device
#Reconnect
#WaitReady
#delay 5
#Device "Kollmorgen AKD1G Servo"
#Reconnect
#WaitReady

It will unload all devices, wait 5 seconds and then load the selected device.
If this fails it is probably not a timing issue, but something else.

Using the .jar version you linked a couple of post ago (says V1.10) I did the following:
0. Started TestController and made sure nothing is checked in Load devices tab.  Closed TestController.
1. Started TestController in debug mode.
2. Loaded a script with only the contents you list above.
3. Ran the script and everything worked.
4. Waited like 30 seconds doing nothing.
5. Ran the script again and it did not connect.

Attached is the complete contents of the debug DOS window from the above sequence.  Please note that even with the #delay commented out this script connects properly the first time.

HKJ,

I went back and tried all the recent versions of TestController I had to see when the change happened.

   V1.02, V1.04, V1.06 all reconnect properly in Debug mode every time I click Reconnect button

   V1.09 and advanced copy of V1.10 both connect once in Debug mode by every time I click Reconnect button the request times out and does not connect

I do not have versions between V1.06 and V1.09 to try and narrow it down further.  Somewhere between V1.06 and V1.09 something changed in how the socket receive buffer acts during a reconnect.  Hopefully this helps narrow it down some.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 15, 2020, 01:06:42 pm
I hope I found the problem.
Try using the above link again, it is supposed to give V1.11 (I may take a bit time due to caching at my hosting service).
Title: Re: Program that can log from many multimeters.
Post by: gby on August 15, 2020, 01:43:58 pm
I hope I found the problem.
Try using the above link again, it is supposed to give V1.11 (I may take a bit time due to caching at my hosting service).

You found it.  I can now reconnect over and over again in this V1.11 like with previous versions.

I know how difficult it can be to fix problems you can't see in your own setup so thank you very much.

Now back to writing fancier and more productive scripts   8)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 15, 2020, 06:22:07 pm
A few post back I was asked why not use the sound card and I decided to look at it.
First as output and I have it nearly ready as a generator, but I am wondering?

Is there any reason to support triangle/square wave output? The bandwidth is limited and it will only work at rather low frequencies (My sound card with 96k sample rate can handle about 30kHz, not anything like sampleRate/2).

I will be supporting a logarithmic sweep directly.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 15, 2020, 07:07:12 pm
Good news. 8)

I have to date never used triangle or square
from sound cards because of the frequency
response limitations. :horse:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 16, 2020, 10:46:12 am
V1.12 is up
This fixes a bug and makes it possible to use the computers sound card as a frequency generator.
   Added: Sound card output device, i.e. sound card can be used as a frequency generator.
   Fixed: Did not close devices on reload
   Changed: Chart X axis do not revert to time each when logging is started.

To find it in the device list filter on sound.

(https://lygte-info.dk/pic/Projects/TestController/DocSoundcard/Out.png)

Manual for this: http://lygte-info.dk/project/TestControllerSoundcard%20UK.html (http://lygte-info.dk/project/TestControllerSoundcard%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 16, 2020, 02:04:11 pm
Just tested the sound card output. Works well.  :-+
But I have two usability problems when sweeping in chart doing frequency response graphs.
Because the sweep is continuous, sweeping at the end needs to stop at the highest frequency as otherwise the chart is messed up by the frequency returning to the start frequency or logging needs to be stopped manually just before reaching the highest frequency. Difficult in Chart because one has to return to "Command" to prevent this frequency flashback messing up the graph.

The solutions to this might be:
1.) Have a log start/stop button in a separate floating window (would also be useful in Chart when interrupting logging to setup something).
and
2.) Sweep Start/Hold/Stop Buttons in the sound card popup.
or let a single sweep stop at the end maintaining the highest frequency.



Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 16, 2020, 02:15:17 pm
But I have two usability problems when sweeping in chart doing frequency response graphs.
Because the sweep is continuous, sweeping at the end needs to stop at the highest frequency as otherwise the chart is messed up by the frequency returning to the start frequency or logging needs to be stopped manually just before reaching the highest frequency. Difficult in Chart because one has to return to "Command" to prevent this frequency flashback messing up the graph.

You can easily clean the chart by typing the sweep time in the "Last sample to display" field.
I have been thinking about it and may implement some sort of "arm" command that will run a single sweep when logging is started.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 16, 2020, 03:01:38 pm
I played with the #SaveChart script command in V1.12.  When I do something like:

   #SaveChart "myfile"

I get the file myfile.png with a picture of the chart saved in the ...\Documents\TestController directory.  But, I also get a second file named myfile.txt that seems to be a copy of the TestController log window up to the #SaveChart command in the script but not after.  Was it your intention that #SaveChart saves the .png picture as well as the log window with the one command?

What sets the picture size for the #SaveChart command?  I looked on the web site for some documentation on possible arguments for the #SaveChart command and was not able to find it.  I seem to always get 500 x 250 pixel.

Lastly, I don't seem to get the full chart in the saved picture.  My script does:
Code: [Select]
#log 0.1

#while (FtLow<50)
=FtLow=FtLow+2
#delay 1
#endwhile

#log 0

#SaveChart "myfile"
which generated the attached myfile.png showing only 0.0s on the x-ais.  I would expect all 6 sec on time axis but it only seems to get the first logged data point or none.

After the script is done if I manually type #SaveChart "foo", run that one line, then the resulting picture seems fine with the full 6 sec.  Am I using the #SaveChart command incorrectly/is there a trick to getting the graph to be the full time span inside a script?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 16, 2020, 03:18:57 pm
I played with the #SaveChart script command in V1.12.  When I do something like:

   #SaveChart "myfile"

I get the file myfile.png with a picture of the chart saved in the ...\Documents\TestController directory.  But, I also get a second file named myfile.txt that seems to be a copy of the TestController log window up to the #SaveChart command in the script but not after.  Was it your intention that #SaveChart saves the .png picture as well as the log window with the one command?

My code need a couple of "break", it is fixed from next version.


What sets the picture size for the #SaveChart command?  I looked on the web site for some documentation on possible arguments for the #SaveChart command and was not able to find it.  I seem to always get 500 x 250 pixel.

If you are online the documentation is supposed to be below the command line in the help window.
You can directly write the file size in pixels after the filename:

#savechart test 2000 1000

When nothing is specified it used the first entry in the size list, you can change that on the configuration page.

Lastly, I don't seem to get the full chart in the saved picture.  My script does:

Oops, I am missing a update of the chart to include the newest data, before I save it. It will be fixed in next version.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on August 17, 2020, 07:10:15 am
...just brainstorming...

Is it a good idea, being able to add an event into the chart like a small flag, which opens a text box when touching with the mouse? For example, you measure something, than change a parameter and you want to add this info into your chart, so that you have an explanation for the different outcome, being directly connected to your saved csv-file, for later use?

As far as saving "csv" is concerned:

When I want to save the content from "Table" into a csv-file, the format "csv" is already chosen at the bottom of the window, but you have to add "csv" manually to your file name; not a big deal, but I have the impression, that this was not necessary in early versions? But maybe I am wrong or it is a linux issue?!

Thanx!  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 17, 2020, 07:20:09 am
...just brainstorming...

Is it a good idea, being able to add an event into the chart like a small flag, which opens a text box when touching with the mouse? For example, you measure something, than change a parameter and you want to add this info into your chart, so that you have an explanation for the different outcome, being directly connected to your saved csv-file, for later use?

That would requiring saving multiple files, i.e. make something like a "save project" option. I have been thinking about it, but have not decided if I want to go there.

As far as saving "csv" is concerned:

When I want to save the content from "Table" into a csv-file, the format "csv" is already chosen at the bottom of the window, but you have to add "csv" manually to your file name; not a big deal, but I have the impression, that this was not necessary in early versions? But maybe I am wrong or it is a linux issue?!

It has to do with points. If the filename contain a point ".", it assumes you have specified an extension and do not adds it own.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 17, 2020, 01:00:29 pm

You can easily clean the chart by typing the sweep time in the "Last sample to display" field.

8) Really cleans up the chart nicely.

By the way: got a HO732 LAN/USB Interface for my HMO1022.
No dropouts any more when querying via LAN now:-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 17, 2020, 01:17:02 pm
You can easily clean the chart by typing the sweep time in the "Last sample to display" field.

8) Really cleans up the chart nicely.

And I have added a single sweep option to the sound card output and also optimized the code significantly, it was using way to much processor power. I will probably publish the new version tomorrow.

The single sweep option is an extra "on" button that will arm the single sweep (Outputs the starting frequency), start logging or press the button again to perform the sweep
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 17, 2020, 01:19:07 pm
By the way: got a HO732 LAN/USB Interface for my HMO1022.
No dropouts any more when querying via LAN now:-+

What HMO? I do not have any HMO!
Will you share the definition?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 17, 2020, 01:36:50 pm
My definitions for the HMO1022 scope (USB-virtual comport/RS232 i.e HO720 interface plug-in module) and (USB-virtual com port/LAN i.e. HO732 interface plug-in module) are quite rudimentary and need a bit of polishing and testing at the moment. :palm:
The definitions currently only cover Level and Frequency on channel 1. No popups yet.  :scared: If still interested, I would provide the definitions in a couple of days or so. :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 17, 2020, 02:18:56 pm
My definitions for the HMO1022 scope (USB-virtual comport/RS232 i.e HO720 interface plug-in module) and (USB-virtual com port/LAN i.e. HO732 interface plug-in module) are quite rudimentary and need a bit of polishing and testing at the moment. :palm:
The definitions currently only cover Level and Frequency on channel 1. No popups yet.  :scared: If still interested, I would provide the definitions in a couple of days or so. :phew:

I do not know if other people are using the scope, but it cannot harm to include it in TestController.
Add a #notes with requirements for interface and a explanation of what it do.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on August 17, 2020, 04:28:19 pm
My definitions for the HMO1022 scope (USB-virtual comport/RS232 i.e HO720 interface plug-in module) and (USB-virtual com port/LAN i.e. HO732 interface plug-in module) are quite rudimentary and need a bit of polishing and testing at the moment. :palm:
The definitions currently only cover Level and Frequency on channel 1. No popups yet.  :scared: If still interested, I would provide the definitions in a couple of days or so. :phew:

Messtechniker,

You can try using the device file I created for the Siglent scope as a template.

Title: Re: Program that can log from many multimeters.
Post by: gby on August 17, 2020, 08:08:36 pm
HKJ,

I have been experimenting using #math as extra log channels and found a couple of difficulties.  I am using the following lines at the beginning of my script:
Code: [Select]
#math
#math RDSineOff - FormulaNU 0 getMatch(deviceRead("AKD1G","FB1.REGRDSineOffset?"),"[-.0-9]+")
#math FtLow - Formula 0 FtLow
#math FB1MPos - FormulaNU 0 getMatch(deviceRead("AKD1G","FB1.MECHPOS?"),"[-.0-9]+")

FtLow is defined in the script as an =globalvar variable before the above.

While running this test script I have to regularly clear a fault in the device.  Unfortunately clearing faults take a long time and blocks communications until the fault clear is done.  For normal #askValues log channels missed points are marked with a ? and keeps on logging.  Unfortunately this short time blocked communications turns the #math extra logging channels off.  Specifically, looking at the Math tab while the script runs the two FormulaNU channels have the enable un-checked and the Source formula turns red.  At that point those channels enter just 0 for the rest of the log.  Having the FormulaNU channels stop means I can't use them.  Can TestController treat the interrupted communications like normal logging channels and enter ? into the log for missed points but continue working? 

After the above happens with the #math channels un-checked and formula turned red if I run the script again, which runs the definitions in the script snippet again, TestController does not re-enable the turned off #math channels.  They still have a red indication in the Source Formula column.  If I just click inside the Source Formula and hit return manually they work.  Why doesn't the script #math re-defining them fix and re-enable them?

Lastly, I noticed a minor bug in deleting math channels.  If you have multiple math channels in the Math tab and select the first/top one, then when you click the delete button the first one disappears.  You can then click delete to remove the second one and so on.  Unfortunately the last one never disappears.  If you start logging it does not log any math channels but the Math tab shows shows the last one that did not delete.  If you close TestController and re-open the Math tab would be empty.  Seems to be an index issue in the display of the math channels after deleting them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2020, 05:13:27 am
While running this test script I have to regularly clear a fault in the device.  Unfortunately clearing faults take a long time and blocks communications until the fault clear is done.  For normal #askValues log channels missed points are marked with a ? and keeps on logging.  Unfortunately this short time blocked communications turns the #math extra logging channels off.  Specifically, looking at the Math tab while the script runs the two FormulaNU channels have the enable un-checked and the Source formula turns red.  At that point those channels enter just 0 for the rest of the log.  Having the FormulaNU channels stop means I can't use them.  Can TestController treat the interrupted communications like normal logging channels and enter ? into the log for missed points but continue working? 

I can add a something to handle this, but the sample rate will probably be reduced when an error occurs (and stay reduced) and I cannot prevent that.


After the above happens with the #math channels un-checked and formula turned red if I run the script again, which runs the definitions in the script snippet again, TestController does not re-enable the turned off #math channels.  They still have a red indication in the Source Formula column.  If I just click inside the Source Formula and hit return manually they work.  Why doesn't the script #math re-defining them fix and re-enable them?

The general assumption is that you need to edit the math to fix the error.


Lastly, I noticed a minor bug in deleting math channels.  If you have multiple math channels in the Math tab and select the first/top one, then when you click the delete button the first one disappears.  You can then click delete to remove the second one and so on.  Unfortunately the last one never disappears.  If you start logging it does not log any math channels but the Math tab shows shows the last one that did not delete.  If you close TestController and re-open the Math tab would be empty.  Seems to be an index issue in the display of the math channels after deleting them.

It is a screen update problem, I will look at it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 18, 2020, 06:53:56 am
Here we go again with a problem right from the start :palm:
Trying to create a single device file (R&SHMO1022.txt) where both HMO1022 connection types (COM and LAN) will appear as instruments in the search socket list. The ID strings are identical, this probably being the main problem in my case. So that the #metadef and #meta thing will not work.

#idString HAMEG,HMO1022,
#name R&S HMO1022 COM
#handle HMO1022
#port com
#baudrate 9600

and

#idString HAMEG,HMO1022,
#name R&S HMO1022 LAN
#handle HMO1022
#port 5025

work individually in separate definition files but not together. |O

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2020, 07:11:23 am
Here we go again with a problem right from the start :palm:

Don't bother with metadef, use:

#port 5025 com
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 18, 2020, 01:00:13 pm
Works. :-+ But only after having accidentally discovered that there is a dropdown box under "Type" resp. under "Baudrate" :palm:
Small annoyance: When changing the type from Serial to Socket the Baudrate should automatically change to -.

Now off to that popup stuff. See how much I can pilfer from that SiglentSDSxxxxxx.txt definition file. :)

A few hours later: chugging away nicely with this popup stuff. Except for the Offset SCPI command which seems to be wrong in the SCPI command manual for the HMO1022. Will probably have to ask R&S for assistance. :palm:
Title: Re: Program that can log from many multimeters.
Post by: gby on August 18, 2020, 01:31:52 pm


After the above happens with the #math channels un-checked and formula turned red if I run the script again, which runs the definitions in the script snippet again, TestController does not re-enable the turned off #math channels.  They still have a red indication in the Source Formula column.  If I just click inside the Source Formula and hit return manually they work.  Why doesn't the script #math re-defining them fix and re-enable them?

The general assumption is that you need to edit the math to fix the error.


I understand the points.  But, I would think that executing a #math command to define a math channel would count as editing the math.  For example, I would expect the below sequence to work but it doesn't.
1. Start TestController fresh with no #math channels defined and no device connected.
2. Execute script to define one #math channel.  For example:
        #math RDSineOff - FormulaNU 0 getMatch(deviceRead("AKD1G","FB1.REGRDSineOffset?"),"[-.0-9]+")
3. Click the Current_values tab and see only 0 for the #math channel values.
4. Click the Math tab and see that the Math channel formula is red (because no device is connected.)
5. Click the Load devices tab, select device, click reconnect.
6. Run the script to define the #math channel again.
7. Click Math tab and see it is still red.
8. Click inside formula, make no changes, and hit return.  Now the red on the formula is gone.
9. Click Current_values and see values come back.

TestController in the above sequence makes perfect sense to me except at step 6.  I would have thought that step 6 would count as editing the #math channel and would clear the red.  It does not.  You have to manually enter the formula make no changes in step 8 to get it to work again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2020, 02:26:55 pm
6. Run the script to define the #math channel again.
7. Click Math tab and see it is still red.

TestController in the above sequence makes perfect sense to me except at step 6.  I would have thought that step 6 would count as editing the #math channel and would clear the red.  It does not.

You have a very good point, luckily is is easy fixed in the software.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2020, 03:58:05 pm
V1.13 is up
It adds the sound card input and fixes a couple of bugs.
   Fixed: A #math statement will clear any errors for that entry
   Added: Fault handling to expressions: isNan(), isInfinite(), noFault(), invalidValue()
   Added: Sound card input
   Fixed: Optimized code in sound card output, it uses less processor power now.
   Added: Single sweep to sound card output
   Fixed: #SaveChart did not update chart to included the latest data before saving.
   Fixed: #SaveChart and a few other commands combined multiple commands, this is fixed.

(https://lygte-info.dk/pic/Projects/TestController/DocSoundcard/in.png)

Sound card input do not have many settings, except selecting the input and sampling parameters.

(https://lygte-info.dk/pic/Projects/TestController/DocSoundcard/InputZoomed.png)

But I found out it was very useful to be able so the the sampled data.

(https://lygte-info.dk/pic/Projects/TestController/DocSoundcard/inCurrent.png)

The result is 3 values, calculated from the data.

I also believe this release fixes all issues and current wishes from gby.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 18, 2020, 07:58:28 pm
HKJ,

Thanks for V1.13.  I really do appreciate you helping me.  I just downloaded it and started working with it.  Thanks for making #math script command re-set a failed/errored math channel.  Works great now.

I am trying to work with the #saveTable command and I can't seem to get the output format as desired.

#saveTable foo ,;
#saveTable foo .,
Both generate the exact same output file as checked using a file compare utility.  Below is an example first data line:
0;0,001;0,0000166667;1597775263,874;0;55;35;10
The above seems to use "," as the decimal indication and ";" as the separator between numbers.

#saveTable foo tab
#saveTable foo ,
Both generate the exact same output file as checked by a file compare utility.  Below is an example first data line:
0   0.001   0.0000166667   1597775263.874   0   55   35   10
The above seems to use "." as decimal indication and "tab" as the separator.  For a US machine with "." decimal default this makes sense.

My question is how to use #saveTable to save a file with "." as decimal and "," as separator?

When using the Table tab Save button and having the format radio button set to "., format" in the file dialog box the saved file correctly uses "." as decimal and "," as separator.  If you execute #saveTable foo ., and then go to the Table tab, click the Save button the format selected in the radio button in the file dialog is set to ",: format".

Also, Ver 1.13 seems to work differently in the Table tab Save dialog box.  In the file save dialog box I select an existing file test.csv and then click the Save button.  In previous versions TestController just overwrites the existing file with new data.  In Ver 1.13 it creates a new file with name test.csv.csv.  If you try to save again and select test.csv.csv you get test.csv.csv.csv.  Not a real problem but is different than before and different than convention.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2020, 08:12:38 pm
I will take a look at these things tomorrow, it looks like there may be some bugs to fix.

Have you checked the noFault() function (It is documented here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Trapping_any_error_or_fault (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Trapping_any_error_or_fault))
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 19, 2020, 07:07:05 am
Please find enclosed the definition file R&SHMO1022.txt (Ver. 0.2)
for the R&S HMO1022 scope equipped with Interface
HO720 (RS232 and USB via virtual COM port) or
HO732 (USB via virtual COM port) and LAN. :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 07:17:45 am
V1.14 is up
It is mostly a bug fix, but I also included the definition from Messtechniker
   Added: R&S HMO1022 Oscilloscope
   Fixed: save extension handling did not work correctly
   Fixed: #savetable xxx ., did not work
   Fixed: Missing updates on Math and Load devices page

The HMO was a very very late addition, the zip was first uploaded without it.
I added a #notes to the HMO saying it needs an optional interface.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 07:20:06 am
#saveTable foo ,;
#saveTable foo .,

This is fixed now.

#saveTable foo tab
#saveTable foo ,

The tab sets the format to tab and the , is ignored, i.e. the format will not be change from the previous selected tab format.

Title: Re: Program that can log from many multimeters.
Post by: gby on August 19, 2020, 01:40:28 pm
HKJ,

I just downloaded Test Controller from the web page like normal and in Configuration About it says Ver 1.13.  However, if I file compare this testcontroller.zip to the previous 1.13 download the .zip files are different.  The .zip file I just got has the new R&SHMO1022.txt device file.

Testing the .jar file in the new download it does not seem to have the Ver 1.14 fixes so I don't think it is 1.14 with the old version number either.

Per forum post time stamps it has been 6+ hours since your Ver 1.14 post so I would think caching should be done but I don't know???
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 02:46:07 pm
HKJ,

I just downloaded Test Controller from the web page like normal and in Configuration About it says Ver 1.13.  However, if I file compare this testcontroller.zip to the previous 1.13 download the .zip files are different.  The .zip file I just got has the new R&SHMO1022.txt device file.

Testing the .jar file in the new download it does not seem to have the Ver 1.14 fixes so I don't think it is 1.14 with the old version number either.

Per forum post time stamps it has been 6+ hours since your Ver 1.14 post so I would think caching should be done but I don't know???

Something has gone wrong during the build process. I have repeated the process and now I hope it is up.
I do not believe the caching delays the file more than an hour, but it can be in that range when updating files.

Title: Re: Program that can log from many multimeters.
Post by: gby on August 19, 2020, 03:14:57 pm
Attached is a device file fo the Kunkin KP184. I do not have a Kunkin KP184 so it is untested. Please let me know if there are any issues and I will try to fix them.

(Attachment Link)

Mike, HKJ,

I finally got some time to play with my Kunkin KP184 and Mike's device file.  On my PC with a real COM1 port (not via a USB serial adapter) it connected.  The *idn? command manually typed in gives a response as expected.  Unfortunately none of the other query commands seems to give a reply.

I re-started TestController Ver1.13 in debug mode to see more about what is going on.  Unexpectedly right at the connection to the device I am getting Java errors in the debug window.  Hopefully HKJ can help us with those.

Attached is the debug window entire contents when doing the following:
1.  Start TestController Ver 1.13 with only the Kunkin KP184 device selected to connect.  Note Java errors at the beginning from connecting.
2.  Manually do *idn?.  Note no Java errors and the correct response is returned.
3.  Manually do device file scpi command CurrentM? and got Rx timeout error and a bunch of Java errors.
4.  Manually do device file scpi command current? and got Rx timeout error and a bunch of Java errors.

Device popups also do not work and yield debug window Java errors and Rx timeout errors since the underlying basic communications doesn't work.

To test if there is a basic Modbus communications problem I did connect to a different Modbus device (admittedly via IP not COM) and no Java errors, just works.  So, there might be some Modbus issue with COM communications/some setup for this device issue???

Suggestions for next steps?
Title: Re: Program that can log from many multimeters.
Post by: PushUp on August 19, 2020, 03:19:16 pm
Now, 1.14 is downloadable.  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 04:32:50 pm
I finally got some time to play with my Kunkin KP184 and Mike's device file.  On my PC with a real COM1 port (not via a USB serial adapter) it connected.  The *idn? command manually typed in gives a response as expected.  Unfortunately none of the other query commands seems to give a reply.

The timeouts and the Java null pointer are related: When no answer is received the communication routine returns a null pointer.
It looks like no answer are received at the modbus level.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 19, 2020, 06:29:17 pm
The Kunkin manual says it uses Modbus RTU communications.  The below is a snip from the manual.  This is an example message to set/write to the load current value.  It is writing a 32 bit unsigned integer 0x000007D0 = 2000 decimal to address 0x0116.  Doing holdingL 0x0116 2000 in TestController generates a slightly different resulting message:

TestController:   01 10 01 16 00 02 04 00 00 07 D0 7C B5
Kunkin Manual:  01 06 01 16 00 01 04 00 00 07 D0 0C 9D
 
The device file contained the below commented out so I would expect TestController to be able to use 06 on writes.
;#disableWriteSingle 1

How to get TestController to use 06 instead of 10 for 32 bit value read/write and how to get TestController to put 00 01 instead of 00 02 after the address?  I assume the last two bytes are proper CRC's in each case.

Code: [Select]
Instruction example:
The following instances suppose the communication be 01, data is hexadecimal
format.
1.Set up load current:
Send instruction: 01 06 01 16 00 01 04 00 00 07 D0 0C 9D
The meaning of each byte is:
01: equipment address.
06: instruction number written in the single register.
01 16: address written in the target register (load current register).
00 01: the number written in the target register
04: the byte number of data written in the target register. If the target register
is 4-byte register, the value is 4.
00 00 07 D0 : data, if it is 07D0, the current is set up as 2000mA.
0C 9D: check code. The high order is before the low order.
Load return data: 01 06 01 16 00 01 04 00 00 07 D0 0C 9D
When operating single register of the load, the load return data is returning the
instruction as original.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 07:05:42 pm
The Kunkin manual says it uses Modbus RTU communications.  The below is a snip from the manual.  This is an example message to set/write to the load current value.  It is writing a 32 bit unsigned integer 0x000007D0 = 2000 decimal to address 0x0116.  Doing holdingL 0x0116 2000 in TestController generates a slightly different resulting message:

TestController:   01 10 01 16 00 02 04 00 00 07 D0 7C B5
Kunkin Manual:  01 06 01 16 00 01 04 00 00 07 D0 0C 9D
 
The device file contained the below commented out so I would expect TestController to be able to use 06 on writes.
;#disableWriteSingle 1

How to get TestController to use 06 instead of 10 for 32 bit value read/write and how to get TestController to put 00 01 instead of 00 02 after the address?  I assume the last two bytes are proper CRC's in each case.

06 is single write and only works when writing 16 bit values. That means using a "holding" command with one address and one value

Default for test controller is to 06 when writing one 16 bit value and 10 when writing multiple values (including 32 bit values).
The "#disableWriteSingle 1" will simply disable using 06 and use 10 for all writes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 07:31:02 pm
Looking a bit more on the format, it looks like it is not modbus, but their own variant of it.
The format of a 06 is:

Slave Address        01
Function                06
Register Address Hi     00
Register Address Lo  01
Preset Data Hi        00
Preset Data Lo     03
Error Check (LRC or CRC)––

As can be seen there is no data count included.

This mean I will have to add a variant of modbus to handle this.

Title: Re: Program that can log from many multimeters.
Post by: MikeLud on August 19, 2020, 09:05:55 pm
Looking a bit more on the format, it looks like it is not modbus, but their own variant of it.
The format of a 06 is:

Slave Address        01
Function                06
Register Address Hi     00
Register Address Lo  01
Preset Data Hi        00
Preset Data Lo     03
Error Check (LRC or CRC)––

As can be seen there is no data count included.

This mean I will have to add a variant of modbus to handle this.

What also is weird it excepted a SCPI command.

Code: [Select]
;; Found Kunkin KP184 on Serial0 (COM1)
*idn?
;; KP184: Tx <*idn?>
;; KP184: Rx <Kunkin,Kunkin KP184, , >
;; Kunkin,Kunkin KP184, ,
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2020, 09:18:16 pm
What also is weird it excepted a SCPI command.

Not really, all non-SCPI drivers implements a SCPI driver in the Java code, that translate to something else. Here it was the internal SCPI driver that answered and no native commands was defined to verify the device first.
If any of:
#verifyDevice
#scpiCmd getDeviceSW?
#scpiCmd getDeviceSN?
Had been present, it would have tried to communicate before answering the *idn?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 20, 2020, 07:25:48 am
Ver. 0.3 of the HMO1022 definition file. Now includes phase measurement.  :-+
Useful for aligning tape heads - should anybody sill be doing this. :palm:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 07:36:46 am
Working a bit on Kunkin, but it far from finished:

Try with this .jar file, it will get the correct transmit message:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)  (V1.15)

The definition file must contain:
#driver Modbus
#subDriver Kunkin

Using a "holdingL 0x116 2000" message matches manual with this subDriver

What I need to know now is (Logs from using debug mode):

Do TC handle the answer and what is the answer.

Do a "holding 0x10c 1" set the load in short mode.

Answering messages from:
holding? 0x10c
holdingL? 0x116
holdingL? 0x300

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 07:39:46 am
Ver. 0.3 of the HMO1022 definition file. Now includes phase measurement.  :-+
Useful for aligning tape heads - should anybody sill be doing this. :palm:

It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 20, 2020, 12:55:52 pm
Initial test results with Kunkin KP184 using the below in the device file:
   #port com
   #driver Modbus
   #subDriver Kunkin
   ;#disableWriteSingle 1
I then did the following sequence to test using the test TC V1.15:

1.  Started TC in debug mode with only Kunkin selected
2.  Did holdingL 0x116 2000
     Got a reply from it.
     Doc says echo full command but debug only shows first 6 Char not full 13.
     Best news is the current value was successfully set to 2000 mA (Checked via front panel)
3.  holding 0x10c 1
     No Rx from Kunkin/Rx Timeout
4.  holding? 0x10c
     Rx timeout
5.  holdingL? 0x116
     Rx timeout
6.  holdingL? 0x300
     Rx timeout
The full debug window contents of running the above is attached.

Then just to see if some incomplete operation on the instrument or in TC held up the queries I power cycled the Kunkin, restarted TC and the first thing I did was
   holdingL? 0x116
to see if that made any difference.  Unfortunately same answer Rx Timeout.  Lastly, right after this I tried:
   holdingL 0x116 1500
and again the write worked.  So, the Kunkin seems to be ready right away after an unsuccessful communication attempt.

Working a bit on Kunkin, but it far from finished:

Try with this .jar file, it will get the correct transmit message:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)  (V1.15)

The definition file must contain:
#driver Modbus
#subDriver Kunkin

Using a "holdingL 0x116 2000" message matches manual with this subDriver

What I need to know now is (Logs from using debug mode):

Do TC handle the answer and what is the answer.

Do a "holding 0x10c 1" set the load in short mode.

Answering messages from:
holding? 0x10c
holdingL? 0x116
holdingL? 0x300
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 01:25:32 pm
Initial test results with Kunkin KP184 using the below in the device file:

Thanks, it helped. I have updated the .jar file (Same link as before).
The problem is that it do not use modbus, but some modified (and not very well documented) version of it. I have to experiment with the messages.

Please run the same tests as before.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 20, 2020, 02:41:11 pm

Thanks, it helped. I have updated the .jar file (Same link as before).
The problem is that it do not use modbus, but some modified (and not very well documented) version of it. I have to experiment with the messages.

Please run the same tests as before.

Results with V1.16:
1.  Started TC in debug mode with only Kunkin selected
2.  Did holdingL 0x116 2000
     No Rx reply in debug window.
     Successfully set current to 2000 mA
3.  holding 0x10c 1
     No Rx from Kunkin
     Don't think it did anything, not sure display shows short mode on.
4.  holding? 0x10c
     Rx timeout
5.  holdingL? 0x116
     Rx worked
     Received back the 2000 mA setpoint.
6.  holdingL? 0x300
     Rx gave something in debug window.  Should be actual voltage and current which are both 0, but only 2000 shows.
     Manual says send:      01 03 03 00 00 00 8E 45
     TC 1.16 actually sent: 01 03 03 00 00 04 4D 44
     I think the TC "04" needs to be "00" for this command.  last two are correct CRC's I assume.
The full debug window contents of running the above is attached.

For doing communication debug like this can TC send raw hex sequences typed manually in somehow?  If there was a mode to send raw could just try commands and see what comes back without having to change Java code.  Just a thought....
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 03:25:44 pm
Try changing all the holdingF to holdingL in the definition file, you will probably be able to set parameters on the load then.

What is missing now is reading and writing 1 byte values (0x10c) and the long message (Maybe it is 0x3000 instead of 0x300).
Do it work with a 32 bit read?
holdingL? 0x10c

There is some model and version info here:
holdingL? 0x0001
Title: Re: Program that can log from many multimeters.
Post by: gby on August 20, 2020, 04:24:26 pm
Try changing all the holdingF to holdingL in the definition file, you will probably be able to set parameters on the load then.

What is missing now is reading and writing 1 byte values (0x10c) and the long message (Maybe it is 0x3000 instead of 0x300).
Do it work with a 32 bit read?
holdingL? 0x10c

There is some model and version info here:
holdingL? 0x0001

After changing holdingF to holdingL in the Device file most things are working now with Ver 1.16  :clap:
Nothing I tried caused any errors in the debug window.  No Java errors, no timeouts.

I fixed a couple of typos in the original device file:
   Voltage, current measurement addresses backwards.
   Mode setting CC and CV in device popup were backwards.

I did the requested queries:

1.  Start TC Ver 1.16 with just Kunkin KP184 connected.
     Connects with no errors.
2.  holdingL? 0x10c
     Returns 234881024 = 0xE000000
3.  holdingL? 0x0001
     Returns 1840 which seems to be the model number
4.  mode? to read back the present mode
     Returns number correctly.  3 for CW and 1 for CC.

Seems to log OK also.  I requested log 0.01 and it did 0.05 sec between points consistently.  I assume 0.05 sec is set by the communications/Kunkin turn around time.  Still, pretty good.

I have attached the debug window for the above and the modified device file I used.

Any suggested next steps to try?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 05:22:37 pm
Any suggested next steps to try?

Do on/off work?

Any it needs a verifications:

#scpiCmd model? holdingL? 0x0001
#verifyDevice 1840 model?

This will basically prevent the definition from loading without a KP184 connected, i.e. the *idn? will not answer.


With this there is not much to do, maybe try if reading/writing two bytes at a time work. I have uploaded a new version where holding without the final L will read/write 2 byte entries, you can try that with 0x10c
Title: Re: Program that can log from many multimeters.
Post by: BobM on August 20, 2020, 06:05:26 pm
HKJ, could you please explain the basics of how the IP communication between your software and the devices work?

I'm trying to get RD6006W to communicate with the software. I have a fair bit of computer and electronics experience (decades) but I can't seem to find documentation on the basics. Which side initiates the IP connection? Ports? Etc.

From what I gathered so far RD60006W uses Modbus to communicate. These is an ESP8266 chip inside the RD6006W that act's as an IP bridge for Modbus.

To get the ESP8266 chip to communicate, it needs to be joined to WiFi, which I successfully did with an Android app. But the app apparently set a "server IP", which is the IP of the Android device. Once the ESP8266 obtained a real IP, I port scanned it and found nothing open. Which suggests the RD6006W would connect to your software? :o
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 06:18:52 pm
HKJ, could you please explain the basics of how the IP communication between your software and the devices work?

Standard client-server with the device being server.


To get the ESP8266 chip to communicate, it needs to be joined to WiFi, which I successfully did with an Android app. But the app apparently set a "server IP", which is the IP of the Android device. Once the ESP8266 obtained a real IP, I port scanned it and found nothing open. Which suggests the RD6006W would connect to your software? :o

As I said above the device must be server for my software to connect.

The serial connection to RD6006 uses modbus-RTU (Modbus has 3 different formats: RTU, Ascii, TCP)
Title: Re: Program that can log from many multimeters.
Post by: gby on August 20, 2020, 08:02:53 pm
Do on/off work?

Any it needs a verifications:

#scpiCmd model? holdingL? 0x0001
#verifyDevice 1840 model?

This will basically prevent the definition from loading without a KP184 connected, i.e. the *idn? will not answer.

With this there is not much to do, maybe try if reading/writing two bytes at a time work. I have uploaded a new version where holding without the final L will read/write 2 byte entries, you can try that with 0x10c

On/Off is working.  Indicator in device popup does not work.  Not sure why.

Added the model?, #verifyDevice to the file and that seems to work.
Code: [Select]
;; Start thread for: COM1 - Kunkin KP184
;; COM1: Set params: 9600
;; : Tx <holdingL? 0x0001>
;; COM1: Tx: 01 03 00 01 00 04 C9 15
;; COM1: Rx: 01 03 04 00 00 07 30 17 F8
;; COM1: Tx <mode?>
;; COM1: Tx <holdingL? 0x0110>
;; COM1: Tx: 01 03 01 10 00 04 30 44
;; COM1: Rx: 01 03 04 00 00 00 01 F3 3B
;; COM1: Rx <1>
;; Found Kunkin KP184 on Serial0 (COM1)

Using the new V1.17:
   holding? 0x10c
yields Java errors and Rx Timeout.  On the other hand,
   holdingL? 0x10c
yields 0 as the response when device is off and 234881024 = 0xE0000000 when the device is on.  I am guessing that holdingL would work if combined with masking to get at the bits.  My Kunkin manual has no documentation on 0x10c so I can't suggest what masking.

Attached is the latest Kunkin 184 device file.  Perhaps it is good enough to publish now?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 20, 2020, 08:24:17 pm
On/Off is working.  Indicator in device popup does not work.  Not sure why.

Because on must return a 1 value with the current definition. This is easily fixed.
Instead of "on 1" use "on  0xE0000000" or add a :readmath: expression to convert it on the line below #scpiCmd: :readmath: value?1:0

Using the new V1.17:
   holding? 0x10c
yields Java errors and Rx Timeout.  On the other hand,
   holdingL? 0x10c
yields 0 as the response when device is off and 234881024 = 0xE0000000 when the device is on.  I am guessing that holdingL would work if combined with masking to get at the bits.  My Kunkin manual has no documentation on 0x10c so I can't suggest what masking.

I have a Chinese/English spreadsheet with a list of address, some of them are marked with 1 and some with 4
These is some more to control if somebody wants to use the time.

Attached is the latest Kunkin 184 device file.  Perhaps it is good enough to publish now?

With exception of getting the indicator to work, yes. More stuff would be nice, but it not needed before I will include the definition.
Title: Re: Program that can log from many multimeters.
Post by: BobM on August 20, 2020, 09:21:09 pm
Standard client-server with the device being server.

That's what I would have bet on if I were to guess how it works.

But, I'm getting a very strong impression that the RD6006W acts as the client, and the software (Riden's PC software and mobile apps) act as the server.

Here's why:


Did anyone actually get RD6006W working over WiFi?  :o
Title: Re: Program that can log from many multimeters.
Post by: gby on August 20, 2020, 10:34:33 pm
On/Off is working.  Indicator in device popup does not work.  Not sure why.
Because on must return a 1 value with the current definition. This is easily fixed.
Instead of "on 1" use "on  0xE0000000" or add a :readmath: expression to convert it on the line below #scpiCmd: :readmath: value?1:0

Added the :readmath and now on? returns 0 or 1 and not 0xE0000000.  But, the popup indicator seems to be permanently on.  I must admit that indicator lights are the hardest part of device files for me.

Attached is latest Kunkin KP184.  I suggest going ahead and publishing it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 21, 2020, 05:57:45 am
Ver. 0.4 of the HMO1022 definition file. Now includes
Position read/write,Volts/Division read and Mode buttons :phew:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 07:13:04 am
But, I'm getting a very strong impression that the RD6006W acts as the client, and the software (Riden's PC software and mobile apps) act as the server.

I believe that is the case and it is not support in TestController.

I suggest going ahead and publishing it.

Agree.

Ver. 0.4 of the HMO1022 definition file. Now includes
Position read/write,Volts/Division read and Mode buttons :phew:

I will include the updated version.
You can have more than one button on a line by using "buttons" instead of "button"
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_buttons (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_buttons)

I was thinking about something like this:

#cmdSetup button Quick_Viev
:write: MEAS1:#
Off AOFF
On AON


Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 21, 2020, 08:51:06 am
Yep. I was also thinking about this 2 buttons in row thing, but initially did not succeed.
I'll try your valuable hint.

A few minutes later:
Quick View buttons now in a single row. :-+
Will wait with publication until I get a response from R&S Germany about the non-functional offset command OFFS. :palm:

Just got a response from R&S. They can reproduce this behaviour! (gotcha) :-+
And will get back to me.
Good service for a scope which has been discontinued a while ago. :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 09:23:08 am
Yep. I was also thinking about this 2 buttons in row thing, but initially did not succeed.

The "buttons" format can handle from one button and up, the only limit is how wide you want the popup. The "button" function is mostly for one wide button to do an important function, as you can see it lacks the label at the left side that most other controls have.
If you use":write: #" then the full command for each button is after the button text.
Title: Re: Program that can log from many multimeters.
Post by: BobM on August 21, 2020, 12:32:15 pm
But, I'm getting a very strong impression that the RD6006W acts as the client, and the software (Riden's PC software and mobile apps) act as the server.

I believe that is the case and it is not support in TestController.

Does that mean that TestController can only work through a USB connection with the RD6006W?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 21, 2020, 12:57:35 pm
Now something a bit different. Although I don't think I'll be going down that rabbit hole just now.
Maybe on a rainy winters day. :palm:

I have several home-grown networked BME 280 sensors which spit out continuously temperature, humidity and atmospheric pressure through a virtual com interface. Example of a single full sequence below. Is there in principle a way to acquire, then split the data string and finally display the data, for example only temperature and humidity in Test Controller? Of all the supported instruments is there already one doing something like this?

Output as ASCII:
Ut:527388 Up:408424 Uh:31645<\r><\n>Temperatur:        23.68?C<\r><\n>Luftdruck 64bit:   1005.564hPa<\r><\n>Luftdruck 32bit:   1005.18hPa<\r><\n>Luftfeuchtigkeit:  65.097%<\r><\n>H?he ?ber Meer:  64.18m<\r><\n><\r><\n>

Same output as HEX:
55 74 3A 35 32 37 33 38 38 20 55 70 3A 34 30 38 34 32 34 20 55 68 3A 33 31 36 34 35 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 33 2E 36 38 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 31 30 30 35 2E 35 36 34 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 31 30 30 35 2E 31 38 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 36 35 2E 30 39 37 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 36 34 2E 31 38 6D 0D 0A 0D 0A

Just as a matter of interest.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 01:17:49 pm
I have several home-grown networked BME 280 sensors which spit out continuously temperature, humidity and atmospheric pressure through a virtual com interface. Example of a single full sequence below. Is there in principle a way to acquire, then split the data string and finally display the data, for example only temperature and humidity in Test Controller? Of all the supported instruments is there already one doing something like this?

Not really. There is a couple of problems with the format:
1) The device initiate the communication
2) It is a multi line message.

Notes:
1) is supported for dmm's, i.e. devices with a single value. There is one driver customizable that can handle that.
2) That is not supported on any customizable driver.

The easiest way to use a home grown sensor is to make a command interpreter that supports "*idn?" and "values?", you can find examples on my website:
https://lygte-info.dk/project/ThermoSensor%20UK.html (https://lygte-info.dk/project/ThermoSensor%20UK.html)
https://lygte-info.dk/project/LogicOutputs%20UK.html (https://lygte-info.dk/project/LogicOutputs%20UK.html)

Both devices are included in TestController, but not with a text file, because I included them before I made the customizable definitions.
In them I use a customable command interpreter, that is very easy to include in other projects.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 21, 2020, 03:16:49 pm
Thank you for the information. So I'll be looking around for something else to do in winter should I get bored. Next thing I'll be doing is to repair an old R&S UPGR Psophometer this being much more in line with my abilities. But that's :horse:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 03:57:15 pm
You made me think!

If somebody makes a project that works with TestController and want to share it I can publish a link or even a page with the project description on my website.
Before a project qualify it must contain enough that it can be easy duplicated, i.e. at least:
Title: Re: Program that can log from many multimeters.
Post by: gby on August 21, 2020, 04:28:42 pm
HKJ,

Since you changed the script expression evaluation process I find that for #delay and #log commands using a variable I need to put ()'s around it.  For example,
   old:  #log stepTime
 new:  #log (stepTime)
Adding the ()'s is not an issue.  But, it broke some (all?) of your built in example scripts.

if you have a generator connected to TC, right click the window and select Waveform generator | Logarithmic frequency sweep to get the built in frequency sweep example script.  If you run that script as is it no longer works.  Running that script as is finishes way too fast and logs no data.  I tested this with Ver 1.17.

If I add ()'s around the #delay (stepTime) and #log (stepTime) commands in the frequency sweep example script it works again.  You probably should update your example scripts for this expression evaluation syntax change.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 04:49:23 pm
Since you changed the script expression evaluation process I find that for #delay and #log commands using a variable I need to put ()'s around it.  For example,

Big Oops. I hope it is fixed now (The script library is downloaded from my website, this means I can update easily).
Anybody that is online when they start TestController will get the updated version.
Note: I have not tested anything, just changed the scripts.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 21, 2020, 05:16:06 pm
Big Oops. I hope it is fixed now (The script library is downloaded from my website, this means I can update easily).

Thanks, that was quick...

I just tested the Logarithmic frequency sweep example script.  It worked fine.  so, at l least that one is fixed.  I assume any others as well.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 21, 2020, 06:27:50 pm
Thank was quick...

I try to be quick on what I see as serious errors.
There are, of course, limits: I need to sleep and I do not always have the possibility to change stuff in a hour or two, sometimes I am away from my computer for days! It is hard, but I have to accept it ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2020, 11:19:12 am
V1.18 is up
Added two new devices and some documentation
   Added: A battery discharge script, right click in log window when a electronic load is loaded.
   Added: Documentation for Remap, Load and Config page.
   Added: Korad KEL102 & KEL103 electronic load
   Added: Kunkin KP184 electronic load

(http://lygte-info.dk/pic/Projects/TestController/Screens/KEL103.png)

(http://lygte-info.dk/pic/Projects/TestController/Screens/KP184.png)


I can easily add the rebranded versions of KEL102/3, but I need the answer to the *IDN? command for that.
Title: Re: Program that can log from many multimeters.
Post by: Frex on August 24, 2020, 04:21:42 pm
Hello,

First, a big thank to you to share your hard work. :-+
It's very valuable for many users here.
I didn't have the courage to read all pages of the thread(but some),
 so I apologize if my questions has been already said.

I don't have found installation procedure, so I just have installed latest Java  version, and run the bat file of your program folder.
Does It require others things to work ?

I am using a HP33401 multi-meter (as many others here!) and it is connected to my computer
using original (I guess) Agilent  IEE488 to USB interface.
It work great when I use Agilent software.

Anyway, I must say that I'm a little bit confused when trying to connect my instrument with your software.
I tried to load 34401 (in the list) and select the address, but that seem to do nothing. I probably miss something..

Is there a step by step "tuto" already made to explain how to configure our instrument ?

I have also a question about the operation of your software :
Does it allow to work with a trigger initiated by the instrument itself ?
The HP34401 measurement can be triggered by external signal from rear BNC,
 I would like to record data each time this input is triggered.

The purpose is to make an external multichannel MUX box.
It would switch "N" measurements channels at programmable speed.
The box will provide trig pulses to the 34401 each time channel is changed.
I thank you in advance.
Regards.

Frex
Title: Re: Program that can log from many multimeters.
Post by: PushUp on August 24, 2020, 07:11:21 pm
Question: "Benchtop DMM with AC+DC true RMS value vs. TestController"

Any better handheld DMM has this possibility, but what about benchtop DMMs? I don't want to pay 1500 € for a Keysight U34465A being forced to calculate the value myself...

In order to use it with TestController it has to be a main feature, such as with the Fluke 289, Keysight U1273A or Brymen 869 showing directly "AC+DC" as a result and not only AC and DC offset in the dual display.

When I am not mistaken, only the cheapest from your long test list has this feature: "East Tester ET3240":

https://lygte-info.dk/review/DMMEastTester%20ET3240%20UK.html

AC+DC: Press SHIFT and then AC+DC to AC+DC measurement in AC voltage and current.

(https://i.postimg.cc/GB6ynR2V/Bildschirmfoto-vom-2020-08-24-20-38-59.png) (https://postimg.cc/GB6ynR2V)


I could not find any "AC+DC" expression while searching the manuals by Rigol DM30XX, Siglent SDM 30XX or Keysight U3446XA. Well, at least Siglent says in the manual of the SDM3045X, that you have to calculate it yourself... ;-)

(https://i.postimg.cc/SJmzhDSS/Bildschirmfoto-vom-2020-08-24-20-38-06.png) (https://postimg.cc/SJmzhDSS)


Another question: The Fluke 8808A probably does not have this feature, but as the Fluke 8846A is already part of the device list by TestController, I would like to know, whether this file can also be switched to a working one for the Fluke 8808A or does the RS-232 behave in a different way?

Thanx.  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 24, 2020, 07:33:50 pm
I don't have found installation procedure, so I just have installed latest Java  version, and run the bat file of your program folder.
Does It require others things to work ?

No.

I am using a HP33401 multi-meter (as many others here!) and it is connected to my computer
using original (I guess) Agilent  IEE488 to USB interface.
It work great when I use Agilent software.

Anyway, I must say that I'm a little bit confused when trying to connect my instrument with your software.
I tried to load 34401 (in the list) and select the address, but that seem to do nothing. I probably miss something..

Is there a step by step "tuto" already made to explain how to configure our instrument ?

It support a few GPIB interfaces, but not the Agilent. The 34401 works with the serial port.


I have also a question about the operation of your software :
Does it allow to work with a trigger initiated by the instrument itself ?
The HP34401 measurement can be triggered by external signal from rear BNC,
 I would like to record data each time this input is triggered.

The purpose is to make an external multichannel MUX box.
It would switch "N" measurements channels at programmable speed.
The box will provide trig pulses to the 34401 each time channel is changed.
The software do not as such handle triggers, but you can do some tricks with advanced logging and some scripting.
I.e. make a computer controlled mux and let TestController control it, that is fairly easy to do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 24, 2020, 07:38:07 pm
Question: "Benchtop DMM with AC+DC true RMS value vs. TestController"

I do not remember what meters support AC+DC, but it is not something you can do with just an expression. You need a AC and a DC measurement and them add them together with sqrt(AC*AC+DC*DC)


Another question: The Fluke 8808A probably does not have this feature, but as the Fluke 8846A is already part of the device list by TestController, I would like to know, whether this file can also be switched to a working one for the Fluke 8808A or does the RS-232 behave in a different way?

Usually serial and com ports works the same way, i..e if the 8808A has exactly the same language as 8846A, it will work with a serial connection.
Title: Re: Program that can log from many multimeters.
Post by: No.15 on August 24, 2020, 09:37:44 pm
I'm looking through the thread now to see if I can find the answer but when I click setup i get this error

Code: [Select]
Starting
;; Start thread for: 192.168.10.37 - APLA800
;; 192.168.10.37: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; 192.168.10.37: Rx: <AMREL,EL-NFP,0,CF:92.1CT,FV:2.41> 41 4D 52 45 4C 2C 45 4C 2D 4E 46 50 2C 30 2C 43 46 3A 39 32 2E 31 43 54 2C 46 56 3A 32 2E 34 31 0D
;; Found APLA800 on 192.168.10.37
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at dk.hkj.devices.SetupFormats$IndicatorField.getLabel(SetupFormats.java:2600)
        at dk.hkj.devices.SetupFormats$IndicatorsField.addGridBag(SetupFormats.java:2761)
        at dk.hkj.main.PopupSetupSelection.makePanel(PopupSetupSelection.java:206)
        at dk.hkj.main.PopupSetupSelection.makeMainPanel(PopupSetupSelection.java:136)
        at dk.hkj.main.PopupSetupSelection.<init>(PopupSetupSelection.java:79)
        at dk.hkj.main.DeviceInterface.showSetupPopup(DeviceInterface.java:613)
        at dk.hkj.main.PaneCommand.showSetupSelectionPopup(PaneCommand.java:1589)
        at dk.hkj.main.PaneCommand$24.actionPerformed(PaneCommand.java:828)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; ALOAD: Tx <:inp?>
;; ALOAD: Rx <0>
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at dk.hkj.devices.SetupFormats$IndicatorField.syncValue(SetupFormats.java:2672)
        at dk.hkj.devices.SetupFormats$IndicatorsField.syncValue(SetupFormats.java:2787)
        at dk.hkj.devices.SetupFormats.syncAll(SetupFormats.java:237)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:97)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:105)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:103)
        at dk.hkj.main.PopupSetupSelection$2.actionPerformed(PopupSetupSelection.java:72)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)



Attached is the file that I am working from
Title: Re: Program that can log from many multimeters.
Post by: No.15 on August 24, 2020, 10:05:13 pm
I'm having another problem that has been hounding me with this load since I got it.  It is returning an OK after set commands and it is messing up my scripts.

You can see here where I ran the battery discharge script how the OK messed up things.  It pushed all the reading down 1 (volts is 13 not current)

Any suggestions?

Code: [Select]
;; Found APLA800 on 192.168.10.37
#logcmds 0
;; Discharge with 5A to 13V
;; ALOAD: Tx <:CURR 5>
;; ALOAD: Tx <:meas:volt?>
;; ALOAD: Rx <OK>
;; ALOAD: Tx <:meas:curr?>
;; ALOAD: Rx <13.2121>
;; ALOAD: Tx <:meas:pow?>
;; ALOAD: Rx <0.0000>
;; ALOAD: Rx as numbers <0.0 13.2121 0.0>
;; ALOAD: Tx <:INP 1>
;;0.0000
;; ALOAD: Tx <:meas:volt?>
;; ALOAD: Rx <OK>
;; ALOAD: Tx <:meas:curr?>
;; ALOAD: Rx <13.2111>
;; ALOAD: Tx <:meas:pow?>
;; ALOAD: Rx <0.0000>
;; ALOAD: Rx as numbers <0.0 13.2111 0.0>
;; ALOAD: Tx <:INP 0>
;; Discharge terminated
;;0.0000
;;OK
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 04:41:23 am
I'm looking through the thread now to see if I can find the answer but when I click setup i get this error

        at dk.hkj.devices.SetupFormats$IndicatorField.getLabel(SetupFormats.java:2600)
        at dk.hkj.devices.SetupFormats$IndicatorsField.addGridBag(SetupFormats.java:2761)

I can see the problem has to do with an "indicator" field. It is probably easiest to remove all #setupCmd definitions to start with and then add them one or two at a time.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 04:47:16 am
I'm having another problem that has been hounding me with this load since I got it.  It is returning an OK after set commands and it is messing up my scripts.

You can see here where I ran the battery discharge script how the OK messed up things.  It pushed all the reading down 1 (volts is 13 not current)

Any suggestions?

This basically means you cannot use the SCPI definition format, but has to use the Ascii format (SCPIx may also work) where you redefine the commands.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 25, 2020, 07:26:42 am
Please find enclosed the latest definition file for the R&S HMO1022 scope. :)
If there are no complaints or further requirements, this will be the last version.
Note: Any OFFS (Offset) command does not apply to the HMO1022.
The manual is wrong as to this aspect.  :palm: Thus this command has not been included.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 08:00:54 am
Please find enclosed the latest definition file for the R&S HMO1022 scope. :)

I will include it in the next release
Title: Re: Program that can log from many multimeters.
Post by: gby on August 25, 2020, 12:20:50 pm
HKJ,

Minor bug with #math functions.  I deleted all #math functions on the Math tab.  In re-starting TC and running a script that does not have any #math statements sometimes the last #math channel defined re-appears.  I have tried a number of times to find a repeatable way to replicate the issue but have failed so far.  Just thought I would mention it to you so you can watch for it also.  I will continue to try and find a method to repeatedly show the issue.

I also have a question about chart auto scaling.  I have a dc current being logged that is between 20 and 50 mA always positive and never actually 0.  Why does the chart auto scale go from -1 to a small positive value like  0.06?  I would have thought it would pick something like 0 to 0.06 or maybe -0.06 to +0.06.  Not -1.0 to +0.06.  Using -1 to small positive means the chart trace appears flat and you see no details.  Perhaps it would be an improvement to pick -small to +small in this case when the Scales for chart has "Auto includes zero" checked?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 12:25:23 pm
Minor bug with #math functions.  I deleted all #math functions on the Math tab.  In re-starting TC and running a script that does not have any #math statements sometimes the last #math channel defined re-appears.  I have tried a number of times to find a repeatable way to replicate the issue but have failed so far.  Just thought I would mention it to you so you can watch for it also.  I will continue to try and find a method to repeatedly show the issue.

Generally it saves changes when you change page.

I also have a question about chart auto scaling.  I have a dc current being logged that is between 20 and 50 mA always positive and never actually 0.  Why does the chart auto scale go from -1 to a small positive value like  0.06?  I would have thought it would pick something like 0 to 0.06 or maybe -0.06 to +0.06.  Not -1.0 to +0.06.  Using -1 to small positive means the chart trace appears flat and you see no details.  Perhaps it would be an improvement to pick -small to +small in this case when the Scales for chart has "Auto includes zero" checked?

Check your "Auto bottom step" and "Auto min. range"
Bottom is the step size that is used for the bottom of the chart
min range is the minimum difference between top and bottom of the chart.

You can put them both to zero, then it will match the scaling very exactly to the data.


Title: Re: Program that can log from many multimeters.
Post by: No.15 on August 25, 2020, 01:46:30 pm
I'm having another problem that has been hounding me with this load since I got it.  It is returning an OK after set commands and it is messing up my scripts.

You can see here where I ran the battery discharge script how the OK messed up things.  It pushed all the reading down 1 (volts is 13 not current)

Any suggestions?

This basically means you cannot use the SCPI definition format, but has to use the Ascii format (SCPIx may also work) where you redefine the commands.

OK thank you for that pointer.  I see what I have to do now.  I am going to try and write a file for AMREL DC loads, probably not a very popular brand but if this works it might open up some cheapish ebay purchases for people wanting a higher wattage load.  DC loads are just so expensive :(
Title: Re: Program that can log from many multimeters.
Post by: Grandchuck on August 25, 2020, 02:15:45 pm
Has anybody written one for the 3710A loads?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 02:35:26 pm
Has anybody written one for the 3710A loads?

That is a binary protocol, this means I have to program it (Only exception for this is multimeters).
And the documentation could be better:
https://www.circuitspecialists.com/images/Communication%20protocol%20for%20371X%20electronic%20load.pdf (https://www.circuitspecialists.com/images/Communication%20protocol%20for%20371X%20electronic%20load.pdf)
Title: Re: Program that can log from many multimeters.
Post by: gby on August 25, 2020, 02:40:39 pm
Check your "Auto bottom step" and "Auto min. range"
Bottom is the step size that is used for the bottom of the chart
min range is the minimum difference between top and bottom of the chart.

You can put them both to zero, then it will match the scaling very exactly to the data.

Ah, that is what those columns in the Scales for chart tab do.  Sorry to bother you to explain the features already there.

Suggestion for a future version:
I use #SaveTable command at the end of scripts to save data.  Sometimes I forget to close the data file when I run the script.  TC then silently executes the #SaveTable command by doing nothing since the file is open/blocked from writing by Windows.  It would be good if TC put an error message in the log screen when it can't do the write to remind the user to save the data manually.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2020, 02:55:15 pm
Ah, that is what those columns in the Scales for chart tab do.  Sorry to bother you to explain the features already there.

I wanted to make auto scaling more controllable.

Suggestion for a future version:
I use #SaveTable command at the end of scripts to save data.  Sometimes I forget to close the data file when I run the script.  TC then silently executes the #SaveTable command by doing nothing since the file is open/blocked from writing by Windows.  It would be good if TC put an error message in the log screen when it can't do the write to remind the user to save the data manually.

It will be included in next version
Title: Re: Program that can log from many multimeters.
Post by: Hydron on August 25, 2020, 03:10:24 pm
Please find enclosed the latest definition file for the R&S HMO1022 scope. :)

I will include it in the next release
I'll try and have a play adding the RTB2004 scope too (should be similar to the HMO), but will have to wait a few weeks until I'm back in the UK
Title: Re: Program that can log from many multimeters.
Post by: No.15 on August 25, 2020, 09:32:27 pm
So I got a file that seems to be working for my Amrel load.  Of course I copied a lot of other config files.
2 questions
I can seem to get :update: to work am I missing something, or does in not work in ASCII mode?  (example line 123 in file)
Code: [Select]
#cmdSetup number Voltage
:read: volt?
:write: volt
:update: mode
:tip: Load voltage for voltage mode
:buttontext: CV
Volt 0 60.000

I am defining the scpi commands, but does every single iteration of a command need to be spelled out? I can define 2 commands say :meas and :volt? and they will both work individually, but when I do :meas:volt?  it fails


Eary draft of file here, I am adding more commands to it as I get time.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 05:13:25 am
So I got a file that seems to be working for my Amrel load.  Of course I copied a lot of other config files.
2 questions
I can seem to get :update: to work am I missing something, or does in not work in ASCII mode?  (example line 123 in file)

The label is case sensitive.


I am defining the scpi commands, but does every single iteration of a command need to be spelled out? I can define 2 commands say :meas and :volt? and they will both work individually, but when I do :meas:volt?  it fails

Yes, you need to define all commands that must be available.


Looking at you definition:
Quote
#idString AMREL,EL-NFP
#name AMREL PLA
#handle PLA800-60-300

The #idstring is best defined to include everything up to and including the second comma.
Please use the full name in the #name tag: "#name AMREL PLA800-60-300"
The #handle can be shorter, maybe "#handle APLA", there are also some restrictions on characters in the #handle, because it is used for variable names.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 08:39:36 am
Please find enclosed the latest definition file for the R&S HMO1022 scope. :)

I found a problem in it (I have fixed it):
(http://lygte-info.dk/pic/cpf5/TCAuthorProblem.png)

To all making definitions:
Please remember the semicolon at the start of a comment line, many # tags will use everything until the next # tag.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 08:59:01 am
V1.19 is up
This is mostly improvement to scripting, especially automatic generating device configuration menus.
   Added: Error message in log window if #SaveTable fails.
   Changed: ReadXXX() functions will now piggyback on other device reads when possible instead of using their own
   Added: #CurrentValuesOptions that will set options on the "Current values" page
   Added: #SyncPopups to synchronize the setup popup to the current device state.
   Added: #InitColumns to force reinit of all columns to current device mode.
   Added: Generation of chart setup script
   Added: Shortcut to open a file browser on the script directory.
   Added: Tracking of device commands from the popups and option to generate script from them.
   Changed: "Generate Setup Script" to "Generate Script" menu with some new menu items.

To generate a device configuration mennu:
Start with all devices in just powered on state.
Start TestController
Use the Mode & Setup menus in TestController to configure the devices.
Right click in the log window and select:

(http://lygte-info.dk/pic/Projects/TestController/DocCommands/TCLayout2.png)

Enter a name for the menu entry:

(http://lygte-info.dk/pic/Projects/TestController/DocCommands/TCLayout3.png)

and click on ok.

You system editor will open and it is possible to adjust the configuration script and add some extra SCPI lines if needed.

The created menu entry will be added to this menu and will repeat all the configuration commands when selected.


Note: Using "In log window" or "Save as menu" do not generate exactly the same script. For the menu a menu and filter is added at the top. The filter means it will only be shown in the menu when the needed devices are loaded.

--------------

The chart setup script is just a minor script generation and cannot be saved as a menu, but it is possible to manually add it to other script. Just be aware that it will first work (Both generation and use) when there is data in the table, i.e. after a #log command or loading a csv file.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 11:32:01 am
Hello,
First at all i like to thank you for this great effort!

I connect the Kunkin KP184 direct to Serial (RS232) at COM1, 9600, Addr. 1 or the same combination with USB interface (via CH340 chipset) and nothing happens! Program does not recognize the device! Both setups are checked in 32bit and 64bit WIN10 system and i use the latest 1.19 Version. Do i miss or i make something false?
By the way the same connections works fine with other programs.
And another thing.
In your example photo i see the Max values in Amps is 30A and the Max power is 250W. The device as i know is capable for 40A and 400W. Is there any reason for that?

Thanks
Simon
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 12:40:48 pm
I connect the Kunkin KP184 direct to Serial (RS232) at COM1, 9600, Addr. 1 or the same combination with USB interface (via CH340 chipset) and nothing happens! Program does not recognize the device! Both setups are checked in 32bit and 64bit WIN10 system and i use the latest 1.19 Version. Do i miss or i make something false?
By the way the same connections works fine with other programs.
And another thing.
In your example photo i see the Max values in Amps is 30A and the Max power is 250W. The device as i know is capable for 40A and 400W. Is there any reason for that?

I cannot say much about the KP184, the definition is made by some other people.

Something you can try is to open the file: "Kunkin KP184.txt" in the devices directory and place a semicolon ; before the line  "#verifyDevice 1840 model?"

The maximum current and power can also be found in that file.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 01:18:54 pm


Something you can try is to open the file: "Kunkin KP184.txt" in the devices directory and place a semicolon ; before the line  "#verifyDevice 1840 model?"

Thanks! Unfortunately that doesn't help. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 01:25:48 pm
Something you can try is to open the file: "Kunkin KP184.txt" in the devices directory and place a semicolon ; before the line  "#verifyDevice 1840 model?"

Thanks! Unfortunately that doesn't help.

You did remember to fill in the baudrate on the "Load devices" page?
You may also want to play with the handshake lines, this can be done by using:
9600N81Dr  9600N81Rd  9600N81DR
as baudrate
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 01:58:54 pm
The Baudrate was already in 9600. I have try your above proposal and also i have done the same value at address with the device (1) or (-) just like it was before. Nothing!     ::)
By the way, what is the form of the number i have to enter for the address? I mean 1 or 001 or #1 or something else?
Is there anyone who have try with this device successful ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 02:06:00 pm
By the way, what is the form of the number i have to enter for the address? I mean 1 or 001 or #1 or something else?
Is there anyone who have try with this device successful ?

It is the com port, on windows "com1" or some higher number (Press F2 and right click with the mouse to get a list).

Using a invalid address will not give an error, the software just assumes the device is not available at the current time and ignores the device.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 02:40:20 pm
Yes the com port is com1 in  RS232 and com3 in the rs232 to USB interface.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 02:47:41 pm
Yes the com port is com1 in  RS232 and com3 in the rs232 to USB interface.
The string has to be "com1" or "com3" not only  1 or 3
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 03:01:38 pm
Yes the com port is com1 in  RS232 and com3 in the rs232 to USB interface.
The string has to be "com1" or "com3" not only  1 or 3

I m sorry i have not understand well, where is this window? if you mean generally in Device Manager of Windows at the ports section yes the RS232 port is COM1. Or you mean somewhere in your program ?

I think i found it. You mean in address column ?
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 03:29:35 pm
I have try to test that to. Still doesn't work ...   :-X
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 03:50:00 pm
I have try to test that to. Still doesn't work ...   :-X

You can try starting it with the debug batch file, maybe it will show some useful error message.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 26, 2020, 05:42:52 pm
SimonD,

Sorry you are having difficulty with the Kunkin KP184.  I have that device and helped write the file.  I just updated to TestController V1.19 and successfully connected to the Kunkin KP184 on a real serial port on COM1.  On the Command tab/main page it shows:
   ;; Found Kunkin KP184 on Serial0 (COM1)
when it connects.  Attached is a screen shot of my "Load devices" page showing how my Kunkin KP184 needs to be set up on my PC.  The serial cable is the one that came with the Kunkin KP184 in the box which I assume, but have not checked, is a standard straight through pinout 9 pin dsub to 9 pin dsub cable.

Also attached is a screen shot of "Current values" tab showing readings from the Kunkin showing voltage values and no current flowing.

Make sure that the serial setup in the KP184 are default.

As for the specifications, in my manual it also says 40A and 400 W.  So, those numbers are wrong in the file.  I guess they came from a cut and paste and I did not check them thoroughly from the source.  I fixed that issue and the updated device file is also attached.

HKJ, please include updated Kunkin KP184.txt device file in the next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 05:54:59 pm
HKJ, please include updated Kunkin KP184.txt device file in the next version.

It will be included.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 06:24:47 pm
Thanks a lot for your help. It was the com1 case and (i don't know why) it was a case sensitive letter sensibility ....  :D
@gby, thanks for your help, just a little correction in power mode. Is *100 and /100, and max of Resistance is 9999.9R. I include the corrected .txt file.
One small observation. The Red like LED indicator of ON / OFF state works only once.
And a proposal. What about to add the Remote sense function as in KEL103 interface? I think is a must specially in high current values . (I'm talking to program experts!)
Thanks again
Simon
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 06:34:08 pm
And a proposal. What about to add the Remote sense function as in KEL103 interface? I think is a must specially in high current values . (I'm talking to program experts!)

I am confused:

(http://lygte-info.dk/pic/cpf5/TCKEL103RemoteSense.png)

I have updated the KP184 again.
Title: Re: Program that can log from many multimeters.
Post by: SimonD on August 26, 2020, 08:46:46 pm
Exactly this function i mean but for the KP184!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2020, 08:53:21 pm
Exactly this function i mean but for the KP184!
Sorry, I misread your post and believed your where asking for it in the KEL103.

It is in register 0x10a according to the documentation I have.
Title: Re: Program that can log from many multimeters.
Post by: No.15 on August 27, 2020, 06:37:41 pm
I think I got the file for AMREL loads mostly done.  It seems to be working for me and I think most of the typos are out.

I appreciate everyone who helped.  I am able to use my DC load now the way I want and I am very happy

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 28, 2020, 08:02:18 am
I think I got the file for AMREL loads mostly done.  It seems to be working for me and I think most of the typos are out.

Nice job, it is a lot of commands you have mapped.
I do miss a #author tag in the file.

It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 28, 2020, 08:25:04 pm
HKJ,

There is a bug in the logarithmic frequency sweep script or with the expression evaluator.  There is an integer truncation in the expression:
   pow(endFrequency/startFrequency,1.0/steps)
Specifically, in the "endFrequency/startFrequency" division.

To narrow down the issue I took the auto generated logarithmic frequency sweep script, removed commands to the generator, and added print statements.  Here is the reduced test script I ran in TC Ver 1.19:
Code: [Select]
#logcmds 0
; Sweep the output of a waveform generator, both up and down will work
=var amplitude=2
=var startFrequency=2000
=var endFrequency=15000
=var stepTime=0.1
=var steps=40
; --------------------------------------------------------------
="Sweep from "+startFrequency+"Hz to "+endFrequency+"Hz in "+steps+" steps, estimated time: "+formatDouble((stepTime*steps)/60.0,1,6,0,1)+" minutes";

#delay (stepTime)
#log (stepTime)
=var n=1;
="Steps = "+steps+"; endFrequency ="+endFrequency+"; startFrequency = "+startFrequency+"; ratio = "+(pow(endFrequency/startFrequency,1.0/steps))
#while (n<=steps);
#delay (stepTime)
=freq=startFrequency*pow(pow(endFrequency/startFrequency,1.0/steps),n)
="n = "+n+"; freq = "+freq+" Hz"
=n=n+1;
#endwhile
#log 0

="Done"

(endFrequency/startFrequency)^(1/steps) = (15000/2000)^(1.0/40) = 1.05166 via calculator.
The script gives 1.0498504796816786 for this expression.
That ratio raised to the power number of steps = (1.0498504796816786)^40 = 7.00 and not 15000/2000 = 7.5 as expected.
endFrequency = 15000 but end of script only gets to 14000

So, it looks like endFrequency/startFrequency in this expression is being truncated to integer.  If you change the expression to:
   pow(1.0*endFrequency/startFrequency,1.0/steps)
the logarithmic frequency sweep then works because the added 1.0* forces the division result to be float and not truncated to integer.

Is there a better way to fix this or is there a bug in the expression evaluator that causes the endFrequency/startFrequency to be truncated to an integer instead of being float?
   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2020, 05:06:21 am
Is there a better way to fix this or is there a bug in the expression evaluator that causes the endFrequency/startFrequency to be truncated to an integer instead of being float?

The general rule is that a integer divided by a integer is done with integer math. If you enter the frequencies as xxx.0 they will not be integers.
As you found out a multiply with a 1.0 changes to float, there is also a typecase function: double(number)
I have added the typecast to the script
Title: Re: Program that can log from many multimeters.
Post by: gby on August 30, 2020, 04:12:36 pm
One small observation. The Red like LED indicator of ON / OFF state works only once.
And a proposal. What about to add the Remote sense function as in KEL103 interface? I think is a must specially in high current values . (I'm talking to program experts!)
Thanks again
Simon

I got some time to work on the Kunkin KP184 file some more.  I did the following:
1. Added the remote voltage sensing support in the standard load interface and in the device popup.
2. Fixed the state indication of on/off status in popup.
3. Fixed state indication of operating mode in popup.
3. Update the range of resistance mode up to 99998 Ohms which is the max the unit accepts over the serial port.

I discovered that on/off values for the output on/off and the remote/local sense functions of the KP184 sometimes returns 0/1 and sometimes returns 0xA0000000/0xA0000001.  Not sure of the significance of the 0xA0000000 high level bits, but I fixed the desired functions with a :readmath: (0x1&value) line that masks to only the lsb for both.  Also, the mode read back sometimes returns desired 0-3 and sometimes returns 0x10000002 instead of just 2.  So I added :readmath" (0x3&value) to mask to only the lower 3 bits for the mode.

I think we now have a completed "community made" Kunkin KP184 file attached.  HKJ, please include in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 30, 2020, 05:30:24 pm
HKJ, please include in the next release.

Ok, I will do that.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 01, 2020, 02:18:11 pm
HKJ,

By default TestController puts the logged data in columns in alphabetical order based on <deveice>.<signal> names for the logged data.  I am working on a test device file for Tektronix oscilloscopes and a test script using them.  When I use Tektronix MDO3000 scope and Siglent generator I get the oscilloscope data listed first in the log.  But, when I switch to a Tektronix TDS3000C scope I get the Siglent data listed first.

When I import the logged data for analysis it is tedious to have to correct the column data order depending on which oscilloscope instrument I am using.

Are there script commands that can be used to set the order of the logged data columns?

Also, since there is no interface type for oscilloscopes I have to search and replace oscilloscope device name in the script depending on which instrument is in use.  Would this be a good use for Remap handles function to have one name used in the script?  If so, does remap handles have any script commands to automate that?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 01, 2020, 02:37:46 pm
By default TestController puts the logged data in columns in alphabetical order based on <deveice>.<signal> names for the logged data.  I am working on a test device file for Tektronix oscilloscopes and a test script using them.  When I use Tektronix MDO3000 scope and Siglent generator I get the oscilloscope data listed first in the log.  But, when I switch to a Tektronix TDS3000C scope I get the Siglent data listed first.

When I import the logged data for analysis it is tedious to have to correct the column data order depending on which oscilloscope instrument I am using.

Are there script commands that can be used to set the order of the logged data columns?

Not script commands, but you can export and then import the data to change the sequence.
The export menu allows you to change the column sequence (Use Ctrl-up/down arrow).
You can save a export format, making it fairly easy to reuse it.
I plan on adding script command to configure the export menu.

Also, since there is no interface type for oscilloscopes I have to search and replace oscilloscope device name in the script depending on which instrument is in use.  Would this be a good use for Remap handles function to have one name used in the script?  If so, does remap handles have any script commands to automate that?

What about using Osc?
Remap is outside script control, but you can remap on device serial number. The disadvantage with remap is that TestController may loose tracking of column format and units.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 01, 2020, 04:13:17 pm
Not script commands, but you can export and then import the data to change the sequence.
The export menu allows you to change the column sequence (Use Ctrl-up/down arrow).
You can save a export format, making it fairly easy to reuse it.
I plan on adding script command to configure the export menu.

Ah, I did not know that the Data export screen allowed selecting one or more lines and then moving them up or down.  You might want to add some text on the screen to tell the user you can move selected with ctrl arrow.

If I save a format with data from scope number one and then later load the format with scope number two connected how would TestController format know what order to put things in?

What about using Osc?
Remap is outside script control, but you can remap on device serial number. The disadvantage with remap is that TestController may loose tracking of column format and units.

Do you mean create an interface for the oscilloscope device?  In reading the web site documentation it only lists PS, DMM, BMM, ARB, Load as possible interface types.  Are you saying there is an Osc interface type now for oscilloscopes?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 01, 2020, 04:40:36 pm
You might want to add some text on the screen to tell the user you can move selected with ctrl arrow.

There is a hint or tool tip (Java name) that says it.

If I save a format with data from scope number one and then later load the format with scope number two connected how would TestController format know what order to put things in?

Table and loaded devices are not linked, before you press the "Log" button.
Loading a csv file will unlink again.


Do you mean create an interface for the oscilloscope device?  In reading the web site documentation it only lists PS, DMM, BMM, ARB, Load as possible interface types.  Are you saying there is an Osc interface type now for oscilloscopes?

The interface name is not coded anywhere in the Java code, it is only in the device definitions, i.e. there is nothing preventing using other names, but to get the full benefit from the interface the names has to be coordinated.
This means I have added "Osc" to the official list (Will be published with next update) and will add other when needed.

TestController has a internal list of preferred function names and string or numeric parameter and will show them with green background in the interface test popup.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 01, 2020, 05:11:36 pm
There is a hint or tool tip (Java name) that says it.
I like the idea of and try to use tool tips.  But I must admit nothing I had done before had ever popped that specific tool tip up before.  Thanks for pointing it out.  Now the I know it is there along the side of the table I can find it easily now.

The interface name is not coded anywhere in the Java code, it is only in the device definitions, i.e. there is nothing preventing using other names, but to get the full benefit from the interface the names has to be coordinated.
This means I have added "Osc" to the official list (Will be published with next update) and will add other when needed.

TestController has a internal list of preferred function names and string or numeric parameter and will show them with green background in the interface test popup.

Okay, I will try that.  But, I do have a general interface usage question.  Sometimes you want to refer to a logged value in a script.  If I have a script working with Siglent SDG2042X and I use SDG2042X.Frequency1 in a script expression that works fine.  But, if I next connect to a Siglent SDG2122X I have to change the script to use SDG2122X.Frequency1.

If you are trying to use the interface method like:
   =var arb=getDevice("ARB")
it would be great if somehow you could use the variable arb pointing to the "ARB" device to refer to a logged value like say arb.<signal name>.  Is this already possible or something simple to add?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 01, 2020, 05:26:19 pm
I like the idea of and try to use tool tips.  But I must admit nothing I had done before had ever popped that specific tool tip up before.  Thanks for pointing it out.  Now the I know it is there along the side of the table I can find it easily now.

I will admit that tool tip is a bit on the discrete side, it shows up i the table area, but only outside data.
When I get around to write a help page for export, I will also list the function there.

Okay, I will try that.  But, I do have a general interface usage question.  Sometimes you want to refer to a logged value in a script.  If I have a script working with Siglent SDG2042X and I use SDG2042X.Frequency1 in a script expression that works fine.  But, if I next connect to a Siglent SDG2122X I have to change the script to use SDG2122X.Frequency1.

If you are trying to use the interface method like:
   =var arb=getDevice("ARB")
it would be great if somehow you could use the variable arb pointing to the "ARB" device to refer to a logged value like say arb.<signal name>.  Is this already possible or something simple to add?

That is what read functions are for, but to get the channel number as parameter the device must be defined as a multi channel device (You can see how that work in TTi CPX400).
The result is you can use: readFrequency(osc,1)
The channel number is last, because using the call without channel number is valid and means channel 0
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 02, 2020, 09:40:08 am
V1.21 is up
This is script support for histogram and range, it adds one new device and improves another.
   Fixed: It is now possible to use expressions in () for the filename in #log commands
   Updated: Kunkin KP184 Support for remote sensing and a couple of other details.
   Added: Amrel PLA800-60-300 electronic load, supplied by a reader.
   Added: #Calc switch to calculator/expression mode until next # command
   Added: Modified generation of chart script to include histogram and range (They all require table data)
   Added: #RangeSamples define the limit of the data to use for calculations/statistic.
   Added: #RangeOptions define the slope calculation time period
   Added: #SaveHistogram save the histogram(s) in a file.
   Added: #HistogramSamples define the limit of the data to use.
   Added: #HistogramOptions define the histogram bins and count or percent
   Added: #HistogramCurves   define up to 3 datasets to make histograms for


(http://lygte-info.dk/pic/cpf5/TCCalcMode.png)

The calc mode makes it easier when doing multiple calculations. This mode can do some extra stuff when running script, but information about this will have to wait until I have written some documentation.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 02, 2020, 08:51:34 pm
NEED HELP MAKING TEKTRONIX SCOPE LXI CONNECTION WORK:

I am working on a device file for Tektronix oscilloscopes.  I have gotten communications and functionality working with MDO3000 series, TDS3000C series
and everything is looking good.

Then I tried the MSO3000 series and things are not working.  TestController connects and all SCPI query commands I have tried give replies that make sense.  But, as soon as I send a set command the process fails and the scope stops talking to TestController.  I can click the Reconnect button on the Load devices tab and nothing connects.  I can stop and restart TestController and it still will not reconnect.  To get the MSO3000 talking again I have to do one of:
   Power cycle the scope
   Use an LXI Discovery Browser that scans the subnet
My working theory is that somehow the LXI communications with this specific device is not working correctly.  When I send a set command the communications gets in a non-functional state.  Power cycling the scope or doing a "proper" LXI discovery query gets it back to normal.  Not sure why restarting TestController and trying reconnect does not work.

Attached are the debug mode dos window and the log screen contents as well as the Tektronix scope device file.  Note that some newer Tektronix scopes support socket connection and LXI while some older, like the TDS3000C, only support LXI.  This debug is with LXI to an MSO3014 scope.

The test sequence in this record is:
   1.  Start TestController and it connects successfully to the MSO3014
   2.  Manually type the query           *idn?
            Note that the debug window shows the RX line with an extra carriage return, line feed at the end of the reply putting ">" on next line.
   3.  Manually type the query           measurement:meas1:source1?
            Again, the ">" is on the next line
   4.  Manually type the set cmd        measurement:meas1:source1 CH4
            There is never a RX and at this point communications seems to have stopped.
   5.  Manually type the query           *idn?
            There is an RX line but nothing between <>'s
   6.  Used LXI Discovery Browser to reset the scope and reconnected successfully with TestController
   7.  Repeated the queries in steps 2 and 3 above.
            Note in reply to the second query that the measurement source is still CH1 and the attempt to set CH4 never worked.

To me the odd things about the communications record are:
   1.  The queries RX line seems to have an extra carriage return, line feed compared to all other devices.  Like
        MSO3014: Rx <CH1
>
instead of MSO3014: Rx <CH1>
  2.  No where ever were there any Java errors reported in the dos debug window.
  3.  Why does restarting TestController not connect while using the LXI discovery browser seems to reset the communications to working?

Any thoughts from anyone to help figure out what is going on here?
Any debug test suggestions for more data?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 03, 2020, 02:36:23 pm
Only message with ? in them are looking for answers.

My LXI code is not perfect and you are probably correct that is the problem. The LXI works with the devices where I have tested it and it is rather difficult to debug it without the problematic device.

For testing I have included some hard coded debug output to the console in this version:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: gby on September 03, 2020, 04:46:13 pm
HKJ, Thanks for the debug version.  I can't jump on it right away but will before my end of day.

By the way, I have a perhaps related data point.  With all the remote/work from home stuff I have tried TC via VPN from home to lab.  From my house it works fine connecting to a Siglent SDG2042X generator and a Tektronix TDS3054C scope.  For a coworker of mine from his house with the exact same lab instruments, same version of TC he gets no connection.  He can pull up the scope web page showing connectivity to at least the scope. 

I have fiber/good internet and he has Satellite internet which has fairly large latency.  Could it be that too much latency in connection attempts times out for him?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 03, 2020, 05:19:47 pm
Could it be that too much latency in connection attempts times out for him?

That could very well be the reason, for most devices there is a 1 second timeout (It can be adjusted in the definition file).
I have never thought about using the program from a remote location. You can, of course, remote control a computer running TestController at the location, that would work.

If you want to see how fast communication is, start a log and use "#COMMANDTIME?"
Title: Re: Program that can log from many multimeters.
Post by: gby on September 03, 2020, 08:22:13 pm
My LXI code is not perfect and you are probably correct that is the problem. The LXI works with the devices where I have tested it and it is rather difficult to debug it without the problematic device.

For testing I have included some hard coded debug output to the console in this version:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

I ran the debug code you linked with the Tektronix MSO3014 device and the same device file.  My test sequence was:
1.  Power up the scope and proved could connect to its web page.
2.  Started the TC test version in debug mode
3.  Saw TC connected OK.
4.  Did *.idn? and got a reply with the extra CR LF before the RX ">"
5.  Did measurement:meas1:source1? query and got an answer with extra CR LF on RX ">"
6.  Tried to do a set command but incorrectly typed with a "?".  Did measurement:meas1:source1? ch4
     Sorry I goofed and did not do above without the "?".  But it reacted same as yesterday correctly typed without the "?".
7.  Tried *ind? and got no answer.
8.  Tried reconnect and it could not connect.
9.  Saved the dos debug window and the log window in attached files
     MSO3014 Extended dos debug.txt
     MSO3014 Extended log debug.txt
10. Closed and restarted TC test version in debug mode
11. Did not connect.
12. Power cycled the scope.
13. Tried reconnect and it connected.
14. Saved the dos debug window and the log in attached files
      MSO3014 Extended dos debug restart TC.txt
      MSO3014 Extended log debug restart TC.txt

If you compare step 9 dos debug to step 14 dos debug file beginning of each file you get successful connection and not successful connection directly compared.  In the second case it seems like extra items are in the sequence just after the line *IDN? Check for answer:  6 0 step in the file.  Also, in the start of TC unsuccessful connection attempt it does *IDN? a second time.

If you need more data I can do more tests.
Title: Re: Program that can log from many multimeters.
Post by: Dwaine on September 03, 2020, 11:44:00 pm
Could it be that too much latency in connection attempts times out for him?

That could very well be the reason, for most devices there is a 1 second timeout (It can be adjusted in the definition file).
I have never thought about using the program from a remote location. You can, of course, remote control a computer running TestController at the location, that would work.

If you want to see how fast communication is, start a log and use "#COMMANDTIME?"

I'm also using the program under Linux remoting through SSH with X11 forwarding.   Working pretty good with my devices.

Dwaine
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 04, 2020, 03:20:44 pm
I'm also using the program under Linux remoting through SSH with X11 forwarding.   Working pretty good with my devices.

As long as the tx/rx is only delayed a few milliseconds it will work, but when it gets into 100's of millis it will most likely fail.
A firewall that blocks some ports can also be problematic, this can be present on the computer with TC and somewhere on the connection.

gby: I have done a change to LXI and added a bit more logging, please try again.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 04, 2020, 08:08:51 pm
gby: I have done a change to LXI and added a bit more logging, please try again.
Great progress!  Here are the details of my testing:

Downloaded the second debug version and tried it.  I used a Tektronix DPO3034 which is the exact same generation and type as the MSO3014 that I was using before except without the logic probe function.  I checked with TC V1.19 and DPO3034 exhibits the same communication issues as before.  The DPO3034 I have instant/easy local access to now.

1.  Started TC with just the DPO3034 connecting fine.
2.  Did *idn? query and it worked like before.  Got a correct reply with the extra CR LF before the RX final ">".
3.  Did measurement:meas1:source1? query and got CH1 reply with extra CR LF before final RX ">".
4.  Did measurement:meas1:source1 ch4 set and it seemed to work.
5.  Did *idn? query and got an answer!  Step 4 set did not kill communications.
6.  Did measurement:meas1:source1? query and got answer CH4 saying step 4 set worked!
7.  Saved dos debug window and TC log window as attached files
     DPO3034 Extended dos debug.txt
     DPO3034 Extended log debug.txt

Based on this test it looks like communications is working except for the extra CR LF before final RX ">".  I then started using this version to do a bunch of things to see if it really is working.  For example, right after step 7 above I just did a Load devices tab Reconnect and that worked.

One thing I accidentally tried by doing a typo was "*.idn?".  Standard query except for an extra/incorrect period after the "*".  This time there was an infinite loop and I never got control back.  Attached is "DPO3034 Infinite log debug.txt" which is about 40 seconds of waiting from the dos debug window after just starting TC and then typing the "*.idn?" query with extra period.  The TC log window upper section only had the connection and nothing else got there.  I also tried another scpi command with a typo (measurement:meas1:seurce2? with "e" instead of "o" and got the same never ending loop.  The good news is that after force stopping TC and restarting TC everything was OK without requiring scope power cycle.

Next, I tried a simple script to setup all four measurement channels on the DPO3034.  That was 16 set commands in a row and everything seemed to work fine.

Lastly, I used this version to run a scripted measurement with Siglent SDG2122X and Tektronix MDO3054 that I had originally had all working with LXI interfaces.  That also worked with this test/debug version of TC.  So, I don't think the update made new bugs in LXI communications with existing working devices.

Definitely a huge improvement if not a full fix.  Just a potential issue with miss-typed commands hanging the communications.

Thank you ever so much for this progress.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 05, 2020, 11:17:57 am
Just a potential issue with miss-typed commands hanging the communications.

This was a easy fix.
I will not post a new version just yet, I got started on LXI discovery. When it is working it is possible to leave the address field empty (i.e. no IP address) and it will find the device if it is on and on the local network. This will work with both socket and LXI connections, as long as the device support LXI.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 05, 2020, 12:48:14 pm
Just a potential issue with miss-typed commands hanging the communications.

This was a easy fix.
I will not post a new version just yet, I got started on LXI discovery. When it is working it is possible to leave the address field empty (i.e. no IP address) and it will find the device if it is on and on the local network. This will work with both socket and LXI connections, as long as the device support LXI.

Great to hear.  Thanks for all your help.

I have done some further investigating and discovered some interesting information.
1.  The MDO3024 I have been using supports both LXI and socket connection.  Using #commandtime? it reports a huge difference in speed between the two interface methods in debug V1.23:
V1.23 socket:  MDO3024       last:    12.25 ms       average:    16.12 ms       slowest:    53.11 ms
V1.23 LXI:      MDO3024       last:   170.50 ms       average:   167.45 ms       slowest:   181.51 ms
V1.21 LXI:      MDO3024       last:    11.14 ms       average:    13.97 ms       slowest:    45.14 ms

Note that Ver 1.21 LXI and socket are just as fast and only debug Ver 1.23 LXI is approximately 10x slower.  I assume that is the extra debug logging and hope it is not extra communications.

2.  The DPO3034 that we have been working on the LXI problem with also supports socket connection.  But, TC debug V1.23 does not connect in that mode.  Is there anything learned in debugging DPO3034 LXI connection that could help make socket work?  I did tests connecting with Putty to these scope's socket ports.  The MDO3054 replies to *idn? after hitting the return key.  On the screen it did a line feed but no carriage return.  The DPO 3034 did nothing after hitting return.  Thoughts?

For reference below is debug V1.23 DPO3034 #commandtime? while connected with LXI:
LXI:     DPO3034       last:   172.34 ms       average:   166.21 ms       slowest:   175.50 ms
Nearly the exact same timing as MDO3024 using LXI communications.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 05, 2020, 01:55:29 pm
I got started on LXI discovery. When it is working it is possible to leave the address field empty (i.e. no IP address) and it will find the device if it is on and on the local network. This will work with both socket and LXI connections, as long as the device support LXI.

LXI discovery will be a great feature.  Looking forward to it.

While debugging the DPO3034 communications problem I have both the DPO3034 and the MDO3024 on the network and it got me thinking.  How will TC pick when auto filling in the address with multiple matching devices on the network?  Specifically, with
   Two identical devices on the network only differing by IP address
   Only one device setup on the Load devices tab
how will TC auto fill in the IP address?  Will it pick whichever one responded first during discovery?  Or, will there be a popup for the user to select the proper device when there is a question?  Certainly not a problem for individuals, but in a company lab you could easily have multiple identical devices on the same network.

The above question occurred to me while working on your suggestion to create an interface for Tektronix scopes using #interfaceType OSC.  With two supported scopes on the network when I did the
   =var osc=getDevice("OSC")
script line it picked the wrong one.  Any thoughts on how to code the script to get the right one/have a user prompt to select the right one?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 05, 2020, 03:09:34 pm
First part of discovery is working:
#discover?
;; 10.0.0.57 KEITHLEY INSTRUMENTS,MODEL 2460,04077759,1.6.4c
;; 10.0.0.59 Keysight Technologies,34470A,MY54700281,A.03.02-02.40-03.02-00.52-02-01
;; 10.0.0.60 KEITHLEY INSTRUMENTS,MODEL DMM7510,04076557,1.6.7c
;; 10.0.0.62 KEITHLEY INSTRUMENTS,MODEL 2280S-32-6,4083473,01.06g
;; 10.0.0.66 Keysight Technologies,34461A,MY53214390,A.03.02-02.40-03.02-00.52-01-01
;; 10.0.0.67 Keysight Technologies,34461A,MY53214418,A.02.09-02.37-02.09-00.49-01-01
;; 10.0.0.68 THURLBY-THANDAR, QL355P,  427628, 2.05 - 1.07
;; 10.0.0.69 THURLBY THANDAR, QL355P, 445308, 2.05-2.02
;; 10.0.0.75 Siglent Technologies,SDG2122X,SDG2XCAC1R0010,2.01.01.22R5
;; 10.0.0.76 Keysight Technologies,34465A,MY57502236,A.03.02-02.40-03.02-00.52-03-01
;; 10.0.0.79 KEITHLEY INSTRUMENTS,MODEL DMM6500,04395798,1.7.2b

Do I add a indicator to show what devices is supported?


And some answer to gby:
The LXI with debug is much slower than without, there is not supposed to be any extra communication.
With socket you can try to change termination between CR, LF, CRLF and see if any of them work.

With empty address field it is random what device it will use, but another solution is to put "sn:xxx" in the address field, as you can see above I get the serial number.

When using  =var osc=getDevice("OSC") it will pick the first device, you can use  =var osc=getDevice("OSC:2") to pick the second device (Second device can be second channel or another device).
Generally you are supposed to load the devices you want to use, this can be done from a script.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 05, 2020, 03:16:40 pm
First part of discovery is working:
#discover?
;; 10.0.0.57 KEITHLEY INSTRUMENTS,MODEL 2460,04077759,1.6.4c
;; 10.0.0.59 Keysight Technologies,34470A,MY54700281,A.03.02-02.40-03.02-00.52-02-01
;; 10.0.0.60 KEITHLEY INSTRUMENTS,MODEL DMM7510,04076557,1.6.7c
;; 10.0.0.62 KEITHLEY INSTRUMENTS,MODEL 2280S-32-6,4083473,01.06g
;; 10.0.0.66 Keysight Technologies,34461A,MY53214390,A.03.02-02.40-03.02-00.52-01-01
;; 10.0.0.67 Keysight Technologies,34461A,MY53214418,A.02.09-02.37-02.09-00.49-01-01
;; 10.0.0.68 THURLBY-THANDAR, QL355P,  427628, 2.05 - 1.07
;; 10.0.0.69 THURLBY THANDAR, QL355P, 445308, 2.05-2.02
;; 10.0.0.75 Siglent Technologies,SDG2122X,SDG2XCAC1R0010,2.01.01.22R5
;; 10.0.0.76 Keysight Technologies,34465A,MY57502236,A.03.02-02.40-03.02-00.52-03-01
;; 10.0.0.79 KEITHLEY INSTRUMENTS,MODEL DMM6500,04395798,1.7.2b

Do I add a indicator to show what devices is supported?

And some answer to gby:

I would add an indicator to show supported devices.  I think that would be useful.

Thanks for the hints.  I will look into them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 02:21:01 pm
V1.24 is up
It adds script support for export and LXI discovery.
   Added: # i.e. a empty command, this can be used to leave #CALC mode without doing anything.
   Added: Use LXI discovery to add devices when load device list is empty.
   Added: #Discover will list LXI compatible devices on the network
   Added: LXI discovery search (Leave address field empty)
   Fixed: LXI problem
   Added: Export script generator, with default export popup a script model is generated, if anything is defined a more compact script is generated.
   Added: #ExportColumns List columns to export
   Added: #ExportColumnsExclude List columns to not export
   Added: #ExportColumn Define a column to export
   Added: #ExportSamples Define what samples to export
   Added: #LoadExportFormat Load a saved export format
   Added: #ExportReduce Setup reduce format for export
   Added: #ExportTable Export table with current export setup
   Added: #ExportInit Clear export setup, this will also hide a visible export popup

The LXI discovery is a very nice function when starting first time:

(http://lygte-info.dk/pic/Projects/TestController/DocInstall/AutoPrompt.png)

The prompt will be shown when the load device list is empty.

(http://lygte-info.dk/pic/Projects/TestController/DocInstall/FoundDevices.png)

About a second after pressing OK all available LXI devices has been added. The "sn:xxx" in the address field is not required, except when multiple of the same device is present.
Loading will be slightly slower when this function is used, but it is only about a second, exactly the same time as a "#discover?" command uses.

This way to find devices also works nicely together with DHCP.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 06, 2020, 05:42:18 pm
HKJ,

The LXI Discovery screen looks great.  It seems limiting to only run it when the device list is empty.  When working on a multi-device setup and having trouble with one device connecting it would be good to be able to run LXI Discovery manually.  Right now I use a third party tool to do this function.  It would be annoying to delete properly connecting device entries to get the device list empty just to run LXI discovery again.  Any reason not to have a button on the Load devices tab to run LXI discovery on demand?

Also, thanks a lot for the LXI communications fix.  The Tektronix DPO3014 connection seems to be working great now.   ;D
Title: Re: Program that can log from many multimeters.
Post by: gby on September 06, 2020, 05:52:03 pm

I am working on a device file for Keithley 2260B series of power supplies.  But, I am having a problem to get all the model numbers to show up.  I have stared at this device file for a while now and I can't figure out why only 11 of the 12 defined devices show up in the Load devices Search socket drop down.  Specifically the last device (Keithley 2260B-250-13) at the end of the #metadef list after the #meta statement does not show up.  :-//

Can anyone spot what I am doing wrong in the attached work in progress device file?

PS  I know the file at least sort of works since it connects to a Keithley 2260B80-13 and talks fine.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 05:53:47 pm
The LXI Discovery screen looks great.  It seems limiting to only run it when the device list is empty.  When working on a multi-device setup and having trouble with one device connecting it would be good to be able to run LXI Discovery manually.

Use #Discover? on the command line, that will show if the device is online and supported. You will, of course, have to search manually in the supported device list and add the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 05:58:38 pm

I am working on a device file for Keithley 2260B series of power supplies.  But, I am having a problem to get all the model numbers to show up.  I have stared at this device file for a while now and I can't figure out why only 11 of the 12 defined devices show up in the Load devices Search socket drop down.  Specifically the last device (Keithley 2260B-250-13) at the end of the #metadef list after the #meta statement does not show up.  :-//

Can anyone spot what I am doing wrong in the attached work in progress device file?

Nothing after a #meta will show up, you need a empty #metadef to use it directly.
I.e. use:

#metadef
#meta

And it will be included

But #replaceText only works in a #metadef, i.e. you must also move them

#metadef
#replaceText MaxVoltage 250
#replaceText MaxCurrent 13.5
#replaceText MaxWatt 1080

#meta

Title: Re: Program that can log from many multimeters.
Post by: gby on September 06, 2020, 06:40:51 pm
HKJ,

Thanks for the clarification.  I guess I never really understood this subtlety. I will have to go back and fix the Owon ODP series device file that I did a while ago and re-submit again.
Title: Re: Program that can log from many multimeters.
Post by: No.15 on September 06, 2020, 07:03:32 pm
Hate to ask but I am a total non programmer at this point, trying to learn

I have a riden power supply and I would like to charge some lifepo batteries and log the results.  Can someone point me in the right direction to get started?
Sorry for basic question.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 07:12:35 pm
Hate to ask but I am a total non programmer at this point, trying to learn

I have a riden power supply and I would like to charge some lifepo batteries and log the results.  Can someone point me in the right direction to get started?
Sorry for basic question.

Connect the PS to TestController and check the connection work, i.e. TC can show values from the PS and control it from the Setup popup.
Connect the battery to the PS
Start logging in TC
Use the Setup popup to set current and voltage.
Wait while the charge is logged. You can use a popups/alarm to set a alarm when the current gets low (Check mark "Outputs off" to automatic turn the charging off).

All the PS and logging stuff could be controlled from a script, but it is an optionally extra.
Title: Re: Program that can log from many multimeters.
Post by: No.15 on September 06, 2020, 07:35:03 pm
Thank you for the help.

I would like to write a script, similar to you battery discharge test, but for charging.  I have many of these 280ah 3.65v cells I need to charge and then discharge test, for solar forum info.  CC charge is best I beleive.
Very new to this and trying hard to learn and give back.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 07:49:42 pm
I would like to write a script, similar to you battery discharge test, but for charging.  I have many of these 280ah 3.65v cells I need to charge and then discharge test, for solar forum info.  CC charge is best I beleive.

It is not that difficult, here I have redone the discharge script (I have not tested it):
#logcmds 0
; Battery charge test
=var chargeVoltage=4.2
=var chargeCurrent=0.3
=var terminationCurrent=0.03
=var stepTime=1
; --------------------------------------------------------------
="Charge with "+chargeCurrent+"A to "+chargeVoltage+"V";
=var ps=getDevice("ps")
=setCurrent(ps,chargeCurrent)
=setVoltage(ps,chargeVoltage)
#log (stepTime)
#haslogged
=setOn(ps,1);
#haslogged
#wait readCurrent(ps)>terminationCurrent
#haslogged
#haslogged
=setOn(ps,0);
#haslogged
#haslogged
#log 0
="Charge terminated"




Title: Re: Program that can log from many multimeters.
Post by: No.15 on September 06, 2020, 08:10:57 pm
That is awesome, gives me a start.  Debugging is learning.  I think :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2020, 08:32:00 pm
That is awesome, gives me a start.  Debugging is learning.  I think :)

For debugging you may want to remove the #logcmds 0
Title: Re: Program that can log from many multimeters.
Post by: maukka on September 08, 2020, 02:19:42 pm
Also please change the charge voltage to suit your LiFePO4 cells. HKJ defaulted to lithium ion in the script.
Title: Re: Program that can log from many multimeters.
Post by: No.15 on September 08, 2020, 03:02:59 pm
Also please change the charge voltage to suit your LiFePO4 cells. HKJ defaulted to lithium ion in the script.

yes changed, it seems to be working fine except maybe the termination.  280ah cells take a long time to charge at 5a :)
Title: Re: Program that can log from many multimeters.
Post by: gby on September 10, 2020, 12:12:18 am
HKJ,

Getting close to a Tektronix scope device file with interface.  One issue is that a couple of the SCPI commands need to have quotes around the string.  Normal script command syntax for string arguments might be:
         =setCH1Coupling(osc,"AC")
to send the two character sequence A followed by C.  But, to define the math expression for subtracting two channels you need to send "CH1-CH2" with the quotes around it as the SCPI command argument.  Like:
         =setMathDefinition(""CH1-CH2"")
But, TC gives Java error from the two starting and two ending quotes.  I understand we could use an escape character like:
         =setMathDefinition("\"CH1-CH2\"")
but I was hoping to avoid having to have the script writer know to do the slashes before the inner quotes and do that for them in the #interface definition.

How could I create an #interface line that takes the string "CH1-CH2" as an argument and sends it to the scope with the quotes?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2020, 04:53:07 am
How could I create an #interface line that takes the string "CH1-CH2" as an argument and sends it to the scope with the quotes?

It must be something like ("\""+value+"\"")
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2020, 01:16:23 pm
V1.25 A couple of small additions and a bug fix.
   Added: Load will accept time in h:m:s format and dateTime in system format.
   Added: Tab format with comma as decimal point (ctab).
   Added: #Connected? Generated a list of used devices and computer, can be saved to a file.
   Added: Help pages got a list of scripting command (A few already had) related to that function/page/popup.
   Added: Save button on Command page will now ask for format: log, script or menu
   Added: Export to table button in export popup.
   Added: #ExportTableReload Export and reload table, this is designed to do data reduction in the table
   Added: Export ReduceByFormula, use a expression to select data for export
   Fixed: Digital curves on chart (They disappeared due to previous update)

With the additions to the export popup it is very easy to remove some data from the table.

(http://lygte-info.dk/pic/Projects/TestController/DocExport/ExportReduceByFormula.png)

Remove the negative part of a sinus wave.

(http://lygte-info.dk/pic/Projects/TestController/DocExport/ExportReduceByFormula2.png)

And use "To Table" to directly send it back into TestController (It is a good idea to save the original data first).
Title: Re: Program that can log from many multimeters.
Post by: gby on September 10, 2020, 01:41:42 pm
How could I create an #interface line that takes the string "CH1-CH2" as an argument and sends it to the scope with the quotes?

It must be something like ("\""+value+"\"")

Suggestion worked fine.  Thanks for the help.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 10, 2020, 04:16:39 pm
HKJ,

I can't seem to get deviceWrite to work.  I created a small test script:
Code: [Select]
=deviceRead("OscTek_4","SELECT:MATH?")
=deviceWrite("OscTek_4","SELECT:MATH 1")
=deviceRead("OscTek_4","SELECT:MATH?")
OscTek_4:SELECT:MATH 1
=deviceRead("OscTek_4","SELECT:MATH?")
which uses deviceRead to check a value for 0 or 1 and uses deviceWrite to try and set the value.  Below is the output from the dos debug window from Ver 1.25:
Code: [Select]
=deviceRead("OscTek_4","SELECT:MATH?")
;; OscTek_4: Tx <SELECT:MATH?>
;; OscTek_4: Rx <:SELECT:MATH 0>
;; :SELECT:MATH 0
=deviceWrite("OscTek_4","SELECT:MATH 1")
;; OscTek_4: Tx <="OscTek 4"="SELECT:MATH 1">
=deviceRead("OscTek_4","SELECT:MATH?")
;; OscTek_4: Tx <SELECT:MATH?>
;; OscTek_4: Rx <:SELECT:MATH 0>
;; :SELECT:MATH 0
OscTek_4:SELECT:MATH 1
;; OscTek_4: Tx <SELECT:MATH 1>
=deviceRead("OscTek_4","SELECT:MATH?")
;; OscTek_4: Tx <SELECT:MATH?>
;; OscTek_4: Rx <:SELECT:MATH 1>
;; :SELECT:MATH 1

Why does
    =deviceWrite("OscTek_4","SELECT:MATH 1")
not work and the same intended command
    OscTek_4:SELECT:MATH 1
sent directly work?  Per the dos debug log it seems the deviceWrite Tx line is wrong with two = signs and quotes still in the sent message.

Am I using the deviceWrite command incorrectly or is there a bug in the deviceWrite function?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2020, 04:42:57 pm
Am I using the deviceWrite command incorrectly or is there a bug in the deviceWrite function?

There is a bug, I have fixed it, for now please use deviceRead.
The idea behind having both a write and read is to make the script more clear, a deviceRead where you do not use the return value is the same as a deviceWrite.

Another note: When using columns to show on/off value, try declaring the datatype "digital(on)" instead of "D0"
Title: Re: Program that can log from many multimeters.
Post by: PushUp on September 12, 2020, 12:03:30 pm
Question:

The Fluke 289 is not able to log faster than 1 second with the internal logging procedure interval as well as the Keysight U1272A / U1273A. Does it make sense to log faster than 1 second with TestController when you wanna have a 100% test result by all means?
Keysight offers a larger baud rate than 9600 compared to the Fluke 289?! Is it essential to go higher? I tried it, but the connection / detection itself wasn't so stable any more, so that I went back to the default setting...?

In other words: Is there any handheld DMM, which is able to log faster than 1 second interval, without skipping measurements in TestController?

By the way, what is a stable and safe logging time with any benchtop DMM < 1 second in combination with TestController?


ThanX.  :)
Title: Re: Program that can log from many multimeters.
Post by: gby on September 12, 2020, 01:20:10 pm
HKJ,

I have finished a device file for Tektronix oscilloscopes.  It specifically supports and I have tested with the following oscilloscope families:
   MDO3000, MSO3000, DPO3000, and TDS3000C
Just by adding more #meta sections it should support nearly any Tektronix scope in the last 15 years or so as long as it has Ethernet port.  For example, MDO4000, MSO/DPO5000, MSO/DPO4000.  I did not include these others because I can't test them.

They all work with LXI interface.  MDO3000 just worked with socket interface and socket interface is 5x faster than LXI.  MSO/DPO3000 supports socket but I could not get that to work.  Updating DPO3034 FW from V2.23 to latest V2.40 and socket works but is no faster.  TDS3000C only supports LXI and note that TDS3000 (without C) does not have Ethernet and two different TDS3000B I tried did not work.

This device file includes
   Logging the 4 on screen measurements plus the hidden immediate one.
   Uses #interfaceType OSC with full general purpose script interface.  I suggest using this to add interface to other scopes.
   Has Mode and Setup popups (modified versions of MikeLud's Siglent scope ones)

Please add this device file to the next release.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 13, 2020, 05:32:14 pm
HKJ,

Further Tektronix device file testing found the popup combo box to set input termination impedance was not working properly.  It was
Code: [Select]
#cmdSetup comboboxhot Termination CH_4
:read: CH4:TERMINATION?
:readmath: getMatch(value, "( |^)[-+.0-9].*")
:write: CH4:TERMINATION
1M 1e6
50 50
75 75
Setting worked fine.  But, it would not register 1M as 1 MegOhm setting when the read returned 1.0000E6.  So the value when opening the popup was not necessarily correct.  Changing the "1M" text to "1e6" got it to work.  It would be nice to get 1M to work since it reads nicer to people but not really necessary.

Updated "Tektronix MDO MSO DPO TDS.txt" device file attached.  Please use this one.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 13, 2020, 07:10:48 pm
In other words: Is there any handheld DMM, which is able to log faster than 1 second interval, without skipping measurements in TestController?

The short answer is yes.

TestController uses uses a couple of different strategies with multimeters, with some meters it sends a command and wait for an answer (289 works this way). With some other meters the logging and meter communication are decoupled, i.e. TestController communicates with the meter as fast as possible, logging will use the last returned value. This is the way meters that only outputs date works and many of them are in the 3 to 6 samples each second (on DCV).

Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 13, 2020, 07:18:41 pm
Setting worked fine.  But, it would not register 1M as 1 MegOhm setting when the read returned 1.0000E6.  So the value when opening the popup was not necessarily correct.  Changing the "1M" text to "1e6" got it to work.  It would be nice to get 1M to work since it reads nicer to people but not really necessary.

From next version try formatSI() in readmath

Updated "Tektronix MDO MSO DPO TDS.txt" device file attached.  Please use this one.

It will be included in next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 16, 2020, 10:56:46 am
V1.26 is up
Mostly it is about documentation, but it also includes new devices and some bug fixes.
   Fixed: Discovery often broke running logging, this is reduced (It is brand and firmware version depend).
   Added: Documentation for Timer popup (Press F1 to open in browser)
   Added: Documentation for Test Interface popup (Press F1 to open in browser)
   Added: Documentation for Connected Devices popup (Press F1 to open in browser)
   Added: Documentation for Readout popup (Press F1 to open in browser)
   Added: Documentation for Adjust scale popup (Press F1 to open in browser)
   Added: Documentation for Advanced log and Log Trigger popup (Press F1 to open in browser)
   Added: Documentation for Export popup (Press F1 to open in browser)
   Fixed: DeviceWrite() did not work correctly

The documentation can be access with F1 or from here: https://lygte-info.dk/project/TestControllerIntro%20UK.html (https://lygte-info.dk/project/TestControllerIntro%20UK.html)

The discovery function did affect some devices (i.e. logging was stopped) when it checked the id of them, to avoid this I now uses a html request to get the device information, if it is supported. Sadly many brands do not know their own name and the html request do not return exactly same brand name as the *idn? request, to fix this I uses a slightly fuzzy search when comparing brand and model names.


gby has added a lot of Tektronix scopes:
(http://lygte-info.dk/pic/cpf5/osctek.png)
Title: Re: Program that can log from many multimeters.
Post by: gby on September 16, 2020, 10:33:28 pm
Setting worked fine.  But, it would not register 1M as 1 MegOhm setting when the read returned 1.0000E6.  So the value when opening the popup was not necessarily correct.  Changing the "1M" text to "1e6" got it to work.  It would be nice to get 1M to work since it reads nicer to people but not really necessary.

From next version try formatSI() in readmath

HKJ,

Thanks for yet more useful functionality.  I added formatSI() to the readmath and changed termination label back to 1M and everything works fine.

Attached is the updated Tektronix scope file with the above update and another small fix for TDS3000C scopes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 17, 2020, 07:16:15 am
Attached is the updated Tektronix scope file with the above update and another small fix for TDS3000C scopes.

I will include it in the next update.

Maybe you want to check these tags:

In meta sections use "#sections QuadChannel"

In definition use:

#metaSection QuadChannel
#defs for channel 3 & 4
#metaSection

Documentation is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##sections (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##sections)


Title: Re: Program that can log from many multimeters.
Post by: gby on September 18, 2020, 09:14:34 pm
HKJ,

I am looking to improve the device support for Kollmorgen AKD2G.  The device has nearly a 1000 variables/signals that might be of interest to log.  It also has a built in oscilloscope mechanism for use with its proprietary PC GUI software that works by store and forward and can't continuously log.  It would be very flexible to use this mechanism for logging since there are commands already supported in the TC device file to select what signals will be recorded.

The problem is that the return data comes back as two text lines with the values of the channels separated by commas.  Below is an example returned data:
   01
   2325.793,-12.163,152423176,65532

The issue is that there is a carriage return, line feed after the 01 before the line of data numbers.  This device communicates with standard Telnet and the device file defines this device as:
   #port 23
   #eol \r\n
   #driver ascii
The above works for all the other commands since they are single return line with \r\n at the end.

Thoughts on how to receive the two line reply and parse the numbers as logged values?

This device can have from 1 to 6 values selected for the built in recorder and the reply will then be 01 followed by 1 to 6 comma separated values.  Will TestController be OK with setting missing values to 0 and not have errors when there are less than the maximum 6 log numbers?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 19, 2020, 08:45:52 am
I have made a temporary version with support for multiline in Ascii device: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

You can use:
txrx2? or txrxn?
with the n version the number of lines must be specified after the command, i.e. "txrxn? 2 device_command"

The result will contain multiple lines with a LF (\n) between, you can get the second line with getElement(value,1,"\n")

The two commands are untested, but please test both. I expect the txrx2? works, and hope the txrxn? works

To handle missing values, just add a couple of zero values to the end: getElement(value,1,"\n")+" 0 0 0 0 0 0"
Extra values are ignored.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 19, 2020, 01:34:53 pm
HKJ,

Thanks for this new capability.  It should be a useful addition to TC.  Thank you for this new TC capability.

On a quick command line test both the new txrx2? and the txrxn? <number> commands seem to work.  Trying txrxn? with multiple number arguments on a device command that returns many lines seems to get the correct number of lines each time.  Testing multiple line numbers up to the full 49 of the device seems to just work.  I even tested txrxn? 3 with a command that only returns 2 lines and TC gave the resulting 2 lines with no error messages which is just what you would want.

One small thing that would be good to clean up is the echo to the Command tab result window.  Normally ";;" is added before the return data echo so that when you click the Clean button you remove returned query data.  With the new txrxn? command the extra lines of text are echoed to the screen have no prefix of ";;" like shown below.
Code: [Select]
txrxn? 2 rec.retrievedata 0
;; 01
2325.793,-12.163,152423176,65532
*idn?
;; Kollmorgen,AKD1G, ,
Clicking the Clean button leaves the extra returned lines behind.

Lastly I did a very quick check of using this method to get data and it is working!

The last challenge is what, if anything, to do about units?  With the logged value being channels selected in the test script, then you don't know what units to put in the device file.  I had the same issue with oscilloscope support in that a channel could be voltage or it could be current for example.  For the moment I have put just - in the device file for units but would be interested in your thoughts on setting log channel units in a script.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 19, 2020, 01:39:45 pm
While doing an extended test of the fastest logging I could do with the txrxn? command test version I was using #commandtime? and found the results confusing.  Checking mulitple times in a row while continuously logging the "slowest" time was getting smaller and not same or larger.
Code: [Select]
;; AKD1G     last:    15.35 ms     average:    16.30 ms     slowest:    38.45 ms
#commandtime?
;; AKD1G     last:    14.34 ms     average:    16.29 ms     slowest:    34.31 ms
#commandtime?
;; AKD1G     last:    15.27 ms     average:    16.33 ms     slowest:    33.59 ms
#commandtime?
;; AKD1G     last:    15.32 ms     average:    16.29 ms     slowest:    31.92 ms
#commandtime?
;; AKD1G     last:    16.12 ms     average:    16.16 ms     slowest:    30.22 ms
Does #commandtime? reset and start over on a regular basis?

With logging off and just sitting in the command window I once got:
Code: [Select]
#commandtime?
;; AKD1G     last:     0.01 ms     average:     0.01 ms     slowest:     0.01 ms

Before this test version #commandtime?  seemed to always make sense.  Does multi-line txrxn? somehow confuse #commandtime?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 19, 2020, 01:55:04 pm
Does #commandtime? reset and start over on a regular basis?

Yes, each time you use the command.

Before this test version #commandtime?  seemed to always make sense.  Does multi-line txrxn? somehow confuse #commandtime?

It measured the time from receiving a command until it returns the answer. This also means if you use a fast command it will register it.
The fastest command is the reset timers, i.e. if you use two #commandTime? in a row it will be the only command registered (Maybe I need to excluded that command from timing).
Only commands that are processed in parallel to all devices are passed through this interface, this is basically reading of values, *idn?, initialization and outputOff
Title: Re: Program that can log from many multimeters.
Post by: gby on September 19, 2020, 01:59:56 pm
HKJ,

Still working great, but I do get one Java error set of debug window messages the first time I do "Current values" tab or start logging.  I missed it at first because it only happens the first time.  Exit "Current values" tab and come back or stop and restart the logging and I don't see any more Java error messages.

Attached is the dos debug window from
1. First start TC and connect to the one device.
2. Click into "Current values" tab for a moment.
    Note right away Java errors
3. Click out of Current values tab and do *idn? command manually as a "sign post"
4. Go back into Current values tab briefly
    Note no Java errors

These Java errors don't seem to prevent any functionality but I thought it would be good to point them out.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 19, 2020, 02:25:20 pm
These Java errors don't seem to prevent any functionality but I thought it would be good to point them out.

Looking at the error:
 at dk.hkj.main.Mathematics$MathEntry.calcDirect(Mathematics.java:394)

I can see it includes Mathematics, that means it is related to the Math page. The reason you only get it once is because the expression is disabled at first error.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 19, 2020, 02:47:16 pm
Looking at the error:
 at dk.hkj.main.Mathematics$MathEntry.calcDirect(Mathematics.java:394)

I can see it includes Mathematics, that means it is related to the Math page. The reason you only get it once is because the expression is disabled at first error.

That makes sense.  I did have a Math selected that would not work (other device not connected).  With proper math equations there is no Java error reported.  Thanks again for the quick feedback.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on September 21, 2020, 04:05:37 am
I have finally bought my first benchtop DMM - a cute little used "Rohde & Schwarz HMC 8012-G".  :-DMM

It is probably easier for me to stick to my handheld DMMs, but I am tooooo... curious to ask, whether it could be used with TestController, at least via the easiest way "USB VCP" at the beginning?
I tried to do some progress with TestController - actually it is just the detection of the device, because I am neither a programmer, nor a JavaScript expert...  :(

First of all, there are several ways of connection:

(https://i.postimg.cc/TyL6N9ZN/Bildschirmfoto-vom-2020-09-21-03-40-31.png) (https://postimg.cc/TyL6N9ZN)

USB VCP = virtual COM port
I think, "USB VCP" can be compared with the handheld DMMs "IR-USB-Connections" like Keysight or Fluke.

USB TMC = Test and Measurement Class
As NI-VISA drivers are necessary I would prefer the virtual COM port from above, allthough this one has more possibilities.

Ethernet/LXI
As I mainly use linux and Windows 7 only offline, it is not necessary at the moment...in the manual it says, that it can be compared with the Agilent multimeters 34401A or 34410A as far as the SCPI commands are concerned.

IEEE488
At the moment I have no use of GPIB.


This is, what "lsusb" gives out on my Raspberry Pi, where I mainly want to use it, with "USB VCP" interface set in HMC8012:

(https://i.postimg.cc/KRWFPwW3/Bildschirmfoto-vom-2020-09-21-03-46-10.png) (https://postimg.cc/KRWFPwW3)

; Bus 001 Device 015: ID 0aad:0135 Rohde & Schwarz GmbH & Co. KG

I tried to make the benchtop DMM getting detected by TestController, which has worked so far.

(https://i.postimg.cc/zbYGn6VF/Bildschirmfoto-vom-2020-09-20-18-10-41.png) (https://postimg.cc/zbYGn6VF)

(https://i.postimg.cc/y3S1kS4x/Bildschirmfoto-vom-2020-09-21-06-18-52.png) (https://postimg.cc/y3S1kS4x)

(https://i.postimg.cc/dh7sgwC9/Bildschirmfoto-vom-2020-09-20-18-10-28.png) (https://postimg.cc/dh7sgwC9)

My wretched content of R&SHMC8012.txt:
#idString HAMEG,HMC8012,
#name R&S HMC8012
#handle HMC8012
#port com
#baudrate 115200

settingsLoad from Windows:
Device:R&S HMC8012|PortType:Serial|Address:COM5|Baudrate:115200|Enabled:1

settingsLoad from Linux:
Device:R&S HMC8012|PortType:Serial|Address:ttyACM0|Baudrate:115200|Enabled:1
Device:R&S HMC8012|PortType:Socket|Address:192.168.178.186|Baudrate:115200|Enabled:1

settingsRemap:
Name:R&S HMC8012|SN:XXXXXXXX|Id:32|enabled:1|Handle:HMC8012

I could also get a debug line...when using Windows 7 (COM5). When pressing different buttons there was of course no outcome...

(https://i.postimg.cc/7JN2f7nD/Bildschirmfoto-vom-2020-09-21-05-57-11.png) (https://postimg.cc/7JN2f7nD)

;; Start thread for: COM5 - R&S HMC8012
;; Start thread for: COM4
;; Start thread for: COM3
;; COM5: Set params: 115200
;; COM3: Set params: 9600
;; COM4: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <HAMEG,HMC8012,XXXXXXX32,01.400> 48 41 4D 45 47 2C 48 4D 43 38 30 31 32 2C 30 33 30 33 39 35 36 33 32 2C 30 31 2E 34 30 30
;; Found R&S HMC8012 on HMC8012 (COM5) sn: XXXXXXX32
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; COM4: Rx: timeout
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: timeout
;; Stopping thread for: COM3
;; COM3: Close
;; COM4: Rx: timeout
;; Stopping thread for: COM4
;; COM4: Close
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>
;; HMC8012: Rx as numbers <>

...and so on...

But first of all, I would like to know, whether it is possible to use it like a handheld DMM via the "USB VCP" interface at all? In order to test it, it would be enough for me, to have just one function at the moment. Maybe to measure current "ACI" for example? As the DMM is able to show "AC + DC" true RMS, but only in the third part of the display, I think, that it is not possible to fetch it via "USB VCP". You can see the display on this photo with "ACV + DCV".

(https://i.postimg.cc/CdY6278P/Bildschirmfoto-vom-2020-09-20-23-45-15.png) (https://postimg.cc/CdY6278P)


ThanX for any feedback!  :)


Here are some PDF-links:

Product Page:
https://www.rohde-schwarz.com/uk/product/hmc8012-productstartpage_63493-44315.html (https://www.rohde-schwarz.com/uk/product/hmc8012-productstartpage_63493-44315.html)

Manuals and SCPI:
https://www.rohde-schwarz.com/uk/manual/hmc8012/ (https://www.rohde-schwarz.com/uk/manual/hmc8012/)

Drivers:
https://www.rohde-schwarz.com/uk/driver/hmc8012/ (https://www.rohde-schwarz.com/uk/driver/hmc8012/)

Firmware:
https://www.rohde-schwarz.com/uk/firmware/hmc8012/ (https://www.rohde-schwarz.com/uk/firmware/hmc8012/)

Software:
https://www.rohde-schwarz.com/uk/software/hmc8012/ (https://www.rohde-schwarz.com/uk/software/hmc8012/)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 21, 2020, 07:06:52 am
It is probably easier for me to stick to my handheld DMMs, but I am tooooo... curious to ask, whether it could be used with TestController, at least via the easiest way "USB VCP" at the beginning?
I tried to do some progress with TestController - actually it is just the detection of the device, because I am neither a programmer, nor a JavaScript expert...  :(

You do not need to be a programmer or know anything about JavaScript to setup TestController for a device.

It do not really matter if you want to use it via a com port or on network, just write: "#port com 5025" and you definition will support both.

I doubt you can use it "like a DMM", bench meters usually lock the user interface when a remote connection is active, i.e. you need to provide ways to select range from the remote connection.

To get some values to TestController you need to define a measurement:
#value Value - D6

And a way to read it:
#askValues READ?

The above is a very simplified way to read values, it do not care about selected mode. You may also need a #prepareSample to setup some sort of trigger mode

The simplest DMM definition is probably the "AgilentHP34401A.txt", you can look in that file for ideas on the different commands.
You will need a couple of #value lines, basically one for each mode and a #askMode command to read the actual mode and #cmdMode to select each mode.
If you are lucky you can basically copy the contents of the file from below the baudrate specification.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on September 22, 2020, 07:12:54 pm
Thank you for you feedback, HKJ!

You are right - my idea, to use the "USB virtual COM port" connection like a handheld DMM was not a good idea. I changed my mind and switched to the LAN interface, where I immediately got a result via "Test interface for currently selected device".

Now, I have to get into it and study your well documented TestController website, till everything works fine!  :-+


ThanX!  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 24, 2020, 03:15:17 pm
V1.28 is up.
   Changed: Ascii device
   Fixed: hh:mm:ss chart scale was missing from generated script
   Added: Ascii device support for receiving multiple lines, requires :readmath: to decode them.
   Added: Lots of functions (>20) to access, search and calculate on table data.

This release is about functions to access the table data from scripting. Some function can do the same as the function in the chart and will return a index into the table other function will calculate on the table data.
The documentation for the functions are here: http://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions (http://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions)

In addition I have made some significant changes to the Ascii device driver, they are not supposed to affect any existing definition (I hope), but will be used in some new definitions.

Title: Re: Program that can log from many multimeters.
Post by: PushUp on September 27, 2020, 08:53:57 pm
Questions as far as TestController's interface is concerned, nothing special, just to clarify it...

"Not always seeing the unit in "Popups > Readout":

No matter how many "decimals" and/or "Auto min. range" I choose, for example "6" or "4", I don't see the unit for labeling the values continuously on the "Readout":

(https://i.postimg.cc/hhHD48np/Bildschirmfoto-vom-2020-09-27-21-47-29.png) (https://postimg.cc/hhHD48np)

...also "Size 2" does not change it:

(https://i.postimg.cc/dhJKD4xm/Bildschirmfoto-vom-2020-09-27-21-47-23.png) (https://postimg.cc/dhJKD4xm)

Is it possible, to force outputting a unit, for example always "A", to get a shorter number/value or giving a little bit more space, as "11" is shorter than "23" for example?

"Is it advisable to always uncheck not used devices, to not get a "NullPointerException"?

I saw this on my Pi, where I always start TestController via Terminal. When all connected devices are "ON", there is no message. When the devices are connected, but "OFF", I get this terminal information:

(https://i.postimg.cc/6T5Dn8Wn/Bildschirmfoto-vom-2020-09-27-22-14-25.png) (https://postimg.cc/6T5Dn8Wn)

There is of course no interference with the usability of TestController, I just want to know, how to deal with it?

My little interim report as far as my "Rohde & Schwarz HMC8012-G.txt" is concerned:
It is only a first stage and in the end any user has to tweak the file for his own needs. I mainly want to use ACI measurements with TestController to see the Chart while logging with the HMC8012 without paying attention to batteries. At the moment I am satisfied with the result:

(https://i.postimg.cc/qNH89Z7r/Bildschirmfoto-vom-2020-09-27-22-39-15.png) (https://postimg.cc/qNH89Z7r)

I will post my result and hurdles to solve a bit later, in order not to make this post too messy.  ;)


ThanX.  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 28, 2020, 05:17:26 am
"Not always seeing the unit in "Popups > Readout":

No matter how many "decimals" and/or "Auto min. range" I choose, for example "6" or "4", I don't see the unit for labeling the values continuously on the "Readout":

The page "Scale for charts" only affect the "Chart" and "Histogram" pages, all other decimals is controlled from the device definition with the D1..D6 or SI specifications in the #value lines.
On the table page you can right click on a column and temporary override the definition. This will affect a Readout that is opened after.

Is it possible, to force outputting a unit, for example always "A", to get a shorter number/value or giving a little bit more space, as "11" is shorter than "23" for example?

Like decimals units is also controlled from the device definition file, only Math channels can change the unit.
I will take a look at the readout and see if I can do anything about the width.

"Is it advisable to always uncheck not used devices, to not get a "NullPointerException"?

I saw this on my Pi, where I always start TestController via Terminal. When all connected devices are "ON", there is no message. When the devices are connected, but "OFF", I get this terminal information:

There is of course no interference with the usability of TestController, I just want to know, how to deal with it?

No, when TestController sees the null-pointer error it will simple close the device driver down and release any resources related to that device.


My little interim report as far as my "Rohde & Schwarz HMC8012-G.txt" is concerned:
It is only a first stage and in the end any user has to tweak the file for his own needs. I mainly want to use ACI measurements with TestController to see the Chart while logging with the HMC8012 without paying attention to batteries. At the moment I am satisfied with the result:

I will post my result and hurdles to solve a bit later, in order not to make this post too messy.  ;)

I look forward to see the final result
You can find some inspiration for DMM definitions in "Keysight344xxA.txt" and "SiglentSDM30xxx.txt".
Title: Re: Program that can log from many multimeters.
Post by: gby on September 28, 2020, 03:23:24 pm
HKJ,

I am running into issues creating a setup popup.  One of the elements is a #cmdSetup info that displays some text the device returns.  When I open the popup everything is sized properly but when I exercise another control in this popup, which has an :update: command for this info control, it gets messed up by the changed text length.  See attached:
    No faults active.PNG       which is all properly sized
    Faulted 502.PNG            after clicking Axis Enable on button which causes a fault and updates the Faults: info text

To try and fix this popup window size issue I tried to use a readmath on the info to set a fixed length string but I can't seem to get the string function formatLeft to work.  It keeps giving Java errors.  Here is my "Faults:" info popup code with formatLeft readMath and the "Axis Enable" command with the :update: Faults line:
Code: [Select]
#cmdSetup buttonsOn Axis_Enable
:string:
:read: DRV.ACTIVE?
:readmath: getElement("DRV.DIS DRV.EN",value)
:write: txrx #
:tip: Disable (Off) or Enable (On)
:color: (0,255,0)
:updatedelayed: 0.1
:updatealloff:
:update: Faults
Off DRV.DIS
On DRV.EN

#cmdSetup info Faults
:string:
:read: DRV.FAULTS?
:readmath: formatLeft("value",25)
:tip: You can clear faults with DRV.CLRFAULTS command.

below is the section from the DOS debug window after restrating TC and first opening the popup:
Code: [Select]
;; AKD1G: Tx <DRV.FAULTS?>
;; AKD1G: Tx <txrx? DRV.FAULTS>
;; 192.168.1.173: Tx: <DRV.FAULTS..> 44 52 56 2E 46 41 55 4C 54 53 0D 0A
;; 192.168.1.173: Rx: <502: Bus under voltage.> 35 30 32 3A 20 42 75 73 20 75 6E 64 65 72 20 76 6F 6C 74 61 67 65 2E 0D
;; AKD1G: Rx <502: Bus under voltage.>
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownException:
formatLeft("value",25)____<----____
        at dk.hkj.script.Script.expression(Script.java:1193)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:228)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:244)
        at dk.hkj.devices.SetupFormats$InfoField.syncValue(SetupFormats.java:2446)
        at dk.hkj.devices.SetupFormats.syncAll(SetupFormats.java:239)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:97)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:105)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:103)
        at dk.hkj.main.PopupSetupSelection$2.actionPerformed(PopupSetupSelection.java:72)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: dk.hkj.vars.VarExceptions$ValueException: A struct can not contain a value
        at dk.hkj.vars.VarValueStruct.asString(VarValueStruct.java:75)
        at dk.hkj.vars.VarValue$6.execute(VarValue.java:267)
        at dk.hkj.script.Functions$FuncVarValue.execute(Functions.java:113)
        at dk.hkj.script.Script.parseValue(Script.java:265)
        at dk.hkj.script.Script.parseBitOp(Script.java:312)
        at dk.hkj.script.Script.parseProduct(Script.java:384)
        at dk.hkj.script.Script.parseSum(Script.java:444)
        at dk.hkj.script.Script.parseCompare(Script.java:486)
        at dk.hkj.script.Script.parseLogical(Script.java:522)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:548)
        at dk.hkj.script.Script.parseExpression(Script.java:573)
        at dk.hkj.script.Script.expression(Script.java:1181)
        ... 24 more

I also tried formatRight with similar results.  Then, just to make sure I was doing something right, I tried substring.  substring gave no Java errors, but I don't understand the results.  Input string was "502: Bus under voltage." but substring("value",4) returns just the single character "e".  I thought it would return from the fourth character until end of string.
Code: [Select]
;; AKD1G: Tx <DRV.FAULTS?>
;; AKD1G: Tx <txrx? DRV.FAULTS>
;; 192.168.1.173: Tx: <DRV.FAULTS..> 44 52 56 2E 46 41 55 4C 54 53 0D 0A
;; 192.168.1.173: Rx: <502: Bus under voltage.> 35 30 32 3A 20 42 75 73 20 75 6E 64 65 72 20 76 6F 6C 74 61 67 65 2E 0D
;; AKD1G: Rx <502: Bus under voltage.>
;; AKD1G: Rx after :readmath: substring("value",4) <e>

My questions are:
1.  How best to handle text length changes for a text info control that is updated by another :update: needing the popup to resize?
2.  What am I doing wrong with the formatLeft and formatRight commands that leads to the Java errors?
3.  What am I doing wrong with the substring command that only returns one letter?
Title: Re: Program that can log from many multimeters.
Post by: felixd on September 28, 2020, 03:56:10 pm
Hello

I have created TestController GitLab group to store Devices files. Currently I am fighting with TestController, SCPI and GPIB support on HP 34401A (learning all those things together ;) ).
I trully believie this is better way to coordinate Devices files :)

https://gitlab.com/testcontroller/devices

I have already PM'ed to HKJ to give him full access to this group.

Cheers, Paweł.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 28, 2020, 03:58:37 pm
I have a bug in the expressions, it will be fixed in next version (formatLeft/formatRight).

3. parameter in substring is column after last to include, this matches the Java format, except I do not fail when columns are outside actual string.

For the resizing try adding a :layout: tag
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 28, 2020, 04:14:40 pm
I have created TestController GitLab group to store Devices files.

I will take a look on that tomorrow, I am out of time for today.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 28, 2020, 11:04:50 pm
3. parameter in substring is column after last to include, this matches the Java format, except I do not fail when columns are outside actual string.

For the resizing try adding a :layout: tag

HKJ, thanks for pointing out the :layout: tag.  Completely solved my popup issue.  Now I can share the device file for Kollmorgen AKD first generation servos.  I have used a number of the recent TestController functionality updates (Thanks HKJ!) in this file so that this one is now better/more functional than the AKD second generation servo device file I shared a while ago.  I plan to update the AKD second gen one shortly.

Please include the attached device file in the next TestController release.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 29, 2020, 02:49:17 am
HKJ,

I am working with a pretty fast device and I decided to try pushing the logging speed.  However, it seems like the smallest logging interval TecstController accepts is 0.01.  Any reason not to allow 0.005?  I would imagine that 0.001 and lower won't work because the time units seem to be 1 mSec.  But shouldn't 0.005 sec work?

For reference, I am updating the AKD2G servo to the new better method of getting log values.  After 45 minutes of logging at 0.01 sec interval the result of the #commandtime? command is:
   ;; AKD2GS       last:     4.14 ms       average:     4.08 ms       slowest:    31.89 ms
Looking at a graph of the delta time between samples (Math type "Change" with 2 samples of "time") shows a histogram where
   9 mSec     17.8%
  10 mSec    63.0%
  11 mSec    17.8%
   all other     1.4%

The above numbers certainly suggest it can go faster.

Also, I started trying some of the new table calculation functions in Ver 1.28.

tableCalcMax
seems to work correctly.
tableCalcMin seems to always give the maximum possible negative number.  Is the seed number for this function the wrong sign?
   =tableCalcMin(10);
   ;; -1.7976931348623157E308

tableCalcAvg seems to always give me 0 when working with huge number value data.  Below data range gives:
Name      Unit   First         Last         Minimum      Maximum      Range      Average      Slope
AKD2GS.CH5   -   3.747187E9   3.747187E9   3.74706E9      3.747246E9   186071.000   3.747157E9   -0.306
   =tableCalcMax(8 );
   ;; 3.747246331E9
   =tableCalcAvg(8 );
   ;; 0.0
Correct max value, but incorrect 0 for average.

tableCalcRMS and tableCalcAvg seem to give 0 for data sets where all the points are the same such as 0.504.  Is this RMS taking the dc out like StdDev or should this RMS function return the dc value?  Certainly average should return the dc value and not 0.
Name         Unit   First   Last   Minimum   Maximum   Range   Average   Slope
AKD2GS.CH4   -   0.504   0.504   0.504   0.504   0.000   0.504   -0.000
   =tableCalcMax(7);
   ;; 0.504
   =tableCalcAvg(7);
   ;; 0.0
   =tableCalcRMS(7);
   ;; 0.0

All I have time for tonight.  Thanks again for a great tool.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 29, 2020, 08:22:47 am
I will include the AKD1G in the next release.
All the bugs you have found will also be fixed in next release.

I am not sure if it will work at a faster sample rate, the OS or Java system may have something to do that prevents it from being reliable. Even logging from the internal generators cannot maintain 0.01 second sample rate over longer time.
I have reduced the internal limit to 0.005, but it can only be started from the command line with "#log 0.005", for now I will keep the 0.01 limit in the menus and in formatting.
Please report your experience with it.


If somebody can thing of other useful functions for the table data (or other functions), please post about it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 29, 2020, 08:53:57 am
I have created TestController GitLab group to store Devices files.

I have created an account on Gitlab and send the id to you.
I see one problem with doing devices this way and that is partially made definitions. I cannot just fetch all files from gitlab and include them, some of them may not be finished yet.
I may a great idea for developing a device file where multiple people can contribute to the same file, but I will still look for a posting here or an email with the finished definition before including it. This also applies for update to already existing definitions.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 30, 2020, 12:46:11 pm
V1.29 is up
It is a mixed bag of smaller improvements.
   Fixed: Some bugs in table... functions
   Added: Support for receiving a few binary bytes in ascii device definitions.
   Changed: To better support fast sampling the chart scale can show 0.01 second when full scale is below 2s
   Added: Custom format popup to table
   Added: formatSI function now supports precision specifiers
   Added: More D and X formats, now supports from D0..D9 and X0..X9
   Added: SI3..SI8 formats, this will limit the number of digits (not decimals)
   Added: SI3x..SI8x can include a minimum SI prefix, i.e. SI4m will limit minimum used SI prefix to m
   Added: Generation of #ValueFormat script for all loaded devices with all possible values.
   Added: #ValueFormat, changes format for any value/column (but not chart) until TestController is restarted
   Fixed: Size of Readout, it will now adjust to always fit the measurement.
   Added: #foreach/#endforeach this makes it easy to do automatic testing at a couple of discrete values.

The most significant improvement is more flexible number formats and the possibility to adjust from both from script and from menu on the table page:

(http://lygte-info.dk/pic/Projects/TestController/DocTable/CustomFormat1.png) (http://lygte-info.dk/pic/Projects/TestController/DocTable/CustomFormat2.png)

A new scripting statement is #foreach, this makes it easy to do a test at a couple of different settings:

#foreach current 0.1 0.3 1 3
handle:setCurrent (current)
...do test
#endforeach


The readout sizing is changed, if needed it will expand the width and the initial width can be smaller now:

(http://lygte-info.dk/pic/Projects/TestController/DocReadout/digits1a.png)



Title: Re: Program that can log from many multimeters.
Post by: gby on September 30, 2020, 05:19:43 pm
I will include the AKD1G in the next release.
All the bugs you have found will also be fixed in next release.

I am not sure if it will work at a faster sample rate, the OS or Java system may have something to do that prevents it from being reliable. Even logging from the internal generators cannot maintain 0.01 second sample rate over longer time.
I have reduced the internal limit to 0.005, but it can only be started from the command line with "#log 0.005", for now I will keep the 0.01 limit in the menus and in formatting.
Please report your experience with it.

HKJ,

Thanks for the update.  Just a little time to play right now.  I tried:
   #log 0.007
and TestController started logging at 0.005 sec intervals which surprised me.  I am guessing you set the min quanta to 5 mSec and it rounded the request  from 7 mSec to 5 mSec???

After 25 minutes of logging at 5 mSec interval with my fast device it seems fine.  Here are some info from this quick test:

Name   Unit   First   Last   Minimum   Maximum   Range   Average   Slope
Math.DeltaTime      0.0000   6.0000   0.0000   53.0000   53.0000   5.0988   -0.0000

#commandtime? returns:
;; AKD2GS       last:     2.79 ms       average:     3.80 ms       slowest:    56.98 ms

I then tried out some of the tableCalc functions on the Math channel Type change with 2 samples (basically delta time on log samples):
=tableCalcMax(10)
;; 57.0
=tableCalcMin(10,1)
;; 1.9999999998835847
=tableCalcAvg(10)
;; 5.073882801777281
=tableCalcRMS(10)
;; 5.293048934219226
=tableCalcStdDev(10)
;; 1.5073280563632954

All the above calculations look correct and show the logging timing seems stable at 5 mSec per sample.  Pretty impressive sampling!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 30, 2020, 05:40:25 pm
Thanks for the update.  Just a little time to play right now.  I tried:
   #log 0.007
and TestController started logging at 0.005 sec intervals which surprised me.  I am guessing you set the min quanta to 5 mSec and it rounded the request  from 7 mSec to 5 mSec???

I change my rounding from 10ms to 5ms, there is not a comparison for minium sample time, only that 0 stop sampling.

After 25 minutes of logging at 5 mSec interval with my fast device it seems fine.  Here are some info from this quick test:

Name   Unit   First   Last   Minimum   Maximum   Range   Average   Slope
Math.DeltaTime      0.0000   6.0000   0.0000   53.0000   53.0000   5.0988   -0.0000

#commandtime? returns:
;; AKD2GS       last:     2.79 ms       average:     3.80 ms       slowest:    56.98 ms

I wonder a bit about the 57ms time that it did not kick the sample rate down (I do not remember the exact conditions before I reduce sample rate).

I then tried out some of the tableCalc functions on the Math channel Type change with 2 samples (basically delta time on log samples):
=tableCalcMax(10)
;; 57.0
=tableCalcMin(10,1)
;; 1.9999999998835847
=tableCalcAvg(10)
;; 5.073882801777281
=tableCalcRMS(10)
;; 5.293048934219226
=tableCalcStdDev(10)
;; 1.5073280563632954

All the above calculations look correct and show the logging timing seems stable at 5 mSec per sample.  Pretty impressive sampling!

Good, remember if you have ideas for other table... functions, please say.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 01, 2020, 07:00:14 am

I tried to execute your hint of getting a better presentation of the Chart. Did you mean to cut off the unnecessary things to have a better focus on the decisive values, like so...

(https://i.postimg.cc/Jtp3LhMG/Bildschirmfoto-vom-2020-10-01-08-45-48.png) (https://postimg.cc/Jtp3LhMG)

...or is there even a better way to do so?

(https://i.postimg.cc/47S3WjRN/Bildschirmfoto-vom-2020-10-01-08-45-36.png) (https://postimg.cc/47S3WjRN)



PS: While doing so I have finally become aware of the tab with the description "Current values".

Due to the double meaning: "current" vs. voltage and "actual or up-to-date" you may consider taking another word for this tab - not a big deal for me, but if someone is new to TestController, it maybe helps to assign the meaning of the tab by just reading and immediately knowing, what it stands for, perhaps: "Up-to-date values"...I don't know...  :)


Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 01, 2020, 07:41:22 am
I tried to execute your hint of getting a better presentation of the Chart.

It looks like I added a bug with the numeric format changes, it was supposed to look this way with the scale in mA:

(http://lygte-info.dk/pic/cpf5/chartSIFormat.png)

This will be fixed in next release.

PS: While doing so I have finally become aware of the tab with the description "Current values".

Due to the double meaning: "current" vs. voltage and "actual or up-to-date" you may consider taking another word for this tab - not a big deal for me, but if someone is new to TestController, it maybe helps to assign the meaning of the tab by just reading and immediately knowing, what it stands for, perhaps: "Up-to-date values"...I don't know...  :)

I like the word "current", there is no reason for a page about electron flow.
What I will do is add a tool tip to the tab.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 01, 2020, 08:21:39 pm
Cool, now it works!  :-+

(https://i.postimg.cc/yWVCH6wg/Bildschirmfoto-vom-2020-10-01-22-17-58.png) (https://postimg.cc/yWVCH6wg)


ThanX!  :)
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 02, 2020, 03:14:29 pm
Do I have the possibility, to match the values of both y-axis, when using at least two DMM?

(https://i.postimg.cc/hf35xG8r/SNAG-0124.jpg) (https://postimg.cc/hf35xG8r)

For example, when measuring two different items, to see, which is more economical, it would be nice when the left y-axis is directly in opposition to the other side with its same values.

In my case it would be easier to read and estimate the graphs, as they would not overlap, although showing different values, thus you immediately have a direct comparison?


ThanX.  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 02, 2020, 03:19:18 pm
Do I have the possibility, to match the values of both y-axis, when using at least two DMM?

Yes, you can use auto scaling parameters that will do it or simply switch to manual scaling with same minimum and maximum for the two meters. All is done on the "Scales for chart" page.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 02, 2020, 04:50:30 pm
Ah, yes of course!  :-+

(https://i.postimg.cc/LJKwqYH8/Bildschirmfoto-vom-2020-10-02-18-46-33.png) (https://postimg.cc/LJKwqYH8)


ThanX!  :)
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 02, 2020, 05:48:52 pm
...just brainstorming...

Does TestController already have something like an "AutoHoldFeature" like the Fluke 179, 87 or 289, which could be used via "Popups > Readout" when having both testleads in your hands, and not being able to reach the instrument, to press the "Hold"-button?

As probably hardly any benchtop DMM or a cheaper handheld DMM does have this feature, it could be an advantage/gain in usability?!  ???
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 02, 2020, 06:37:49 pm
...just brainstorming...

Does TestController already have something like an "AutoHoldFeature" like the Fluke 179, 87 or 289, which could be used via "Popups > Readout" when having both testleads in your hands, and not being able to reach the instrument, to press the "Hold"-button?

As probably hardly any benchtop DMM or a cheaper handheld DMM does have this feature, it could be an advantage/gain in usability?!  ???

You have the min/max values on the "Current values" page. I do not have anything for the Readout, but you could do a min/max Math function.

I try to make TestController as flexible as possible, i.e. it is possible to do a lot of stuff I have not though about when designing it. Your question was in that category. I could make a Math function that keeps the most stable value in a number of samples (Actual parameters not defined yet), but do anybody need it?
Title: Re: Program that can log from many multimeters.
Post by: gby on October 04, 2020, 12:41:53 am
HKJ,

Sorry to bother you but I am stuck.

I am trying to select some text in a comma separated list in a string.  For example, I have the string:
   PL.FB [Counts],VL.FB [rpm],il.fb [Arms],VBUS.VALUE [Vdc],fb1.mechpos [Counts],AIN.VALUE [V]
and I want to select one of them.  Looking at the available commands I thought I could do:
    getMatchGroup(value, "[^,]+", 2)
as an attempt to get the second matching group which is "VL.FB [rpm]".  RegEx "[^,]+" seems to work giving 6 matches as expected.  Unfortunately doing this getMatchGoup() yields Java errors like the partial list of errors below.
Code: [Select]
dk.hkj.script.ProgramExceptions$UnknownException:
 getMatchGroup(value, "[^,]+",2)____<----____
        at dk.hkj.script.Script.expression(Script.java:1193)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:297)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:156)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:199)
I then tried various combinations of RegEx espression and getMatchGroup command and could not get the second or third, etc.  I could only ever get getMatchGroup(value, "RegEx", 1) to work giving the first match "PL.FB [Counts]".

Even more curious, on one of the variations to the :readmath: that I tried
   getMatch(value, "([^,]+)(\[\w*\]+)")
I got no Java errors but a communications time out?  Not sure how a change to a :readmath: after data is received can cause a Rx Timeout.

Code: [Select]
;; AKD2GS: Tx <getunitsch2?>
;; AKD2GS: Tx <txrxn? 3 REC.RETRIEVEHDR>
;; 192.168.1.193: Tx: <REC.RETRIEVEHDR..> 52 45 43 2E 52 45 54 52 49 45 56 45 48 44 52 0D 0A
;; 192.168.1.193: Rx: <Recording> 52 65 63 6F 72 64 69 6E 67 0D
;; 192.168.1.193: Rx: <1,1> 31 2C 31 0D
;; 192.168.1.193: Rx: <axis1.pl.fb [Counts16Bit],axis1.vl.fb [rpm],axis1.il.fb [Arms],vbus.value [Vdc],fb3.mechpos [Counts],ain1.value [V]> 61 78 69 73 31 2E 70 6C 2E 66 62 20 5B 43 6F 75 6E 74 73 31 36 42 69 74 5D 2C 61 78 69 73 31 2E 76 6C 2E 66 62 20 5B 72 70 6D 5D 2C 61 78 69 73 31 2E 69 6C 2E 66 62 20 5B 41 72 6D 73 5D 2C 76 62 75 73 2E 76 61 6C 75 65 20 5B 56 64 63 5D 2C 66 62 33 2E 6D 65 63 68 70 6F 73 20 5B 43 6F 75 6E 74 73 5D 2C 61 69 6E 31 2E 76 61 6C 75 65 20 5B 56 5D 0D
;; AKD2GS: Rx Timeout

Can you give some examples of how getMatchGroup should be working and/or suggest how to get the individual comma separated items in the string list?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 04, 2020, 05:50:29 am

getMatchGroup uses search patterns in parentheses, index 1 is first set of parentheses, 2 is second set of parentheses, etc. This is very practical if you need to match on something around the value, but only want the value returned (See last example).

3 ways to pick the VL.FB name and value (I assume the [rpm] is a numeric parameter and uses [0-9.]+ to match it):
getMatchGroup(value,",(VL.FB[ ]+[0-9.]+),",1)
getMatch(value,"VL.FB[ ]+[0-9.]+")
getElement(value,1)

Only pick the numeric part of the VL.FB parameter:
getMatchGroup(value,",VL.FB[ ]+([0-9.]+),",1)
Title: Re: Program that can log from many multimeters.
Post by: gby on October 04, 2020, 02:11:54 pm
HKJ,

Thanks for the help.  Actually I am trying to get the units in the []'s.  The device has 6 channels fed by multiplexers and the units depend on what value is set in the multiplexer.  The number values come back in a different command as just number,number,number...

Not sure why I didn't think of this earlier but the getElement function easily gets a particular comma separated sub-element nicely.  So, doing getElement first and then a getMatch is simple.  To get the second units in the following string:
   "PL.FB [Counts],VL.FB [rpm],il.fb [Arms],VBUS.VALUE [Vdc],fb1.mechpos [Counts],AIN.VALUE [V]"
use
   :readmath: getElement(value,1)
   :readmath: getMatch(Temp,"(?<=\\[).*\\b")
which nicely gets the desired "rpm" units.

Now that I have the units I wonder if there is a way to make the units of the logged items dynamic?  In other words, the device file presently has
   #value CH1 - D3
and so on for the 6 channels of the multiplexer that TC is logging.  Since the mapping of the multiplexer is not fixed I just put "-" in for the a priori unknown units in the device file. 

When connected to the device using the above I can query the device for units for each logging channel.  But, how to set TC to use that unit in the logging?  Is there something like #ExportColumn but just changes the units value and sets it for use by the Table, Chart tabs and for Export?  Perhaps an extension to the #chart commands like a #chartCurveUnits?


 
Title: Re: Program that can log from many multimeters.
Post by: gby on October 04, 2020, 02:53:18 pm
Good, remember if you have ideas for other table... functions, please say.

I have tried some of the #table commands using the column name rather than the index number.  For example, in my test the names of the columns of data after the time columns is AKD2GS.CH1, AKD2GS.CH2, etc.  I started logging and then stopped it for a small data set.  Then, when I do:
   =tableCalcMax(4)
I get the maximum value in the fourth column which is named AKD2GS.CH1.  But, when I do
   =tableCalcMax(AKD2GS.CH1)
I get the maximum value of the time column.  When I do the same command again I get a different number that I don't see in the Range tab.  When I query other channels by name next I consistently get the max value in the Index column.

Similarly with other functions like Avg, StdDev.  I think there may be a bug in the conversion of the column name to column index.  Or, I am trying something that wasn't designed to work but doesn't give an error message.  I do get an error message when I try something like tableCalcMax(foo) where "foo" is not defined.

When I try tableCalcMax(AKD2GS.CH1) in debug mode I see no error message, but TC queries the device for new log data points.  Why would it do that?

On a related topic, I have been using the nice Histogram tab.  Very useful.  How about adding a cursor readout like on the Chart tab?  Click the Histogram graph and read out the bin range and the height of the bin in a side window like for the Chart?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 04, 2020, 03:34:35 pm
Now that I have the units I wonder if there is a way to make the units of the logged items dynamic?  In other words, the device file presently has

I could fairly easy add a function to do it, the problem is that it is associated with the device, not with the data.
This means a changed unit will be valid until TestController is restarted or a new unit is defined for that measurement. It do not matter if the measurement is taken from the device or it is a loaded csv file.

   =tableCalcMax(AKD2GS.CH1)

Try: =tableCalcMax("AKD2GS.CH1")
AKD2GS.CH1 without quotes is a variable with the actual value from you device.

On a related topic, I have been using the nice Histogram tab.  Very useful.  How about adding a cursor readout like on the Chart tab?  Click the Histogram graph and read out the bin range and the height of the bin in a side window like for the Chart?

Maybe.

Title: Re: Program that can log from many multimeters.
Post by: gby on October 04, 2020, 04:21:04 pm
Thanks for the clarification.  I assumed that without quotes was OK since no error message.  As you point out putting the column name in quotes works.

But, the operations are still not identical.  Using a column number just gives the calculation result.  Using the column name queries the device for a set of values before giving the result of the calculation from the table.  Still gives the right number, just has extra communications traffic.  See below debug log.

Again, thanks for a great tool that keeps getting better.
Code: [Select]
=tableCalcStdDev(5)
;; 1.8172911569598222
=tableCalcStdDev("AKD2GS.CH2")
;; AKD2GS: Tx <REC.TRIG>
;; AKD2GS: Tx <txrx REC.TRIG>
;; 192.168.1.193: Tx: <REC.TRIG..> 52 45 43 2E 54 52 49 47 0D 0A
;; 192.168.1.193: Rx: <> 0D
;; AKD2GS: Tx <REC.DATA?>
;; AKD2GS: Tx <txrxn? 2 REC.RETRIEVEDATA 0>
;; 192.168.1.193: Tx: <REC.RETRIEVEDATA 0..> 52 45 43 2E 52 45 54 52 49 45 56 45 44 41 54 41 20 30 0D 0A
;; 192.168.1.193: Rx: <1> 31 0D
;; 192.168.1.193: Rx: <2.442,1.506,-0.002,0.504,3747273272,0.000> 32 2E 34 34 32 2C 31 2E 35 30 36 2C 2D 30 2E 30 30 32 2C 30 2E 35 30 34 2C 33 37 34 37 32 37 33 32 37 32 2C 30 2E 30 30 30 0D
;; AKD2GS: Rx <2.442,1.506,-0.002,0.504,3747273272,0.000>
;; AKD2GS: Rx as numbers <2.442 1.506 -0.002 0.504 3.747273272E9 0.0>
;; 1.8172911569598222
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 04, 2020, 05:17:10 pm
But, the operations are still not identical.  Using a column number just gives the calculation result.  Using the column name queries the device for a set of values before giving the result of the calculation from the table.  Still gives the right number, just has extra communications traffic.  See below debug log.

When using the "=" TestController tries to keep the variable up to date, to keep the communication low it only updates if the line contains anything that matches a handle name and it has not updated recently (i.e. no extra update will be performed if you are showing some type of readout or doing fast logging).

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2020, 09:22:47 am
V1.33 is up
A couple of bug fixed and some support functions for device definitions.
   Added: Installation documentation: http://lygte-info.dk/project/TestControllerInstalling%20UK.html#Starting_TestController (http://lygte-info.dk/project/TestControllerInstalling%20UK.html#Starting_TestController)
   Fixed: #calc, it did only handle statements on the same line when running as a program.
   Added: displayVar function, this can be used anywhere and will use the variable popup to show a variable
   Added: Variable display popup, makes it easier to read struct and array variables.
   Added: Added functions to handle bitmapped values in definitions
   Fixed: The error message "Error" will now include more explanation.
   Added: Added tool tips to the tab headers.
   Fixed: SI format did not work on Curves/Histogram in V1.29

The VarDisplay is for showing structures and arrays:

(http://lygte-info.dk/pic/Projects/TestController/DocCalculator/VarDisplay.png) (http://lygte-info.dk/pic/Projects/TestController/DocCalculator/VarDisplay2.png)

(http://lygte-info.dk/pic/Projects/TestController/DocCalculator/VarDisplay3.png) (http://lygte-info.dk/pic/Projects/TestController/DocCalculator/VarDisplay4.png)

With larger structures and arrays it is basically necessary to see everything.
This popup can also be used for notification or debug with the displayVar() function that will show one variable or constant:
=displayVar("Test reached stage 2");
=displayVar(array("Test reached stage",stage));  // Uses array constructor to show multiple lines in popup
The function will return its parameter, i.e. "a=5*displayVar(b)" will give same result as "a=5*b", but show the value of b in a popup window.
This popup only exist in one incarnation and any request for it will use the same instance, this means it will show the latest request.


The installation help page will automatic popup up when no devices is present on the "Load devices" page, I hope it is not too aggressive.


Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 06, 2020, 12:57:33 pm
Thank you very much for TestController 1.33, HKJ!  :-+

By the way...I asked Brymen, whether they have any idea or hint to help me out with USBHID vs. Raspberry OS - this is, what I got:

We have no experience in raspberry pi and thus have no idea how to
help you. Sorry. The communication protocol of BM867s+BC-86X interface
cable conforms to USB HID 1.1. You will need to study how to have it
work with your raspberry pi.

Best Regards,
Gary/Brymen



I will keep trying - not giving up...  :-/O
Title: Re: Program that can log from many multimeters.
Post by: MiroS on October 07, 2020, 05:34:46 pm
Thank you very much for TestController 1.33, HKJ!  :-+

By the way...I asked Brymen, whether they have any idea or hint to help me out with USBHID vs. Raspberry OS - this is, what I got:

We have no experience in raspberry pi and thus have no idea how to
help you. Sorry. The communication protocol of BM867s+BC-86X interface
cable conforms to USB HID 1.1. You will need to study how to have it
work with your raspberry pi.

Best Regards,
Gary/Brymen



I will keep trying - not giving up...  :-/O

I think it is already implemented  e.g. in sigrok, sorce code is avaiable as well. 
I used TestController for a while, the concept of sigrock is different, anyway I see  sigrok as much, much more powerfull.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2020, 06:17:59 pm
the concept of sigrock is different, anyway I see  sigrok as much, much more powerfull.

Sigrok is definietly a differenet concept, you have to write your own program in many cases.

TestController is designed to log/control a couple of devices and have some tools to directly view and analyze the result. You do not have to do any scripting or programming to do this, just unpack the program and run it on Window, Linux or Mac, then you have a GUI. It is possible to automate a lot with scripting, but it is never required.

Title: Re: Program that can log from many multimeters.
Post by: MiroS on October 07, 2020, 08:03:14 pm
You do not have to do any scripting or programming to do this, just unpack the program and run it on Window, Linux or Mac, then you have a GUI. It is possible to automate a lot with scripting, but it is never required.

Yes, that may be right for simple  use case, for a bit more complex case effort writing own code is nowadays not so different from using closed code application and fighting with oarticular setup to make all running.
I have my own framework covering most of  programmable devices and multimeters I have, but it is right , I had to invest some time to clean framework and unfortunatelly add code for every new device. Here is he power of sigrok, pretty much all is already done.

Do not take me wrong , your application is very usefull and a lot of people are appreciating your effort, I was using it as well.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on October 09, 2020, 01:24:03 pm
It was nice, that you added the last sentence, because I cannot stress it enough, that I admire not only HKJ's attitude to let us use his TestController for free, but also his will to help us out to solve problems or personal preferences being adopted into the next version within hours/days, as well as his own steady improvements to make this software even better, which is absolutely extraordinary and very kind of him - especially in these times of total egoism!

So, thank you for this nice touch and the hint with "Sigrok" - I have never heard of it before, although it seems to exist for some years as far as the yt-videos are concerned. Any open source project, which gains through swarm intelligence is nice to have.

However, for me it is too special with its logic analyzers application and not that intuitive handling as TestController with its clear interface. As far as my usage is concerned TestController covers anything I need - and of course I only know a fraction of it, but I like the simplicity and the way of storing data and being able to recall them at any time without doing something special, which neither Fluke nor Keysight offers in such an easy way.

As a hobbyist I want to do my little projects and have not that much time (and sometimes energy) to invest in many different and new software applications, but it is good that anyone can choose for his/her own needs and special likings!

Cheers!  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 13, 2020, 12:45:10 pm
V1.38 is up
New devices, async communication and images.
   Added: New devices HP3478A, TTi CPX200D made by users.
   Added: #noteImages that can and images to device definition notes.
   Added: #scriptShowImage that can be used in script and will show image when script is loaded.
   Added: #showImage that can be used in script to show images.
   Fixed: All menu's will now respect the font size setting.
   Added: getDevice now support a * in the specifications and will then return an array of all loaded devices of that type.
   Added: Optimize checkbox when generating Mode & Setup script, when checked #async will be used.
   Added: #async/#asyncCmd can be used to send commands to multiple devices in parallel.
   Added: seconds() function, can be used to time stuff. The return value has better than millisecond resolution.

; Test with four IT8512+ loads setup up and starting one at a time:
=var current=80
=var time=seconds()
=var loads=getDevice("Load*")
#foreach load (loads)
(load):current (current/size(loads)) ; on 1
#endforeach
=seconds()-time
;; 0.9693176001310349

; Same as above, but using the async function, it is nearly four times as fast and the loads will be turned on at nearly the same time.
=var current=100
=var time=seconds()
=var loads=getDevice("Load*")
#async (loads) current (current/size(loads)) ; on 1
#async
=seconds()-time
;; 0.2646647000219673
Without the second #async the time is around 0.00017, because it do not wait for the commands to be send



The image functions can be used for showing how to connect stuff:
(http://lygte-info.dk/pic/Projects/TestController/DocImage/TestSetup1.png)

Schematic and PCB layouts:
(http://lygte-info.dk/pic/Projects/TestController/DocImage/TestSetup2.png)

The loaded images are saved together with all other layout settings.
The image function can both load from local disk and from a URL.

It is also possible to put images in device definitions, this is mostly for showing switch settings or special configuration screens that may be required.
Title: Re: Program that can log from many multimeters.
Post by: gby on October 16, 2020, 08:39:40 pm
HKJ,

I am working to improve the Tektronix oscilloscope device file to properly handle 2 versus 4 channel models.  For the setup pop up I am having trouble coming up with a simple method.  There is the tedious/brute force way of just listing #remove #cmdSetup .... lines for each CH3 and CH4 item in each #metadef section for 2 ch models.  But, that makes the device file much longer and harder to read.

I thought that using the #sections, #metaSection commands would help with this task.  But, I must admit I can't figure out how to use those commands properly.

Could you provide an example file of using these commands?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2020, 07:08:01 am
I thought that using the #sections, #metaSection commands would help with this task.  But, I must admit I can't figure out how to use those commands properly.

Could you provide an example file of using these commands?

The sections are made for exactly this type of stuff, but I have not used them in any definitions yet.

The use is something like:

#metadef
#sections list of tags

Note: the lines in the #metadef is done in sequence
Note: You can place a "#metaDebug save" line in a #metadef section, this will generate a file of the processed definition you can view.

#meta

#metaSection required tags
....
#metaSection
Note: There is no #endsection, this is done by a #metaSection without parameters
Title: Re: Program that can log from many multimeters.
Post by: gby on October 17, 2020, 02:41:40 pm
HJK,

Thanks for the extra hint.  After playing a bit I believe I have sections working. 

I put a line
   #sections QuadMode QuadSetup QuadInterface
inside each #metadef section at the beginning of the device file for 4 channel scopes and added nothing for the dual channel ones.  I then put
   #metaSection <name>
        code....
   #metaSection
around each of the CH3 and CH4 portions of the Mode, Setup, and Interface definitions for channels 3 and 4 inside the device file.

Everything seems to be working properly so thanks for creating #sections, #metaSection capability and helping m.

One question: while testing the oscilloscope interface definition I used the Popups | Test interface.  When I check all of the gets all the numeric returned values are green.  But anything returning a string is red.  See attached screen shot of that window.  In the device file I have listed :string: on the line after the get like:
   #interface setCH1Coupling CH1:COUPLING (value)
   #interface getCH1Coupling CH1:COUPLING?
   :string:
but still get a red box.  Is the Test interface screen hard coded to put red for anything not a number or am I doing something wrong in the device file?

I have attached the in process Tektronix oscilloscope device file attached for your reference.  I will post a final copy when I have finished testing it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2020, 03:16:45 pm
One question: while testing the oscilloscope interface definition I used the Popups | Test interface.  When I check all of the gets all the numeric returned values are green.  But anything returning a string is red.  See attached screen shot of that window.  In the device file I have listed :string: on the line after the get like:
   #interface setCH1Coupling CH1:COUPLING (value)
   #interface getCH1Coupling CH1:COUPLING?
   :string:
but still get a red box.  Is the Test interface screen hard coded to put red for anything not a number or am I doing something wrong in the device file?

By default all parameters are supposed to be numeric, I have a build in list of functions that accept string parameters.

And please get rid of the channel no in the name, instead use:

#interfaceType OSC OSC:2 OSC:3 OSC:4

#interface setCoupling CH(channel):COUPLING (value)

Then I will add Coupling & MathDefinition on the list for string parameters
Title: Re: Program that can log from many multimeters.
Post by: gby on October 17, 2020, 04:35:20 pm
Using
   #interfaceType OSC OSC:2 OSC:3 OSC:4
is an interesting idea and maybe a better way than I did it.  But, how to handle 2 versus 4 channel in the device file?  The way I have it now the interface commands for CH3 and CH4 are removed from dual channel scopes.  How to remove OSC:3 and OSC:4 from the interface for dual channel with the above idea?

Also, how to handle the 4 oscilloscope measurements which are logged separate from the CH1-4 commands that are for just setting up the oscilloscope inputs?  Do the measurements also become OSC:1, OSC:2, etc?  Lastly, how to handle the fith measurement which is labeled "I" and not by a number in the scope scpi language?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2020, 05:02:59 pm
Using
   #interfaceType OSC OSC:2 OSC:3 OSC:4
is an interesting idea and maybe a better way than I did it.  But, how to handle 2 versus 4 channel in the device file?  The way I have it now the interface commands for CH3 and CH4 are removed from dual channel scopes.  How to remove OSC:3 and OSC:4 from the interface for dual channel with the above idea?

Also, how to handle the 4 oscilloscope measurements which are logged separate from the CH1-4 commands that are for just setting up the oscilloscope inputs?  Do the measurements also become OSC:1, OSC:2, etc?  Lastly, how to handle the fith measurement which is labeled "I" and not by a number in the scope scpi language?

With two channels you use: #interfaceType OSC OSC:2
You can do that with the replace command or with the sections. Note: OSC and OSC:1 has the same meaning.

This only relates to the interface, not to anything else.

For the fifth measurement you could define it as 5 channel and then use an expression (channel==5?"I":channel), I do not really know if it is a good idea or not to do it that way.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 20, 2020, 12:52:28 pm
V1.39 is up
It has a new function to comtrol devices.
   Added: timestamp() & dateTimestamp(), these are a easy way to get a formatted date & time values for scripting.
   Added: #SETPARAMADJUSTER to configure ParamAdjuster from script
   Added: Param adjuster, a slider to adjust any parameter on a device.
   Added: XT-FX25 cheap electronic load module
   Added: #stopScript can be used both in scripts and from command line
   Added: #chartTitle will override title on charts saved from script
   Fixed: Naming issue with Itech loads, they will now restore correctly from scripts

(https://lygte-info.dk/pic/Projects/TestController/DocParamAdjuster/ParamAdjuster.png)

It is for the situations where a more analog like control is needed, instead of typing in the values. It will pick all the "number" types from the setup for the currently loaded devices. It is also possible to enter any SCPI command that accept a numeric parameter as the adjust target.
Press F1 in the popup for help.

(https://lygte-info.dk/pic/Projects/TestController/DocParamAdjuster/10%25.png)

It is possible to limit the adjustment range.

The next # commands are for people doing scripts (Note: ParamAdjuster will be included in a generated layout script).


I also did a small very simple project on connecting the XT-FX25 load to a computer: https://lygte-info.dk/project/Electronic%20Load%20XY-FZ25%20UK.html (https://lygte-info.dk/project/Electronic%20Load%20XY-FZ25%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 24, 2020, 12:33:38 pm
Ive got this cheap load tester from aliexpress, named DL24P. Would this program be able to get the readings from this device? It uses a CH340/341 chip . So probably it's a no go , but maybe someone know a way to get the log into a excel file :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 24, 2020, 01:26:17 pm
Ive got this cheap load tester from aliexpress, named DL24P. Would this program be able to get the readings from this device? It uses a CH340/341 chip . So probably it's a no go , but maybe someone know a way to get the log into a excel file :)

CH340 is a standard serial port, you just have to find a driver.
Next issue is the protocol, if somebody can find a description of it, it is very likely TC can handle the DL24P.
Title: Re: Program that can log from many multimeters.
Post by: gby on October 24, 2020, 01:30:05 pm
CH340/341 chips are USB to serial interface chips.  That means if you plug the DL24P into your PC you should end up with a serial COM port added.  If you do get the serial port and you have documentation for commands, then it should be fairly easy to write a DL24P device file and get logged information from it into TestController.

Per listings for DL24P it has Bluetooth.  If your PC has Bluetooth you can connect with that and there should be a serial COM port added.  TestController could talk over that link.

The difficult part is to find documentation for the communications commands.  In my short look neither Banggood nor a couple of ebay listings gave the documentation.  I did see one Aliexpress  listing that gave:
   http://www.mediafire.com/folder/m09i9bjv8703d/DL24-DL24P (http://www.mediafire.com/folder/m09i9bjv8703d/DL24-DL24P)
to download the documentation.  You can try that.

Good luck and if you need help ask questions when you get stuck.
Title: Re: Program that can log from many multimeters.
Post by: Tjuurko on October 24, 2020, 02:48:00 pm
Here is a description of the Atorch AC/DC/USB device protocol.
https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 24, 2020, 03:43:54 pm
Look like something I will have to implement.
Can somebody capture a hexdump from the serial port (Use a program like termite)
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 25, 2020, 02:38:16 pm
I've installed Termite but don't know if Im doing it right to obtain the hexdata. I see stuff like this refreshing every second:

35: ÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00][00][00][00]ÜÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 25, 2020, 03:02:25 pm
I've installed Termite but don't know if Im doing it right to obtain the hexdata. I see stuff like this refreshing every second:

35: ÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00][00][00][00]ÜÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00]

You need to open Settings and check mark "Hex view" in the "Plug-ins" section.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 25, 2020, 07:27:09 pm
I've installed Termite but don't know if Im doing it right to obtain the hexdata. I see stuff like this refreshing every second:

35: ÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00][00][00][00]ÜÿU[01][02][00][00][0C][00][00][00][00][00][15][00][00][00][00][00][00][00][00][00][00][00][00][12][00][00][19]
<[00]

You need to open Settings and check mark "Hex view" in the "Plug-ins" section.

The output  I see is:

ff 55 01 02 00 00 0c 00 00 00 00 00 00 00 00 00  ÿU..............
00 00 00 00 00 00 00 00 00 15 00 00 00 28 3c 00  .............(<.
00 00 00 cc                                      ...Ì           

It's repeating the above message. I think I Need to figure out how I can get an unique message for different parts of data.

Edit: I found an article where someone else analysed the hex output of this device https://auto-scripting.com/2020/05/03/atorch-dl24-hack-1/
below in the article he posts some hex codes. Is this some data what is usefull?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 25, 2020, 10:05:19 pm
The output  I see is:

ff 55 01 02 00 00 0c 00 00 00 00 00 00 00 00 00  ÿU..............
00 00 00 00 00 00 00 00 00 15 00 00 00 28 3c 00  .............(<.
00 00 00 cc                                      ...Ì           

It's repeating the above message. I think I Need to figure out how I can get an unique message for different parts of data.

Edit: I found an article where someone else analysed the hex output of this device https://auto-scripting.com/2020/05/03/atorch-dl24-hack-1/
below in the article he posts some hex codes. Is this some data what is usefull?

That looks fine and if the link posted by Thuurko is correct (I believe it is), it will not be hard to implement.
It will get started on it tomorrow.

One question: What baudrate are you using (See Setting menu)?
Title: Re: Program that can log from many multimeters.
Post by: Tjuurko on October 26, 2020, 04:12:05 am
This is an example of data from Atorch AC power meters (AT3010 and AT24).
Data (FF 55 ...) goes in a continuous stream 1 time per second.
[attachurl=1]
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 26, 2020, 11:14:19 am
Hi Friends!

Luckily I found this software last Friday. It works from beginning with my HP34401A and my SDG2122 and I got also my SDS2504X+ connected but this needs further investigations.

So I tried to setup a config for my old but reliable Fluke 45, with a very simple config. The Fluke 45 is from the time before SCPI but the interface is well documented and the commands are comparable.

I got it  running but only with VDC - sometimes values are logged sometimes I found only the time stamp in the table. Switching between modes worked well.

After some tries to improve the config the device is now recognized but than a Java-Error shows up in the console window, not in the log (attached) and the process stops.
But the HP is still working.

#1 How can the content of the console be saved? I did it in this case with a screenshot.
#2 Has someone an idea what my mistake can be? Or has someone a running config for the Fluke 45?
#3 Has someone worked on a config for an HP53131A counter?

Thanks for any help!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2020, 11:26:43 am
Luckily I found this software last Friday. It works from beginning with my HP34401A and my SDG2122 and I got also my SDS2504X+ connected but this needs further investigations.

To start a new SCPI definition right click in the combobox on the "Load devices" page and select "Create new SCPI definition", this will make a skeleton definition for the device.


So I tried to setup a config for my old but reliable Fluke 45, with a very simple config. The Fluke 45 is from the time before SCPI but the interface is well documented and the commands are comparable.

If not running a clean SCPI protocol you may want to use SCPIx or Ascii device driver (HP3478A is defined with Ascii driver).


#1 How can the content of the console be saved? I did it in this case with a screenshot.

By using a > when starting the program, this is done by editing the .bat file and add it to the starting line:

java -jar TestController.jar debug %1 %2 %3 %4 %5 %6 %7 %8 %9 >mylogfile.log



Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2020, 11:48:28 am
Thanks for any help!

When testing/logging a device, only enabled one device at a time or the log get way to large and confusing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2020, 12:00:15 pm
With ATorch

I have basically implemented all 3 categories AC, DC & USB
But I need to know if my scaling is correct, the problem is Ah & Wh, they do not match the examples on the post linked earlier, but I uses the divide factor specified. Please post hex dump in ascii format, I have programmed a Arduino where I can simply dump an hex ascii string into and it will transmit it each second. I.e. get soma Ah or Wh readout and post it together with a hex dump, then I can verify.

I need some baudrates, are they fixed at 9600 or something else or are they adjustable?

I ignore temperature, time and price values and I do see any purpose in them (They are decoded, but I do not fill them into any columns).

I also need some device names, just now I have:
ATorch DL24P -> DC
ATorch AT3010 -> AC
ATorch USB -> USB

I would like to have some more model numbers and what category (AC/DC/USB) they are in


Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 26, 2020, 12:49:02 pm
Hi HKJ

thanks for coming back to me so fast!
I started with a skeleton config and I went through the whole topic here to understand and learn more. With the help of other config files I developed the simple Fluke45-config. (only for display1)
As mentioned above I had a working communication with the device, all functions and readings worked from the command line and I tried to improve the config file (also attached above).
The device popup worked as well. Then I run into this java error.

What about the java error message from my screenshot?
I tried several USB-RS232 adaptors and different USB ports but this error messages comes back at every new start of TestController.
Also without the HP DMM, this was only connected to show that TestController works with it.

Thanks in advance for any advice!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2020, 01:08:30 pm
What about the java error message from my screenshot?

It is due to #initialMode, it must list a valid mode name (The last parameter in the #value columns)
Mostly there is no reason to use #initialMode
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 26, 2020, 04:39:10 pm
Hi HKJ,

seems more to be a OS/HW problem. I switched to another Laptop and the JAVA error is gone. I'm now again with my first problem with the readings.
Sometimes VDC works sometimes not. But I will do further tests and come back with a working config (I'm very optimistic)

Thanks for your patience!

B.D.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 26, 2020, 08:07:06 pm
I have the dl24p, should I use the termite program to get the ascci info? But for some reason I don't see any changes in data when running a load/batterytest
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2020, 08:36:13 pm
I have the dl24p, should I use the termite program to get the ascci info? But for some reason I don't see any changes in data when running a load/batterytest

Yes, using the hex option as I explained above.
There is supposed to be change in data, but it takes a bit time to accumulate some Ah and Wh.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 27, 2020, 02:01:27 pm
After getting the Fluke45 connected and running I can see the measurements in the log window and also the by
TC calculated numbers but nothing is shown in the table/chart, only the time stamp. (log attached)

Can I get some advice what can be wrong here?
Thanks in advance!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 27, 2020, 02:13:30 pm
After getting the Fluke45 connected and running I can see the measurements in the log window and also the by
TC calculated numbers but nothing is shown in the table/chart, only the time stamp. (log attached)

Can I get some advice what can be wrong here?
Thanks in advance!

My guess would be that you do not have the modes and columns (#value) correctly defined.
Look in the "AgilentHP34401A.txt" file for a bench meter definition without a lot of extra stuff.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 27, 2020, 02:39:05 pm
I used the HP34401A as template for my config. All works, mode switching from the popup and starting a measurement as you see in the attached log from my previous post.
Here my config, it is really simple and should be ok.

If the numbers are recognized by TC, how are they than transferred to the table/chart??
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 27, 2020, 02:58:33 pm
If the numbers are recognized by TC, how are they than transferred to the table/chart??

They need to be matched to one or more columns, for multimeters it is one column. Without a column TC do not know what to do with the value.
TC uses #askmode to get the actual mode of the meter, then matches the returned string to the 5 parameter in the #value column. All columns that matches are included.
Try using func1? from the command line and see if you get the exact string used in the #value definitions back
If the value is in quotes you will have to add #askModeMathFormat unQuote(value);

You can always check the "Current values" page, it must show one row of the meter with the correct value type.


Looking in your log I see:
;; Fluke45: Tx <func1?>
;; Fluke45: Rx <=>>
;;VDC
;;=>

Here TC sees => as the mode and VDC & the second => is just extra stuff it ignores.

Can you disable the => prompt?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 27, 2020, 03:23:56 pm
I downloaded the manual for the Fluke 45 and it do not look like you can disable the => prompt, this means it will not work with a SCPI driver.

The solution is to use the SCPIx driver and redefine all the commands:

#scpiCmd VDC txrx VDC
; Using the txrx will absorbe the answer without returning it

#scpiCmd func1? txrx2? func1?
:readmath: getElement(value,0,"[\\n]")
; Using rxrx2? will expect two answering lines, the :readmath: function will return the first of these lines.

You are not supposed to get any values in the log window, except if you type a command. TC is very depend on this works correctly or it will get confuse when multiple sources inside it send command to the same device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 27, 2020, 03:34:30 pm
Another detail:

Use "VAL?" to read value, then the answer it not delayed to after the next measurement, but return immediately. This makes TC more responsive and works better when running multiple devices at the same time.

And do something like this for rate:
#cmdSetup radio Rate
:write: RATE
:read: RATE?
:string:
Slow S
Medium M
Fast F

You have to redefine rate for this to work.
 
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 27, 2020, 03:40:05 pm
Thanks for your advice! I will work on it. I understood the point with the "=>"
B.D.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 27, 2020, 04:29:42 pm
I am not sure my advice is correct, it will only work if the => prompt is followed by a newline and prompts are usually not.
I may have to add functions to handle a prompt.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 28, 2020, 09:19:07 am
I have done a Hex-Terminal.
The prompt is always finished with 0DH 0AH (CR/LF). So I try your advice during the next days.
Thanks again!

B.D.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 28, 2020, 12:37:34 pm
@hkj Here's a minute of data https://justpaste.it/9jk97 from the DL24 device during load testing a battery. This was taken with 115200bps. This one is taken with 9600bps  https://justpaste.it/6s5w4
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2020, 01:46:03 pm
V1.40 is up
This is mostly extension to charting and it only works from scripts.
V1.40
   Added: #removePromptChars to SCPIx driver
   Added: ATorch USB, general support for USB protocol, may later be change to one or more model names
   Added: ATorch AT3010 AC energy meter for panel mounting
   Added: ATorch DL24P DC load
   Changed: Bar drawing on histogram, they will now be plain when more than 100 bins are used.
   Added: Values popup to histogram
   Fixed: Missing header when saving histogram, header will only be used for one histogram, not for two or tree.
   Added: #chartAnnotate add lines, arrows and text to a chart.
   Added: #chartScaleSync makes it possible to share a scale between multiple curves
   Added: #chartBackground customize colors for the different elements in the chart.
   Added: #chartColors customize a new set of curve colors
   Added: #chartScaleName change the displayed scale name on the chart

(http://lygte-info.dk/pic/Projects/TestController/DocChart/ModifiedChart.png)

I used this script to generate the above (From already loaded data):
#chartTitle "Not file name as title"
#chartBackground aquamarine honeydew blue sandybrown red
#chartcurves VRG.Ramp VSG_1.Sine VSG_2.Sine
#chartScaleSync VRG.Ramp VSG_1.Sine VSG_2.Sine
#CHARTCOLORS (255,0,0) (240,120,0) (240,0,120)
#CHARTSCALENAME VRG.Ramp Ramp
#CHARTSCALENAME VSG_1.Sine "Fast sine"
#CHARTSCALENAME VSG_2.Sine "Slow sine"
#chartannotate line 0 0 130 0 blue 1
#chartannotate line 0 7 130 7 yellow 1 "...   "
#chartannotate line 0 -7 130 -7 yellow 1 "...   "
#chartannotate arrow "End of first ramp" 30 0 60 darkolivegreen 2
#chartannotate text "Advanced chart demonstration" lb 2 9  green 2 white
#saveChart aa.png

I was asked about a cursor in histogram mode, it is possible now with a value popup:
(http://lygte-info.dk/pic/Projects/TestController/DocHistogram/Values.png)

The Atorch functions is not really tested and according to dirkwim07 I need to change the type of serial port. When I get some more feedback on ATorch I will adjust the definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2020, 06:42:10 pm
I have done a Hex-Terminal.
The prompt is always finished with 0DH 0AH (CR/LF). So I try your advice during the next days.

With the SCPIx driver you can now use #removePromptChars
Using "#removePromptChars 4" will remove 4 characters, i.e. it will include CR LF.
And then you do not need to redefine anything and it will probably also work with GPIB.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on October 29, 2020, 08:03:29 am
I have done a Hex-Terminal.
The prompt is always finished with 0DH 0AH (CR/LF). So I try your advice during the next days.

With the SCPIx driver you can now use #removePromptChars
Using "#removePromptChars 4" will remove 4 characters, i.e. it will include CR LF.
And then you do not need to redefine anything and it will probably also work with GPIB.

Hi HKJ

again thanks for the new release and your advices! Yesterday I tested your txrx2 - hint and it works!
But the new functionality "removePromptChars" looks good and I will check it, unfortunately I'm a litte bit short of time these days.

best regards B.D.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 11:57:46 am
cool that you've added the Atarch.

here you can see the data https://imgur.com/a/OygmSzl

Voltage and Current readings are fine, but the power and energy are not coming in.

What could I change in order to try to get the right values? And would I be able to change the voltage to 3 decimals and add the Capicity and Timing from the device?

Code: [Select]
#metaSection DC_DEVICE
#subDriver DC
#value Voltage V D1
#value Current A D3
#value Power W D1
#value Energy Wh D2

#askValues values?

; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat ffffxxxx


#interfacetype Power
#interface readVoltage 0
#interface readCurrent 1
#interface readPower 2
#interface readEnergy 3


#cmdSetup buttons Reset
:write: tx
Wh 1
Ah 2
Time 3
All 5

#cmdSetup numberInt Backlight
:read: backlightTimer?
:write: tx 0x21
sec 0 255

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 12:10:14 pm
#value Voltage V D1
#value Current A D3
#value Power W D1
#value Energy Wh D2

These lines control available columns and decimals, but there is no point in adding more decimals, the data I receive do not contain them.

#askValuesReadFormat ffffxxxx
This line control what to include, each f is a value and x is a ignored part. If you add more f you must also and more #value lines, they must match.


Try testing until Ah & Wh values are 1 or more and see if anything shows up.
Note: TC can calculate these values and do not really need them.

Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 02:24:47 pm
Ill try :)

two questions. I've posted you hex data, is that something I also could translate to figure out what data it contain? and I editied the atarch txt file but the changes are not applied. Does test-controller store it's settings in register? I already tried removing the program and installing again but no change
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 03:18:53 pm
two questions. I've posted you hex data, is that something I also could translate to figure out what data it contain?

Yes, somebody posted a link that shows the format: https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md (https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md)

and I editied the atarch txt file but the changes are not applied. Does test-controller store it's settings in register? I already tried removing the program and installing again but no change

Nothing is save in secret locations, but the definitions are only loaded on program start, i.e. you have to restart the program after doing changes.

Note: The Atorch definition is 4 definitions in one file, you have to modify the correct one.

Starting TC in debug mode will give a lot of output, but may help with understanding how it works.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 06:14:30 pm
But how does your program translate the hex data FF551103310000000001 to #askValuesReadFormat ffffxffxx
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 06:25:00 pm
But how does your program translate the hex data FF551103310000000001 to #askValuesReadFormat ffffxffxx

The internal driver has a table off offsets, size and division factor for the different elements, using this it will convert the hex string to a couple of numbers.
The #askValuesReadFormat is then used to pick the interesting values.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 06:43:08 pm
Sorry for so many questions :) but how could I edit the driver? I've already extracted testcontroller.jar but now the challenge is to find the file. And which program should I need for editing? I have a bit of programlanguage understanding so maybe Im able to edit some
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 07:02:40 pm
Sorry for so many questions :) but how could I edit the driver? I've already extracted testcontroller.jar but now the challenge is to find the file. And which program should I need for editing? I have a bit of programlanguage understanding so maybe Im able to edit some

You cannot edit the driver, only the definitions.
If the DL24P codes the bytes another way, you just have to post a list and I will add it to the next version of TC
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 07:32:58 pm
I've checked the data from #metaSection DCLOAD_DEVICE in TestController.
The data which I can show in TC is Voltage, Current, Seconds and Capacity. I've tried al the ffffxxx combinations.

This page https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md shows the following data.

Could it be that the definitions are a bit off? I don't know which list I should send or how to get it? Hope that it's possible to show data with more decimals.

DC Meter Report

Offset   Field   Block size   Note
03   Device Type   1 byte   01 Device Type
04   Voltage   3 byte   24 bit BE (divide by 10)
07   Amp   3 byte   24 bit BE (divide by 1000)
0A   Watt   3 byte   24 bit BE (divide by 10)
0D   W·h   4 byte   32 bit BE (divide by 100)
11   Price (per kW·h)   3 byte   24 bit BE (divide by 100)
14      4 byte   unknown value
18   Temperature   2 byte   16 bit BE
1A   Hour   2 byte   16 bit BE
1C   Minute   1 byte   
1D   Second   1 byte   
1E   Backlight   1 byte   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 07:39:49 pm

This page https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md shows the following data.

Could it be that the definitions are a bit off?

All the 3 lists are already implemented in TC and selected with the "#subDriver" specification, but if you select a wrong list TC will not accept it (The protocol includes a id code for the list used).

I do not know if the definitions are fully correct, I am a little bit suspicious about the Ah and Wh values. The location is probably correct, but the factors may be wrong.

I believe the DC specifications are for a DC power meter, but here it is reused for a DC load and I wonder if there are some differences.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 29, 2020, 08:07:59 pm
Mmh, then I think I cant help any further. Can send more hex codes from this device but I think we need information from the maker of the software behind this device
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2020, 08:13:10 pm
Mmh, then I think I cant help any further. Can send more hex codes from this device but I think we need information from the maker of the software behind this device

Hex codes and a photo of the display when there is above 1Ah & 1Wh on it would be a good help.
Title: Re: Program that can log from many multimeters.
Post by: gby on October 29, 2020, 11:47:40 pm
Hi HKJ,

The Tektronix scope device file I made is not working properly for some of the models (MDO3xxx, DPO3xxx).  Specifically, logging of the 5 measurements ends up as
   Measurement 1:   OK
   Measurement 2:   ends up with measurement 3 number
   Measurement 3:   always 0.0000
   Measurement 4:   always 0
   Measurement 5:   always 0
This device file works fine for multiple other Tektronix scope families and the SCPI documentation for all of them is the same.  To investigate the issue I did some dos window debug traces while connected to a working scope and to a not working one.
Code: [Select]
;; Found Tektronix MDO3024 TekScope on 192.168.1.46 sn: C021804
;; Found Tektronix DPO3034 TekScope on 192.168.1.181 sn: C013387
;; OscTek_4: Tx <MEASUREMENT:MEAS1:VALUE?>
;; OscTek_87: Tx <MEASUREMENT:MEAS1:VALUE?>
;; OscTek_4: Rx <:MEASUREMENT:MEAS1:VALUE 38.7249E-3>
;; OscTek_4: Tx <MEASUREMENT:MEAS2:VALUE?>
;; OscTek_4: Rx <:MEASUREMENT:MEAS2:VALUE -126.2936>
;; OscTek_4: Tx <MEASUREMENT:MEAS3:VALUE?>
;; OscTek_4: Rx <:MEASUREMENT:MEAS3:VALUE 165.7627>
;; OscTek_4: Tx <MEASUREMENT:MEAS4:VALUE?>
;; OscTek_4: Rx <:MEASUREMENT:MEAS4:VALUE 7.0186E-3>
;; OscTek_4: Tx <MEASURE:IMMED:VALUE?>
;; OscTek_4: Rx <:MEASUREMENT:IMMED:VALUE 5.6271E-3>
;; OscTek_4: Rx as numbers <0.0387249 -126.2936 165.7627 0.0070186 0.0056271>
;; OscTek_87: Rx <1.0204E-3
>
;; OscTek_87: Tx <MEASUREMENT:MEAS2:VALUE?>
;; OscTek_87: Rx <57.3830
>
;; OscTek_87: Tx <MEASUREMENT:MEAS3:VALUE?>
;; OscTek_87: Rx <-43.9564
>
;; OscTek_87: Tx <MEASUREMENT:MEAS4:VALUE?>
;; OscTek_87: Rx <2.0977E-3
>
;; OscTek_87: Tx <MEASURE:IMMED:VALUE?>
;; OscTek_87: Rx <1.4246E-3
>
;; OscTek_87: Rx as numbers <57.383 0.0020977>

I note three things about the above:
1.  Working OscTek_4 final log values line has correct 5 numbers while the not working OscTek_87 final log values line only reports two numbers instead of 5.
2.  Not working OscTek_87 individual queries returns all 5 log numbers correctly.  It is just the final collecting of the numbers together step that fails.
3.  Not working OscTek_87 individual queries seems to have an extra CR LF after the number but before the ">" ending delimiter.  No idea if this is a Tektronix or a TestController extra CR LF??

I did a further experiment where I changed the read format line.  The above is the result if the read format line is
   #askValuesReadFormat xFxFxFxFxF
If I change the read format to
   #askValuesReadFormat uFuFuFuFuF
the error switches around.  Now the previously working OscTek_4 does not work and the previously not working OscTek_87 does work.

Do you think there is an error in the "Tektronix MDO MSO DPO TDS.txt" device file or can you think of a simple change to accommodate the difference?

Should I change the device file to use two different #askValuesRead lines depending on scope model number?  If so, then what is the simple way to do this?

Is there a bug in TestController causing the xFxFxFxFxF read string to be assembled wrong for the not working model shown in the debug trace??
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 30, 2020, 07:30:55 am
;; OscTek_87: Tx <MEASUREMENT:MEAS2:VALUE?>
;; OscTek_87: Rx <57.3830
>
;; OscTek_87: Tx <MEASUREMENT:MEAS3:VALUE?>
;; OscTek_87: Rx <-43.9564
>

You can rid of the extra CR  LF with some :readmath:
replace(replace(value,"\r",""),"\n","");

A shorter version may be enough:
replace(value,"\r\n","");


I did a further experiment where I changed the read format line.  The above is the result if the read format line is
   #askValuesReadFormat xFxFxFxFxF
If I change the read format to
   #askValuesReadFormat uFuFuFuFuF
the error switches around.  Now the previously working OscTek_4 does not work and the previously not working OscTek_87 does work.

What are you doing? x=ignore value, F=parse number, u=parse number with unit after it (like 5V)
Mostly upper and lower case works the same way, only exception is when a * is present in the line.


Should I change the device file to use two different #askValuesRead lines depending on scope model number?  If so, then what is the simple way to do this?

You can use #sections to select between two different definitions.

Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 30, 2020, 11:39:42 am
Hereby a picture and the last minute of the log https://justpaste.it/6g9lj from the dl24p device. If you need a longer log please let me know:)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 30, 2020, 01:34:21 pm
Hereby a picture and the last minute of the log https://justpaste.it/6g9lj (https://justpaste.it/6g9lj) from the dl24p device. If you need a longer log please let me know:)

Thanks, I cannot find any W, Ah or Wh data in the message, but I wonder why there is some data after the message.
I have added my own W, Ah and Wh calculations to the driver, this means it will now list:

(http://lygte-info.dk/pic/cpf5/TCAtorchDCLoad.png)

This will be included from next version.
It looks like time and temperature is included in the message.
Title: Re: Program that can log from many multimeters.
Post by: gby on October 30, 2020, 01:49:33 pm
You can rid of the extra CR  LF with some :readmath:
replace(replace(value,"\r",""),"\n","");

A shorter version may be enough:
replace(value,"\r\n","");

These devices are just SCPI so the logging #askValues command is just:
   #askValues MEASUREMENT:MEAS1:VALUE?;MEASUREMENT:MEAS2:VALUE?;MEASUREMENT:MEAS3:VALUE?;MEASUREMENT:MEAS4:VALUE?;MEASURE:IMMED:VALUE?
Are you saying that it is possible to have :readmath: just after this line to remove the 5 extra "\n" and "\r"?  I don't think that would work since the error happens inside the #askValues in that #askValues just returns two numbers like:
   OscTek_87: Rx as numbers <57.383 0.0020977>
and no further processing would get the missing numbers back to my mind.

I did a further experiment where I changed the read format line.  The above is the result if the read format line is
   #askValuesReadFormat xFxFxFxFxF
If I change the read format to
   #askValuesReadFormat uFuFuFuFuF
the error switches around.  Now the previously working OscTek_4 does not work and the previously not working OscTek_87 does work.

What are you doing? x=ignore value, F=parse number, u=parse number with unit after it (like 5V)
Mostly upper and lower case works the same way, only exception is when a * is present in the line.

I admit the #askValuesReadFormats I am using do not all make sense based on their intended functions/definitions.  I just tried experiments and noted results.  I am guessing that the root cause issue is that different scope families return values in different formats:
   MDO3000 (like OscTek_4 in these tests) returns an echo of command ending in the number which needs read format xfxfxfxfxf to remove command echo
   DPO3023 (like OscTek_87 in these tests) returns just the number with an extra \n \r and works with readformat fffff or ufufufufufuf

I will work on having the device file use different #askValuesReadFormat for different devices.  Thanks for the hints.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 30, 2020, 02:04:48 pm
Are you saying that it is possible to have :readmath: just after this line to remove the 5 extra "\n" and "\r"?  I don't think that would work since the error happens inside the #askValues in that #askValues just returns two numbers like:

Yes, except it is not called :readmath: but #askValuesMathFormat
It will get the string before it is converted to numbers.
Title: Re: Program that can log from many multimeters.
Post by: dirkwim07 on October 30, 2020, 03:18:23 pm
thanks,

btw, now I've used my android phone to scan the DL24 device an it outputs a bit more info. In termite I only saw the FF-55 but with my mobile I also see 00-00

like this:

A    16:05:51.408    "(0x) FF-55-01-02-00-00-0B-00-00-64-00-00-67-00-00-00-01-00-00-00" received
A    16:05:51.430    "(0x) 00-00-00-00-00-13-00-00-22-32-3C-00-00-00-00-39" received

https://justpaste.it/3lbp0

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 30, 2020, 03:46:35 pm
thanks,

btw, now I've used my android phone to scan the DL24 device an it outputs a bit more info. In termite I only saw the FF-55 but with my mobile I also see 00-00

like this:

A    16:05:51.408    "(0x) FF-55-01-02-00-00-0B-00-00-64-00-00-67-00-00-00-01-00-00-00" received
A    16:05:51.430    "(0x) 00-00-00-00-00-13-00-00-22-32-3C-00-00-00-00-39" received

https://justpaste.it/3lbp0


It is about the same as the last you posted, except there is no data after the message.

There is still access to the original decoder in my software, it is called DC, the one for the load is called DCLoad
But there is no public definition for DC (I suppose it is for a DC Watt meter similar to the AC Watt meter), it requires adding a #metadef for it.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 01, 2020, 02:07:57 pm
HKJ,

I was experimenting with doing a frequency sweep from low to high frequency with the chart X-axis set to frequency rather than time.  After the script started logging I had the line:
   #CHARTX (arb+".Frequency1")
which correctly made the X-axis frequency.  Very nice to be able to have X-Y graph.

But, while logging data the chart stops/the X-axis becomes static and no longer auto scales.  If you click to a different tab and come back to the Chart tab the X-axis auto scales to the data acquired up to that point and then remains static.  This means you can't see the logged data plotted while being acquired.

I am using latest V140 and the channel mapped to the X-axis was set for auto scaling and not Auto include 0 in the Scales for chart tab.

Is this behavior expected or a bug or have I set something up wrong?

I also note that when the X-axis is not time that the cursor does not work.  I suspect that is because the cursor mechanism only understands Y versus time and doesn't understand X-Y charts.  Is that correct?
Title: Re: Program that can log from many multimeters.
Post by: gby on November 01, 2020, 02:26:54 pm
One question: while testing the oscilloscope interface definition I used the Popups | Test interface.  When I check all of the gets all the numeric returned values are green.  But anything returning a string is red.  See attached screen shot of that window.  In the device file I have listed :string: on the line after the get like:
   #interface setCH1Coupling CH1:COUPLING (value)
   #interface getCH1Coupling CH1:COUPLING?
   :string:
but still get a red box.  Is the Test interface screen hard coded to put red for anything not a number or am I doing something wrong in the device file?

By default all parameters are supposed to be numeric, I have a build in list of functions that accept string parameters.

And please get rid of the channel no in the name, instead use:

#interfaceType OSC OSC:2 OSC:3 OSC:4

#interface setCoupling CH(channel):COUPLING (value)

Then I will add Coupling & MathDefinition on the list for string parameters

HKJ,

I finally got around to updating the Tektronix scope interface definition per your request above.  For the Immediate measurement channel I left the specific interface commands in.  I did this because there are functions for measurement channels 1-4 that the Immediate measurement channel does not support.

I also enhanced the Setup popup to include horizontal and trigger setups.

In checking this device file interface in Ver 140 I note that any string returned value is still marked as red in the Test interface popup.  Not a real problem, it just adds a little time to making sure it really works.

Please use the attached Tektronix device file in your next release.

Thanks again for a great and useful program.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2020, 03:02:20 pm
HKJ,

I was experimenting with doing a frequency sweep from low to high frequency with the chart X-axis set to frequency rather than time.  After the script started logging I had the line:
   #CHARTX (arb+".Frequency1")
which correctly made the X-axis frequency.  Very nice to be able to have X-Y graph.

But, while logging data the chart stops/the X-axis becomes static and no longer auto scales.  If you click to a different tab and come back to the Chart tab the X-axis auto scales to the data acquired up to that point and then remains static.  This means you can't see the logged data plotted while being acquired.

I am using latest V140 and the channel mapped to the X-axis was set for auto scaling and not Auto include 0 in the Scales for chart tab.

Is this behavior expected or a bug or have I set something up wrong?

It sound like a bug, I will have to check.

I also note that when the X-axis is not time that the cursor does not work.  I suspect that is because the cursor mechanism only understands Y versus time and doesn't understand X-Y charts.  Is that correct?

In XY mode I cannot always map from X to a single Y value. I may improve this at a later date and allow cursor if the axis has increasing or decreasing values.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2020, 03:06:55 pm
Please use the attached Tektronix device file in your next release.

I will.
There is no reason to worry about the red, maybe I need to change it so only functions that are know numeric gets red.

Next release will have significantly improved annotations and also an import function to combine csv files.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 01, 2020, 03:25:23 pm
HKJ,

I am working on a new device file to support a large family of power supplies.  The over current shut down setting range is 10% to 110% of the output maximum current limit.  I already have #replaceText MaxCurrent lines in the #metadef sections.  To handle the over current shut down settings I could add two more #replaceText values per #metadef but it would be convenient to use equations in the device file instead.

I tried
   #cmdSetup number Current Protect-Limits
   :read: SOUR:CURR:PROT:LEVEL?
   :write: SOUR:CURR:PROT:LEVEL
   Adc  (MaxCurrent/10) (1.1*MaxCurrent)
but the result was no limits listed for the number #cmdSetup.  Actually, where the numbers would be were empty little square boxes.

Is there a way to do some thing like the above or should I just go ahead and define more #replaceText values?
Title: Re: Program that can log from many multimeters.
Post by: gby on November 01, 2020, 03:30:30 pm
In XY mode I cannot always map from X to a single Y value. I may improve this at a later date and allow cursor if the axis has increasing or decreasing values.

You could just take the numerically lowest Y-value at the cursor X-position.  For single value functions you get what you want and for multi-value functions you get one well defined value.

Just a thought.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2020, 04:02:44 pm
Is there a way to do some thing like the above or should I just go ahead and define more #replaceText values?

For now no.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2020, 04:03:51 pm
You could just take the numerically lowest Y-value at the cursor X-position.  For single value functions you get what you want and for multi-value functions you get one well defined value.

Just a thought.

But then I would also have to mark it on the chart or it could be confusing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2020, 07:43:37 pm
Update bug is fixed.
I have also enable cursor as long as the X data has a stable slope (That was very easy).

It will be in next release.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 01, 2020, 11:52:49 pm
HKJ,

Attached is a device file for the Keithley 2260B series of power supplies.  Since these Keithely supplies are just a re-brand of the GW Instek PSW series the file includes those which , by documentation, should work but I don't have any GW Instek version to test with.

The file supports all the models in these series.  All single channel with 30/80/250/800 V and 360/720/1080 total power depending on model number.  Via Ethernet network.  Does not support USB.

Includes Mode, Setup popups as well as an interface for #interfaceType PS.  The interface was modeled after the interface in the existing Keithley 2280S-32-6 device file.  Hopefully that was a good one to use as a reference.

Please include in the next TC release.
Title: Re: Program that can log from many multimeters.
Post by: TheNewLab on November 02, 2020, 02:15:22 am
How about environmental test devices. Airflow HVAC, particle counter (wildfires) CO2, etc, etc?

Have downloaded, will install and experiment. All the included programs are pretty basic so likely to be fairly easily. As I work out various devices in this area, I will post

I really, really like an all-in-one app. pain logging multiple devices, sorting out on computer to make comprehensive presentation
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 02, 2020, 05:49:13 am
Attached is a device file for the Keithley 2260B series of power supplies.  Since these Keithely supplies are just a re-brand of the GW Instek PSW series the file includes those which , by documentation, should work but I don't have any GW Instek version to test with.

Thanks, I have done one modification to the source resistance setting.
I do miss the radio buttons for fast selection of some common voltages & currents, but I have not added them.
If did also fix some Min/Max text replacements.


It looks like the USB interface is serial, this means you can do: "#port 2268 com" to support both, there must also be a baudrate for the com port.


Please include in the next TC release.

Will do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 02, 2020, 05:53:13 am
How about environmental test devices. Airflow HVAC, particle counter (wildfires) CO2, etc, etc?

That would be nice, but we will have to communication about #interface

I really, really like an all-in-one app. pain logging multiple devices, sorting out on computer to make comprehensive presentation

I made it because I have many different brands of device I uses together and also do automatic tests with them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 02, 2020, 01:17:25 pm
V1.41 is up
There are many small improvements and a new import function.
   Added: Keithley 2280B and GW Instek PSW series power supplies, thanks to GBY
   Added: Cursor is now possible with all X axis that has a regular rising or falling value.
   Fixed: Data value as X on chart did not update.
   Changed: Unknown interface names do not show red with text results in the test function
   Changed: Will only use "Restore" button for programs run in log window, not for menus with #autorun.
   Fixed: Export function failed when loading a export definition.
   Changed: ATorch DCLoad (DL24P) will now do its own W, Wh & Ah calculations, they are missing from the communication
   Added: Import popup can import columns from a CSV files with a specified reference column.
   Added: #clearTable clears all data in the table and disables Chart, Histogram &Range
   Added: #importTable can import columns from a CSV files with a specified reference column.
   Added: #scriptPriority can define if a script takes precedence or not over the user interfaces.
   Added: #scriptScript to define hidden scripts in menu script files, can be used with #runScript.
   Added: #return to stop the current script
   Added: runScript() & runScriptAsync() functions, will run same scripts as #runScript
   Added: #runScript & #runScriptAsync to run named scripts from command line or other scripts
   Added: #histogramAnnotate with same functions as #chartAnnotate
   Added: More annotations to #chartAnnotate (Circles, squares, polygons and polylines)
   Added: +curveName to make a annotation follow a named curve


(https://lygte-info.dk/pic/Batteries2012Small/Vapcell%20INR14500%20950mAh%20P1409A%20%28Black-red%29%202020/USB%20Charging.png)

The above chart is made completely automatic, first the script run the test and then generates the chart with annotations.

(https://lygte-info.dk/pic/Projects/TestController/DocPopupImport/MergeData.png)

Importing a couple of data files.

(https://lygte-info.dk/pic/Projects/TestController/DocPopupImport/AlignAhAxisAh.png)

Then I could make this curve, I could have improved the curve by combining the scales with #chartScaleSync.

(http://lygte-info.dk/pic/Projects/TestController/DocPopupImport/AlignAhAxisAhCombines.png)

And here I did not change the background color.

Title: Re: Program that can log from many multimeters.
Post by: gby on November 02, 2020, 04:26:49 pm
Thanks, I have done one modification to the source resistance setting.
I do miss the radio buttons for fast selection of some common voltages & currents, but I have not added them.
If did also fix some Min/Max text replacements.

Thanks for catching my cut, paste, and forget to update errors in the text replacements.  I used a spread sheet to automate creating all the #metadef's and did not properly update the formulas.  Unfortunately there are a couple more of them I had to correct  :palm:.

Hard to know what radio button presets to have for a supply that might be only 30V or up to 800V max.  I don't think it is a good idea to have a preset for a voltage larger than the supply can do.  So, I settled on 3.3V, 5V, 12V, 24V which all supplies can do.  I also thought about having a quick button to go to maximum voltage, but quickly jumping up to 800V sounded dangerous.  Hopefully you like that selection.

It looks like the USB interface is serial, this means you can do: "#port 2268 com" to support both, there must also be a baudrate for the com port.

So far I only tested Ethernet connection.  I added com to the #port per your suggestion.  At some point I will test USB com part or maybe someone else will try it and get back to us whether it works or not.

Attached is a Keithley 2260B file with all the above updates to include with the next TC release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 02, 2020, 04:36:36 pm
Attached is a Keithley 2260B file with all the above updates to include with the next TC release.

Thanks.

I moved the voltage preset to the first line and change the name to "Voltage", this way it will update together with the number field, no :update: needed.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 03, 2020, 10:49:08 am
A bit fun with recording the same signal on two different PC's with two different meters, then importing both data sets into TestController and synchronizing on dateTime:

(https://lygte-info.dk/pic/Projects/TestController/DocPopupImport/DualPCa.png)

The result is not bad, the two data sets align with better than one second precision.

In praxis this can be used to record related signals some distance apart.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 07, 2020, 02:35:28 pm
Quick question, for a SCPI command how can you do an IF statement in follow on :readmath:?

My specific issue is the following:
Code: [Select]
#scpiCmd getDefCH6? txrxn? 3 REC.RETRIEVEHDR
:readmath: getMatch(value,"(?<=1,1\\s).*")
:readmath: getElement(value,5)
For this device if CH6 is not in use the above getElement returns nothing/empty string which TestController sees and no Rx value and then waits for a timeout.  See below debug window sequence.
Code: [Select]
;; AKD2GS: Tx <getDefCH6?>
;; AKD2GS: Tx <txrxn? 3 REC.RETRIEVEHDR>
;; 192.168.1.193: Tx: <REC.RETRIEVEHDR..> 52 45 43 2E 52 45 54 52 49 45 56 45 48 44 52 0D 0A
;; 192.168.1.193: Rx: <Recording> 52 65 63 6F 72 64 69 6E 67 0D
;; 192.168.1.193: Rx: <1,1> 31 2C 31 0D
;; 192.168.1.193: Rx: <AXIS1.IL.FB [Arms],AXIS1.VL.CMD [rpm],AXIS1.VL.FB [rpm],vbus.value [Vdc],AXIS1.TEMP [degC]> 41 58 49 53 31 2E 49 4C 2E 46 42 20 5B 41 72 6D 73 5D 2C 41 58 49 53 31 2E 56 4C 2E 43 4D 44 20 5B 72 70 6D 5D 2C 41 58 49 53 31 2E 56 4C 2E 46 42 20 5B 72 70 6D 5D 2C 76 62 75 73 2E 76 61 6C 75 65 20 5B 56 64 63 5D 2C 41 58 49 53 31 2E 54 45 4D 50 20 5B 64 65 67 43 5D 0D
;; AKD2GS: Rx Timeout
Because this sequence returns nothing and because TC sees that as no Rx value,  then execution of TC halts for 5 seconds or so while it waits through the Rx timeout period.

To prevent these delays I would like to add something like:
   :readmath: if (strlen(value)=0) then "Empty" else value
to the command definition to prevent empty channels from having long Rx time out sequences.  In TC SCPI command definition how do you do that/what would the syntax be for a :readmath: IF statement be?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2020, 03:11:47 pm
Quick question, for a SCPI command how can you do an IF statement in follow on :readmath:?

Use the ?: operator

:readmath: (strlen(value)==0)?"Empty":value


Title: Re: Program that can log from many multimeters.
Post by: Hexley on November 07, 2020, 10:51:52 pm
Here is an updated device file for the GW Instek GPP-4323 power supply. It now supports the advanced features of channels 1 & 2. As voltage sources, they can be set to series, parallel, or independent modes. As loads they can be set to constant current, constant voltage, or constant resistance.

Please replace the current device file with this one in the next release, thanks.[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 08, 2020, 06:36:56 am
Please replace the current device file with this one in the next release, thanks. (Attachment Link)

Thanks, I will do that.
Title: Re: Program that can log from many multimeters.
Post by: privet on November 09, 2020, 06:31:44 pm
Hi, 

What a work !!!   
Thanks a lot for your work, it's perfect for testing my old batteries with my MS8218.

If I hadn't found your software, I would still be looking for how to decode the mastech protocol

thanks thanks thanks    :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 12, 2020, 01:02:07 pm
V1.42 is up
This adds popups to the scripting language and a small improvement to the import function.
V1.42
   Added: Support for popups in scripts
   Changed: Image viewer now has a independent window
   Added: More import matchers, this makes it possible to import data sets where reference columns is not a nice slope.
   Changed: Import popup, clicking on column name will change include checkmark
   Changed: Import popup, Import button first active when a valid import selection is present
   Fixed: Displays NaN (Not a Number) as ? in all standard formatters.

The popups makes it possible to display stuff like:

(http://lygte-info.dk/pic/Projects/TestController/ExampleTestingBatteryUSB/popup1.png) (http://lygte-info.dk/pic/Projects/TestController/ExampleTestingBatteryUSB/popup2.png)

From scripting.

Here is a article with the script for making the above menus and also for making the green charge curve I have posted earlier: http://lygte-info.dk/project/TestControllerTestingBatteryUSB%20UK.html (http://lygte-info.dk/project/TestControllerTestingBatteryUSB%20UK.html)

The popup functions are in two groups, this first group is for building input forms (Like the examples above):

#POPUPINIT "popup_title"
#POPUPLABEL "prompt" varName "tip"
#POPUPTEXT "prompt" varName {characters {"tip"}}
#POPUPNUMBER "prompt" varName {min max {"tip"}}
#POPUPNUMBERLIST "prompt" varName {min max {"tip"}}
#POPUPNUMBERINT "prompt" varName {min max {"tip"}}
#POPUPNUMBERINTLIST "prompt" varName {min max {"tip"}}
#POPUPCOMBO "prompt" varName {list of values} {"tip"}
#POPUPRADIO "prompt" varName {list of values} {"tip"}
#POPUPCOLUMNS CHANNEL "prompt" varName {systemColumns{ filter {"tip"}}
#POPUPDEVICE "prompt" varName {deviceFilter {functionFilter {all} tip}}}
#POPUPVALUE "prompt" varName{ includeMath{ filter{ tip}}}
#POPUPCHECKBOX "prompt" varName {"tip"}
#POPUPFILENAME "prompt" varName {"tip"}
#POPUPFILE "prompt" varName{ path{ extension{ load {"tip"}}}}
#POPUPIMAGE "prompt" varName images {tip}
#POPUPBUTTON "button text" varName {"tip"}
#POPUPBUTTONS "ok button text" varName "cancel button text" {"tip"}
#POPUPSHOW {x y}

The second group are for messages and questions that can be answered with a button press:

#POPUPSHOWINFO "info message"{ icon}
#POPUPSHOWINFOASYNC "info message"{ icon{ timeout}
#POPUPSHOWQUESTION "prompt" varName{ button1Text{ button2Text{ button3Text}}}


I have also added another base for popups that makes them a separate window, for now I only uses this for image viewer, but I have some other addition in development, that will use it.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on November 13, 2020, 06:27:05 pm
Depending on the OS you are using, there is not only the "Settings" folder but also an empty folder "Devices":

/home/linux/TestController/Devices/

/Windows/Users/Documents/TestController/Devices/


When I want to use my own "device.txt" file, I copy and overwrite it with the ready made files coming with any new update, which is fine.

However, in order to shorten this, I would like to know, whether it is possible, that a "device.txt" file within this empty folder from above, could overrule the ready made one?
It could be compared with "Settings", which are kept despite any new update, which makes the handling of TestController much easier?!

I haven't tested it so far myself, whether it is already possible...  :-/O


ThanX!  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 13, 2020, 06:39:47 pm
TestController makes a device directory in ../TestController/Devices on windows it is ../Documents/TestController/Devices any device in this folder takes precedence over the included devices (If you do #metadef there are issues, but directly defined devices always take precedence).
Depending on where you unpack TestController, the two directories can be the same, this will prevent the above from working. The solution is to unpack TestController somewhere else, like adding a extra folder.
When TestController have created an empty directory it means it is not the same as the include "Devices" directory and you will not have problems. Using the "Create new SCPI..." function is supposed to create a file in that directory.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 14, 2020, 03:27:03 pm
Hi HJK,

Once again some great new functionality added, thanks.  I am trying to use the #POPUPSHOWQUESTION and having trouble understanding it.  I tried the following short script:
Code: [Select]
=var foo=5
#popupshowquestion "User input" foo "One" "Two" "Three"
="User input was "+foo
When I run the above with V142 I get the pop up with the three buttons.  But, no matter what button I push the last line shows variable foo un-modified at its original value of 5.  In debug mode DOS window I see no errors.

I had assumed that #POPUPSHOWQUESTION second argument varName meant pushing the buttons would assign one of 0, 1, or 2 to varName.  Why doesn't this script's #POPUPSHOWQUESTION change variable foo?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 14, 2020, 03:45:19 pm
Once again some great new functionality added, thanks.  I am trying to use the #POPUPSHOWQUESTION and having trouble understanding it.  I tried the following short script:
Code: [Select]
=var foo=5
#popupshowquestion "User input" foo "One" "Two" "Three"
="User input was "+foo
When I run the above with V142 I get the pop up with the three buttons.  But, no matter what button I push the last line shows variable foo un-modified at its original value of 5.  In debug mode DOS window I see no errors.

I had assumed that #POPUPSHOWQUESTION second argument varName meant pushing the buttons would assign one of 0, 1, or 2 to varName.  Why doesn't this script's #POPUPSHOWQUESTION change variable foo?

You will have to use globalvar instead of var, it will probably be fixed in next version.

Another detail: First button is ok, second is cancel and third is something else, the values are 1 0 2

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 19, 2020, 01:32:46 pm
V1.43 is up
It adds two new popups
   Added: #ScreenDump command, it is not present in any menus due to the extremely limited device support.
   Added: HMC8043 #interface, #outputoff and a few other details (I just bough one of these)
   Changed: Generate script menu will only include entries that will generate scripts.
   Added: Param sweeper as separate entry in generate script menu
   Added: #SetParamSweeper to configure the params sweeper from script
   Added: Param sweeper popup, it will sweep 1 to 3 parameters for automatic testing a device.
   Added: #AutoHold to configure the auto hold window
   Added: Auto hold window with adjustable trigger parameters.
   Fixed: #popupshowquestion required a global variable, now it works with either global or local

One of the new windows is the params sweeper, it can sweep/step up to 3 parameters while logging
(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/Run.png)

(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/Primary.png)

(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/Breaker.png)

It can automatic generate both csv and png files of the result:
(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/MultipleFiles.png)

The other new window is a auto hold or touch hold, depending on who you ask:
(https://lygte-info.dk/pic/Projects/TestController/DocAutoHold/AutoHold.png)

It works with any connected devices, but is, of course, most useful with DMM's. I was inspired because somebody told about directly entering measurements in a spreadsheet, without touching the computer. This function is supported in this auto hold.

I have also a screendump function, but it is mostly useless, because of the very limited device support. If anybody want to play with it add something like:

#ScreenDump std
HCOPY:DATA?

To the device definition. The "HCOPY:DATA?" works on R&S HMC8043 and "HCOP:SDUM:DATA?" works on Keysight DMM's (That is the only supported devices for now).
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on November 19, 2020, 02:41:07 pm
V1.43 is up

Not sure what macOS Big Sur has broken, but the graphics on the selected tab have gone a bit odd?

Tried it on 2019 27" iMac and 2020 13" MacBook Pro

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 19, 2020, 02:59:33 pm
Not sure what macOS Big Sur has broken, but the graphics on the selected tab have gone a bit odd?
Tried it on 2019 27" iMac and 2020 13" MacBook Pro

Did the old version work fine?
I have not done anything with tab handling, that is internal Java and may even be part of the downloaded Java runtime.
The Java version I use is usually way behind, this improves compatibility on PC's that is not update regularly.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on November 19, 2020, 03:04:09 pm
Same with v1.42

I didn't think for a moment it was anything you had done, I've only just observed it since updating to Big Sur.

Not a show stopper, just a visual annoyance, but will look to see if Java or Big Sur is causing it.

Cheers.

Edit: It appears to be a Big Sur issue, I've tried the builtin Java, and 2 other versions, all with the same problem.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on November 19, 2020, 04:21:39 pm
I only use macOS with VMware Workstation within Ubuntu for testing purposes, thus I have not much experience with it, but as far as Catalina is concerned together with JDK 15.0.1 it looks like this, when TestController is in the background:

(https://i.postimg.cc/qvfb6h24/Bildschirmfoto-vom-2020-11-19-17-10-19.png) (https://postimg.cc/hfrbHGC5)

As I am able to clone it, I will install some older JDK-Versions, to look for any differences...
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on November 19, 2020, 04:29:19 pm
Hmm, maybe I've only noticed it since going to Big Sur, as Big Sur is such a visual change in itself.

It may have always been that way and it never bothered me before?  :-//

I'll install a Catalina VM and see what it produces.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on November 19, 2020, 04:59:56 pm
It's definitely Big Sur.

On Mojave it is fine (just installing Catalina at mo).

Also the Java control panel is wrong in Big Sur, and I know for sure this was ok on Catalina.

One for Apple to fix me thinks.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on November 20, 2020, 12:50:35 am
Without doing any further trouble shooting, I can confirm, that it has something to do with Big Sur...

(https://i.postimg.cc/G2RZyB5s/Bildschirmfoto-vom-2020-11-20-01-31-38.png) (https://postimg.cc/t1rS0gyX)


...as Catalina works fine:

(https://i.postimg.cc/nrcg3yZF/Bildschirmfoto-vom-2020-11-20-01-38-13.png) (https://postimg.cc/G8VX2SHV)


Cheers!  :-\
Title: Re: Program that can log from many multimeters.
Post by: mrprecision on November 20, 2020, 08:31:29 pm
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de (http://www.signalanalyzer.de)

(https://www.schaeck.eu/download/eev/signalanalyzer-time.png)

(https://www.schaeck.eu/download/eev/signalanalyzer-frequency.png)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 20, 2020, 09:06:14 pm
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de (http://www.signalanalyzer.de)

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.
Title: Re: Program that can log from many multimeters.
Post by: mrprecision on November 20, 2020, 10:19:38 pm
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de (http://www.signalanalyzer.de)

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.

Can you please share a csv file, I will trie to import in SignalAnalyzer.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2020, 06:32:33 am
Can you please share a csv file, I will trie to import in SignalAnalyzer.

Here are the four CSV/TAB files supported by TestController: http://lygte-info.dk/pic/Projects/TestController/TCFormatDemo.zip (http://lygte-info.dk/pic/Projects/TestController/TCFormatDemo.zip)
They all contain the same data made with internal generators in TC (Sinus, ramp & square) and I did them at 100 samples/second. The files are fairly small with only about 9000 samples each, TC can handle millions of samples (It can reduce number of samples during a export).
Title: Re: Program that can log from many multimeters.
Post by: mrprecision on November 21, 2020, 07:39:33 am
I tested your values with the SignalAnalyzer Software:

Ramp:
(https://www.schaeck.eu/download/eev/signalanalyzer_ramp.png)

Square:
(https://www.schaeck.eu/download/eev/signalanalyzer_square.png)

Sine:
(https://www.schaeck.eu/download/eev/signalanalyzer_sine.png)

Sine FFT:
(https://www.schaeck.eu/download/eev/signalanalyzer_sinefft1.png)

Sine FFT (Zoom):
(https://www.schaeck.eu/download/eev/signalanalyzer_sinefft2.png)

Sine Histrogram:
(https://www.schaeck.eu/download/eev/signalanalyzer_sinehisto.png)
Title: Re: Program that can log from many multimeters.
Post by: mrprecision on November 21, 2020, 07:48:38 am
With the program SignalAnalyzer you can easy view measurements in the time and frequency domain (fft). Also a histogram and a post process filter exists. It has the possibility to easy connect it with a small program to realize live measurements. www.signalanalyzer.de (http://www.signalanalyzer.de)

I could easily add FFT to TestController, but I do not believe that it is very useful at the low frequencies that it is designed for. If SignalAnalyzer can read CSV files and do FFT at low frequencies, it can be used on the log files from TestController.
The low frequencies I am talking about is sample rates at maximum 100Hz often around 1Hz.

The Dataset you send is not very good. You need many periods of the signal of interest in you dataset. Maybe you record for a longer time, or decrease the sample rate. Your dataset is a lot over sampled. So the frequency range of interest is only a very small band. Record for low frequency over a much longer time.

Can you please share a csv file, I will trie to import in SignalAnalyzer.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2020, 08:10:00 am
The Dataset you send is not very good. You need many periods of the signal of interest in you dataset. Maybe you record for a longer time, or decrease the sample rate. Your dataset is a lot over sampled. So the frequency range of interest is only a very small band. Record for low frequency over a much longer time.

It was an example of the file formats done fairly fast, as you can see in the time column. With the sample rate of TestController the frequencies (if any) will be fairly low, due to the maximum sample rate, but maybe SignalAnalyzer can be used to analyze for hourly or daily variations.

Histogram is already supported in TestController:
(http://lygte-info.dk/pic/cpf5/Hist100.png)

And the number of bins can easily be changed:
(http://lygte-info.dk/pic/cpf5/Hist250.png)

For interactive use a cursor can be clicked on and will give precise result for the position.
The size of the graphic can be adjusted. It is also possible to change colors and add annotations from a script.

Edit: I have modified the second histogram to look more like SignalAnalyzer with this script:

#chartbackground black black white white
#chartcolors (0,255,0)
#chartscalename Percent "Probablity Density [%]"
#chartscalename VSG.Sine "Amplitude [V]"
#chartTitle "Histogram / Distribution"
#savehistogram hist250 1130 630

Note: The override of the "Percent" scale name will first work from next version.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 25, 2020, 10:11:22 pm
Hi HJK,

I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.  The PC always sends two binary bytes and gets one binary byte in return.  No hand shaking and no end of line characters.  When reading the first byte is the address with lsb = 0 for read and the second byte is just a null.  The device replies with a single binary byte with the value.  When writing the first byte is the address with lsb = 1 for write and the second value is the binary data value to store at the requested address.

I read TC webpages about the DMM binary protocols but could not figure out how to use that for this simple protocol.  I then tried
Code: [Select]
#verifyDevice txrx? &
:readmath: "S200"

#idString "S200"
#name Kollmorgen S200 Servo
#handle S200
#port com
#eol \_
#comfixedbaud
; 19200 baud, Odd parity, 8 data bits, 1 stop bit
#baudrate 19200O81
#driver SingleValue
But I don't really know what the "SingleValue" driver means/does.

How would you recommend setting this device up in the TC device file?

How to specify binary values in the writes?  While in debug mode when I try txrx? 0x04 0x00 the DOS debug window implies TC sends 0x04 0x00 as 9 ascii characters and does not convert to two binary bytes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 26, 2020, 07:33:01 am
I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.  The PC always sends two binary bytes and gets one binary byte in return.  No hand shaking and no end of line characters.  When reading the first byte is the address with lsb = 0 for read and the second byte is just a null.  The device replies with a single binary byte with the value.  When writing the first byte is the address with lsb = 1 for write and the second value is the binary data value to store at the requested address.

The single value is driver is for devices that returns one ascii string with a single number in it.
This device either need a dedicated driver or another type of programable driver. You might be able to do something with the ascii driver and txrx1bin?, but I believe a more specialized driver would be better.
I will have to look into programming that.

How to specify binary values in the writes?  While in debug mode when I try txrx? 0x04 0x00 the DOS debug window implies TC sends 0x04 0x00 as 9 ascii characters and does not convert to two binary bytes.

The command line is designed to be SCPI command alike, but you can get around it in some cases by using escapes, either a string escape \ or a calculator escape () and then a string with string escape, but it will not always work.
For the \ escape you can use \x00 where 00 is a hex character code.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 26, 2020, 02:14:41 pm
V1.44 is up
The main feature is the GridPanel, another feature is that scripts can now ask for a color.
   Added: GridPanel, this is a customable interface to all connected devices.
   Added: unit... to access the unit for a device value.
   Added: tabelColumnUnit and tableColumnFormat to access the unit and formatter for a table column
   Added: #PopupColor to the input fields, this makes it possible to input a color in the popup.
   Added: time/dateTime names on chart can now be overwritten like any scale name
   Added: Count/Percent names on histogram can now be overwritten like any scale name
   Added: #ChartReset command, Will undo coloring and scale renames/synchronization and title overrides.

The GridPanel and SinglePanel is a user customizable interface, it is a grid where different panels can be added. Each panel can either be a readout or a control panel and will have a customable options. The idea is to make a panel for a specific task and then save it to a menu entry: Right click on the log window and select "Generate script", "Grid panel"

These panels are not linked to logging, but will work with or without logging active and the statistic on the panels do not track other statistics on TestController, it will be very similar, but not necessary exactly the same, due to difference in sample rate and samples.

The current type of panels are:
3 readouts with more or less statistic, they work for all devices and do not require a advanced bench meter to show statistic.
A single device on/off (This function requires that the "setOn" interface is implemented for the device).
Multi devices on/off, all selected devices will be turned on/off simultaneously
A parameter "setter", select a device setting and add buttons for the required settings.
 
Here is the default size of the panel:

(http://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Example1.png)

But it can be scaled up/down over a wide range, it is also possible to change number of rows and columns:

(http://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Example1a.png)

A readout broken out into a single panel (Any panel can be broken out into a "Single panel" that is a resizable stand-alone window):

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/AdvancedReadout.png)


I am working on many more panels with different functions, one is a small chart.
Ideas for panel types are also welcome.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 26, 2020, 02:26:07 pm
I am trying to make a device file for a device with a very low level serial protocol.  It is pure binary.  It does not use ascii.

V1.44 contains a new driver called "Block" for this purpose, the driver is NOT finished yet, but can be used.
You are supposed to use #scpiCmd to define commands.
The primitives are:
tx
txrx1
txrx2
txrx1?
txrx2?

tx will only transmit, txrx1 & txrx2 will expect 1 or 2 byte answer, with the ? the answer will be returned as a number.
Depending on how device is implemented you may get away with listing two commands after a txrx2 and get both answer in a single number.

All commands accept a list of ascii character numbers to transmit, i.e. "tx 34 56 0x12" is a possible command.

The driver shares some definitions with the ascii driver, but uses a binary serial driver, instead of a text based one.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 26, 2020, 04:16:16 pm
V1.44 contains a new driver called "Block" for this purpose, the driver is NOT finished yet, but can be used.

Wow!  Thanks for this HKJ.  I will try it out soon but for now it is Thanksgiving in US and I have to eat too much turkey soon.....
Title: Re: Program that can log from many multimeters.
Post by: gby on November 26, 2020, 06:40:06 pm
HKJ,

Got a chance to start working with V144 with #driver Block and ran into Java errors and would not connect.  Below is the stub driver file I started with.
Code: [Select]
#verifyDevice txrx1? \0x26 \0x00
:readmath: "S200"

#idString "S200"
#name Kollmorgen S200 Servo
#handle S200
#port com
#comfixedbaud
; 19200 baud, Odd parity, 8 data bits, 1 stop bit
#baudrate 19200O81
;#eol \_
;#driver ascii
;#driver SingleValue
#driver Block
#author gby

The resulting DOS debug window at startup/attempt device connect is:
Code: [Select]
Starting
;; Start thread for: COM1 - Kollmorgen S200 Servo
;; COM1: Set params: 19200
java.lang.NullPointerException
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:64)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:201)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:101)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1340)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1413)
java.lang.NullPointerException
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:64)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:201)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:101)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1343)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1413)
;; Stopping thread for: COM1 - Kollmorgen S200 Servo
;; COM1: Close
The above happens with the device's serial cable plugged in or not plugged in.  So, you should be able to duplicate without any device.

For reference, if I change the device file to use #device ascii I get nearly the same Java errors except it says cmdIdn(DeviceAscii.java:105).  So far, the only way I have been able to connect is to use the #device SingleValue.  That one seems to connect with device plugged in or serial cable not plugged in and with no Java errors.

Thoughts on next steps to get #driver Block started/initially connected to be able to experiment with the new txrx1, txrx2, etc?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 26, 2020, 06:56:33 pm
Got a chance to start working with V144 with #driver Block and ran into Java errors and would not connect.  Below is the stub driver file I started with.
Code: [Select]
#verifyDevice txrx1? \0x26 \0x00

Stay away from the #verifyDevice for now, only the listed tx/txrx commands have been tested, nothing else. The rest is just copied from the ascii driver, but not modified for a binear comm driver yet.
Title: Re: Program that can log from many multimeters.
Post by: gby on November 26, 2020, 08:46:40 pm
Taking the #verifyDevice out allowed progress using the #driver Block.  I can now read raw values from the device.  But, I can't seem to do any :readmath" on the returned value.

Below is the stub device file with two #scpiCmd's defined and :readmath:'s commented out.  These #scpiCmd's with :readmath: commented out return decimal numbers interpreting the returned serial byte as a signed 8 bit integer that are correct.
Code: [Select]
#idString "S200"
#name Kollmorgen S200 Servo
#handle S200
#port com
#comfixedbaud
; 19200 baud, Odd parity, 8 data bits, 1 stop bit
#baudrate 19200O81
#driver Block
#author gby

#scpiCmd HsTemp? txrx1? 0x4c 0x00
;:readmath: poly(value,-50.0,1.4775)

#scpiCmd Model? txrx1? 0x04 0x00
;:readmath: (0xF8&value)

If I un-comment either :readmath: line I get Java errors and Rx timeout.  The HsTemp with :readmath: command gives:
Code: [Select]
;; S200: Tx <HsTemp?>
;; S200: Tx <txrx1? 0x4c 0x00
:readmath: poly>
java.lang.NumberFormatException: For input string: "00
:readmath:"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at dk.hkj.util.StringUtil.parseInt(StringUtil.java:531)
plus a bunch more java error lines.  The Model? command gives a slightly different java error:
Code: [Select]
;; S200: Tx <Model?>
dk.hkj.script.ProgramExceptions$OperationNotSupportedForDataTypeException: BitAnd
0xF8&value____<----____
        at dk.hkj.script.Script.parseBitOp(Script.java:351)

Further confusing me, if I leave the readmath commented out and run the following script lines it works fine.
Code: [Select]
=var temp=0
=temp = deviceRead("S200", "HsTemp?")
=temp = poly(temp,-50, 1.4775)
=temp

So, how to successfully do :readmath: with #driver Block in the #scpiCmd's?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 26, 2020, 09:05:14 pm
But, I can't seem to do any :readmath" on the returned value.

It sounds strange, I will take a look at this tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on November 27, 2020, 07:02:35 am
Is there any way to view the release notes other than rolling back to a previous version of the software? Could not see a readme file or anything on the website.

I have not posted the release notes on my website, but you can find them in this thread and here they usually contains more explanation.

I hope you post the definition when you get it working (Remember the #author tag).


I haven't covered much of the ET5410's functionality, but I spent a lot of time correcting the formatting of its SCPI responses so that TestController can work with it.
There's probably still plenty of things that don't work quite right, but at least it's a starting point should anyone need it.
File attached.

I'm currently exploring the popup functions. Very handy as they're exactly what I'm looking for.
I am facing two challenges however:

1. I have tried both using #popupFileName, and declaring a var with the use of #popupText - I can not seem to get the #log function to use this filename as the argument it asks for is the literal filename - I do not appear to be able to pass it a variable to use as a filename for the log.

2. I suspect it is more an issue with the Java environment than with your program, but when I enter a string of text into the above prompt, I can not hit Enter on the keyboard to "OK" it - the OK button has to be clicked. This is not a massive issue, but I am planning to use this in conjunction with a QR code reading program that outputs keyboard emulation with a text string and then the carriage return key. The more I can automate, the more confident I can be about leaving the task in the hands of someone else!  ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 27, 2020, 07:18:17 am
I haven't covered much of the ET5410's functionality, but I spent a lot of time correcting the formatting of its SCPI responses so that TestController can work with it.
There's probably still plenty of things that don't work quite right, but at least it's a starting point should anyone need it.
File attached.

Thanks, it will be included in the next release.

1. I have tried both using #popupFileName, and declaring a var with the use of #popupText - I can not seem to get the #log function to use this filename as the argument it asks for is the literal filename - I do not appear to be able to pass it a variable to use as a filename for the log.

To use variables or expression put parenthesis around the parameter. I.e. filename is the text filename, (filename) is replaced by the contents of the variable filename. This basically works for all parameters on the command line.

2. I suspect it is more an issue with the Java environment than with your program, but when I enter a string of text into the above prompt, I can not hit Enter on the keyboard to "OK" it - the OK button has to be clicked. This is not a massive issue, but I am planning to use this in conjunction with a QR code reading program that outputs keyboard emulation with a text string and then the carriage return key. The more I can automate, the more confident I can be about leaving the task in the hands of someone else!  ;)

That is my programming, I do not really know if I want it to terminate input on a ENTER in a input field.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 27, 2020, 11:51:18 am
But, I can't seem to do any :readmath" on the returned value.

My bug with readmath is fixed in this .jar file: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) It is not a general release, the jar file do not contain device definitions and only changes compared to v1.44 is in the Block driver.

Added a "txrxn/txrxn?" where first parameter is number of bytes to receive.

The default format is unsigned, I have fixed that, but you can easily get a signed value, use: txrx1? 0x12 0x00 / 0i1
Everything after / is output format specifiers, it is possible to use many when receiving multiple bytes.
The first number is offset into the received data.
The letter is format: i=signed (1 to 8 bytes), u=unsigned (1 to 8 bytes), f=float (4 or 8 bytes), s=string, add a r to swap byte sequence (Default is lsb first).
The next number if how many bytes to use for the number
It is also possible to add a multiplier with *factor or divisor with /factor (Ignored for string)
And a offset with +offset or -offset (Multiply/divide must be first) (Ignored for string)


The #VerifyDevice works, but do not support readmath, it can be used this way:

#verifyDevice S200 deviceModel?

#scpiCmd deviceModel? txrx1? 0x26 0x00
:readmath: value==0x32?"S200":"unknown";


Title: Re: Program that can log from many multimeters.
Post by: gby on November 27, 2020, 02:34:45 pm
HKJ,

Thanks for the interim update.  :readmath: works with #driver Block now.  I am making progress.  Couple of comments and questions:

1.  #verifyDevice in the device file leads to lots of java errors:
     java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(Unknown Source)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:57)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:328) ....and bunches more
     Changing to #VerifyDevice with capital "V" and it works.  Should TC really care about the capitalization??
2.  When doing the model determination I need to match 8 possible 5 bit codes to the corresponding ascii text names.  I could do getElement with 32 entries but for only 8 possible valid values is there a simpler way to do the enumeration from the code number to the ascii text?
3.  I am trying to read a 16 bit value by querying the device for the two bytes and combining them.  If I individually read each byte and combine them in a script it works.  I then tried to do it with one device serial command:
     txrx2? 0x5e 0x00 0x5c 0x00 / 0u2
    and got lots of Java errors:
    java.lang.NullPointerException
        at java.util.Arrays.copyOfRange(Unknown Source)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.parseFormat(DeviceBlock.java:216)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.writeRead(DeviceBlock.java:270)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:349)
      .... more Java errors ending in Rx Timeout.
    I then tried variations on this command with/without format specifier and other variations all with Java errors and ending in Rx Timeout.
    How would you suggest I read two consecutive locations (sending two bytes for each request) to make one 16 bit word?  Or, 24 bit word, etc.
4.  This device uses 1 start bit, 8 data bits, odd parity, and 1 stop bit.  I have not seen a way to specify a start bit on the driver.  How to do that?  I have the line #baudrate 19200O81 in the device file which I assume tells TC to do Odd parity, 8 data bits, and 1 stop bit.
    By the way, when using parity what does TC do when there is a receive parity error?
5.  On the Load Devices tab when I enter the Baudrate manually for this device as 19200O81 it takes it.  But the next time I restart TC it comes back as just 19200.  So, in the Load Devices tab how do you set parity, data bits, stop bits and get it to stick?  If the device file has #comfixedbaud does TC use the #baudrate command in the device file and ignore the value listed in the Load Devices tab?


Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 27, 2020, 03:12:07 pm
1.  #verifyDevice in the device file leads to lots of java errors:
     java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(Unknown Source)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.cmdIdn(DeviceBlock.java:57)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:328) ....and bunches more
     Changing to #VerifyDevice with capital "V" and it works.  Should TC really care about the capitalization??

When you get into programming it is case sensitive, regular command line is not.
It is the lower case v that works, using the upper case is the same as not using any.
I did check the code I posted, if you modify the constants it will work.

2.  When doing the model determination I need to match 8 possible 5 bit codes to the corresponding ascii text names.  I could do getElement with 32 entries but for only 8 possible valid values is there a simpler way to do the enumeration from the code number to the ascii text?

Check the function "matchBitsList" https://lygte-info.dk/project/TestControllerFunctions%20UK.html#matchBitsList (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#matchBitsList)
It is exactly for that type of jobs.

3.  I am trying to read a 16 bit value by querying the device for the two bytes and combining them.  If I individually read each byte and combine them in a script it works.  I then tried to do it with one device serial command:
     txrx2? 0x5e 0x00 0x5c 0x00 / 0u2
    and got lots of Java errors:
    java.lang.NullPointerException
        at java.util.Arrays.copyOfRange(Unknown Source)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.parseFormat(DeviceBlock.java:216)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.writeRead(DeviceBlock.java:270)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock.java:349)
      .... more Java errors ending in Rx Timeout.
    I then tried variations on this command with/without format specifier and other variations all with Java errors and ending in Rx Timeout.
    How would you suggest I read two consecutive locations (sending two bytes for each request) to make one 16 bit word?  Or, 24 bit word, etc.

I suspect you do not get both answer. You can do it as two txrx1? with ; between on one line and the use :readmath: to combine the result

4.  This device uses 1 start bit, 8 data bits, odd parity, and 1 stop bit.  I have not seen a way to specify a start bit on the driver.  How to do that?  I have the line #baudrate 19200O81 in the device file which I assume tells TC to do Odd parity, 8 data bits, and 1 stop bit.
    By the way, when using parity what does TC do when there is a receive parity error?

Start bit is ALWAYS 1, I have never seen anything else. To use the #baudrate specification you must use "#port comfixedbaud", this will disable manual entry of baudrate. Note: You have to delete and reload the device when changing the #port specification.
I do not remember, but it will probably ignore it.

5.  On the Load Devices tab when I enter the Baudrate manually for this device as 19200O81 it takes it.  But the next time I restart TC it comes back as just 19200.  So, in the Load Devices tab how do you set parity, data bits, stop bits and get it to stick?  If the device file has #comfixedbaud does TC use the #baudrate command in the device file and ignore the value listed in the Load Devices tab?

It is supposed to stick, settings is saved when you leave the "Load devices" page. Also note that you have to delete and reload the device when changing the #port specification. The selected port specification is saved separately from the device definitions and this gives issues when changing the #port specification.

Title: Re: Program that can log from many multimeters.
Post by: gby on November 27, 2020, 05:36:16 pm
HKJ,

1.  Thanks for setting me straight.  The device file is case sensitive and using #VerifyDevice with capital "V" is like commenting the line out.  The real problem was I did not include the string to compare to in the line.  Silly syntax error on my part and sorry to bother you.

2.  I looked at the suggested matchBitsList.  It seems to use a mask to see if a bit sequence is set.  The required function is match a number.  I originally asked because the web page for getElement says "This is used to convert a index (From 0 and up to about 10 or 20) to a text." and I was worried 32 entries might not work.  32 entries works fine so this step is done with getElement.

3.  Still experimenting with ways to read two bytes to form 16 bit word.  I can get it to work in a script if I put a #delay between the two individual byte read requests.  However, in #scpiCmd's I can't seem to replicate the result.  If I put two read requests in a row in a script the second read errors and Rx Timeouts.  So, if there are two lines in a row like
    =templ = deviceRead("S200", "txrx1? 0x5E 0x00")
    =tempm = deviceRead("S200", "txrx1? 0x5C 0x00")
the first read works and the second one doesn't.  For #driver Block with two commands in a row does TC wait for the first response before sending the second request?  The device expects to receive byte, byte then sends reply and after reply is done is ready for next receive byte.  This simple device has no receive buffer to que commands.  Suggestions for #scpiCmd to retrieve multiple bytes and have delays between byte requests?

4.  Thanks for the clarification on how the serial port works.

5.  I deleted the entry in Load Devices tab and set it up again.  It makes sense now.  You must be correct that I changed #port definition in the device file and had not re-loaded in Load Devices tab.

New question:
6.  How to set/clear individual status bits within a byte?  For example, there is a byte with individual bits and want to set one bit and not change the others.  The standard way to do that is to read the location, set the one bit, and then write the modified value back.  In a device file how to read, modify value, and write it back?

Again, thanks for all your help and patience with my questions.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 27, 2020, 06:01:08 pm
2.  I looked at the suggested matchBitsList.  It seems to use a mask to see if a bit sequence is set.  The required function is match a number.  I originally asked because the web page for getElement says "This is used to convert a index (From 0 and up to about 10 or 20) to a text." and I was worried 32 entries might not work.  32 entries works fine so this step is done with getElement.

With 8 valid values out of 32 codes I would prefer the matchBitsList. That you have to write the bit mask, instead of using a integer is not really a bit issue.
I like to provide multiple ways to solve a problem.

3.  Still experimenting with ways to read two bytes to form 16 bit word.  I can get it to work in a script if I put a #delay between the two individual byte read requests.  However, in #scpiCmd's I can't seem to replicate the result.  If I put two read requests in a row in a script the second read errors and Rx Timeouts.  So, if there are two lines in a row like
    =templ = deviceRead("S200", "txrx1? 0x5E 0x00")
    =tempm = deviceRead("S200", "txrx1? 0x5C 0x00")
the first read works and the second one doesn't.  For #driver Block with two commands in a row does TC wait for the first response before sending the second request?  The device expects to receive byte, byte then sends reply and after reply is done is ready for next receive byte.  This simple device has no receive buffer to que commands.  Suggestions for #scpiCmd to retrieve multiple bytes and have delays between byte requests?

I have no idea what you problem is, maybe a "#cmdDelayTime" in the definition can add the needed delay.
Each txrx command will send its data and wait for the answer, before the next one is processed. When you have multiple on the same line you will get a string with multiple values in. I did add a fairly useful debugger tool in a previous version: displayVar(), it may help you figuring out what you receive.


6.  How to set/clear individual status bits within a byte?  For example, there is a byte with individual bits and want to set one bit and not change the others.  The standard way to do that is to read the location, set the one bit, and then write the modified value back.  In a device file how to read, modify value, and write it back?

There is no build-in support for that kind of operation, you could do something with :readmath: and deviceWrite(), but it will not be safe (Handle is not know). If doing a setup popup you may be able to do something, some controls create variables with their value (That is read from the device).
In script you can, of course, easily do it and with the new GridPanel that may be the best solution (A panel with scripts will be added, try typing "#GridPanel Script "Script" " on the command line).
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on December 02, 2020, 10:48:01 am
Been using the Calculator popup quite extensively.  8) :)
Occasionally it would have been nice to copy and
paste some of the results.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 02, 2020, 11:23:32 am
Been using the Calculator popup quite extensively.  8) :)
Occasionally it would have been nice to copy and
paste some of the results.

Right click is you friend. You can copy to clipboard or log window or you can open a popup to show more complex results.

There are right click menus nearly everywhere in TestController.

What are you using the calculator for? Regular math, binary stuff, electronic calculations (I have some special functions for that) or something else?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on December 02, 2020, 02:12:01 pm
Nothing too advanced. Simply

1.) parallel resistor calculations
2.) frequency from R and C
3.) R from f and C.

Not  :scared:

Mainly because my old Texas Instruments SR-56
is gradually giving up the ghost being erratic. Probably time for the
good old thing to retire.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 02, 2020, 02:22:59 pm
1.) parallel resistor calculations
2.) frequency from R and C
3.) R from f and C.

I hope you found the par(r1,r2,...) function, it saves a bit of typing.
There is also the findR(series, value) that will use the specified series and find the best combination of two resistors to match the specified value.
You can do (Using E12):
findR(12,45) and the answer is: {R1=27, R2=18, tolerance=0, type=Series}
findR(12,31k) answer: {R1=39k, R2=150k, tolerance=-1.5361m, type=Parallel}

There is one caveat: The lowest series you can directly specify is 12 or E12, below that the numbers works different (See documentation).

There are a couple of variation on the findR(), they are all listed in the documentation: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Combine_two_standard_values_to_get_an_a_good_match (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Combine_two_standard_values_to_get_an_a_good_match)
Title: Re: Program that can log from many multimeters.
Post by: Hydron on December 04, 2020, 03:08:13 pm
Please see attached my driver for a HSPY 400V/1A power supply, controlled via RS232/Modbus.

This driver should hopefully work for other supplies in the series (with minor changes for data ranges, types etc). I can't work out any way to query the model sorry - there are a limited number of holding registers (many undocumented - I have included my notes on what I found) and none seemed to hold a version number or anything (doesn't help not having any other devices to compare against either).

A question about driver implementation - for a PSU, should #askValues be set to fetch only current values (output V, I and power in this case), or should it also fetch the setpoints as well? (V and I in this case - there is a power setting mode but it's not very usable so I've skipped it).
I have provided two versions of the values command in the driver, with the one with setpoints included commented out - if I've made the wrong choice in your opinion then please fix it!

I will also contribute a driver for the DCL6104A Dingchen electronic load once I have finished it (hopefully this weekend).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 04, 2020, 03:41:49 pm
Please see attached my driver for a HSPY 400V/1A power supply, controlled via RS232/Modbus.

Thanks, it will be included with the next release.

A question about driver implementation - for a PSU, should #askValues be set to fetch only current values (output V, I and power in this case), or should it also fetch the setpoints as well? (V and I in this case - there is a power setting mode but it's not very usable so I've skipped it).
I have provided two versions of the values command in the driver, with the one with setpoints included commented out - if I've made the wrong choice in your opinion then please fix it!

It is optional, I have some that includes set point and some that don't. On multi channel supplies it may be a bad idea, due to the amount of data, on single channel I cannot really decide. My old logging software did not have it and I did miss it a few times when using the voltage as x-axis on a chart.

Another details: You do not have to define a values? command, you could just have used a couple of defined SCPI commands on the #askValues line

I am happy you have added interfaces, they are useful for scripting, especially when I publish some, because they are not locked to a specific device. There will also be some panels in GridPanel that will use the interfaces (I am working on a panel readout that will include power, capacity and energy on any supply that has volt and current interfaces).

I will also contribute a driver for the DCL6104A Dingchen electronic load once I have finished it (hopefully this weekend).

I look forward to it.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on December 04, 2020, 04:02:18 pm
OK thanks for the tips - I've added back in setpoints and cleaned it up (removed the special values? command - I'd copied this method from another modbus definition). I have also fixed up the interfaces thing - I hadn't read the docs fully and misinterpreted the get/set/read definitions. Should be OK now.

See attachment below.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 04, 2020, 04:21:56 pm
I have also fixed up the interfaces thing - I hadn't read the docs fully and misinterpreted the get/set/read definitions. Should be OK now.

Sorry interface is wrong this time around, using

#interface readVoltage 2
#interface readCurrent 3
#interface readPower 4

works better (The number is the column for that #value).
And you had one to many SetOn

There is a popup to test the interface with.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on December 04, 2020, 05:51:09 pm
OK, that will teach me to do things in a rush!

Should I have a third go? Or have you already fixed my errors? (If the latter, I'll just wait for the next release, as I won't be using the interface bit myself).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 04, 2020, 06:09:23 pm
OK, that will teach me to do things in a rush!

Should I have a third go? Or have you already fixed my errors? (If the latter, I'll just wait for the next release, as I won't be using the interface bit myself).

I fixed the things I wrote about, but (of course) I did not test anything.

You might get around to use some of the new functions and scripts, that uses the interface, when I publish them.

The difference between interface and setup popup is that TestController do not know and cannot reliable guess what the function in a setup popup do, but with the interface it can usually easily decide it.
I.e. with a interface I/TestController know a device is a 3 channel power supply and how to control each channel, with a setup popup there is no way to know it. For the more advanced stuff knowing about devices is important.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 05, 2020, 01:55:05 pm
V1.47 is up.
It add more GridPanels, a easier way to modify scripts and a few new devices.
   Added: More GridPanel panels: Chart, Histogram, Script, System
   Added: Appa meters & HSPY-400-1 power supply (Thanks Hydron)
   Added: #waitUI, this will secure all pages are update, can be necessary before some UI manipulation from script.
   Added: Script list popup, found in "Generate script" menu. Used to administer the scripts.
   Added: #scriptNoLog a script filter that prevent a script from being listed while logging
   Added: #scriptTable a script filter that requires a table loaded, before it will list the script.
   Added: Device to handle Appa multimeter protocol.
   Added: Block device, this is for binary devices that answers with a fixed length block.

Meter readout with charts (This can be used for any supported DMM):
(http://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Example2.png)

System panel (Contents can be adjusted):
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/System.png)

Script panel (Contents can be adjusted):
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Script.png)

In the "Generate script" menu there is a entry for opening this page:
(https://lygte-info.dk/pic/Projects/TestController/DocScriptList/ScriptList.png)



Title: Re: Program that can log from many multimeters.
Post by: Hydron on December 07, 2020, 11:47:08 pm
Found a bug in my HSPY script - missed a zero on the IOut? query so it's 10x larger than it should be. Correct line below:
Code: [Select]
#scpiCmd IOut? holding? 0x1003 /1000Other than that it seems OK, thanks for the correction (I did a quick check with the interface function too).

Another quick question - is there a recommended way to deal with a SCPI command that changes what units are returned depending on another setting?
In the other device I'm trying to write a driver for (a DCL6104A electronic load), the same SCPI command returns battery capacity as as either Wh or Ah depending on another setting (CC/CP/CR discharge mode), and I'm not sure what the best way to handle this is. You _can_ query the CC/CP/CR discharge mode setting to determine what the units are (CP is Wh, others Ah).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 08, 2020, 06:43:14 am
Found a bug in my HSPY script - missed a zero on the IOut? query so it's 10x larger than it should be. Correct line below:
Code: [Select]
#scpiCmd IOut? holding? 0x1003 /1000Other than that it seems OK, thanks for the correction (I did a quick check with the interface function too).

Fixed.

Another quick question - is there a recommended way to deal with a SCPI command that changes what units are returned depending on another setting?
In the other device I'm trying to write a driver for (a DCL6104A electronic load), the same SCPI command returns battery capacity as as either Wh or Ah depending on another setting (CC/CP/CR discharge mode), and I'm not sure what the best way to handle this is. You _can_ query the CC/CP/CR discharge mode setting to determine what the units are (CP is Wh, others Ah).

You have to use #cmdMode to select mode and then enable/disable columns. All multimeters uses this..
For this you must:

Add one or mode mode parameters to each #value definition.
Define #cmdMode that can change the modes.
Define #askMode to return current mode.

You can see a definition in "Keythley2000".
Title: Re: Program that can log from many multimeters.
Post by: microplayer on December 08, 2020, 07:43:13 pm
FY7900-60M - FeelElec Arbitrary Waveform Generator - Firmware v1.3
Issue: Waveform numbering in TestController differs from built-in waveforms sequence

Hi all,

I´m completely new to TestController software and still trying to make all my devices accessible by this wonderful piece of software. Thank you very much, HKJ!

However, one oddity already showed up in my own testing.
The numbering scheme 0..99 of waveforms in the v1.47 package differs from the sequence programmed in my generator running on firmware 1.3.
If you select a certain waveform in the TestController setup window, you might end up with a different signal going out. 
A cross check with the FeelElec programming manual "FY6900 Serial communication protocol.pdf" from 02.11.2019 also showed some differences in the sequence of signals when using the dial on the device.
So I dialed through the first 35 entries to correct the numbering in the original v1.47 "FeelElecFY6x00-xxM.txt" file...
Starting with entry #36 users can enter their individual waveforms into the generator´s memory. So no need to check anything from 36 upwards.   
Now settings in TestController are in sync with the entries selectable using the dial.

I´m happy to share the corrected file "FeelElecFY6x00-xxM-Waveform-Numbering-Scheme-from-FY7900-60M-Firmware-V1.3.txt" as an attachment.

One thing...
Maybe it is of interest to someone who bought a KORAD KA3005P clone from the german distributor Reichelt:
The attached "Korad KAxxxxP-Contains-entry-for-RND-320-KA3005P-by-Reichelt.txt" has an additional entry for this specific device name.
Nothing special, though. Just a little copy & paste & edit. However it might save you some time.

Kind regards,
microplayer
 
   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2020, 08:23:26 am
I supposes you mean FY6900.

I have added the modified table to the device definition, it will be used for all FY6900 generators, but it is not tested!!
I have also added the #metadef for the RND supply to the Korad definition (Note: Version & serial number  must not be included in idstring)

Generally a extra #metadef entry can be posted directly and I will add it

And thanks for the updates.

The new FY definition file is attached, please check it (Use it to overwrite the original definition file).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 23, 2020, 04:49:02 pm
V1.48 is up.
This version adds a few GridPanels, a single device and the latest version of the serial library.
   Added: More Grid panels: Dual readout, auto hold readout
   Added: More Grid panels: PS & Load readout, Multi PS & Load readout
   Added: More Grid panels: Shortcut for mode popup and setup popup
   Changed: Updated to latest version of the serial library
   Changed: Waveform names for FY6900 generators (Thanks microplayer)
   Added: RND-320-KA3005P in KORAD supplies (Thanks microplayer)

Dual readout will show two values, either from same device or from two devices:
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DualReadout1.png) (https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DualReadout3.png)

Auto hold readout is very similar to the separate popup, but slightly simpler:
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/AutoHoldReadout.png)

The PS & Load readout shows five parameters and only needs the device to supply voltage and current. The multi device will som same 5 values, but use a sum/average from the connected devices (That is supposed to be in parallel). When mixing power supplies with loads it will show the difference!
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/PSLoadReadout.png) (https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/MultiPSLoadReadout.png)


The mode & setup is a shortcut for the device popups:
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DevicePopups1.png)


There will be more GridPanels, but probably not this year. And if somebody has an idea for a GridPanel please say.

Title: Re: Program that can log from many multimeters.
Post by: gby on December 30, 2020, 10:30:03 pm
Happy Almost New Year HKJ,

I found some time to continue working on the low level binary serial interface.  I (think) I found a couple of TC 2.48 issues:
1.  On http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (http://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html) in Non-SCPI ascii Devices section the documentation lists
           txrx1Bin? cmd
           txrxnBin? cnt cmd
     Neither command sends anything over the serial port.  But, txrx1? cmd and txrxn? cnt cmd do send over serial port.
     I assume having "Bin" in the name is a typo in the Web page documentation.....or I am very confused?

2.  In testing sending a command and expecting 2 bytes back I get the following from the debug DOS box:
Code: [Select]
txrxn? 2 0x8a 0x00 0x88 0x00
;; S200: Tx <txrxn? 2 0x8a 0x00 0x88 0x00>
;; COM1: Tx: 8A 00 88 00
;; COM1: Rx: FF
;; S200: Rx <255>
;; 255
   Using an oscilloscope on serial transmit and receive I can see the 4 transmit bytes and see 0xFF returns after Tx 0x8a and then 0x08 returns after Tx 0x88. 
   I would not expect Rx value to be 255, I was hoping for 0x255*0x80 + 0x08 = 0xFF08.
   For your reference I have included the scope trace of this serial transaction.
   Testing txrxn 2 with other data seems to always set Rx returned value to just the first returned byte.

   I also tried txrxn? with 3 and 4 and got the same result.  Rx value is always just the first byte.
   Since the device only returns 2 bytes I would have thought asking for 3 or 4 bytes would cause a Rx timeout but it doesn't.
   
Lastly, a question.  The 2 byte number coming back is sometimes signed and sometimes unsigned depending on which parameter it is.  I could write :readmath: to convert to proper data type using conditionals but I wonder if there is a conversion command/option built into TC?  What do you suggest?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 31, 2020, 10:15:31 am
I found some time to continue working on the low level binary serial interface.  I (think) I found a couple of TC 2.48 issues:

I will look at this next year, but a few comments:

1) In my tests they work, here I define a command to either require a 1 or 2 byte answer:
#scpiCmd i? txrx1bin? \x45
#scpiCmd i? txrxnbin? 2 \x45
The \x45 is a string override to send the char with hex code 45, in this case I could have written E (The override is mostly for sending control characters). It is possible to do stuff like: E\x0d\x0a any space in the string will be send as a space.
The bin format do not include any automatic CR/LF, it must be specified with string overrides when required.
Both bin and Bin works.

2) I do not understand this, the txrxn? command is supposed to receive multi line text and the argument is text only. With the ascii driver I get:
;; 4187.01ms Test: Tx <txrxn? 2 0x8a 0x00 0x88 0x00>
;; 4188.05ms COM19: Tx: <0x8a 0x00 0x88 0x00.> 30 78 38 61 20 30 78 30 30 20 30 78 38 38 20 30 78 30 30 0A

3) The bin functions is supposed to always return unsigned values with first returned byte as lsb. I will add something to handle both sign and swapping bytes for more general usage, some sort of function is probably the best way (i.e. readmath).
Title: Re: Program that can log from many multimeters.
Post by: gby on December 31, 2020, 04:24:20 pm
HKJ thanks for the hints.  I can now explain most of my issues.

I was using #driver Block in my device file.  With that driver the txrx1Bin? and txrxnBin? commands send nothing over the serial port and the txrx1? and txrxn? commands do send characters over the serial port.  I changed to #driver ascii and now the txrx1Bin? and txrxnBin? commands do send.  Sorry for my confusion.

Unfortunately, using #driver ascii with txrx1Bin? does not always send the correct character.  From 0x00 up to 0x7f and from 0xa0 to 0xff all seems to work.  But any value from 0x80 to 0x9f seems to always incorrectly send value 0x3F or character "?".  See below from the DOS debug window showing selected values working and values 0x8a and 0x90 not working with 0x3F incorrectly sent.

Code: [Select]
txrx1Bin? \x4c
;; S200: Tx <txrx1Bin? \x4c>
;; COM1: TxBin: <L> 4C
;; COM1: RxBin: 34
;; S200: Rx <52>
;; 52
txrx1Bin? \x4c\x00
;; S200: Tx <txrx1Bin? \x4c\x00>
;; COM1: TxBin: <L.> 4C 00
;; COM1: RxBin: 34
;; S200: Rx <52>
;; 52
txrx1Bin? \x8a
;; S200: Tx <txrx1Bin? \x8a>
;; COM1: TxBin: <?> 3F
;; COM1: RxBin: 00
;; S200: Rx <0>
;; 0
txrx1Bin? \x90
;; S200: Tx <txrx1Bin? \x90>
;; COM1: TxBin: <?> 3F
;; COM1: RxBin: 00
;; S200: Rx <0>
;; 0
txrx1Bin? \xa0
;; S200: Tx <txrx1Bin? \xa0>
;; COM1: TxBin: < > A0
;; COM1: RxBin: 88
;; S200: Rx <136>
;; 136
txrx1Bin? \xd8
;; S200: Tx <txrx1Bin? \xd8>
;; COM1: TxBin: <?> D8
;; COM1: RxBin: ED
;; S200: Rx <237>
;; 237

So, how to get TC to correctly send binary values between 0x80 and 0x9f??

On the question for signed versus un-signed and on byte order this device does have signed integers and will receive ms byte first and ls byte second.  So, commands to help with that natively would be convenient.  For now using "readmath" will do.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 01, 2021, 05:35:08 pm
Hi everyone,

Can someone hint me the settings for the RD6012?
Tried al sort of settings on Riden en on the Port settings on the PC,
but always ended up with RX-timeout.
Searched a lot in this topic, but didn't find a solution.

Thanks.
Title: Re: Program that can log from many multimeters.
Post by: Dwaine on January 01, 2021, 05:43:15 pm
Man this program is fantastic!!!!   Thanks to everyone helping on the project.
Title: Re: Program that can log from many multimeters.
Post by: gby on January 01, 2021, 06:30:19 pm
So, how to get TC to correctly send binary values between 0x80 and 0x9f with txrx1Bin? ??

Another question.  If a device had a register in counts that needs to be scaled and offset to convert to real units, then for the read #scpiCmd it is a simple matter of :readmath:.  But, if this register is read/write how to do a #scpiCmd for the write that takes the user/real units in and coverts to a single byte in counts before sending? 

An example read could be:
   #scpiCmd Temp txrx1Bin? \x20\x00
   :readmath: (value*22.3 - 0.6)
and the corresponding write could be:
   #scpiCmd Temp txrx1Bin? \x21\x(int(round(value + 0.6)/22.3))

The above does send a single byte but the calculation yields a decimal number and the \x sends it as a Hex number.  For example, using 1114 for the argument value should send decimal 50 or 0x32 Hex.  But, TC sends hex 50.  See below from DOS debug window:

Code: [Select]
temp 1114
;; S200: Tx <temp 1114>
;; S200: Tx <txrx1Bin? \x20\x50>
;; COM1: TxBin: <!P> 20 50
;; COM1: RxBin: 95
;;149

Perhaps adding a byte(value) typecasting function could be a step to help solve both the above issues?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 10:45:05 am
I was using #driver Block in my device file.  With that driver the txrx1Bin? and txrxnBin? commands send nothing over the serial port and the txrx1? and txrxn? commands do send characters over the serial port.  I changed to #driver ascii and now the txrx1Bin? and txrxnBin? commands do send.  Sorry for my confusion.

The bin suffix are not supported on the block device, because all commands are binary.
For each driver (block/ascii/etc.) the commands are coded separately, the names may be similar, but the parameters and functions may not be.

Unfortunately, using #driver ascii with txrx1Bin? does not always send the correct character.  From 0x00 up to 0x7f and from 0xa0 to 0xff all seems to work.  But any value from 0x80 to 0x9f seems to always incorrectly send value 0x3F or character "?".  See below from the DOS debug window showing selected values working and values 0x8a and 0x90 not working with 0x3F incorrectly sent.
So, how to get TC to correctly send binary values between 0x80 and 0x9f??

Oops, it is fixed in the interim release below.

On the question for signed versus un-signed and on byte order this device does have signed integers and will receive ms byte first and ls byte second.  So, commands to help with that natively would be convenient.  For now using "readmath" will do.

New function:
binConv(value,offset,count{,signed{,swap}})

;I use hex() function to show actual byte swapping
hex(binConv(0x12345678,0,4))  -> 12345678
hex(binConv(0x12345678,0,2))  -> 5678
hex(binConv(0x12345678,1,2))  -> 3456
hex(binConv(0x8012,0,2,1))    -> FFFF8012 this is a negative number
hex(binConv(0x12345678,0,4,0,1)) -> 78563412
hex(binConv(0x12345678,0,4,0,"3120")) -> 12563478
hex(binConv("\x12\x34\x56\x78",0,4))  -> 78563412



Another question.  If a device had a register in counts that needs to be scaled and offset to convert to real units, then for the read #scpiCmd it is a simple matter of :readmath:.  But, if this register is read/write how to do a #scpiCmd for the write that takes the user/real units in and coverts to a single byte in counts before sending? 

The result when using () in a line is a string result, i.e. you must convert the result to hex with the hex() function to use it as a hex argument. From the interim version it is possible to specific digits in the hex function (You need two for the above):
hex(value)
hex(value,digits)

#scpiCmd Temp txrx1Bin? \x21\x(hex(round((value + 0.6)/22.3),2))


Interim release: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 10:54:27 am
Can someone hint me the settings for the RD6012?
Tried al sort of settings on Riden en on the Port settings on the PC,
but always ended up with RX-timeout.
Searched a lot in this topic, but didn't find a solution.

As far as I know the only setting is baudrate on the RD6012, it must be 9600.
In TestController you must add the RD6012 to the loaded devices and specify correct serial port.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 11:03:46 am
Man this program is fantastic!!!!

Thanks.

Thanks to everyone helping on the project.

I hope that more people will make definitions for test equipment this year.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 02, 2021, 01:55:30 pm
Can someone hint me the settings for the RD6012?
Tried al sort of settings on Riden en on the Port settings on the PC,
but always ended up with RX-timeout.
Searched a lot in this topic, but didn't find a solution.

As far as I know the only setting is baudrate on the RD6012, it must be 9600.
In TestController you must add the RD6012 to the loaded devices and specify correct serial port.

Thanks HKJ for reply, I tried all the options, but not working for me.
Have to tell that I use the modified software by Unisoft, which is great.
The Ruideng original software works OK with this modified version.
But that software is a little bit ......
Installed latest Oracle Java.
I will try another laptop later.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on January 02, 2021, 02:18:28 pm
I hope that more people will make definitions for test equipment this year.
I've got one outstanding for an electronic load that I promised to write last year, got a bit busy but will do it once I'm back on plague island.

On another topic, it appears from your website that you have both a Keysight 34461A and a Keithley DMM6500 - do you have any comments on which is better for
a) day to day interactive use as a bench meter or
b) use for logging etc (I see the Keithley has a driver, I assume the Keysight would need to be used in 34401A compatibility mode or with a newly  written driver).
Am looking at investing in one of those two and the DMM6500 appears to be somewhat better value.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 05:11:34 pm
Thanks HKJ for reply, I tried all the options, but not working for me.
Have to tell that I use the modified software by Unisoft, which is great.
The Ruideng original software works OK with this modified version.
But that software is a little bit ......
Installed latest Oracle Java.
I will try another laptop later.

Sorry, but I cannot help more. I do not have the power supply, the definition was made by somebody else. If you look back in the thread you will see it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 05:21:27 pm
I've got one outstanding for an electronic load that I promised to write last year, got a bit busy but will do it once I'm back on plague island.

I look forward to it.


On another topic, it appears from your website that you have both a Keysight 34461A and a Keithley DMM6500 - do you have any comments on which is better for
a) day to day interactive use as a bench meter or
b) use for logging etc (I see the Keithley has a driver, I assume the Keysight would need to be used in 34401A compatibility mode or with a newly  written driver).
Am looking at investing in one of those two and the DMM6500 appears to be somewhat better value.

For interactive use I prefer the DMM6500, for logging I use the 34461A. The 34461A have a better AC to DC converter.
I love the way I can plot data on the DMM6500, it is easy to use and I can use very fast sample rates when needed.

On my workbench I have: 34465A 34470A DMM6500 DMM7510, all within easy reach. I nearly always use DMM6500 for interactive use and the two Keysights when logging, I seldom use DMM7510 due to noise from the fan.

I always uses TC for logging, it can handle both meters directly on a network connection, no drivers required.
In TC the 34461A definition is way superior to DMM6500. I (or somebody else) may improve the DMM6500 definition in the future.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on January 02, 2021, 06:12:31 pm
Thanks, very useful to have that viewpoint from someone with both available for handy bench use.
My primary use would be interactive, and I'm not so worried about the AC ranges so it sounds like the DMM6500 is the way to go, especially as it's a little cheaper. Has certainly escalated from the original plan to get a 34401A though!

If I do go get a DMM6500 I'll see if I can contribute to a better driver. Will also have a look at scanner card option - someone has made an open source clone for the 2000-SCAN card.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 02, 2021, 06:31:04 pm
Thanks, very useful to have that viewpoint from someone with both available for handy bench use.
My primary use would be interactive, and I'm not so worried about the AC ranges so it sounds like the DMM6500 is the way to go, especially as it's a little cheaper. Has certainly escalated from the original plan to get a 34401A though!

If I do go get a DMM6500 I'll see if I can contribute to a better driver. Will also have a look at scanner card option - someone has made an open source clone for the 2000-SCAN card.

You may also want to read my reviews:
https://lygte-info.dk/review/DMMKeithley%20DMM6500%20UK.html (https://lygte-info.dk/review/DMMKeithley%20DMM6500%20UK.html)
https://lygte-info.dk/review/DMMKeysight34461A%20UK.html (https://lygte-info.dk/review/DMMKeysight34461A%20UK.html)

They are not based on long time use, only on a short term evaluation. They also contains tear downs if you want to see whats inside the meter.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on January 02, 2021, 07:09:49 pm
Thanks, have already read those - didn't have a comparison of real bench-use between the two though, which your post has provided.
Title: Re: Program that can log from many multimeters.
Post by: gby on January 02, 2021, 07:15:43 pm
Unfortunately, using #driver ascii with txrx1Bin? does not always send the correct character.  From 0x00 up to 0x7f and from 0xa0 to 0xff all seems to work.  But any value from 0x80 to 0x9f seems to always incorrectly send value 0x3F or character "?".  9f??

Oops, it is fixed in the interim release below.

Thank you for the interim release.  \x for values from 0x80 to 0x9Ff works correctly now  :)

New function:
binConv(value,offset,count{,signed{,swap}})

Thanks for this new function.  In scripts with the examples I tried it works fine.  Much less tedious than shifting, masking, etc.
However, I can't seem to get it to work for serial returned data.  For example, running the below script gives the expected result:
Code: [Select]
=var foo=0xEFFF
=foo=binConv(foo,0,2,1,1)
=foo
;; -17
But, the exact same EF FF data from the serial port using the same binConv in the device file scpi command does not work. 
    #scpiCmd IdFB? txrxnBin? 2 \x8E\x00\x8C\x00
    :readmath: binConv(value,0,2,1,1)
From the DOS debug Window:
Code: [Select]
idfb?
;; S200: Tx <idfb?>
;; S200: Tx <txrxnBin? 2 \x8E\x00\x8C\x00>
;; COM1: TxBin: <?.?.> 8E 00 8C 00
;; COM1: RxBin: FF EF
;; S200: Rx <13873>
;; 13873
I have no idea how 13873 decimal could come from the received FF EF two hex bytes and just don't see it.  Suggestions on how to get device file :readmath: to get the same results as running a script?  Some sort of conversion function on the value inside the binConv?

Lastly, thanks for the hex(value) capability, suggestion.  Works fine for calculating the values to be transmitted to the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2021, 08:59:04 am
    #scpiCmd IdFB? txrxnBin? 2 \x8E\x00\x8C\x00
    :readmath: binConv(value,0,2,1,1)
I have no idea how 13873 decimal could come from the received FF EF two hex bytes and just don't see it.  Suggestions on how to get device file :readmath: to get the same results as running a script?  Some sort of conversion function on the value inside the binConv?

The problem is missing documentation, the value is a string type and because the function accept a string it will not automatic be converted to a integer.
The solution is adding a typecast:
:readmath: binConv(int(value),0,2,1,1)

Note: Documentation will be released together with the official update at a later date.
Title: Re: Program that can log from many multimeters.
Post by: gby on January 03, 2021, 03:43:36 pm
HKJ,

Thanks for the binConv(int(value),02,1,1) suggestion.  It works fine.

I am trying to make the logging faster.  In the past, with real SCPI devices/a socket connection, using a command that retrieves multiple values in one command speeds up logging.  For example, retrieving all the currents in a multiple channel supply in one command.  I tried doing that with the serial device I am working on and can't get TC to log any values.  I suspect some formatting issue.

The working SCPI device returns three numbers separated by comma and a space.  TC socket connection #askValues handles the three number comma separated reply with no #askValuesReadFormat.  For the ascii serial device I am working on I defined a #scpiCmd that reads three values and using :readmath: converted into a string with three numbers separated by command and a space.  But, logging just gets ";; S200: Rx as numbers <>" and all the logged values are 0.

The device file command I created is:
   #scpiCmd samplePVI? txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00
   :readmath: " "+binConv(int(value),0,3,0,1)/256.0+", "+binConv(int(value),3,2,1,1)*0.5587935448+", "+binConv(int(0xF0FFFFFFFFFFFF&value),5,2,1,1)*18/19336

This command run directly gives three correct numbers comma separated as shown below.
Code: [Select]
samplepvi?
;; S200: Tx <samplepvi?>
;; S200: Tx <txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00>
;; COM1: TxBin: <^.\.Z.:.8.Š.ˆ.> 5E 00 5C 00 5A 00 3A 00 38 00 8A 00 88 00
;; COM1: RxBin: A4 A6 47 00 00 FF 98
;; S200: Rx < 42150.27734375, 0.0, -0.10426148117501034>
;; 42150.27734375, 0.0, -0.10426148117501034
But, using #askValues samplePVI? ends up with ";; S200: Rx as number <>" in the DOS debug log.

Is there a way to format the three numbers so that serial ascii #askValues can get the three numbers from the single combined command?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2021, 04:48:23 pm
Is there a way to format the three numbers so that serial ascii #askValues can get the three numbers from the single combined command?

I found a bug in the evaluation sequence (I have been doing some modification to that including adding a bug), a new interim version is up.

Also try without a leading space.

Title: Re: Program that can log from many multimeters.
Post by: gby on January 03, 2021, 06:13:51 pm
Is there a way to format the three numbers so that serial ascii #askValues can get the three numbers from the single combined command?

I found a bug in the evaluation sequence (I have been doing some modification to that including adding a bug), a new interim version is up.

Also try without a leading space.

Thanks for looking at this quickly.  I tried the new interim release and same ;; S200: Rx as numbers <> result.  I then removed the leading space but still no logged numbers.  By the way, on the first interim release without the leading space TC returned 1 number and not a comma separated list for the individual command.  The new interim release fixes that problem and without the leading space it returns three numbers as expected.

For your reference, I am switching between:
    #askValues PosFB?;VelFB?;IFB?
which logs values properly and
    #askvalues samplePVI?
which does not log anything.  Everything else in the device file stays the same.

So, the new interim release still can't seem to parse/understand the comma separated number list but the individual command returns correctly as shown below.
Code: [Select]
samplePVI?
;; S200: Tx <samplePVI?>
;; S200: Tx <txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00>
;; COM1: TxBin: <^.\.Z.:.8.Š.ˆ.> 5E 00 5C 00 5A 00 3A 00 38 00 8A 00 88 00
;; COM1: RxBin: A4 A6 6A 00 08 FF D8
;; S200: Rx <42150.4140625, 4.4703483584, -0.04468349193214729>
;; 42150.4140625, 4.4703483584, -0.04468349193214729

In case it helps I have attached the working copy of the device file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2021, 07:08:16 pm
Code: [Select]
[quote author=gby link=topic=234726.msg3398954#msg3398954 date=1609697631]
;; S200: Tx <samplePVI?>
;; S200: Tx <txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00>
;; COM1: TxBin: <^.\.Z.:.8.Š.ˆ.> 5E 00 5C 00 5A 00 3A 00 38 00 8A 00 88 00
;; COM1: RxBin: A4 A6 6A 00 08 FF D8
;; S200: Rx <42150.4140625, 4.4703483584, -0.04468349193214729>
;; 42150.4140625, 4.4703483584, -0.04468349193214729
[/quote]

I cannot see what goes wrong.
Returning the string directly from a :readmath: I get:

;; 7557.14ms Test: Rx <42150.4140625, 4.4703483584, -0.04468349193214729>
;; 7557.20ms Test: Rx as numbers <42150.4140625 4.4703483584 -0.04468349193214729>

Notice I have the line "Rx as numbers" and it is missing in you dump. It is the next step after making a text line with numbers, it will convert all number into a float format (This may look similar in the log, but it is not).
One reason for it missing can be that the data returns after timeout and is read by the log window instead, but that do match with how the data is processed.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2021, 07:23:44 pm
For test I tried to put the string into a Arduino with your :readmath:, it worked fine:

;; 64951.04ms Test: Tx <txrxnbin? 7 \x8a>
;; 64953.04ms COM19: TxBin: <Š> 8A
;; 64953.07ms COM19: RxBin: A4 A6 6A 00 08 FF D8
;; 64953.24ms Test: Rx <42150.4140625, 4.4703483584, -0.022341745966073644>
;; 64953.27ms Test: Rx as numbers <42150.4140625 4.4703483584 -0.022341745966073644>

I only use one character to trigger the transmission.
Title: Re: Program that can log from many multimeters.
Post by: gby on January 03, 2021, 08:25:58 pm
Based on your not seeing any issue I put the oscilloscope back on the serial transmit and receive lines.  When I do the individual command
    #samplePVI?
the expected result comes back.  With
    $askvalues samplePVI?
in the device file when I start logging I see NO serial activity.  Nothing is ever transmitted.  After trying many things and staring at the files for a while I finally realized what was going on.

The working logging line with 4 individual commands had capital "V" in #askValues and the non-working line using the multiple read command had a lower case "v" in #askvalues.  TC is case sensitive for the #askValues line and even though I had stared and tested, and tested it took a while for me to finally notice it.  You can see the lines in my previous post where I had listed the two lines I was switching between; one with "V" and one with "v".

Sorry you had to dig into testing with an Arduino to catch my incorrect lower case "v".  At least it is resolved and we can both move on.  Someday in the future it might be nice to have an error message when there is no #askValues defined and you try logging or click the Current values tab.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 07, 2021, 07:40:06 pm
I am struggling with my Riden RD6012.
Debug shows the following message:

;; Start thread for: COM3 - Riden RD6012
;; COM3: Set params: 9600
;; : Tx <holding? 0x00>
;; COM3: Tx: 01 03 00 00 00 01 84 0A
;; COM3: Rx: 01 03 02 EA D9 36 BE
;; COM3: **Device do not match** <60121>
;; USB Serial (COM3) Device Riden,Riden RD6012 do not match: **Device do not match** <60121>
;; COM3: Close
;; Stopping thread for: COM3 - Riden RD6012
;; COM3: Close

Set baudrate to 9600 etc.
BTW. logging with DL24 electronic load works fine.

Can anyone see what is going wrong.

Thanks in advance.

Edit: Sorry for asking, replaced in RD60XX.txt:

#replacetext RD60xx 60122 with #replacetext RD60xx 60121

Now it works. Happy me.
Thanks HKJ and Mike Lud for the software and RD60XX file.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on January 07, 2021, 08:25:19 pm
Edit: Sorry for asking, replaced in RD60XX.txt:

#replacetext RD60xx 60122 with #replacetext RD60xx 60121

Now it works. Happy me.
Thanks HKJ and Mike Lud for the software and RD60XX file.

HKJ,

I updated the file
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 07, 2021, 08:34:47 pm
I have one question: Is there one or two ID's for the 6012 supply?, i.e. did Riden change the ID at some time?

I.e. if anybody reading here has a RD6012 working with the current software, please say.
Title: Re: Program that can log from many multimeters.
Post by: MikeLud on January 07, 2021, 08:37:37 pm
I have one question: Is there one or two ID's for the 6012 supply?, i.e. did Riden change the ID at some time?

I.e. if anybody reading here has a RD6012 working with the current software, please say.
HKJ,

I am not sure, I only have a 6006.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 08, 2021, 08:26:13 am
I have one question: Is there one or two ID's for the 6012 supply?, i.e. did Riden change the ID at some time?

I.e. if anybody reading here has a RD6012 working with the current software, please say.
HKJ,

I am not sure, I only have a 6006.

I also don't know, I am using the modified firmware by Unisoft (which is great),
could that anything have to do with that? I don't know.
Also saw that there was an error in current settings.

#scpiCmd ISet holding 0x09 (value) *1000
#scpiCmd ISet? holding? 0x09 /1000
must be:
#scpiCmd ISet holding 0x09 (value) *100
#scpiCmd ISet? holding? 0x09 /100

maybe more to do, don't know yet, will experiment later,
I have to be more involved with testcontroller first.

Maybe the problem is because the 6006 measures current with 3 digits and the
6012 with two digits. 3.000A vs 03.00A
Title: Re: Program that can log from many multimeters.
Post by: joxelito on January 15, 2021, 09:29:02 pm
Hi!
Thanks for this great program
I am having issues with BMM AimTTi1908P multimeter with socket connection
I have written a device for this bench multimeter, it works ok but on logs i get occasional lost samples read as 0.

I have tested network, switches, cables, all is ok. On error tested netstat -an on PC with W10, but no problem connection appears as active.

Increasing ;#readingDelay does not make difference. Tested from 2 to 10

On errors some values appear on command window.
Attached is a log chart, also the commad window, on some errors I changed de PS value manually to check if system was locked. I set up an alarm and changed voltage as soon as I heard the sound.

Deviced file is attached too

Title: Re: Program that can log from many multimeters.
Post by: faraday on January 15, 2021, 10:34:38 pm
I really like this APP is simple and powerful.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 16, 2021, 03:36:35 pm
Increasing ;#readingDelay does not make difference. Tested from 2 to 10

Did you try without the semicolon in front?
Title: Re: Program that can log from many multimeters.
Post by: joxelito on January 18, 2021, 09:09:32 pm
Oooops   :palm: I forgot to uncomment it

Now, after testing again with 10 seconds al 3 seconds sampling period and all looks ok
Next test will be 10 seconds an 1 sample per second

I have written another device for the Tenma DC Load, the Farnell EU versión of the famous Koral KEL103
Some minor changes are need on the *IDN? command with respect to de KEL103 Device
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 20, 2021, 12:09:40 pm
Greetings to all.
HKJ, I have an ET5410 electronic load. SCPI control. I can fully control the instrument interface. I had some difficulties in drawing up the menu. Is it possible to make the behavior of "multi Battery_ *" look like the picture. Manage "radio Discharge_Mode"?
I have many questions, I will ask them later.
Code: [Select]
#cmdSetup radio Discharge_Mode BATTERY
:read: BATT:MODE?
:write: BATT:MODE #;[300];CH:MODE BATT;[300]
:update: Discharge_Mode; ; CCCV99
:tip: Set the discharge mode of the battery test
:string:
CC CC
CR CR
:updatemodechange:

#cmdSetup multi Battery_I BATTERY
:read: CURR:BCC1?;CURR:BCC2?;CURR:BCC3?
:readmath: value.replace("R","")
:write: CURR:BCC1 #;[300];CURR:BCC2 #;[300];CURR:BCC3 #;[300]
:update: Battery_I;Discharge_Mode
:tip: Set the constant current current value
Number 1_ I 0 42
Number 2_ I 0 42
Number 3_ I 0 42
:enable: 1

#cmdSetup multi Battery_V BATTERY
:read: VOLT:BCC1?;VOLT:BCC2?;VOLT:BCC3?
:readmath: value.replace("R","")
:write: VOLT:BCC1 #;[300];VOLT:BCC2 #;[300];VOLT:BCC3 #;[300]
:update: Battery_V
:tip: Set the constant current cut-off voltage value
Number 1_ V 0 155
Number 2_ V 0 155
Number 3_ V 0 155
:enable: 1

#cmdSetup multi Battery_R BATTERY
:read: RESI:BCR?;VOLT:BCR?
:readmath: value.replace("R","")
:write: RESI:BCR #;[300];VOLT:BCR #;[300]
:update: Battery_R
:tip: Set the constant resistance cut-off voltage value of battery test mode
Number R_ Om 0 500
Number V_ V 0 155
:enable: 0
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 20, 2021, 05:52:07 pm
HKJ, I have an ET5410 electronic load. SCPI control. I can fully control the instrument interface. I had some difficulties in drawing up the menu. Is it possible to make the behavior of "multi Battery_ *" look like the picture. Manage "radio Discharge_Mode"?

The radio button creates a variable you can test on:

:enable:  BATTERY.Discharge_Mode=="CC"

Remember that programming is case sensitive.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 20, 2021, 06:52:33 pm
The radio button creates a variable you can test on:

:enable:  BATTERY.Discharge_Mode=="CC"

Remember that programming is case sensitive.
HKJ, thanks, it helped.
Tell me, is there an event that handles a click on bookmarks?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 20, 2021, 07:18:51 pm
Tell me, is there an event that handles a click on bookmarks?


I am not sure what you mean by bookmarks.
Mostly you cannot customize the user interface, but there are exceptions:
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 20, 2021, 07:53:05 pm
I would like to make sure that when navigating through the tabs, the interface on the device changes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 20, 2021, 07:59:51 pm
I would like to make sure that when navigating through the tabs, the interface on the device changes.

Tabs don't work that way, but you can use "Selector".
Check bench meters (Like Keysight 344xx) to see it used.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 20, 2021, 08:14:48 pm
I need to do
Code: [Select]
:write: CH:MODE **where ** are interface switching commands, for example
Code: [Select]
:write: CH:MODE {CC|CV|CP|CR|CCCV|CRCV|TRAN|LIST|SCAN|SHOR|BATT|LED}the display switches.
I can do it in "Mode" with the command
Code: [Select]
#cmdMode 11.Battery: write: CH:MODE BATT; [300]
#cmdMode 12.LED: write: CH:MODE LED; [300]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 21, 2021, 09:05:24 am
#cmdMode 11.Battery: write: CH:MODE BATT; [300]
#cmdMode 12.LED: write: CH:MODE LED; [300][/code]

Check a bench DMM definition and the documentation for how to specify a #cmdMode
It is something like this:
Code: [Select]
#cmdMode VDC VOLT
abort
[500]
*cls

And you can add the VDC as fourth parameter to #value commands, this will control enabled columns.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 21, 2021, 09:07:24 pm
Fixed the error and specified the parameter.
Code: [Select]
#askMode CH:MODE?Got an answer
Code: [Select]
Starting
;; Start thread for: COM10 - East Tester ET5410
;; COM10: Set params: 115200
;; : Tx <*IDN?>
;; COM10: Tx: <*IDN?. |..> 2A 49 44 4E 3F 0A 20 7C 2E 0A
;; COM10: Rx: <ET5410 09411912032 V1.02.1901.023 V1.10.1810.018> 45 54 35 34 31
30 20 30 39 34 31 31 39 31 32 30 33 32 20 56 31 2E 30 32 2E 31 39 30 31 2E 30 32
 33 20 56 31 2E 31 30 2E 31 38 31 30 2E 30 31 38
;; COM10: Tx <*TRG>
;; COM10: Tx: <*TRG. |..> 2A 54 52 47 0A 20 7C 2E 0A
;; Found East Tester ET5410 on CP2102 USB to UART Bridge Controller (COM10) sn:
9411912032
;; ET5410: Tx <CH:MODE?>
;; COM10: Tx: <CH:MODE?. |..> 43 48 3A 4D 4F 44 45 3F 0A 20 7C 2E 0A
;; COM10: Rx: <CC> 43 43
;; ET5410: Rx <CC>
In the #cmdMode section
Code: [Select]
#cmdMode 01.CC CC CH:MODE CC;
#cmdMode 02.CV CV CH:MODE CV;
This option works and switches modes.

Code: [Select]
;; ET5410: Tx <CH:MODE CV>
;; COM10: Tx: <CH:MODE CV. |..> 43 48 3A 4D 4F 44 45 20 43 56 0A 20 7C 2E 0A
But then he writes that the CC mode, although in fact CV.
Code: [Select]
;; ET5410: Tx <CH:MODE?>
;; COM10: Tx: <CH:MODE?. |..> 43 48 3A 4D 4F 44 45 3F 0A 20 7C 2E 0A
;; COM10: Rx: <CC> 43 43
;; ET5410: Rx <CC>
CH:MODE?
;; ET5410: Tx <CH:MODE?>
;; COM10: Tx: <CH:MODE?. |..> 43 48 3A 4D 4F 44 45 3F 0A 20 7C 2E 0A
;; COM10: Rx: <CV> 43 56
;; ET5410: Rx <CV>
;; CV
For some reason, after switching, it shows the previous mode.

Sorry for my English. I use google translator
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2021, 10:08:45 am
But then he writes that the CC mode, although in fact CV.

Try writing it the way I do (i.e. multi line), if that works please post again and I will look for a bug in the code.


For some reason, after switching, it shows the previous mode.

Setup pages do not automatic update after a mode change, you have to use a ":updatemodechange:" tag.
It could also be because the load needs some time to switch mode, i.e. you need more delay before asking for mode.

Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 22, 2021, 11:16:01 am
That's right?
Code: [Select]
#cmdMode 01.CC CC CH:MODE CC
abort
[500]
*cls
#cmdMode 02.CV CV CH:MODE CV
abort
[500]
*cls
answer
Code: [Select]
Starting
;; Start thread for: COM10 - East Tester ET5410
;; COM10: Set params: 115200
;; : Tx <*IDN?>
;; COM10: Tx: <*IDN?. |..> 2A 49 44 4E 3F 0A 20 7C 2E 0A
;; COM10: Rx: <ET5410 09411912032 V1.02.1901.023 V1.10.1810.018> 45 54 35 34 31
30 20 30 39 34 31 31 39 31 32 30 33 32 20 56 31 2E 30 32 2E 31 39 30 31 2E 30 32
 33 20 56 31 2E 31 30 2E 31 38 31 30 2E 30 31 38
;; Found East Tester ET5410 on CP2102 USB to UART Bridge Controller (COM10) sn:
9411912032
;; ET5410: Tx <CH:MODE?>
;; COM10: Tx: <CH:MODE?. |..> 43 48 3A 4D 4F 44 45 3F 0A 20 7C 2E 0A
;; COM10: Rx: <CV> 43 56
;; ET5410: Rx <CV>
;; ET5410: Tx <CH:MODE CC>
;; COM10: Tx: <CH:MODE CC. |..> 43 48 3A 4D 4F 44 45 20 43 43 0A 20 7C 2E 0A
;; ET5410: Tx <abort>
;; COM10: Tx: <abort. |..> 61 62 6F 72 74 0A 20 7C 2E 0A
;; ET5410: Delay: 500ms
;; ET5410: Tx <*cls>
;; COM10: Tx: <*cls. |..> 2A 63 6C 73 0A 20 7C 2E 0A
;; ET5410: Tx <CH:MODE?>
;; COM10: Tx: <CH:MODE?. |..> 43 48 3A 4D 4F 44 45 3F 0A 20 7C 2E 0A
;; COM10: Rx: <CC> 43 43
;; ET5410: Rx <CC>
now the answer to the command "CH:MODE?" right
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2021, 11:35:15 am
That's right?

Code: [Select]
#cmdMode 01.CC CC
CH:MODE CC
[500]

#cmdMode 02.CV CV
CH:MODE CV
[500]

Try without the [500] and also with some shorter time.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 22, 2021, 12:05:33 pm
The error appears if the delay is less than [200]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2021, 01:07:20 pm
The error appears if the delay is less than [200]

This means the load need 0.2 second to change mode. This time may not be the same between all the modes and you will want to use the slowest change time.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 22, 2021, 03:58:25 pm
I think I understood the ideology of the Mode button and the Selector. But I got new problems. I am using Selector and multi does not fill when switching Mode. If multi is omitted below selector, then they start working. What could be the mistake?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2021, 04:04:43 pm
I think I understood the ideology of the Mode button and the Selector. But I got new problems. I am using Selector and multi does not fill when switching Mode. If multi is omitted below selector, then they start working. What could be the mistake?

That sounds like a bug in my code, I will have to look at it, probably tomorrow.

You might be able to use numberDual instead for some of the cases.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 23, 2021, 08:23:40 am
You might be able to use numberDual instead for some of the cases.
Also unreadable :(
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2021, 10:26:05 am
You might be able to use numberDual instead for some of the cases.
Also unreadable :(

I tested with numberDual inside selector and it worked fine for me.
multi is fixed and I will update a new version later today.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2021, 02:09:17 pm
V1.51 is up.
It contains bug fixes, a new device, some function and a bit more for GridPanel
   Added: GridPanel dual chart and min/max chart
   Fixed: Multi control did not work inside Selector control.
   Added: Tenma 72-132xx, thanks joxelito
   Changed: ID for RD6012 power supply and modified scale factor, thanks Pukker & MikeLud
   Added: Log message if #askValues is undefined.
   Fixed: String with binary values did not always convert correctly, used in protocol definitions.
   Added: binConvBit(value,index,count{,signed}) to use when processing binary answers
   Added: binConv(value,index,count{,signed{,swap}}) to use when processing binary answers
   Added: hex(value,digits), i.e. a version of hex where number of digits can be specified.


(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DualCharting.png)

A small chart that can show two channels, i.e. a current and voltage for a power supply or load.

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/MinMaxChart.png)

A min/max/average chart, this will show small spikes in a long data set.



Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 23, 2021, 02:57:38 pm
That sounds like a bug in my code, I will have to look at it, probably tomorrow.
You might be able to use numberDual instead for some of the cases.
On version 1.51 multi everything works correctly

There is also such a question.
How can I turn off the automatic conversion of 0.1 to 100m?
Artifacts during Selector operation and interface redrawing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2021, 03:31:23 pm
How can I turn off the automatic conversion of 0.1 to 100m?

You cannot.
Maybe adding a tag to change number format could be useful for some devices.

Artifacts during Selector operation and interface redrawing.

I have not seen that before, I wonder where that issue comes from. As a workaround you can try using _Volts_ and see if it works.
I will see if I can reproduce it (That is required before I can fix it).
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 23, 2021, 06:43:12 pm
Help me figure out the timer.
To write the value I need to write the value in seconds
TIME: WA 59.999
TIME: WA? the answer is obtained in microseconds
TIME: WA 59999
How to format a response or record in the MULTI control?

Code: [Select]
#cmdSetup multi Level_A_C
:read: CURR:TA?;TIME:WA?;
:readmath: value.replace("R","")
:write: CURR:TA #;[300];TIME:WA #;[300];
:enable: Tran_State=="CC"
:tip: Set the dynamic test A value
Number I A 0 40
Number T s 0 60000
:updatemodechange:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2021, 06:53:26 pm
Help me figure out the timer.
To write the value I need to write the value in seconds
TIME: WA 59.999
TIME: WA? the answer is obtained in microseconds
TIME: WA 59999
How to format a response or record in the MULTI control?

You need to use :readmath: to scale the value.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 23, 2021, 08:00:45 pm
You need to use :readmath: to scale the value.
In control Number is working correctly. There seems to be an error in Multi.

Code: [Select]
#cmdSetup number Timer test
:read: TIME:WA?;
:readmath: (value.replace("R",""))/1000
:write: TIME:WA #;[300];
:update: Level_A_C
:tip: Set the delay shutdown time to query the current delay shutdown time value
Seconds 0 60
:updatemodechange:

#cmdSetup multi Level_A_C
:read: CURR:TA?;TIME:WA?;
:readmath: value.replace("R","");(value.replace("R",""))/1000
:write: CURR:TA #;[300];TIME:WA #;[300];
:enable: Tran_State=="CC"
:update: Timer
:tip: Set the dynamic test A value
Number Curr A 0 40
Number Width s 0 60
:updatemodechange:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2021, 08:43:30 pm
In control Number is working correctly. There seems to be an error in Multi.

The problem is that you are getting a string with both values, you need to add code to split the string and then scale each value according and then return a string with the correct values. This is not a simple operation, but not that hard either.
Title: Re: Program that can log from many multimeters.
Post by: joxelito on January 23, 2021, 09:38:25 pm
What is wrong with this command?

I want to calculate Energy from product of Voltage * Current

Code: [Select]
;; #math EnergyCh Wh SumTimeHour 0 (nameVoltage(load) * nameValue(bmm)) failed due to *
nameVoltage(load) * nameValue(bmm)____<----____
Title: Re: Program that can log from many multimeters.
Post by: Helix70 on January 24, 2021, 02:24:46 am
Are there any plans to support VISA drivers or Agilent 82357B USB GPIB interfaces?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 24, 2021, 07:41:45 am
The problem is that you are getting a string with both values, you need to add code to split the string and then scale each value according and then return a string with the correct values. This is not a simple operation, but not that hard either.
Syntactically correct?
Code: [Select]
#cmdSetup multi Level_A_C
:read: CURR:TA?;TIME:WA?;
:readmath: getElement(value,0).replace("R","")+" "+ (getElement(value,1).replace("R",""))/1000
:write: CURR:TA #;[300];TIME:WA #;[300];
:enable: Tran_State=="CC"
:update: Timer
:tip: Set the dynamic test A value
Number Curr A 0 40
Number Width s 0 60
:updatemodechange:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 24, 2021, 12:49:04 pm
Are there any plans to support VISA drivers

If I find a good Java VISA library I may look at it.

or Agilent 82357B USB GPIB interfaces?

Probably not, the AR488 is a cheap and simple solution for GPIB.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 24, 2021, 12:54:41 pm
Syntactically correct?

No:
replace(getElement(value,0),"R","")+" "+(replace(getElement(value,1),"R","")/1000.0)

If you are in doubt how something works, you can use a "displayVar()" function to show the result.


You can test expression on the command line, just do something like this:
=var value="3.4R 5R"
=replace(getElement(value,0),"R","")+" "+(replace(getElement(value,1),"R","")/1000.0)
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on January 25, 2021, 03:57:36 am
Hello HKJ,

Thanks for creating and maintaining a very useful program. I have been using TestController with Atorch DL24P successfully. It connects to DL24P right away every time. However, I recently added another Atorch device called JL24, but Test Controller is not working with it reliably. Test Controller can connect to JL24, but it doesn't always start reading values from it.

JL24 is an AC Device that uses the same protocol as Atorch AT3010, so I added it as AT3010 in Load Devices screen. When I reconnect devices, Test Controller successfully recognize it as AT3010, and says, "Found AT3010" in Commands screen. However, all values in Current Values screen are zero. Sometimes, actual values show up right away. Sometimes, actual values show up after 20-30 seconds. But most of time, I never see actual values. All I see are zeroes. I deleted the device, re-added it, and reconnected it, but that didn't make any difference. It only starts reading actual values roughly 1 out of 20 times I start Test Controller. It's very frustrating.

After reading posts in this thread's page 50 and on, I used termite to dump the data sent from JL24 over the serial port. I attached it to this post. I compared it to the AC Device protocol on the following page to make sure it's the same as AT3010, and it seems so.
https://github.com/NiceLabs/atorch-console/blob/master/docs/protocol-design.md

I also tried Atorch's PC software E_Test, and it connects and read values from JL24 right away every time, so I don't think the serial connection (which is over bluetooth) is a problem. I tried changing the baud rate in the device file, but it didn't help.

Is there any other troubleshooting I can do?

-JK
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 25, 2021, 01:59:05 pm
HKJ, I have a problem again. String formatting happens in a strange way. I don’t know how to solve this issue.
An extra section is added at the beginning and the last one is cut off.
The load is off.
Code: [Select]
;; ET5410: Tx <MEAS:CURR?>
;; ET5410: Rx <R 0.000>
;; ET5410: Tx <MEAS:VOLT?>
;; ET5410: Rx <R15.833>
;; ET5410: Tx <MEAS:POWE?>
;; ET5410: Rx <R  0.00>
;; ET5410: Tx <MEAS:RESI?>
;; ET5410: Rx <R 0.000>
;; ET5410: Tx <BATT:CAPA?>
;; ET5410: Rx <R 0.000>
;; ET5410: Rx after :readmath: replace(value,"R","") < 0.000 15.833   0.00  0.000  0.000>
;; ET5410: Rx as numbers <0.0 0.0 15.833 0.0 0.0>
The load is on, current =15A
Code: [Select]
;; ET5410: Tx <MEAS:CURR?>
;; ET5410: Rx <R15.001>
;; ET5410: Tx <MEAS:VOLT?>
;; ET5410: Rx <R14.462>
;; ET5410: Tx <MEAS:POWE?>
;; ET5410: Rx <R216.60>
;; ET5410: Tx <MEAS:RESI?>
;; ET5410: Rx <R  0.96>
;; ET5410: Tx <BATT:CAPA?>
;; ET5410: Rx <R 0.006>
;; ET5410: Rx after :readmath: replace(value,"R","") <15.001 14.462 216.60   0.96  0.006>
;; ET5410: Rx as numbers <15.001 14.462 216.6 0.96 0.006>
The load is on, current =2.2A
Code: [Select]
;; ET5410: Tx <MEAS:CURR?>
;; ET5410: Rx <R 2.208>
;; ET5410: Tx <MEAS:VOLT?>
;; ET5410: Rx <R15.346>
;; ET5410: Tx <MEAS:POWE?>
;; ET5410: Rx <R  0.00>
;; ET5410: Tx <MEAS:RESI?>
;; ET5410: Rx <R 0.000>
;; ET5410: Tx <BATT:CAPA?>
;; ET5410: Rx <R 0.066>
;; ET5410: Rx after :readmath: replace(value,"R","") < 2.208 15.346   0.00  0.000  0.066>
;; ET5410: Rx as numbers <0.0 2.208 15.346 0.0 0.0>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2021, 06:24:14 pm
Is there any other troubleshooting I can do?

I have four protocols for ATorch called: AC/DC/DCLoad/USB
If none of them works I need both communications data and display readings and I will try if I can match it up.
There is not device defined for the DC type, you can add that in the ATorchDevice file by defining a #metadef with #sections DC_DEVICE.
   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2021, 06:26:42 pm
HKJ, I have a problem again. String formatting happens in a strange way. I don’t know how to solve this issue.
An extra section is added at the beginning and the last one is cut off.

Look like you have problems with a leading space, try adding a trim(replace(...))
Title: Re: Program that can log from many multimeters.
Post by: electronrancher on January 26, 2021, 03:47:50 am
Hello HKJ,

I would like to log from an arduino project, multiple datas that are sent over USB serial every 1 second or so.

I do not see an good example of how to parse ascii text, could you point me to one?  I can surely format the text in any convenient manner the tool needs,, but my micro does not have enough space to impement SCPI.

My current formatting is something like
V=2500mV
I=372mA
Q=15873mAh

Number of digits in each field is currently variable but could me made fixed if it is easier.
Do you have a suggestion on how i could parse it in to testcontroller?  Thanks in advance for any advice
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2021, 06:42:47 am
I would like to log from an arduino project, multiple datas that are sent over USB serial every 1 second or so.

I do not see an good example of how to parse ascii text, could you point me to one?  I can surely format the text in any convenient manner the tool needs,, but my micro does not have enough space to impement SCPI.

A simple SCPI do not take up much space, this one will work:
Code: [Select]

const int BUF_SIZE=100;
char cmdBuf[BUF_SIZE];

double s1=0;

void setup() {
  Serial.begin(9600);
  unsigned long t = millis();
  while (!Serial && millis() - t < 3000); // Wait for USB connection to get ready, but do not hang when running without USB
}

void loop() {
  if (Serial.available() > 0) {
    int n = Serial.readBytesUntil('\n', cmdBuf, BUF_SIZE-1);
    if (n > 0) {
      *(cmdBuf + n) = 0;
      strlwr(cmdBuf);
      char* cmd = strtok(cmdBuf, " ");
      if (strcmp(cmd, "*idn?") == 0) {
        // Device name
        Serial.print("HKJ,Test,1,1\n");
      } else if (strcmp(cmd, "values?") == 0) {
        // Measured values
        Serial.print("1 2 3\n");
      } else if (strcmp(cmd, "set?") == 0) {
        // Read setting
        Serial.print(s1);
        Serial.print("\n");
      } else if (strcmp(cmd, "set") == 0) {
        // Set setting
        char *p = strtok(NULL, " ");
        if (p != NULL) {
          s1 = atof(p);
        }
      }
    }
  }
}

The definition file:
Code: [Select]

; TestController must be restarted before any changes in this file will be used.

; Manual is here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html

#idString HKJ,Test,
#name HKJ Test
#handle Test
#port comfixedbaud
;#port com
; Alternate port types: comnobaud or com, com lets the user define baudrate on the "Load devices" page
#baudrate 115200


; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
; Format: #value ColumnName Unit Format {Selector}
; Selector is only used when column layout varies with mode, this often require the use of #cmdMode
#value Voltage1 V X8
#value Voltage2 V X8
#value Voltage3 V X8

; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; Number of returned values must match number of columns defined with #value
; This is a single line command
#askValues values?



#cmdSetup number Set
:read: set?
:write: set #
V 0 500 t1

The above device is for a ATMega 32U4, serial port must be initialized different for other ATMega processors.


For this to work well it is best if the loop is performed many times each second.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 26, 2021, 08:37:52 am
Look like you have problems with a leading space, try adding a trim(replace(...))
Thanks HKJ. This is the right decision.
I am not good at the syntax of the TestController program. How to write a value depending on another selected value in radio?
Code: [Select]
#cmdSetup radio Range_I_
:read: LOAD:CRANge?;
:write: LOAD:CRANge #;[300]; <<--here
:string:
Low_(3.100A)  LOW
High_(42.00A) HIGH
Something like that
if LOAD:CRANge?=="HIGH"  then :write: LOAD:CRANge #;[300];CURR:IMAX 42 else :write: LOAD:CRANge #;[300];CURR:IMAX 3.1
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2021, 10:39:40 am
Something like that
if LOAD:CRANge?=="HIGH"  then :write: LOAD:CRANge #;[300];CURR:IMAX 42 else :write: LOAD:CRANge #;[300];CURR:IMAX 3.1

With two values you can use: (value=="HIGH"?32:3.1), i.e. the ?: operator
TC maps the value to the variable "value" when using expressions, for lines without expressions # can be used.

The write statement would be:
:write: LOAD:CRANge (value);[300];CURR:IMAX (value=="HIGH"?32:3.1)
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on January 26, 2021, 06:31:46 pm
:write: LOAD:CRANge (value);[300];CURR:IMAX (value=="HIGH"?32:3.1)
Thanks HKJ.
How can you dynamically change the limit values? For example in the photo.
Perhaps via a global variable or is there another way?
Title: Re: Program that can log from many multimeters.
Post by: electronrancher on January 26, 2021, 10:54:24 pm
Thank you for the code and definition.  I am seriously considering changing over my software, but I am reluctant to tear up my already working command interpreter.  Maybe I will clean up and finish this version and switch it over to SCPI in the next revision.

So am I correct in thinking there is not an easy way for testcontroller to parse my output without querying?
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 27, 2021, 07:11:48 am
Hello HKJ,

Thanks for creating and maintaining a very useful program. I have been using TestController with Atorch DL24P successfully. It connects to DL24P right away every time. However, I recently added another Atorch device called JL24, but Test Controller is not working with it reliably. Test Controller can connect to JL24, but it doesn't always start reading values from it.

Hello jk2017,
You have succes with DL24P.
Please can you share your device file for it.
I have faulty readings. Some values are correct,
some not all digits and some complete wrong.
I couldn't fix it myself.
Thanks anyway.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 27, 2021, 03:17:26 pm
:write: LOAD:CRANge (value);[300];CURR:IMAX (value=="HIGH"?32:3.1)
Thanks HKJ.
How can you dynamically change the limit values? For example in the photo.
Perhaps via a global variable or is there another way?

At the current time it is not possible to use variable limits.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 27, 2021, 03:27:12 pm
Thank you for the code and definition.  I am seriously considering changing over my software, but I am reluctant to tear up my already working command interpreter.  Maybe I will clean up and finish this version and switch it over to SCPI in the next revision.

So am I correct in thinking there is not an easy way for testcontroller to parse my output without querying?

Yes, TC has a couple of different drivers to handle different formats, but none of them are designed for multiline formats.

You may be able to do something with the ascii driver by defining the newline as a h and defining a #rxMask
This feature is undocumented at the current time, but used in the "Electronic Load XY-FX25.txt" driver.
Title: Re: Program that can log from many multimeters.
Post by: Adrian_Arg. on January 27, 2021, 08:58:22 pm
What will be the problem? ChartT, Histogram, ramge tabs are disabled when I connect the ut61c Unit, not when it runs in demo mode.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 27, 2021, 09:42:09 pm
What will be the problem? ChartT, Histogram, ramge tabs are disabled when I connect the ut61c Unit, not when it runs in demo mode.

You have to log (or load) some data first to enable these tabs.
Title: Re: Program that can log from many multimeters.
Post by: Adrian_Arg. on January 28, 2021, 12:00:12 am
 :-// :-//
Title: Re: Program that can log from many multimeters.
Post by: gby on January 28, 2021, 01:39:13 am
Hi HKJ,

Having an issue with the deviceWrite function.  I am using the #driver ascii serial driver over a real serial port.  Below is a short demo program:

Code: [Select]
=var drive=getDevice("Servo")
="Found servo drive "+drive+"."
= deviceWrite((drive),"Command "+2)
= deviceRead((drive),"Command "+2)

and here is the DOS debug window result:

Code: [Select]
=var drive=getDevice("Servo")
="Found servo drive "+drive+"."
;; Found servo drive S200.
= deviceWrite((drive),"Command "+2)
;; S200: Tx <S200Command 2>
= deviceRead((drive),"Command "+2)
;; S200: Tx <Command 2>
;; S200: Tx <txrxnBin? 2 \x13\x64\x15\x08>
;; COM1: TxBin: <.d..> 13 64 15 08
;; COM1: RxBin: 64 08
;;2148

The deviceRead works fine but the DOS debug trace shows deviceWrite as
   S200: Tx <S200Command 2>
which is putting the device name "S200" inside the command.  Since the device file has no SCPI "S200Command" command, then nothing is transmitted.  So, either the deviceWrite command is not symmetric in syntax to the deviceRead or there is a bug with deviceWrite.  I am running Ver 1.51.

No hurry since I can use the deviceRead command for now.

PS  Thanks for the updates in Ver 1.51.  I really appreciate the fix, functionality enhancement for the serial interface.  The the binConv() function is handy too.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on January 28, 2021, 05:55:05 pm
HKJ,

I guess I didn't describe my problem well. When it's working, Test Controller can read correct values from JL24 using AC protocol. So, I think the device definition is fine. I attached a photo of JL24's screen and serial dump I just took just in case.

My problem is, Test Controller does not always start reading values from JL24. It recognizes JL24 (as AT3010) but does not start reading values. I wait for a few minutes, but it will not read values. So, I shutdown Test Controller, restart it, and I repeat the process. Then, once in 20 times or so, Test Controller starts reading values from JL24. Once it starts reading values, it will keep reading correct values from JL24.

Thanks,
-JK
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on January 29, 2021, 04:34:30 am

Hello jk2017,
You have succes with DL24P.
Please can you share your device file for it.
I have faulty readings. Some values are correct,
some not all digits and some complete wrong.
I couldn't fix it myself.
Thanks anyway.

I just use the device that came with TC. I didn't change anything, and it works flawlessly for my DL24P.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 29, 2021, 08:33:48 am
putting the device name "S200" inside the command.  Since the device file has no SCPI "S200Command" command, then nothing is transmitted.  So, either the deviceWrite command is not symmetric in syntax to the deviceRead or there is a bug with deviceWrite.  I am running Ver 1.51.

No hurry since I can use the deviceRead command for now.

It will be fixed in next version.

PS  Thanks for the updates in Ver 1.51.  I really appreciate the fix, functionality enhancement for the serial interface.  The the binConv() function is handy too.

It is always possible to ask for functions and I will consider it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 29, 2021, 08:38:36 am
My problem is, Test Controller does not always start reading values from JL24. It recognizes JL24 (as AT3010) but does not start reading values. I wait for a few minutes, but it will not read values. So, I shutdown Test Controller, restart it, and I repeat the process. Then, once in 20 times or so, Test Controller starts reading values from JL24. Once it starts reading values, it will keep reading correct values from JL24.

My only guess is that my initialization do not wait long enough for the first answer. In next version I will increase the timeout from 1.5s to 2.5s.

Please report if it works fine when I upload next version, then I will add JL24 as a duplicate of AT3010
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 29, 2021, 10:26:34 am
:-// :-//

Press the log button, select 1 second. The tabs will be enabled after a second or two.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 29, 2021, 12:16:18 pm

Hello jk2017,
You have succes with DL24P.
Please can you share your device file for it.
I have faulty readings. Some values are correct,
some not all digits and some complete wrong.
I couldn't fix it myself.
Thanks anyway.

I just use the device that came with TC. I didn't change anything, and it works flawlessly for my DL24P.

Thanks for reply jk2017.
I am getting wrong values with DL24.
I tested the PX100 logging software from:
https://github.com/misdoro/Electronic_load_px100
and have good values then.
Don't have the programming skills to correct it by myself.
See pictures from:
1 - commandline data from PX100 program,
2 - PX100 mainscreen, with correct values,
3 - commandline data from Testcontroller program,
4 - Values from Testcontroller program.

Not complaining anyone, just to inform.

Thanks HKJ and other for the work and additions.

Bad englisch, sorry for that.

Edit: for who can handle it, I can't, attached the binary protocol
used by the programmer of the PX100 software.
https://github.com/misdoro/Electronic_load_px100/blob/master/protocol_PX-100_2_70.md


Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 29, 2021, 03:49:15 pm
I am getting wrong values with DL24.
I tested the PX100 logging software from:
https://github.com/misdoro/Electronic_load_px100 (https://github.com/misdoro/Electronic_load_px100)
and have good values then.

Interesting, according to the documentation for the px100 software it uses a completely different protocol.
If somebody could capture some of it (I need something to test with) I will try to implement it.
I prefer to get hex dumps and not binary files of protocols.

I need both transmitted and received messages, this can be done with Termite in forward mode and hex enabled (Link: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm)). Note: It requires 3 serial ports.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 31, 2021, 10:09:05 am

Interesting, according to the documentation for the px100 software it uses a completely different protocol.
If somebody could capture some of it (I need something to test with) I will try to implement it.
I prefer to get hex dumps and not binary files of protocols.

I need both transmitted and received messages, this can be done with Termite in forward mode and hex enabled (Link: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm)). Note: It requires 3 serial ports.

Attached a log file and a picture of values from PX100 software.
made it with Eltima Serial Port Monitor, because I didn't get Termite to work.
Don't know if it is helpfull, just a try.

Started Serial Port Monitor, started and stopped PX100 software and exported the dump file.

I hope with permisson of Misdoro (author of PX100 software)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 03, 2021, 11:40:03 am
V1.52 is up
This is a minor update with a new driver for ATorch electronic loads
   Added: ATorch PX100 protocol for electronic loads.
   Changed: Timeout for connecting to Atorch protocol changed from 1.5s to 2.5s
   Fixed: deviceWrite, it included the device handle in the string.

Thanks to Pukker for the hex dumps.
The new driver is in the file ATorchPX100Devices and it contains a PX100 device.
The limits is probably wrong and must be adjusted.
For other ATorch devices duplicate the #metadef section and adjust the name and parameters accordingly.
Also remember to remove duplicate devices from AtorchDevices file.

Please post the updates here and I will include them in the next release.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 03, 2021, 09:41:07 pm
V1.52 is up
This is a minor update with a new driver for ATorch electronic loads
   Added: ATorch PX100 protocol for electronic loads.
   Changed: Timeout for connecting to Atorch protocol changed from 1.5s to 2.5s
   Fixed: deviceWrite, it included the device handle in the string.

Thanks HKJ
Works fine now. Handy DL24 and RD6012 in one program

Made a modification for some values, some cosmetic, some usefull for me.

Changed section is:

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D8, X0..X8)
; Format: #value ColumnName Unit Format
#value Voltage V D3
#value Current A D3
#value Capacity Ah D3 
#value Energy Wh D1              *** Was D3, but last two digits not used and send by load and so display equal to display on the load.  25,6 in stead of 25,600
#value Temperature °C D0      *** Added, for me it is nice to check the temperature of the load in Testcontroller. Sends only full degrees.
#value Time Sec. D0                 *** Added, for me nice to see the real running time of the load in Testcontroller.

; How to poll for data, this is used for table and #values?
; Number of returned values must match number of columns defined with #value
; This is a single line command
#askValues voltage?;current?;capacity?;energy?;temperature?;time?;


attachements are
ATorchPX100Devices.txt (modded fileJ)
ATorchPX100DevicesJ_mod.txt (only modded section as above) 
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on February 04, 2021, 01:17:39 am
V1.52 is up
This is a minor update with a new driver for ATorch electronic loads
   Added: ATorch PX100 protocol for electronic loads.
   Changed: Timeout for connecting to Atorch protocol changed from 1.5s to 2.5s
   Fixed: deviceWrite, it included the device handle in the string.

Thanks to Pukker for the hex dumps.
The new driver is in the file ATorchPX100Devices and it contains a PX100 device.
The limits is probably wrong and must be adjusted.
For other ATorch devices duplicate the #metadef section and adjust the name and parameters accordingly.
Also remember to remove duplicate devices from AtorchDevices file.

Please post the updates here and I will include them in the next release.

Hi HKJ,

I have to regrettably inform you that V1.52 didn't work with JL24, either. Nothing seems to have changed. Please let me know if there is any troubleshooting I can do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2021, 08:24:45 am
I have modified the PX100 definition to include DL24 and DL24P, I have also changed a D3 to D1, but I have not included the time & temperature.
Pukker and everybody else that wants them are, of course, welcome to add them again to their version.

I have also added a interface definition, this means the load will work with the load scripts, including the included "Battery discharge test" and "Load current sweep"

With the JL24 I do not have any good ideas. Do it connect more often now or is it the same?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on February 05, 2021, 08:48:09 am
Hi HKJ.
You have an example of how to add calculated values to a chart. For example energy or capacitance based on current and voltage.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2021, 09:30:17 am
Hi HKJ.
You have an example of how to add calculated values to a chart. For example energy or capacitance based on current and voltage.

Press F1 on the Math page, you will then get this page: https://lygte-info.dk/project/TestControllerMath%20UK.html (https://lygte-info.dk/project/TestControllerMath%20UK.html)

There are a couple of examples on the page, including power, capacity and energy.

Calculated values can be added before logging or after logging, but not during logging. It is also possible to change the formula after logging, then the calculated value will be update from the changed formula.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 05, 2021, 05:25:19 pm
I have modified the PX100 definition to include DL24 and DL24P, I have also changed a D3 to D1, but I have not included the time & temperature.
Pukker and everybody else that wants them are, of course, welcome to add them again to their version.

Thanks for the new file. hmm, Yes, I've included the time and temperature.
I am facing a strange problem when using two units at the same time.
DL24 and RD6012. When I connect one of them they work perfect.
When starting both of them I have dropouts in the readings from the DL24.
Voltage, current, capacity reading jumps from correct to zero and back.
Only when I connect to the two units. See pictures.
The RD6012 as source and DL24 as load. Readings from RD6012 are stable.
Experimented with Readdelays, but no improvement.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2021, 05:43:18 pm
I am facing a strange problem when using two units at the same time.
DL24 and RD6012. When I connect one of them they work perfect.
When starting both of them I have dropouts in the readings from the DL24.
Voltage, current, capacity reading jumps from correct to zero and back.
Only when I connect to the two units. See pictures.
The RD6012 as source and DL24 as load. Readings from RD6012 are stable.
Experimented with Readdelays, but no improvement.

I have no good idea, in TestController the two devices runs in separate threads, i.e. they are not supposed to affect each other in any way.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 06, 2021, 04:23:05 pm
I am facing a strange problem when using two units at the same time.
DL24 and RD6012. When I connect one of them they work perfect.
When starting both of them I have dropouts in the readings from the DL24.
Voltage, current, capacity reading jumps from correct to zero and back.
Only when I connect to the two units. See pictures.
The RD6012 as source and DL24 as load. Readings from RD6012 are stable.
Experimented with Readdelays, but no improvement.

I have no good idea, in TestController the two devices runs in separate threads, i.e. they are not supposed to affect each other in any way.

One idea, but probably not very good.
Try adding a:

#readingDelay 2

After the #askValues line.

Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 06, 2021, 08:34:13 pm
I am facing a strange problem when using two units at the same time........


I have no good idea, in TestController the two devices runs in separate threads, i.e. they are not supposed to affect each other in any way.

One idea, but probably not very good.
Try adding a:

#readingDelay 2

After the #askValues line.

Thanks HKJ for your attention, but does not help.

I saw later that I have, with only DL24 connected, also have some dropouts.
random after 20 minutes, 13 minutes and so on. No consequent pattern.
With both connected much more.

I have 2 DL24's, one older 2-wire version and one 4-wire version.
Both the same behaviour. Another and faster laptop shows the same behaviour.
Changed USB-cables, same behaviour.
Test with Battery test script, so I can see and hear Beep when there is a dropout,
because DL24 stops and beeps.

B.T.W. Strange me, how more struggling, how more I like the program.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on February 06, 2021, 10:55:05 pm

With the JL24 I do not have any good ideas. Do it connect more often now or is it the same?

It seems about the same. But I noticed a difference between DL24P and JL24. DL24P sends data once every second regularly. On the other hand, JL24 sends data 3 to 5 times every second. It's continuous and fast. I recorded short movies of Termite outputs for both.
DL24P:
https://photos.app.goo.gl/o9YzSxjNgBEb4frV8

JL24:
https://photos.app.goo.gl/12FtvHFSGrgES1FS9

When I save the data from both devices using Atorch E_Test software, I get something like the following. Columns are Time, Voltage, Amps, and Watts.

DL24P:
16:48:47            12.4                6.997               86.7628
16:48:48            12.4                6.998               86.7752
16:48:49            12.4                6.997               86.7628
16:48:50            12.4                7.003               86.8372
16:48:51            12.4                7.002               86.8248
16:48:52            12.4                7.002               86.8248
16:48:53            12.4                6.997               86.7628
16:48:54            12.4                7.003               86.8372

JL24:
15:05:23            112.4               5.359               604.7
15:05:24            112.4               5.359               604.6
15:05:24            112.4               5.361               604.8
15:05:24            112.4               5.361               604.8
15:05:24            112.4               5.361               604.9
15:05:25            112.4               5.362               604.9
15:05:25            112.4               5.362               604.9
15:05:25            112.4               5.362               605
15:05:25            112.4               5.362               605
15:05:26            112.4               5.363               605.1
15:05:26            112.4               5.363               605
15:05:26            112.4               5.363               605
15:05:27            112.4               5.364               605.1
15:05:27            112.4               5.363               605
15:05:27            112.4               5.364               605.2
15:05:27            112.4               5.363               605

Does this give you any clue?

Thanks,
-JK
Title: Re: Program that can log from many multimeters.
Post by: nightfire on February 07, 2021, 12:23:59 am
As of today, I am a proud owner of a rebadged Korad KEL102 electronic load. Opened it, on the PCB it identifies as Korad, and the USB connect also comes up with a Korad ID.
Managed to download a Korad software package from a trusted german retailer, extracted the USB virtual COM driver installed it and was ready  to go.
(Attention: You can connect to that virtual COM with Putty or similar program to set off the commands, BUT you have to turn local echo on, and probably flow control off)

Name of the Unit is: Stamos Soldering S-LS-60, got it to work by adding the below snippets to the Korad103.txt definition file:

#metadef
#idString S-LS-60
#name Stamos S-LS-60
#handle Stamos S-LS-60
#replaceText MaxPower 150


Up until now, I only did some short tests via USB, as the next days will be packed with other stuff. Network tests etc. will hopefully be done the next weekend, as I have some free days off work after that. Nice thing: My Agilent U1272 agrees to the measured voltage with +/- 1mV, which is well within spec of those devices...

Note: Got that unit from a german/polish reseller, brand new, for a bit under 200 € incl. shipping- whereas a "genuine" badged KEL102 goes for around 300€ from trusted shops in germany...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 07, 2021, 09:26:46 am
It seems about the same. But I noticed a difference between DL24P and JL24. DL24P sends data once every second regularly. On the other hand, JL24 sends data 3 to 5 times every second. It's continuous and fast. I recorded short movies of Termite outputs for both.

Does this give you any clue?

Could you do it again with the JL24 and post the hex dump from Termite (for a couple of seconds), together with the readout.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 07, 2021, 09:28:44 am
#metadef
#idString S-LS-60
#name Stamos S-LS-60
#handle Stamos S-LS-60
#replaceText MaxPower 150

I will add this to the next release, but I have changed the handle to "SLS60". It must not contain spaces (Because it is used as a variable name) and a short handle is preferable.
Title: Re: Program that can log from many multimeters.
Post by: nightfire on February 07, 2021, 09:39:52 am
Thanks!

Yes, the Name itself contains dashes, and at least they did the rebadging up to the point where in the *IDN? string the device identifies itself correctly as a S-LS-60 containing dashes, followed by version and serial...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 07, 2021, 09:50:55 am
Yes, the Name itself contains dashes, and at least they did the rebadging up to the point where in the *IDN? string the device identifies itself correctly as a S-LS-60 containing dashes, followed by version and serial...

A correct *idn? is four fields: brand,product,serial_number,firmware_version
A lot of the cheap Chinese equipment gets this wrong and for some devices the definition has code to fix it. The popup "List all connected devices" will show the serial_number and firmware_version from a correct *idn? string.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on February 08, 2021, 05:47:38 am

Could you do it again with the JL24 and post the hex dump from Termite (for a couple of seconds), together with the readout.

Attached is photo of JL24's screen and Termite dump. Please let me know if you need anything else.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 09, 2021, 01:38:23 pm
V1.53 is up
Again a minor update.
   Added: JTorch JL24
   Fixed: Some issues with select control and expression and :enable:/:visible: tags.
   Added: :format: tag to all settings with floating point numbers

JL24 needs to be tested and see what parameters is transfers. I did not get any energy values with the test data, but I can calculate that locally if I have power.

The :format: tag can be used to change from the general SI format in number input fields.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on February 09, 2021, 08:58:45 pm
V1.53 is up

JL24 needs to be tested and see what parameters is transfers. I did not get any energy values with the test data, but I can calculate that locally if I have power.


It seems to be working, thank you! TC is reading values from JL24. I logged values for a few seconds while running a 53 W load on JL24. I attached a screenshot and a photo of reading for your examination.

TC is reading energy values as well. However, JL24 has a bug and the transmitted energy value (kWh) is completely wrong. I read TC's document about Math page. If I use SumTimeHour on JL24.Power, I should be able to calculate the energy in Wh, correct?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 10, 2021, 08:19:38 am
If I use SumTimeHour on JL24.Power, I should be able to calculate the energy in Wh, correct?

Yes.
Title: Re: Program that can log from many multimeters.
Post by: ArsenioDev on February 11, 2021, 09:48:30 pm
Will it be possible to add in the Hameg HM7044 quad power supply to the supported devices list?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 12, 2021, 02:06:07 pm
Will it be possible to add in the Hameg HM7044 quad power supply to the supported devices list?

Yes, but I cannot do it, I do not have the supply.

You can do it yourself, check some of the already included power supplies: TTI, R&S

If you have specific questions, I may be able to answer them.

When you have done it post you definition in this thread.

To start a definition you right click in the combobox (on the Load devices page) and select "Create new SCPI definition", it will help you getting the fist few steps done.
Title: Re: Program that can log from many multimeters.
Post by: joxelito on February 13, 2021, 05:56:14 pm
I am facing a strange problem when using two units at the same time.
DL24 and RD6012. When I connect one of them they work perfect.
When starting both of them I have dropouts in the readings from the DL24.
Voltage, current, capacity reading jumps from correct to zero and back.
Only when I connect to the two units. See pictures.

I found same problem using multimeter and dc load together
BMM values sometimes drop to zero, DC Load are always correct.
Swapped switch, cables, no change

Increasing readingDelay on device definition file significantly reduced drops:
Code: [Select]
; Accept this delay when reading values (seconds)
#readingDelay 60

The best solution to remove all drops I found, is defining a new math value with dropout filter in muy scripts.
The filtered value eliminates dropouts and graphs are clean
For example:
Code: [Select]
#math VoltageFiltered A DropOutFilter 30 (nameValue(bmm))
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 15, 2021, 01:39:00 pm
A simple demo project showing how to use a Arduino with TestController:

(https://lygte-info.dk/pic/Projects/TestController/Arduino1/DSC_4211.jpg)
[url=http://lygte-info.dk/project/TestControllerArduino1%20UK.html]http://lygte-info.dk/project/TestControllerArduino1%20UK.html (http://lygte-info.dk/project/TestControllerArduino1%20UK.html)[/url]

If there is interest I can make a article about more advanced interfacing with Arduino or show some examples on simple applications.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 15, 2021, 04:57:07 pm
That would be interesting, just ordered some ADS1115 (16bit ADC) modules and some ACS712 currentsense modules.
Like to experiment with them and learning Arduino better.
In my opinion it is an good opportunity with Testcontroller to make interfaces als you like and need.
Arduino is so an good option to make your own test equipment, make what you need.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 16, 2021, 07:36:59 pm
I am facing a strange problem when using two units at the same time.
DL24 and RD6012. When I connect one of them they work perfect.
When starting both of them I have dropouts in the readings from the DL24.
Voltage, current, capacity reading jumps from correct to zero and back.
Only when I connect to the two units. See pictures.

I found same problem using multimeter and dc load together
BMM values sometimes drop to zero, DC Load are always correct.
Swapped switch, cables, no change


Strange. When I use DL24 and RD6012 together, then just the
DL24 has al lot of dropouts. The RD6012 always gives good readings.

BTW. With DL24 alone I have sometimes a dropout, once after ten minutes,
another try after a half an our. Not predictable.
I also gonna look at an filter function.
The dropout is not an big problem for reading, it also aborts the load.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 17, 2021, 04:39:42 pm
The dropout is not an big problem for reading, it also aborts the load.

Try running TC from a DOS box and post if there are any error messages when the load fails. Do not run in debug mode, just normal, some errors will be shown outside debug mode.
You can also do it from debug mode, but I still want the messages from the DOS window.

The DL24 protocol is not supposed to fail or dropout, it will automatic retry, but it may die on a program error.
Title: Re: Program that can log from many multimeters.
Post by: joxelito on February 17, 2021, 06:27:12 pm
A simple demo project showing how to use a Arduino with TestController:

(https://lygte-info.dk/pic/Projects/TestController/Arduino1/DSC_4211.jpg)
[url=http://lygte-info.dk/project/TestControllerArduino1%20UK.html]http://lygte-info.dk/project/TestControllerArduino1%20UK.html (http://lygte-info.dk/project/TestControllerArduino1%20UK.html)[/url]

If there is interest I can make a article about more advanced interfacing with Arduino or show some examples on simple applications.
Some basic function like relay on / off for controling end of charge of LiIon battery with non programmable PS  would be nice.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 18, 2021, 06:02:49 am
Some basic function like relay on / off for controling end of charge of LiIon battery with non programmable PS  would be nice.

I have already made a digital I/O example where you can connect a relay to one of the outputs, but I need to add a few more examples before I publish.

Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 18, 2021, 06:40:56 pm
Try running TC from a DOS box and post if there are any error messages when the load fails. Do not run in debug mode, just normal, some errors will be shown outside debug mode.
You can also do it from debug mode, but I still want the messages from the DOS window.

The DL24 protocol is not supposed to fail or dropout, it will automatic retry, but it may die on a program error.

OK, cannot try at this moment, will take a look as soon as possible.
Title: Re: Program that can log from many multimeters.
Post by: ArsenioDev on February 19, 2021, 04:33:55 am
Ok so updates: My Korad KA3005P isn't responding due to the test controller sending the "0A" character appended to the end of the "*IDN?", couldn't get tinkering with the #eol to fix it either, really getting a headscratcher here.

Second, the Hameg power supply arrived and I'm hilariously lost again on the control interface writing, can't quite figure out how to enable 8n2 and just a carriage return. Further the readout and separation into vars isn't super well documented in the files and I'm not sure of the difference between the ASCII/Modbus/SCPI drivers?
Here's the Hameg manual, the important stuff is on page 24/25. https://cdn.rohde-schwarz.com/hameg-archive/HM7044_D_E_F_S.pdf
Any help would REALLY be appreciated, Thanks!
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 19, 2021, 01:08:32 pm
I have tested DL24 with testcontroller from Command prompt.
Works as normal, with Dropouts, and NO errors in Dos box.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 19, 2021, 01:20:42 pm
I have tested DL24 with testcontroller from Command prompt.
Works as normal, with Dropouts, and NO errors in Dos box.

That is a bit strange, as long as I receive messages I will update the value and if the serial port fails or there are trouble decoding the driver will fail with a error message to the console.
The only way it can stop silent is if the ATorch device stop sending data without closing the connection.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 19, 2021, 01:36:04 pm
Ok so updates: My Korad KA3005P isn't responding due to the test controller sending the "0A" character appended to the end of the "*IDN?", couldn't get tinkering with the #eol to fix it either, really getting a headscratcher here.

No CR or LF:
#eol \_

Use CR
#eol \r

But the standard driver needs a CR or LF at the end of each received message or it will not work.
The #eol setting only works for selected drivers, the "Scan serial ports" setting do not now the devices and always uses LF

Second, the Hameg power supply arrived and I'm hilariously lost again on the control interface writing, can't quite figure out how to enable 8n2 and just a carriage return. Further the readout and separation into vars isn't super well documented in the files and I'm not sure of the difference between the ASCII/Modbus/SCPI drivers?

The default baudrate is 9600N82, you can include the N82 in the baudrate setting box.

The drivers are for different types of devices:
SCPI: Most modern quality bench test equipment.
SCPIx: Typically used for some Chinese equipment where they have not found out how to implement SCPI correctly, may also be useful for some older equipment from around the dawn of SCPI
ASCII: Devices from before SCPI and some other equipment.
MODBUS: This protocol is mostly for industrial usage, but some cheap test equipment also uses it. It is a binary protocol.

Here's the Hameg manual, the important stuff is on page 24/25. https://cdn.rohde-schwarz.com/hameg-archive/HM7044_D_E_F_S.pdf
Any help would REALLY be appreciated, Thanks!

This do not look like SCPI, but must be done with the ASCII driver. I am not impressed with the commands, read back functions are missing and you have to decode everything from the "READ" command. That makes it easy to add 8 columns for voltage & current values, the bad part is that the setting popup will not show the currently selected parameters.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on February 19, 2021, 01:43:04 pm
Hi HKJ,

thanks again for your great work!
I realy appreciate your Arduino efforts. I was away from this board for a while. In this time I played a little bit with ESPEasy and
found it very handy. But I have no clue how to connect it's serial output which reports the measurements of the available sensors
with TC  :-//
I was looking for a simple solution for temperature measurements with DS1820 sensors. Since I'm a little bit rusty with programming it would be great if one of your (coming) examples brings this popular and cheap temperature sensor into TC!  Thanks in advance!
Title: Re: Program that can log from many multimeters.
Post by: ArsenioDev on February 19, 2021, 11:24:43 pm
Ok so updates: My Korad KA3005P isn't responding due to the test controller sending the "0A" character appended to the end of the "*IDN?", couldn't get tinkering with the #eol to fix it either, really getting a headscratcher here.

No CR or LF:
#eol \_

Use CR
#eol \r

But the standard driver needs a CR or LF at the end of each received message or it will not work.
The #eol setting only works for selected drivers, the "Scan serial ports" setting do not now the devices and always uses LF
 

Any possibility of integrating modified capability into the SCPIx driver to allow arbitrary EOL commands? May help down the line with integrating different cheaper weird comms protocol chinese instruments or older units.



Aha! The lead on using ASCII is going to be a huge help, back at taking a crack at that interface document.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 20, 2021, 01:40:24 pm
I realy appreciate your Arduino efforts. I was away from this board for a while. In this time I played a little bit with ESPEasy and
found it very handy. But I have no clue how to connect it's serial output which reports the measurements of the available sensors
with TC  :-//
I was looking for a simple solution for temperature measurements with DS1820 sensors. Since I'm a little bit rusty with programming it would be great if one of your (coming) examples brings this popular and cheap temperature sensor into TC!  Thanks in advance!

I had not planned on it, but because it is fairly easy I have made an example and included. I have also made a example with DHT22/AM2302, this is useful to record environment during testing.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 20, 2021, 01:42:21 pm
Any possibility of integrating modified capability into the SCPIx driver to allow arbitrary EOL commands? May help down the line with integrating different cheaper weird comms protocol chinese instruments or older units.

The #eol can define any type of eol string, but it only works when transmitting. Receiving requires CR or LF or both.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 20, 2021, 03:46:43 pm
Hi HKJ

I've adapted the HMC8043 config file to use my Hameg HMP2020 power supply.  I really like what you've done with Test Controller and from now on I plan to stop using Excel and use TC instead for data acquisition - so thank you!

In the attached PDF I detail a minor connection/addressing issue and I also inquire about the implementation of the APPLy command.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 20, 2021, 04:33:43 pm
I've adapted the HMC8043 config file to use my Hameg HMP2020 power supply.  I really like what you've done with Test Controller and from now on I plan to stop using Excel and use TC instead for data acquisition - so thank you!

In the attached PDF I detail a minor connection/addressing issue and I also inquire about the implementation of the APPLy command.

Thanks for the definition, I have made a few fixes in it including changing to "#port com"

I believe the APPLy command are for writing and reading set point, not actual values.

If you want adapted UI for a project check GridPanel, it is made for that.

The definition will be included with the next release, I have also attached the modified file here (Please check that I have not made any errors).
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 20, 2021, 07:36:41 pm
HJK, thanks for the fixed config file - it seems to be working perfectly.  Of course you're correct about the APPLy command.  About GridPanel; Googling GridPanel brings up quite a variety of results but I'm guessing you're referring to the Java GridPanel class so all I need to do now is learn to write Java  :palm:  Just learning to use scripting and figuring out how to include temperature data in Test Controller will keep me busy for a while.

My (Artag) AR488 PCB's arrived from China today so now I have everything I need to build some of those interfaces then I can hook up to my four GPIB instruments and see how I get on with them in Test Controller.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 20, 2021, 09:07:15 pm
About GridPanel; Googling GridPanel brings up quite a variety of results but I'm guessing you're referring to the Java GridPanel class so all I need to do now is learn to write Java 

GridPanel is a function in "Popups", it is a panel you can populate with a variety of different programable controls and then save as a menu.

:palm:  Just learning to use scripting and figuring out how to include temperature data in Test Controller will keep me busy for a while.

Scripting can be done two ways:
1) Generated scripts, TC can generate a lot of different scripts without you knowing anything about the syntax.
2) You do the script

Often the best result is a combination of 1) and 2), let TC generate the basic script and then modify it.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 22, 2021, 05:13:51 am
I uploaded the AR488 sketch to a Pro Micro and since I'm new to all of this stuff I wanted to check that the board was programmed okay before I soldered it up.  I used Agilent Connection Expert which found the board and after forcing the installation of an (unrecognised) instrument I could  send the ++ver command to check for a response.  Is there a method to perform such a test using Test Controller?
Title: Re: Program that can log from many multimeters.
Post by: hirada on February 22, 2021, 02:43:16 pm
Has by chance anyone had any success using either an Agilent u1272a or a Hioki DT4282 under linux with test controller?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2021, 03:06:42 pm
Is there a method to perform such a test using Test Controller?

No, TestController do not have a terminal build in, you can use a program like Termite for it or PuTTY for socket connections.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2021, 03:10:43 pm
Has by chance anyone had any success using either an Agilent u1272a or a Hioki DT4282 under linux with test controller?

U1272A is supposed to work, it works on windows.
I have the DT4282, but I do not have the interface cable or the protocol description, making it a bit difficult to add it.
Title: Re: Program that can log from many multimeters.
Post by: hirada on February 22, 2021, 04:16:20 pm
Thanks very much for your feedback. For the Hioki, that should be simple, as it's remote commands are somewhat well documented and it claims to use a virtual com port.

There is a remote operation manual able for download:

https://www.hioki.com/en/support/versionup/detail/?downloadid=235 (https://www.hioki.com/en/support/versionup/detail/?downloadid=235)

So I am sowhat positive, if I go that route.

For the U1272A the question is, wether Linux is able to detect the IR-USB adapter with the attached DMM correctly. Something that is of course outside the scope of your software.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2021, 04:30:37 pm
Thanks very much for your feedback. For the Hioki, that should be simple, as it's remote commands are somewhat well documented and it claims to use a virtual com port.

There is a remote operation manual able for download:

https://www.hioki.com/en/support/versionup/detail/?downloadid=235 (https://www.hioki.com/en/support/versionup/detail/?downloadid=235)

So I am sowhat positive, if I go that route.

That looks fairly easy to implement, it is SCPI.

For the U1272A the question is, wether Linux is able to detect the IR-USB adapter with the attached DMM correctly. Something that is of course outside the scope of your software.

The meter uses a virtual com port.
Title: Re: Program that can log from many multimeters.
Post by: hirada on February 22, 2021, 05:28:42 pm
The meter uses a virtual com port.

And also some subset of SCPI, from what a quick web search was able tell. Thanks again for that information, very helpful.
Title: Re: Program that can log from many multimeters.
Post by: hirada on February 22, 2021, 07:06:49 pm
[Edit]: Sorry for the noise, my touchpad right mouseclick does not always work. Using a mouse, everything is fine


On your installation page, right at the bottom, there is a screenshot of the "Create a new SCPI definition" menu. Somehow I am not able to locate this menu?

Probably not related, but I do get an AWT nullpointer exception:

Code: [Select]
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!
        at java.awt.Desktop.checkActionSupport(Desktop.java:221)
        at java.awt.Desktop.browse(Desktop.java:380)
        at dk.hkj.main.Main.setupDemo(Main.java:432)
        at dk.hkj.main.Main.update(Main.java:375)
        at dk.hkj.main.Main.access$4(Main.java:373)
        at dk.hkj.main.Main$4.actionPerformed(Main.java:197)
        at javax.swing.Timer.fireActionPerformed(Timer.java:313)
        at javax.swing.Timer$DoPostEvent.run(Timer.java:245)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
        at java.awt.EventQueue.access$500(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:709)
        at java.awt.EventQueue$3.run(EventQueue.java:703)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

I am missing something obvious?

Code: [Select]
# java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2021, 08:02:21 pm
On your installation page, right at the bottom, there is a screenshot of the "Create a new SCPI definition" menu. Somehow I am not able to locate this menu?

Right click in the combobox where it says "Search socket"


Probably not related, but I do get an AWT nullpointer exception:

Code: [Select]
Exception in thread "AWT-EventQueue-0" java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!
        at java.awt.Desktop.checkActionSupport(Desktop.java:221)
        at java.awt.Desktop.browse(Desktop.java:380)

I am missing something obvious?

It is me that was missing something, your OS do not have a default webbrowser according to Java. From next version of TC this will not give any errors, but simply be ignored (no webbrowser will be shown).
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 23, 2021, 08:38:09 pm
HKJ,  I have some progress with my AR488 and can get my 34401A communicating a little with TC.  I say a little because here's what happens;

Load Devices, GPIB, add AR488 on a serial connection on COM6 with baud 9600 & settings blank.
Reboot
Load Devices, select Agilent 34401A, set to COM6, leave baud at 9600 and press reconnect then:
 
;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
;; Start thread for: COM6 - Agilent 34401A
;; COM6: Set params: 9600
;; COM6: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM6: Rx: <HEWLETT-PACKARHEWLETT-PACKARD,34401A,0,7-5-2> 48 45 57 4C 45 54 54 2D 50 41 43 4B 41 52 48 45 57 4C 45 54 54 2D 50 41 43 4B 41 52 44 2C 33 34 34 30 31 41 2C 30 2C 37 2D 35 2D 32
;; Arduino Micro (COM6) Device HEWLETT-PACKARD,34401A, do not match: HEWLETT-PACKARHEWLETT-PACKARD,34401A,0,7-5-2
;; COM6: Close
;; Stopping thread for: COM6 - Agilent 34401A
;; COM6: Close

I remove Agilent 34401A from devices and re-boot
Load Devices, right click combo box for create new SCIPI device definition, switch to Serial tab, change port to port 6 and click “Check” then it finds the instrument but the IDN returned seems “randomly truncated”, please see attached images.

I think I am stuck for loading the DMM because its IDN is being mis-read and never matching what is in the definition file.  Any suggestions?
Title: Re: Program that can log from many multimeters.
Post by: Hydron on February 23, 2021, 10:00:41 pm
I believe the AR488 should be used with 115200 baud? And as for the 34401, I think the device definition needs tweaking so that it can be used in GPIB mode (at which point it's port should be set to A:<GPIB ID>, assuming your AR488 is GPIB bus A). I have not played with GPIB yet though I will once my AR488 PCBs and connector arrive.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 24, 2021, 01:07:38 am
Thanks Hydron, you prompted me to have another go at it and I when I ended up trying the AR488 back in the other software I used for testing it I can no longer get a response to *idn.

HKJ - Sorry I hope you haven’t wasted time on this yet, I just thought great! it’s vurking! :-[  Probably a fault with my device not Test Controller.


Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 24, 2021, 02:52:21 am
Okay my bad.  I forgot I was using an USB extension cable.  A 5 metre cable.  I’ve been using it for over a year with my Agilent interface and other stuff no problem but attempting to flash the board through it failed until I plugged it back into PC. 

I already bought a couple of powered USB hubs that were supposed to arrive last weekend - I’m not entirely sure that will eliminate the problem but think it’s worth a try.

The interface is working just as it was with the test utility but I’m no longer getting any response to *idn sent from TC.  I’d like to eliminate the possibility of corrupt data coming back to haunt me so I’m going to start over again with a fresh instance of Test Controller.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 25, 2021, 01:14:15 am
It’s vurking!

I’ve spent much time trying to add a new SCPI device and still haven’t been able to get any response to that but when I edited the Agilent 34401a device file changing the line from #port COM to #port GPIB and then specifying the address as A:23 (thanks Hydron) on the Devices tab it loaded no problem.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2021, 08:10:33 am
changing the line from #port COM to #port GPIB and then specifying the address as A:23 (thanks Hydron) on the Devices tab it loaded no problem.

Use:

#port com gpib

Then you can change between the two on the "Load devices" page.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 25, 2021, 01:44:15 pm
Thanks HKJ.  I had been wondering how to configure multiple instruments of the same type if the address is defined in the device file but the “#port com gpib” entry sets the device type on the Devices tab to GPIB and different GPIB addresses can be defined there, the letter (A) defining which interface followed by the address number - makes sense.

I moved on now to having 2x 34401a connected with a GPIB cable and I can:
enable one
reconnect
take measurements okay
disable the first one, enable the other one
reconnect
take measurements okay

The problem I have now is that when both are enabled at the same time I get an exception and neither device loads, debug details attached.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2021, 02:47:28 pm
The problem I have now is that when both are enabled at the same time I get an exception and neither device loads, debug details attached.

It was, of course, supposed to work, but I am not sure I can fix it before I have made my own AR488 interface and can test with it. For now you will have to use multiple AR488 interfaces (I hope that will work).
The Arduino used for the AR488 do not have GPIB drivers or termination, that is also a good reason to use fairly short cables and keep the number of devices in a single GPIB bus low. Luckily this interface is very cheap: A Arduino and half a GPIB cable (From EBay) for a interface.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 25, 2021, 03:14:50 pm
I have spare (Artag) boards and connectors and can throw in a Pro Micro and I’m happy to make one up for you or send as a kit if you prefer?  The only issues with mine are that I have no support between the PCB and the connector and it’s hard to avoid stressing the pins - I plan to get some M3 nuts and screws to clamp them apart and also, I don’t have an enclosure.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2021, 03:32:00 pm
I have spare (Artag) boards and connectors and can throw in a Pro Micro and I’m happy to make one up for you or send as a kit if you prefer?  The only issues with mine are that I have no support between the PCB and the connector and it’s hard to avoid stressing the pins - I plan to get some M3 nuts and screws to clamp them apart and also, I don’t have an enclosure.

I did not know about that solution.
I have piles of Nanos and ProMicros and also some GPIB cables I only need to cut a cable and connect it to a processor to get a adapter, but I have not found time to do it yet.
A note: With a ProMicro baudrate do not matter, you can use anything and it will always work at the maximum speed the ProMicro can do.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on February 25, 2021, 05:02:53 pm
Yes it seems a popular solution over on the “Topic: AR488 Arduino-based GPIB adapter” blog.  It cost me $10 for 30 PCBs and $10 for 10 connectors so people can have a working GPIB interface for less than the cost of a used GPIB cable.  That being the case, guys are making a separate interface for each instrument so no GPIB cables required at all – and that’s what I’m going to try next with Test Controller so my current issue will hopefully become a non-issue.

While I’m at it I have to say I’m very impressed with the firmware that blog is all about, their version of AR488 just worked.  It autodetected my Pro Micro and I didn’t need to change a single value from default, I just put the bits together (in minutes) and flashed it and it worked (just as soon as someone pointed out that I needed to set an address).  I think it can auto-configure for the Uno R3, Nano, Micro, Leonardo R3 and the Mega 2560 – handy for guys that need more pins for wireless operation or for extra sensors.  Then there’s a small test utility so I didn’t have to work with terminal software.  I could go on more about it but lastly, I want to mention that the manual for the firmware is very thorough and that I’ve learned more about how GPIB works from that manual than from any other single source.

I’ve tried Labview, Matlab, Benchvue and had a look at EZGPIB when using the Agilent interface but I chose to adopt Excel VBA because I’m somewhat familiar with it but I’m very pleased with Test Controller and now I think the that AR488 and your Test Controller is a perfect partnership for hobbyists like me that are not competent with object orientated programming but still want to get control of their instruments from their computer.  I hope to do a tutorial for it.

Thanks for the tip about baudrate and thanks for Test Controller!

Offer still stands for an interface – I don’t plan to use all 10 connectors.

https://www.eevblog.com/forum/projects/ar488-arduino-based-gpib-adapter/ (https://www.eevblog.com/forum/projects/ar488-arduino-based-gpib-adapter/)
https://github.com/Twilight-Logic/AR488 (https://github.com/Twilight-Logic/AR488)



Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2021, 05:50:33 pm
Offer still stands for an interface – I don’t plan to use all 10 connectors.

If you want to send me a PCB and connector I will not say no, it may even arrive faster than I get around to do my own adapter. When I have done my own (i.e. soldered the cable to the Arduino) adapter I also hope to add a documentation page about how to make a GPIB adapter and there that PCB will be nice to include.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 26, 2021, 02:14:45 pm
I have published some examples on Arduino used with TestController: Digital IO, Servo controller, DS1820 temperature input and DHT22/AM2302 temperature and humidity sensor: http://lygte-info.dk/project/TestControllerArduino2%20UK.html (http://lygte-info.dk/project/TestControllerArduino2%20UK.html)

(https://lygte-info.dk/pic/Projects/TestController/Arduino2/DSC_4220.jpg)

The temperature and humidity sensor only need a box to be ready for practical use, the other can also be used, but more work will make them better.

I am also working on a examples with ADS1115 15 bit ADC, but I need a few more examples before I can publish that article.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on February 27, 2021, 10:02:03 am
TestController doesn't work with RIDEN RD60xx over WIFI?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 27, 2021, 11:37:28 am
TestController doesn't work with RIDEN RD60xx over WIFI?

No, Riden uses a reverse connection, i.e. the computer must be the server and the Riden calls the computer. This is opposite of normal test equipment and I have not implemented it in TestController. I could implement it, but connection would be a bit awkward due to the way TC works.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on February 28, 2021, 03:23:53 pm
Thank you very much for your DS1820 example! Works perfect!

After rejecting my wish last week I tried myself to program a Uno.
(I used time interrupt all seconds to get the sensors values - 2 sensors attached, but interrupt handling is different from model to model)
but I'm ashamed by your perfect solution.

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: meandeev on February 28, 2021, 09:58:28 pm
Hello,

I tried to write a definition-file for a Prema 6048. This is a non-scpi Device, but with GPIB. I use a ar488-GPIB adapter. The problem is, that the Prema replies to a ++read with the full measurement value and the status in one single line only after the integration time is finished. The integration time can be very long: up to 80sec, in this time the device doesn´t answers to any ++read and there is no possibility to ask for the status or the last measurement value of the device. Thats why I tried the following approach:
buffer the output to a variable and when a rx-timeout occurs, then use this buffer, but I need help for that. What I have so far (and it doesn´t work completely):

Code: [Select]
#author meandeev
#idString PREMA 6048
#name Prema_6048
#handle P6048
#port comfixedbaud
; using a AR488 so the DTR has to be set correctly:
#baudrate 115200N81Rd
#driver Ascii



; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V X9 DC_Voltage

; Simulated SCPI command definitions for the Prema 6048

; Function
#scpiCmd VD tx VD


; Synthetic Commands
#scpiCmd READ:DATA? txrx? ++read
:readmath: (strlen(value)==0)? oldvar : value
:setvar: oldvar=(strlen(value)==0)?oldvar:value



#cmdMode DC_Voltage VD
VD

; String to ask about actual meter mode,
; This is a single line command
#askMode READ:DATA?
#askModeMathFormat substring(value,16,18)




; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this string is used.
; This is a single line command
#askValues READ:DATA?
#readingDelay 3
#askValuesMathFormat substring(value,0,14)


#initCmd
:setvar: oldvar=""

#finalCmd tx ++loc

; Setup menu functions
;Mode-------------------------------------------------------------------------------------------
#cmdSetup info Active_Mode
:read: READ:DATA?
:readmath: substring(value,16,18)
:updatemodechange:

;DC_Voltage-------------------------------------------------------------------------------------
#cmdSetup checkbox AutoRange DC_Voltage
:write: (getElement("A0 A1",value))
:read: READ:DATA?
:readmath: substring(value,22,23)
On 0 1
:updatemodechange:

but when I set the integration time to 4s and the rate of TC to 1s I get this:
Code: [Select]
;; 22:50:39.022 P6048: Tx <READ:DATA?>
;; 22:50:39.022 P6048: Tx <txrx? ++read>
;; 22:50:39.039 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:39.039 COM23: Rx: <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B06> 2B 30 30 37 2E 34 39 37 39 32 39 45 2B 30 4D 52 56 44 50 30 30 41 31 52 33 46 31 54 37 44 30 53 30 51 31 4D 30 32 42 30 36
;; 22:50:39.046 P6048: Rx <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B06>
;; 22:50:39.048 P6048: Rx after :readmath: substring(value,0,14) <+007.497929E+0>
;; 22:50:39.048 P6048: Rx as numbers <7.497929>
;; 22:50:40.022 P6048: Tx <READ:DATA?>
;; 22:50:40.022 P6048: Tx <txrx? ++read>
;; 22:50:40.024 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:41.027 COM23: Rx: timeout
;; 22:50:41.027 P6048: Rx <null>
;; 22:50:41.027 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:41.027 P6048: Rx as numbers <NaN>
;; 22:50:41.027 P6048: Tx <READ:DATA?>
;; 22:50:41.027 P6048: Tx <txrx? ++read>
;; 22:50:41.030 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:41.164 COM23: Rx: <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B00> 2B 30 30 37 2E 34 39 37 39 32 39 45 2B 30 4D 52 56 44 50 30 30 41 31 52 33 46 31 54 37 44 30 53 30 51 31 4D 30 32 42 30 30
;; 22:50:41.180 P6048: Rx <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B00>
;; 22:50:41.180 P6048: Rx after :readmath: substring(value,0,14) <+007.497929E+0>
;; 22:50:41.180 P6048: Rx as numbers <7.497929>
;; 22:50:42.035 P6048: Tx <READ:DATA?>
;; 22:50:42.035 P6048: Tx <txrx? ++read>
;; 22:50:42.038 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:43.050 COM23: Rx: timeout
;; 22:50:43.050 P6048: Rx <null>
;; 22:50:43.050 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:43.050 P6048: Rx as numbers <NaN>
;; 22:50:43.050 P6048: Tx <READ:DATA?>
;; 22:50:43.050 P6048: Tx <txrx? ++read>
;; 22:50:43.055 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:44.065 COM23: Rx: timeout
;; 22:50:44.065 P6048: Rx <null>
;; 22:50:44.065 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:44.065 P6048: Rx as numbers <NaN>
;; 22:50:44.065 P6048: Tx <READ:DATA?>
;; 22:50:44.065 P6048: Tx <txrx? ++read>
;; 22:50:44.071 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:45.090 COM23: Rx: timeout
;; 22:50:45.090 P6048: Rx <null>
;; 22:50:45.090 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:45.090 P6048: Rx as numbers <NaN>
;; 22:50:45.090 P6048: Tx <READ:DATA?>
;; 22:50:45.090 P6048: Tx <txrx? ++read>
;; 22:50:45.096 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:45.174 COM23: Rx: <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B00> 2B 30 30 37 2E 34 39 37 39 32 39 45 2B 30 4D 52 56 44 50 30 30 41 31 52 33 46 31 54 37 44 30 53 30 51 31 4D 30 32 42 30 30
;; 22:50:45.174 P6048: Rx <+007.497929E+0MRVDP00A1R3F1T7D0S0Q1M02B00>
;; 22:50:45.174 P6048: Rx after :readmath: substring(value,0,14) <+007.497929E+0>
;; 22:50:45.174 P6048: Rx as numbers <7.497929>
;; 22:50:46.023 P6048: Tx <READ:DATA?>
;; 22:50:46.023 P6048: Tx <txrx? ++read>
;; 22:50:46.027 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:47.041 COM23: Rx: timeout
;; 22:50:47.041 P6048: Rx <null>
;; 22:50:47.041 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:47.041 P6048: Rx as numbers <NaN>
;; 22:50:47.041 P6048: Tx <READ:DATA?>
;; 22:50:47.041 P6048: Tx <txrx? ++read>
;; 22:50:47.046 COM23: Tx: <++read.> 2B 2B 72 65 61 64 0A
;; 22:50:48.060 COM23: Rx: timeout
;; 22:50:48.060 P6048: Rx <null>
;; 22:50:48.060 P6048: Rx after :readmath: substring(value,0,14) <null>
;; 22:50:48.060 P6048: Rx as numbers <NaN>

So after the rx timeout the substitution with the oldvar doesn´t occur. Why? I´m lost ...

Can somebody help me with this? Thanks!

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 01, 2021, 07:57:19 am
Thank you very much for your DS1820 example! Works perfect!

After rejecting my wish last week I tried myself to program a Uno.
(I used time interrupt all seconds to get the sensors values - 2 sensors attached, but interrupt handling is different from model to model)
but I'm ashamed by your perfect solution.

You can easily change my example to handle two or more sensors, either simultaneous or in sequence. Sequence is probably the best solution, but will reduce the update rate.
Interrupts is not a good way to handle the single wire sensor protocol
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 01, 2021, 08:14:20 am
I tried to write a definition-file for a Prema 6048. This is a non-scpi Device, but with GPIB. I use a ar488-GPIB adapter. The problem is, that the Prema replies to a ++read with the full measurement value and the status in one single line only after the integration time is finished. The integration time can be very long: up to 80sec, in this time the device doesn´t answers to any ++read and there is no possibility to ask for the status or the last measurement value of the device. Thats why I tried the following approach:
buffer the output to a variable and when a rx-timeout occurs, then use this buffer, but I need help for that. What I have so far (and it doesn´t work completely):

You cannot catch a timeout, it is a fault and will terminate any further processing for that value.
TestController is not really designed to handle very slow responses, but you can do something with setting timeouts, i.e. using "#readingDelay" specification.

Another note: You do not need a _ in the #name
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 04, 2021, 02:41:12 pm
V1.58 is up
Bugfixes, new devices and small changes, mostly due to users and user requests.
   Changed: Field number & multi layout will use spare columns in some conditions
   Added: Tag :textwidth: to define text width of input fields, default value is 6
   Fixed: Request to open webbrowser when not supported will not throw an error anymore
   Added: Hameg HMP2020 power supply, thanks to AtlanticSurfer
   Added: checkbox in mode popupmenu, can either use a local mode or a device mode.
   Added: [mode:xxx] conditional tag to #askValues definition
   Added: #askValues can be modified depending on modes.
   Fixed: displayVar did not work during device initialization
   Added: Keithley 2015, thanks PhilipZ

From this version it is easy to define optional columns from data collection, if requires the use of #askValues with [mode:xxx] and #cmdModeCheck
Title: Re: Program that can log from many multimeters.
Post by: sairfan1 on March 04, 2021, 10:34:09 pm
Does it support HP3457A ?
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on March 04, 2021, 10:58:36 pm
Hi sairfan1, HP3457A doesn’t yet appear to have a definition file but there is a file for the HP3478a and that probably wouldn’t take much modification to make it work with the HP3457A.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 05, 2021, 10:21:54 am
Does it support HP3457A ?

As AtlanticSurfer says: No
I have only added the devices I have, but it is possible for users to add more devices and I have made some documentation about it. I do also try to help with it (As much as I can without the device). Adding devices to not require programming, but is done with a definition file in text format.

I do always hope that people that creates definitions for other devices will post them here, then I can include them in subsequent releases.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on March 05, 2021, 12:33:04 pm
Attached my working definition for the FLUKE 45.
Some issues:

- 2nd Display can be set but not read
- Scroll down menu for 2nd display "forgets" setting but works
- dBm reading not implemented since no SCPI device

May be some one will benefit from it. Unfortunately I own only a Agilent GPIB-adaptor and I learned that this is not supported by TC.
So the device only works with serial connection.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 05, 2021, 12:44:58 pm
Attached my working definition for the FLUKE 45.

Thanks, it will be included in the next release

May be some one will benefit from it. Unfortunately I own only a Agilent GPIB-adaptor and I learned that this is not supported by TC.
So the device only works with serial connection.

A supported GPIB adapter can be build fairly cheap.
If somebody else has the meter and a supported GPIB adapter it can also easy be enabled by changing this line (Include the GPIB word): "#port comfixedbaud GPIB"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 05, 2021, 12:50:21 pm
- 2nd Display can be set but not read

I do generally not recommend reading more than one values from a DMM, this is because some of the popups can track single value devices, but will not do not on devices that returns multiple values. With track I mean they will automatic change to the active #value when it changes.


- dBm reading not implemented since no SCPI device

dBm can easily be added with a math function.
Title: Re: Program that can log from many multimeters.
Post by: nightfire on March 05, 2021, 02:00:54 pm
As I have a Fluke 45, I am eager to try this out, but probably not this weekend as I am redecorating a bit at home...

Would it be possible to model such two-display DMM in a way to set up separate handlers for them, or will that conflict with the serial port locking/concurrent use to that port?
Especially for using a DMM to control discharging of a battery, the Fluke 45 offers 3-wire measurement so it would be an ideal candidate to measure voltage and current in the same circuit naturally ;-)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 05, 2021, 04:20:50 pm
Would it be possible to model such two-display DMM in a way to set up separate handlers for them, or will that conflict with the serial port locking/concurrent use to that port?

No, but it is possible to use multiple columns (#value) specification, you just looses the tracking feature in "Readout" and a few other popups. This only means you will have to manually select the value in the popup after each mode change. I may improve this at a later date.

Especially for using a DMM to control discharging of a battery, the Fluke 45 offers 3-wire measurement so it would be an ideal candidate to measure voltage and current in the same circuit naturally ;-)

Using same DMM to do both measurement will cost a bit of precision due to cable resistance, the best solution for battery testing is a electronic load with remote sense. TC supports a couple of models, even a cheap ATorch model, but I do not believe it has remote sense, you can get around that by using the Fluke directly over the battery terminals and only use the current from the load.
Title: Re: Program that can log from many multimeters.
Post by: nightfire on March 05, 2021, 05:25:10 pm
Ahh ok, thanks for clarifying!

I also have a (rebranded) KEL-102, but I can think of several possibilities where it could be nice to let a single device do measurements, like in debugging small circuits and voltage drops under load, not only doing discharging of batteries- and as a happy Fluke 45 owner, some good must come from that 2nd display  8)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 05, 2021, 05:40:35 pm
...I can think of several possibilities where it could be nice to let a single device do measurements, like in debugging small circuits and voltage drops under load, not only doing discharging of batteries- and as a happy Fluke 45 owner, some good must come from that 2nd display  8)

I do not generally limit myself to a single piece of equipment, that was one of the reasons I wrote TestController. I like to use multiple pieces of test equipment together, independent of brand.
I also wanted a easy way to configure a computer as a test station (I buy cheap laptops for that), with TestController I only have to install Java and probably a couple of serial drivers, then copy TestController onto it and it is ready to run any test I want.
The secondary display can be useful when using a DMM standalone, but when logging test I prefer a secondary DMM or a math expression.
Note: I plan on making easier to do some Math functions, this will not require any update of TestController (If it is a fairly new version), but will be scripts that is automatic downloaded if the computer is online when TestController is started.
Title: Re: Program that can log from many multimeters.
Post by: sairfan1 on March 05, 2021, 07:33:54 pm
@AtlanticSurfer (or someone else) please advise what kind of changes i need to make to 3478A config file to make it workable with my 3457A
Title: Re: Program that can log from many multimeters.
Post by: Hydron on March 06, 2021, 09:02:16 am
There is extensive documentation on HKJ's site about how to write drivers - start there and with the instrument manual.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 06, 2021, 09:30:48 am
...what kind of changes i need to make to 3478A config file to make it workable with my 3457A

To get started copy the definition for 3478A to .../Documents/TestController/Devices/ and rename it to HP3457A
Next step is to fix the #idString line, the #name line and the #handle line

When this is fixed TestController will connect to the meter, if not there is something wrong with the above fix or you have not specified the connection correctly.

When you have a connection you can start on the meter manual and use the commands from the manual on the command line in TestController (You need to prefix the commands with tx or txrx? when using the Ascii driver).
Now you also need to compare the definition of the meter to the manual for the meter and adjust for differences. A part of the definition defines a map to convert from the meters language to SCPI, this definition is done with #scpiCmd lines.

TC manual for Ascii devices: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices)
Mnaual for SCPI and UI definitions: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)

Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 07, 2021, 02:05:48 am
I have a rebranded KORAD KEL 102 load. The *IDN? string returned is "MP710258 V2.20 SN:500xxxxx"

How would I go about making this program work with this device?

Same question goes for an Agilent power supply - E3640A?

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 07, 2021, 02:40:47 am
Ok -- figured out the load -- now for the E3640A power supply...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 07, 2021, 01:57:09 pm
Ok -- figured out the load --

Please post the lines you used, then I can include it in the next release.

now for the E3640A power supply...

With the PS on and a serial connection select "Load devices" page and right click on the combobox selecting "Create new SCPI device definition"
This will help you establish a connection.

Then look in a existing power supply definition (Like TTiQL355P.txt). You will have to mostly duplicate that definition to you definition, but replacing all SCPI commands to the E3640A commands.

By using #meta & #metadef it is possible to support the line of E364xA supplies in on definition, but that is more advanced.
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 07, 2021, 10:34:06 pm
I added the following to the Korad 103.txt file

#metadef
#idString MP710258
#name Multicomp Pro MP710258
#handle MP710258
#replaceText MaxPower 150

#metadef
#idString MP710259
#name MultiComp Pro MP710259
#handle MP710259
#replaceText MaxPower 300

worked for the load. 

I'll work on the supply tomorrow evening...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 08, 2021, 02:32:51 pm
I added the following to the Korad 103.txt file

Thanks, they will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on March 09, 2021, 09:52:19 am
Hi HKJ

may be there is an answer in this thread but I wasn't able to find it.
I ask for your advice. I own a UNi-T UT181a multi meter - a very nice, feature loaded meter with a beautiful OLED display
and it seems to be a nice, much faster "imitation" of the popular but much more expensive Fluke 289.

Unfortunately the with the meter delivered (optical insulated) USB connector is proprietary, no serial connection possible.
But there is a OpenSource command line program that can be used (the very simple Uni-T software is only a visualizing tool)

C:\Temp\Uni-T UT181a>ut181a-cli read once
Mode: VDC [] [AUTO]
Range: -6...6 V
0.0004 VDC
FAST: -0.029948657 VDC

(manual mode switch)

C:\Temp\Uni-T UT181a>ut181a-cli read once
Mode: mVAC [] [AUTO]
Range: 0...60 mV
48.564 mVAC
FAST: 49.04536 mVAC


Is there a way to use such a command line program with TC???  Thanks in advance!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 09, 2021, 07:13:02 pm
Is there a way to use such a command line program with TC???  Thanks in advance!

Not at the current time, I could fairly easy implement it, but I wonder how useful it would be. The maximum sample rate will be fairly low and how many devices would it be useful for?
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 09, 2021, 08:28:11 pm
for #askValues I have MEAS:VOLT?; MEAS:CURR?

The causes the E3640A to issue error 410 -- The second meas is performed while there is still unread data in the output buffer.

How do I control range for the supply (it has a low and high range)

suggestions?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 09, 2021, 08:37:57 pm
for #askValues I have MEAS:VOLT?; MEAS:CURR?

The causes the E3640A to issue error 410 -- The second meas is performed while there is still unread data in the output buffer.

You might try a [*OPC] or [200], they are both delays and the first version is the preferred type if the device supports it.
But I wonder if that is the problem, TestController will read the answer after each ?, i.e. the output buffer is supposed to be empty.

You can test the commands from the command line in TestController.


How do I control range for the supply (it has a low and high range)

suggestions?

A combobox would probably be a good solution, you cannot specify separate limits for the two ranges, except if you make double set of number fields and uses selector to change between them.
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 10, 2021, 02:31:19 am
Yeah -- MEAS:VOLT?; MEAS:CURR? does not return both values when issued on the command line in TestCOntroller
It produces error 101 on the device. (Error 101: invalid character - An invalid character was found in the command string. You may have inserted a character such as #, $, or % in the command keyword or within a parameter)

If there is no space after the semicolon, it produces error 101 too.

They work fine individually

The manual says;

If you send two query commands without reading the response from the first, and then attempt to read the second response, you may receive some data from the first response followed by the complete second response. To avoid this, do not send a query command without reading the response. When you cannot avoid this situation, send a device clear before sending the second query command.
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 10, 2021, 02:53:05 am
MEAS:VOLT?; *CLS

Also generates error 101. Both work individually.

looks like queries with multiple commands separated by ; just does not work on this device.
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 10, 2021, 03:08:33 am
Hmmm -- sending meas:volt; *cls works when using the Agilent connection expert. But not from TestController. In the agilent utility querying both voltage and current on the same command produces error 113. Undefined header - A command was received that is not valid for this power supply. You may have misspelled the command or it may not be a valid command. If you are using the short form of the command, remember that it may contain up to four letters.

(That's with a space after the semicolon - without the space gives errors 410 and 113 (from the agilent utility))

using testController, senting "MEAS:VOLT?;MEAS:CURR?" returns the voltage, but not the current, and sets error 101.  (I had cleared errors before trying this)

Invoking the same command with a space after the semicolon gave no error, but just returned the current. Invoking it a second time returns the voltage and sets an error 101. Next command returns just the voltage.

So issueing "meas:volt?; meas:curr?" (in TestController) alternately returns voltage, then current, then voltage, then current and so on -- and each time it returns the current, it also sets error 101.

Weird...

Looks like multiple queries on the same line just do not work on this instrument - at all.

(Tried reversing current and voltage order in the command -- same behaviour)
Title: Re: Program that can log from many multimeters.
Post by: ian.ameline on March 10, 2021, 04:18:51 am
Ok -- one last try -- ":meas:volt?;[2];:MEAS:CURR?" works.

Title: Re: Program that can log from many multimeters.
Post by: perdrix on March 10, 2021, 11:46:34 am
Hello,

I tried to write a definition-file for a Prema 6048.
:
Can somebody help me with this? Thanks!

I thought 6048 could raise an SRQ on completion of a reading, can this not be used as the means to tell the programme to get the now available data?

David
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 10, 2021, 12:07:27 pm
PX100

Working with PX100 with an USB to TTL device, FT232BL,
Working fine, no dropouts.
In the setup Popup, starts OK, with good values,
when setting current, voltage or time,
the values are incorrect.
after inserting ":updatedelayed: 0.5" for each cmdSetup it is working fine.
for example cmdSetup number Voltage:

#cmdSetup number Voltage
:read: setVoltage?
:write: setVoltage
:updatedelayed: 0.5
V MinVoltage MaxVoltage
:tip: Set Cut-Off voltage

Made an personal modification to the Accu discharge script as follows:

#logcmds 0
; Battery discharge test
=var endVoltage=6
=var endVoltageLoad = endVoltage-0.05
=var testCurrent=1
=var stepTime=1
; --------------------------------------------------------------
="Discharge with "+testCurrent+"A to "+endVoltage+"V";
=var load=getDevice("Load")
=setVoltage(load,endVoltageLoad)
=setCurrent(load,testCurrent)
=setOn(load,1);
#delay 1
#log (stepTime)
#haslogged
#wait readVoltage(load)>endVoltage
=setOn(load,0);
#haslogged
#log 0
="Discharge terminated"

With the same endVoltage setting for Testcontroller and the load,
load stops as first, voltage rises and Testcontroller does not stop.
With endVoltage for the load a little lower as the one for Testcontroller,
Testcontroller is in the lead for making the stop dicission.
When there went something wrong, the load aborts a fraction later,
so no harm for battery's.

Question: I like to add a line at start of the script, for resetting the load,
so the capacity and energy starts at zero. Who can explain me? Thanks.


Attached my version of AtorchPX100Devices and my own Discharge script.

Edit: Tested modified AtorchPX100Devices.txt with DL24, works OK.
AccuPX100.txt works also with DL24
DL24 gives dropouts in readings, so script is not completed, aborted by 0 volt reading.
Like to start with Math function to filter out the misreadings,
but was not able yet to figure that out,
when sombody can point me the right way to do that, Thanks.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 10, 2021, 07:41:43 pm
Error DL24

When running Testcontroller in Debug mode,with only DL24 connected,
I get Java errors.
Program starts, automatic connect with DL24, nothing done,
after about 20 seconds it begins with Java errors.
It keeps repeating, I can work with te program, everything looks normal,
error keeps repeating. Is this probably the case for the dropout errors?
See attached picture for the error.

Working with PX100 no Java errors.

Tested with the original device file and with my modified file. Both the same.

I have read elsewhere DL24 is sending data in a high frequency,
don't know if that has anything to do with that.
Don't have programming skills.


Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 10, 2021, 09:22:53 pm

Using same DMM to do both measurement will cost a bit of precision due to cable resistance, the best solution for battery testing is a electronic load with remote sense. TC supports a couple of models, even a cheap ATorch model, but I do not believe it has remote sense, you can get around that by using the Fluke directly over the battery terminals and only use the current from the load.

Latest DL24 models have 4-wire measurement, so cable resistance is there not a problem.
Beware some sellers on Aliexpress selling the old one, some say we send  old and new randomly.
DL24 has an logging problem yet. (dropouts)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 11, 2021, 01:38:01 pm
Ok -- one last try -- ":meas:volt?;[2];:MEAS:CURR?" works.

Looks like the PS is a bit slow to update its own status.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 11, 2021, 01:41:11 pm
Hello,

I tried to write a definition-file for a Prema 6048.
:
Can somebody help me with this? Thanks!
I thought 6048 could raise an SRQ on completion of a reading, can this not be used as the means to tell the programme to get the now available data?

TestController do not use the SRQ signal, it expect a protocol that will answer to requests (mostly). Any command ending in ? is a request and will wait for an answer.
Some protocols has a internal layer that will collect transmissions from the device and use them when answering a request, but these protocols do usually not include sending data to the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 11, 2021, 01:59:10 pm
after inserting ":updatedelayed: 0.5" for each cmdSetup it is working fine.

I have included this in the standard device file.

Made an personal modification to the Accu discharge script as follows:

Good modification, but it will not work on all loads, that is the reason I do not include it in the standard scripts.

Question: I like to add a line at start of the script, for resetting the load,
so the capacity and energy starts at zero. Who can explain me? Thanks.

This is load depend, if a reset command is defined in the definition you can usually use that. The easiest way is probably to press the button on the stup menu, they right click in the log window and select: "Generate scripts, Mode & setup, In log window", it will show the commands in the log window and you can copy the part you need.



Like to start with Math function to filter out the misreadings,
but was not able yet to figure that out,
when sombody can point me the right way to do that, Thanks.

This depends on what type of misreads you want to filter, but for a starter:
Select the "Math" page and press the "Add button"
In the "Source formula" column type the name of the column you want filtered.
Try some different values in the "Type" column, you may also need to put a number in the Samples column (10 is a good starting point).
Secure there is a checkmark in the "Enabled" column.
The "Unit" column is optional, it will not affect the calculations, only the display.

There is more help to the math page here: https://lygte-info.dk/project/TestControllerMath%20UK.html (https://lygte-info.dk/project/TestControllerMath%20UK.html)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 11, 2021, 02:03:28 pm
Error DL24

When running Testcontroller in Debug mode,with only DL24 connected,
I get Java errors.

The problem is that TestController cannot keep up with the data rate and it is not all the surprising when you are using debug mode.
It has a high priority task that collects the data from the device and stuff it into a queue, then there is a lower priority task that takes it out, process it and print the debug stuff, this task cannot keep up.

I will mostly fix it by removing queued entries, that I do not have time to process.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 13, 2021, 07:54:18 am
Just one stupid question,

Made filters in Math.
In my script the are as follows:

#Math VoltageFilter "V" DropOutFilter 10 ATDL24.Voltage
#Math CurrentFilter "A" DropOutFilter 10 ATDL24.Current
#Math TempFilter "°C" DropOutFilter 10 ATDL24.Temperature

In the Table the value is filtered fine.

Load is turned of by the following sentence:

#wait ATDL24.Voltage>endVoltage

How do I replace "ATDL24.Voltage" with the filtered value?
Don't know how to call the filtered value instead of the original value
What is it named?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2021, 08:10:37 am
How do I replace "ATDL24.Voltage" with the filtered value?
Don't know how to call the filtered value instead of the original value
What is it named?

Math values are prefixed with "Math.", this means the names are:

Math.VoltageFilter
Math.CurrentFilter
Math.TempFilter
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 13, 2021, 04:11:23 pm
Sorry last try, I don't get it working.

Math is working fine.
VoltageFilter "V" DropOutFilter 10 ATDL24.Voltage
In the Table page Math.VoltageFilter is correct value when ATDL24.Voltage has dropout.

But then I want to use Math.VoltageFinder value in my script in the Commands page,
I do not get that working

In my script:

=var StoreValue
=globalvar Math.VoltageFilter

=StoreValue=Math.VoltageFilter  ->  StoreValue stays empty
or
=Math.VoltageFilter   ->   No value return.
while program is logging.
so
=ATDL24.Voltage returns a good value.

Sorry for asking again, I like to get it working, usefull for me. Thanks.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2021, 04:20:54 pm
Sorry last try, I don't get it working.

Math is working fine.
VoltageFilter "V" DropOutFilter 10 ATDL24.Voltage
In the Table page Math.VoltageFilter is correct value when ATDL24.Voltage has dropout.

But then I want to use Math.VoltageFinder value in my script in the Commands page,
I do not get that working

In my script:

=var StoreValue
=globalvar Math.VoltageFilter

=StoreValue=Math.VoltageFilter  ->  StoreValue stays empty
or
=Math.VoltageFilter   ->   No value return.
while program is logging.
so
=ATDL24.Voltage returns a good value.

Sorry for asking again, I like to get it working, usefull for me. Thanks.

I forgot that I do not create the Math. columns as general variables. You can still access them using the table functions https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions)

Something like: table(tableRows()-1,"Math.VoltageFilter")
The reason I write "like" is because I have not tested it.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2021, 04:27:19 pm
Another idea:
You do not need the filter to avoid stopping due to a sample or two missing, you could also use the table functions:

tableCalcMax("Voltage",tableRows()-4)

Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 13, 2021, 04:45:58 pm
Another idea:
You do not need the filter to avoid stopping due to a sample or two missing, you could also use the table functions:

tableCalcMax("Voltage",tableRows()-4)

Yes, that sounds like an good idea, I gonna try ASAP.
Thanks for you quick and detailed reply.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on March 14, 2021, 03:01:37 pm
I’ve been trying to setup the last of my instruments, a R&S NGPS voltage source.  Basically, it can be thought of as a two channel power supply with a High and a Low mode for each channel.  It has no current control or anything fancy, just a voltage source.

I’ve made a definition file that enables control of the output voltage but I’m a bit stuck now.  The main problem is extracting the numbers from the data string when reading the “set values”.  Are there any examples of how to use mathFormat & readmath?

Another goal I have is to be able to turn the outputs off - the manual says to send either “selected device clear” or “device clear” but I’ve tried every syntax I can think of but can’t get them to switch off. 

It would also be nice if the outputs get set to zero and turned off when TC is closed.

In case anyone is willing to help I’ve attached an extract from the device manual, my rudimentary device definition file and a sample from the TC command window.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 14, 2021, 03:43:08 pm
I’ve made a definition file that enables control of the output voltage but I’m a bit stuck now.  The main problem is extracting the numbers from the data string when reading the “set values”.  Are there any examples of how to use mathFormat & readmath?

Another goal I have is to be able to turn the outputs off - the manual says to send either “selected device clear” or “device clear” but I’ve tried every syntax I can think of but can’t get them to switch off. 

It would also be nice if the outputs get set to zero and turned off when TC is closed.

To read any value you need to use a command ending with ?, i.e. "txrx?"
You cannot directly control the GPIB lines from TestController (I will probably implement this in a future release).

You use the #finalCmd tag to define what happens when TC stops and #outputOff to define what happens when "Outputs off" is pressed. You can always set both outputs to 0V.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 14, 2021, 05:27:49 pm
Another idea:
You do not need the filter to avoid stopping due to a sample or two missing, you could also use the table functions:

tableCalcMax("Voltage",tableRows()-4)

Working fine for now.

My Wait function is now:
#wait tableCalcMax(19,tableRows()-6)>endVoltage

Test with 6 values, some dropouts are a few.
Dropouts are not predictable. Logged for a few hours now.

A little confusion about table column numbers:
for example 22 Columns,
=tableColumns()  Returns 22
Last 3 columns 20, 21 and 22 are Math. VoltageFilter.Filter, Math.Current.Filter, Math.Temp.Filter
(see Picture
=tableColumnName(19) Returns Math.VoltageFilter
So have to use the real column-number minus 1
Not an big problem, just for your information.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 14, 2021, 05:38:24 pm
A little confusion about table column numbers:
for example 22 Columns,
=tableColumns()  Returns 22
Last 3 columns 20, 21 and 22 are Math. VoltageFilter.Filter, Math.Current.Filter, Math.Temp.Filter
(see Picture
=tableColumnName(19) Returns Math.VoltageFilter
So have to use the real column-number minus 1
Not an big problem, just for your information.


Both column and row numbers are zero based, but for columns you can use the name instead, i.e. 19 or "Math.VoltageFilter" will return the same column data.
But why use the filtered column, why not use the original data column?
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 14, 2021, 05:39:30 pm
My discharge script complete
and
picture from command window after complete run.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 14, 2021, 05:45:45 pm

But why use the filtered column, why not use the original data column?

Yes, that is what I do now.
I had the picture of the columns already and used them for example.
But my ATDL.Voltage column is nr. 5 and use in my script nr. 4
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 14, 2021, 05:52:29 pm
A small message for information.
When logging and discharging without doing anything,
I had a few dropouts in 3 hours.
When opening setup Popups for Riden6012 and ATDL24 a lot of dropouts..
Also a lot dropouts after eachother.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 15, 2021, 07:25:57 am
A small message for information.
When logging and discharging without doing anything,
I had a few dropouts in 3 hours.
When opening setup Popups for Riden6012 and ATDL24 a lot of dropouts..
Also a lot dropouts after eachother.

Strange, the setup popups do not use the communication or cpu cycles, except when something is activated on them, only exception is the "updater" control and very few devices uses it.
Using one of the pages or popups that shows the result will use more cpu cycles, but are not supposed to affect communication that runs on separate threads and with higher priority.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 16, 2021, 08:40:18 am
Hi, do not delete posts when I want to answer it!

TestController is designed to work fairly transparently with GPIB interfaces, mostly it works fine, but I can see there are some exceptions.

I have added some untested code that will hopefully control the GPIB lines: [CLR] [LLO] [TRG]
When using other interfaces they will be ignored.
They are not documented and only supported in AR488 interface, when I have reports back that they work I will document them and add them to other GPIB interfaces.

Test jar file (Use it to replace existing jar file): http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on March 16, 2021, 09:56:15 am
Okay I deleted it because I figured out that your prior response had already answered the question.

I don’t see a change with the new jar - maybe my syntax?

CLR
;; NGPS: Tx <CLR>
;; NGPS: Tx <tx ++clr>
;; COM9: Tx: <++addr 8.> 2B 2B 61 64 64 72 20 38 0A
;; COM9: Tx: <.+.+clr.> 1B 2B 1B 2B 63 6C 72 0A
Trg
;; NGPS: Tx <Trg>
;; NGPS: Tx <tx ++trg>
;; COM9: Tx: <.+.+trg.> 1B 2B 1B 2B 74 72 67 0A 

I don’t think the device supports [LLO] – I don’t see it in the manual.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 16, 2021, 10:03:14 am
Okay I deleted it because I figured out that your prior response had already answered the question.

I do frequently add new functions to TestController and due to you problems I decided to look at the GPIB lines.


I don’t see a change with the new jar - maybe my syntax?

CLR
;; NGPS: Tx <CLR>

You must include the square brackets, i.e. [CLR] is not the same as CLR

I don’t think the device supports [LLO] – I don’t see it in the manual.

It looked like the 3 I have included are the control lines that may need direct support on the GPIB interface.
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on March 16, 2021, 10:24:33 am
No response from the device, just a blink from the address light.

TRG
;; NGPS: Tx <TRG>
;; NGPS: Tx <tx [TRG]>
;; COM9: Tx: <[TRG].> 5B 54 52 47 5D 0A
CLR
;; NGPS: Tx <CLR>
;; NGPS: Tx <tx [CLR]>
;; COM9: Tx: <[CLR].> 5B 43 4C 52 5D 0A
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 16, 2021, 10:44:51 am
No response from the device, just a blink from the address light.

TRG
;; NGPS: Tx <TRG>
;; NGPS: Tx <tx [TRG]>
;; COM9: Tx: <[TRG].> 5B 54 52 47 5D 0A

Sorry, I added it to SCPI/SCPIx driver code, now I have also added it to the ASCII driver code. It is still untested!

It may be some time before you can download the new version (I have seen from immediately up to 1 hour), check the version number, it must be V1.60
Title: Re: Program that can log from many multimeters.
Post by: AtlanticSurfer on March 16, 2021, 10:53:22 am

Quote
Sorry, I added it to SCPI/SCPIx driver code, now I have also added it to the ASCII driver code. It is still untested!

Bingo! That's working perfectly thank you very much!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 18, 2021, 03:43:34 pm
I have updated the script library for TestController, this update will be visible in all TC running on online computes and being V1.46 or newer.
To access it right click in the log window, the scripts either requires a loaded load (For battery test) or data in the table (For annotations).

(http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/AnnotageValue.png)

A couple of annotations is can be done automatic, for each one a curve and a color must be select and it is possible to skip the first few samples.

(http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/AnnotageMinMax.png)

Here min/max/average has been added to a noise sinus curve.

(http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/BatteryDischarge.png) (http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/LoadSweep.png)

Two battery test functions have been added, they will discharge a battery with specified current, until voltage drops below minimum. The load sweep will also add some annotations and color to the chart.

(http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/LoadSweepFormat.png)

It is possible to manually add load sweep annotations and color to the chart.

(http://lygte-info.dk/pic/Projects/TestController/ScriptsStandard/LoadSweepCurve.png)

The load sweep with annotations.

As usually it is possible to view and reuse the code for home designed scripts.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 22, 2021, 08:07:39 pm

Two battery test functions have been added, they will discharge a battery with specified current, until voltage drops below minimum. The load sweep will also add some annotations and color to the chart.

As usually it is possible to view and reuse the code for home designed scripts.

I've seached, but how do I use the Battery discharge function with own made script?
In other words, I like to use the discharge popup in my own script.
Looks good for quick making settings.
Thanks in advance.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 23, 2021, 01:45:07 pm
I've seached, but how do I use the Battery discharge function with own made script?
In other words, I like to use the discharge popup in my own script.
Looks good for quick making settings.
Thanks in advance.

First you open the list and manage scripts, right click in the log window and select:
(http://lygte-info.dk/pic/Projects/TestController/DocScriptList/OpenList.png)

In the script window you checkmark 1), select the script 2) and click View or Copy.
(http://lygte-info.dk/pic/Projects/TestController/DocScriptList/ViewScript.png)

Copy will copy to clipboard and you can then paste it into you own script.

You can find the file with all the system scripts here: \Documents\TestController\Settings\ScriptLibrary.dat
You can see the headers and the filters in the file, they are not included in View and Copy.
Do not bother change it, it will be restored to the standard contents next time TestController is started.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 23, 2021, 09:40:43 pm
@HKJ

Thanks for pointing me, just wat I needed and want to know.

THANKS for your complete instructions.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 28, 2021, 08:37:20 am
Load DL24 and PX100

For the owners of the DL24 or PX100 I like to share my own script for Battery discharge test with Atorch DL24 and PX100.

Added some functions for eliminating Drop-out failures. Seems to work OK.
Tested for hours and no problems.

Added option to reset the load before starting discharge. (I always forgot)
Added option to set specified max. time for discharging. After this time discharge stops anyway.
Setting now in Seconds, maybe better in minutes, don't know yet.
For result see the pictures.

Added function which set end voltage of the load 0.05 Volt lower than the end voltage
for Testcontroller, so Testcontroller has control and the load end voltage is for failsafe.

Attached my discharge script.

Note: I have not much programming experience, so code may not look good.

Remarks, hints, tips? let me know.

Thanks to HKJ for help.

Title: Re: Program that can log from many multimeters.
Post by: nctnico on March 28, 2021, 09:28:42 pm
Just wondering... has anyone used this program to log a frequency / time interval counter?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 29, 2021, 11:58:16 am
For the owners of the DL24 or PX100 I like to share my own script for Battery discharge test with Atorch DL24 and PX100.

Nice script, would it be ok if I make a webpage with user scripts and put your script and explanation on it?

Hopefully other will be added late.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 29, 2021, 12:00:04 pm
Just wondering... has anyone used this program to log a frequency / time interval counter?

I do not believe anyone has. It is probably fairly easy to define a frequency counter with the standard SCPI driver.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on March 29, 2021, 12:08:56 pm

Nice script, would it be ok if I make a webpage with user scripts and put your script and explanation on it?


Yes for sure, that is OK.
Title: Re: Program that can log from many multimeters.
Post by: joxelito on April 08, 2021, 08:26:38 am
Just wondering... has anyone used this program to log a frequency / time interval counter?
Nice!!!
The line:
Code: [Select]
#math Energy Wh SumTimeHour 0 (nameCurrent(load)+"*"+nameVoltage(load))
Solved my issue defining this class of Math.
In particular the way of inserting the product symbol as a text string: "*"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 11, 2021, 12:05:36 pm
V1.61 is up, the program has now been out for more than a year with lots of update.
It is mostly about new devices, with a few minor tweaks to the code:
   Added: Gossen MetraHit Energy DMM
   Changed: Large values (>=1e36) will be mapped to +/-infinite when reading from devices
   Fixed: Settings in GridPanel will update setupPopup
   Added: Support for direct GPIB control of some devices: CLR, LLO, LOC, TRG
   Added: RND 320 (KEL103) electronic load, thanks Calvin
   Fixed: Serial binary communication buffer will not overflow at fast data rates.
   Added: Multicomp Pro MP710258 & MP710259, thanks ian.ameline
   Added: Fluke 45, thanks Bad_driver

The Energy meter is the most complicated handheld meter to date.

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Mode.png)

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Setup1.png) (http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Setup2.png)

In Power mode with Energy checked a lot of values are read from the meter:

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Values.png)

It is a very good meter for checking standby power, the current range goes down to uA and the fuse will not blow as long as current is below 10A.
Title: Re: Program that can log from many multimeters.
Post by: gby on April 11, 2021, 02:24:18 pm
HKJ,

Thanks for all the updates.  To give back to the community here are one new device file and a bunch of updated/more complete device files.

Aim TTi CPX series power supplies        New, has setup popup and script interface
Ametek XP series power supplies          Minor update on #value statement per HKJ input
Owon OPD series power supplies          Updated to log faster, tweaked setup popup, added script interface
Kollmorgen AKD1G servo                     Updated to log much faster, added script interface
Kollmorgen AKD2G servo                     Updated to log much faster, added script interface
Tektronix MDO,MSO,DPO,TDS Scopes   Minor bug fix update
Title: Re: Program that can log from many multimeters.
Post by: gby on April 11, 2021, 02:35:28 pm
HKJ,

I have a feature suggestion.  I often have a test setup that has power supplies and instrumentation.  For the power supplies the scripts just need to set voltages, current limits and turn them on/off.  For the real test log data is only needed from the instrumentation and not needed from the power supplies.  It is a minor nuisance to have a lot of extra data logged making the files much larger.  But, the real issue is that some of my supplies are very slow to log and limit the log interval to 1 sec while the desire is more like 0.1 sec interval which the instrumentation can easily do.

Could you add a way to turn logging off for a device via script?  Perhaps even add a check box on the Load Devices tab next to the Enable check box that would manually allow turning logging on/off for each device individually.  This way you could have a bench full of equipment all connected but only log from the devices that you need data from.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2021, 01:23:35 pm
Aim TTi CPX series power supplies        New, has setup popup and script interface
Ametek XP series power supplies          Minor update on #value statement per HKJ input
Owon OPD series power supplies          Updated to log faster, tweaked setup popup, added script interface
Kollmorgen AKD1G servo                     Updated to log much faster, added script interface
Kollmorgen AKD2G servo                     Updated to log much faster, added script interface
Tektronix MDO,MSO,DPO,TDS Scopes   Minor bug fix update

I will include all the updates and the new definitions in the next release. I did already have two of the TTi supplies included with brand TTi, but have also included yours as Aim TTi.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2021, 01:25:42 pm
I have a feature suggestion.  I often have a test setup that has power supplies and instrumentation.  For the power supplies the scripts just need to set voltages, current limits and turn them on/off.  For the real test log data is only needed from the instrumentation and not needed from the power supplies.  It is a minor nuisance to have a lot of extra data logged making the files much larger.  But, the real issue is that some of my supplies are very slow to log and limit the log interval to 1 sec while the desire is more like 0.1 sec interval which the instrumentation can easily do.

Could you add a way to turn logging off for a device via script?  Perhaps even add a check box on the Load Devices tab next to the Enable check box that would manually allow turning logging on/off for each device individually.  This way you could have a bench full of equipment all connected but only log from the devices that you need data from.

I can see the reason for your request, but it is not that easy to add.
I will look at it, but not promise anything.
Title: Re: Program that can log from many multimeters.
Post by: Wintel on April 12, 2021, 01:44:30 pm
V1.61 is up, the program has now been out for more than a year with lots of update.
It is mostly about new devices, with a few minor tweaks to the code:
   Added: Gossen MetraHit Energy DMM
   Changed: Large values (>=1e36) will be mapped to +/-infinite when reading from devices
   Fixed: Settings in GridPanel will update setupPopup
   Added: Support for direct GPIB control of some devices: CLR, LLO, LOC, TRG
   Added: RND 320 (KEL103) electronic load, thanks Calvin
   Fixed: Serial binary communication buffer will not overflow at fast data rates.
   Added: Multicomp Pro MP710258 & MP710259, thanks ian.ameline
   Added: Fluke 45, thanks Bad_driver

The Energy meter is the most complicated handheld meter to date.

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Mode.png)

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Setup1.png) (http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Setup2.png)

In Power mode with Energy checked a lot of values are read from the meter:

(http://lygte-info.dk/pic/Projects/TestController/DeviceExamples/GossenMatraHitEnergy/Values.png)

It is a very good meter for checking standby power, the current range goes down to uA and the fuse will not blow as long as current is below 10A.

Hi HKJ,

Do you have the full changelog for TestController?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2021, 02:50:40 pm
Do you have the full changelog for TestController?

This thread is the best changelog. You can find a shorter text only version here: http://lygte-info.dk/pic/Projects/TestController/DeviceHelp/Versions.dat (http://lygte-info.dk/pic/Projects/TestController/DeviceHelp/Versions.dat), it is the same list that TestController uses when it says a new version is ready.

The changelog do not include the first couple of months and do include test versions (These changes are listen for the next released version).
Title: Re: Program that can log from many multimeters.
Post by: Wintel on April 12, 2021, 10:40:10 pm
Do you have the full changelog for TestController?

This thread is the best changelog. You can find a shorter text only version here: http://lygte-info.dk/pic/Projects/TestController/DeviceHelp/Versions.dat (http://lygte-info.dk/pic/Projects/TestController/DeviceHelp/Versions.dat), it is the same list that TestController uses when it says a new version is ready.

The changelog do not include the first couple of months and do include test versions (These changes are listen for the next released version).

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: adso85swe on April 13, 2021, 10:13:16 am
When I try to launch the software, I get the error message: "Windows cannot find 'javaw'. Make sure you typed the name correctly, and then try again".
Am I missing some java software on my computer or whats the problem here?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2021, 10:42:36 am
When I try to launch the software, I get the error message: "Windows cannot find 'javaw'. Make sure you typed the name correctly, and then try again".
Am I missing some java software on my computer or whats the problem here?

You need Java installed on your computer, you can find it here: https://java.com/en/ (https://java.com/en/)
The advantage of making a program in Java is that it can run on multiple operating systems, TestController works on Windows, Linux and Mac and it exactly the same program that is used with all 3 systems (But it is different Java installations).
Title: Re: Program that can log from many multimeters.
Post by: adso85swe on April 13, 2021, 03:01:21 pm
Thanks, I managed to open the software after installing Java  :-+

My next problem is to connect my UNI-T UT61D multimeter. I got it delivered with a RS232 serial cable and a direct USB cable, and I am using the latter one to connect to the computer. The problem is, when using the usb cable, the device does not show up as a COM-port but a normal usb device, so Im a bit confused as to what address to type in the address field. Can't find any suitable address info in the device manager on Windows. The multimeter does connect with the official UNI-T software, so I have confirmed that the connection works with a PC, but I don't have any address info about the connection interface.

Does anyone have any good feedback on how to tackle this?

Edit: I have ordered a RS232 to USB adapter and will try this as an alternative when it arrives together with the UNI-T RS232 cable. Hopefully this combination will show up as a COM port on the PC, just like Arduino boards usually do for example.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2021, 06:44:08 pm
Thanks, I managed to open the software after installing Java  :-+

My next problem is to connect my UNI-T UT61D multimeter. I got it delivered with a RS232 serial cable and a direct USB cable, and I am using the latter one to connect to the computer. The problem is, when using the usb cable, the device does not show up as a COM-port but a normal usb device, so Im a bit confused as to what address to type in the address field. Can't find any suitable address info in the device manager on Windows. The multimeter does connect with the official UNI-T software, so I have confirmed that the connection works with a PC, but I don't have any address info about the connection interface.

Does anyone have any good feedback on how to tackle this?

Edit: I have ordered a RS232 to USB adapter and will try this as an alternative when it arrives together with the UNI-T RS232 cable. Hopefully this combination will show up as a COM port on the PC, just like Arduino boards usually do for example.

TestController do not support HID (Except for Brymen on Windows), but the RS232 and USB to RS232 will work. I have coded UT61D interface from a datasheet, i.e. if you find any problems please post it and I will look at it.

Title: Re: Program that can log from many multimeters.
Post by: nez on April 14, 2021, 08:43:13 am
Hi HKJ,

I have a few small requests for quality of life improvements that I'm hoping are feasible without too much effort on your part.

1.  It would be nice if we could resize the selection areas on the right side of the Chart and Histogram tabs (and even nicer if the app remembered the resize setting).  Currently they can be only scrolled left/right if the entries are too long (easy for that to happen), but that's a bit of a hassle and makes the check boxes scroll out of view as well so I'm not sure which are enabled/disabled without scrolling back.

2.  The popup window for 'Values from chart' could be slightly wider by default (or remember resize settings).  Currently it truncates some of the names and values of the cursor position because it lacks space to display them.

3.  If the number of Decimals in the 'Scales for chart' tab are low, the tick mark values are duplicated (truncated) as the same value for multiple vertical tick marks.  It gets more disorienting the larger the window is resized vertically. *See screenshots below.

Is it possible to enhance the Chart to not display the tick values that have more decimals than the settings limit?

It might also be nice if the Histograms tab also didn't show extra resolution for 'bin' values that can't used anyway due to the limit of decimal places allowed (and made the bar for each used bin wider to fit?).  But this is less important than the Chart duplicate values on the scales.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on April 14, 2021, 11:37:33 am
Yes, it's a pity with Uni-T. As mentioned some weeks ago I would be very happy to see my Uni-T UT181A working with TC
but it also suffers from this proprietary HID based interface  |O
Title: Re: Program that can log from many multimeters.
Post by: Pukker on April 14, 2021, 08:45:22 pm
Yes, it's a pity with Uni-T. As mentioned some weeks ago I would be very happy to see my Uni-T UT181A working with TC
but it also suffers from this proprietary HID based interface  |O

For the one's who have an Uni-T USB-interface which is acting like an HID device,
you can have a look here:

https://www.element14.com/community/groups/test-and-measurement/blog/2020/04/08/uni-t-dmm-usb-adapter-compatibility-with-windows-10 (https://www.element14.com/community/groups/test-and-measurement/blog/2020/04/08/uni-t-dmm-usb-adapter-compatibility-with-windows-10)

There is an explanation to make the interface usable with an USB-TTL converter module (with FTDI chip, which has more compatible drivers)
You have to break open your interface.

I have the same device as used there, I will try this later.
I have ordered this converter for the job. Have the same one which is working fine with the PX100 load.

https://nl.aliexpress.com/item/1005001908476987.html?spm=a2g0s.9042311.0.0.72944c4deyJb72 (https://nl.aliexpress.com/item/1005001908476987.html?spm=a2g0s.9042311.0.0.72944c4deyJb72)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2021, 11:13:31 am
1.  It would be nice if we could resize the selection areas on the right side of the Chart and Histogram tabs (and even nicer if the app remembered the resize setting).  Currently they can be only scrolled left/right if the entries are too long (easy for that to happen), but that's a bit of a hassle and makes the check boxes scroll out of view as well so I'm not sure which are enabled/disabled without scrolling back.

I may look on this.

2.  The popup window for 'Values from chart' could be slightly wider by default (or remember resize settings).  Currently it truncates some of the names and values of the cursor position because it lacks space to display them.

And also on this.

3.  If the number of Decimals in the 'Scales for chart' tab are low, the tick mark values are duplicated (truncated) as the same value for multiple vertical tick marks.  It gets more disorienting the larger the window is resized vertically. *See screenshots below.

Is it possible to enhance the Chart to not display the tick values that have more decimals than the settings limit?

I cannot do anything for this because it is inside the library I uses and I do not what to modify that code.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on April 15, 2021, 01:50:02 pm
Hi HKJ,

a very short (and maybe dumb) question. How can I change Time to DayTime in the diagram view?
Thanks in advance!

B.D.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2021, 01:54:56 pm
a very short (and maybe dumb) question. How can I change Time to DayTime in the diagram view?
Thanks in advance!

Right click on the HH:MM:SS checkbox and select dateTime
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on April 15, 2021, 02:23:26 pm
Thanks! .... so simple...  |O
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2021, 11:28:26 am
V1.62 is up
New devices and some wishes implemented.
   Added: TTi TF930 Frequency counter.
   Changed: Chart value popup will remember width changes until next program restart.
   Added: Adjustment of side panel size on Chart and Histogram (This is not saved, but reset on each program start).
   Added: Benetech GM1020, it is only tested with a Arduino substitute  for now. Thanks Jarkko
   Added: #DEVICELOGGINGDISABLE, #DEVICELOGGINGENABLE to suspend logging from some devices
   Added: Aim TTi CPX200DP, Aim TTi CPX400SP, Aim TTi CPX400DP (Two of them did exist with TTi as brand). Thanks gby
   Updated: Ametek XP, Owon OPD, Kolmorgen, Tektronix MDO,MSO,DPO,TDS. Thanks gby

gby: You can now disable collection from some devices, but it do not remove the columns, use the export function for that after finished logging.
nez: The width of the side panel on Chart and Histogram can now be adjusted, the chart value popup size will be kept until program restart.
I was asked about the GM1020 Lux meter and with some help from the asker I implemented it.
Title: Re: Program that can log from many multimeters.
Post by: DiTBho on April 20, 2021, 11:34:32 am
is there any source about protocols?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2021, 11:41:50 am
is there any source about protocols?

What do you mean?
All device definitions are in supplied ascii files and the documentation for the format in these files is part of the TestController documentation you can find here: https://lygte-info.dk/project/TestControllerIntro%20UK.html (https://lygte-info.dk/project/TestControllerIntro%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: DiTBho on April 20, 2021, 02:16:54 pm
What do you mean?

C source code, I need to recompile for non-x86 and non arm machine, also there are a couple of  MASTECH multimeters listed for which I cannot find any information about the protocol.

 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2021, 02:43:16 pm
What do you mean?

C source code, I need to recompile for non-x86 and non arm machine, also there are a couple of  MASTECH multimeters listed for which I cannot find any information about the protocol.

The program is in Java and runs on many different CPU's, the program source is not available at the current time.
Title: Re: Program that can log from many multimeters.
Post by: DiTBho on April 20, 2021, 03:21:09 pm
I don't have a JDK for my target, and Kaffe and similars simply don't work.
Anyway, don't worry, I will find a solution myself  :D
Title: Re: Program that can log from many multimeters.
Post by: gby on April 21, 2021, 11:57:33 pm
HKJ,

Thanks for the #DEVICELOGGINGDISABLE, #DEVICELOGGINGENABLE script commands.  So far they seem to work as desired.  I will check them out more thoroughly soon.

I do have a question about a problem I am having getting an 8 byte return and parsing the last byte out.  Below is the device file code for the command:
Code: [Select]
#scpiCmd samplePVIT? txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00\x4c\x00
:readmath: binConv(int(value),0,3,0,1)/256.0+", "+binConv(int(value),3,2,1,1)*0.5587935448+", "+binConv(int(0xF0FFFFFFFFFFFF&value),5,2,1,1)*DIpeak/9668+", "+binConv(int(value),7,1,0,0)
This device is using #driver ascii.  Below is the output from the DOS debug window:
Code: [Select]
samplePVIT?
;; S200: Tx <samplePVIT?>
;; S200: Tx <txrxnBin? 7 \x5E\x00\x5C\x00\x5A\x00\x3A\x00\x38\x00\x8A\x00\x88\x00\x4c\x00>
;; COM1: TxBin: <^.\.Z.:.8.?.?.L.> 5E 00 5C 00 5A 00 3A 00 38 00 8A 00 88 00 4C 00
;; COM1: RxBin: 9A D1 05 00 01 00 18 36
;; S200: Rx <39633.01953125, 0.5587935448, 0.029788994621431527, 0>
;; 39633.01953125, 0.5587935448, 0.029788994621431527, 0
Note that the last byte received is 36 hex but the last number in the received value after the readmath is 0.  Nothing I do seems to get that last byte to be anything other than 0.  Using the same code in a script:
   = binConv("\x9A\xCF\xFA\x00\x00\x00\x48\x36",7,1,0,0)
properly gives decimal 54 back.

The first 7 received bytes all get handled properly.  It is just the eighth one that comes back as zero in the received command.  I had thought it would put the 8 bytes into a long integer which is 8 bytes long and would be able to handle it.

Thoughts on what I might be doing wrong or what might be going wrong inside TC?  Suggestions to try?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 22, 2021, 12:05:50 pm
Thoughts on what I might be doing wrong or what might be going wrong inside TC?  Suggestions to try?

Looks like everything works correctly.  :)
You request 7 bytes and when you decode the eight byte you get a zero result.
It would, of course,  have been much more obvious if I had stripped the extra byte before the hex dump and not after.
Title: Re: Program that can log from many multimeters.
Post by: gby on April 22, 2021, 03:00:54 pm
HKJ,

Thanks for pointing out my silly.  It works better when you actually tell it to do what you want it to do.

I modified a working 7 byte command and as you point out did not change the "7" to an "8".  Clear case of not seeing the tree for the forest of other details.

Sorry to bother you and thanks for spotting it for me.

Title: Re: Program that can log from many multimeters.
Post by: adso85swe on April 29, 2021, 07:39:07 pm
TestController do not support HID (Except for Brymen on Windows), but the RS232 and USB to RS232 will work. I have coded UT61D interface from a datasheet, i.e. if you find any problems please post it and I will look at it.

I have now done some initial tests of my UNI-T UT61D using the RS323 cable + usb adapter interface and it works fine. Haven’t encountered any issue yet.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2021, 06:55:22 pm
I have now done some initial tests of my UNI-T UT61D using the RS323 cable + usb adapter interface and it works fine. Haven’t encountered any issue yet.

Thanks, nice to know it works.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2021, 12:24:56 pm
I am working on adding a couple of multimeters:
CA 5292
CA 5293
CA 5292-BT
CA 5293-BT
MTX 3292B
MTX 3293B
MTX 3292B-BT
MTX 3293B-BT
They all use the same protocol, except the ID line is different. For the CA5293-BT is look like this:

Code: [Select]
2a 69 64 6e 3f 0d                                *idn?.
43 2e 41 35 32 39 33 2d 42 54 2c 20 48 56 20 41  C.A5293-BT, HV A
2c 20 46 56 20 31 2e 30 32 0a 0d                 , FV 1.02..

I send a *idn? command and get the meter model back, from this line I can guess all CA meters, but I would like to get a similar line from a Metrix meter.
I have use the program Termite with hex option enabled.

Anybody that can help?

The definition looks good, I have even added download of log data to TestController and screendump:

(http://lygte-info.dk/pic/Chauvin%20Arnoux/CA5293-BT/ScreenDumps/wform.png) (http://lygte-info.dk/pic/Chauvin%20Arnoux/CA5293-BT/ScreenDumps/surv.png) (http://lygte-info.dk/pic/Chauvin%20Arnoux/CA5293-BT/ScreenDumps/chart.png)
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 09:33:26 am
Hello HKJ. I purchased a new Kunkin KP184 (2021.02.27). When I try to establish a connection, I get a message:
Quote
KP184 changed the protocol in V4, one part was swapping the checksum bytes, but there is something more that I have not found out.
The checksum bytes can be swapping by using "#subDriver Kunkinx", but something else is preventing it from working (May be handshake signals). I need somebody with a newer KP184 to help me finding out.
I'm ready to help.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 10:57:17 am
Hello HKJ. I purchased a new Kunkin KP184 (2021.02.27). When I try to establish a connection, I get a message:
I'm ready to help.

The message do not popup when you try to connect, but when you ask for a "Preview"
When you have selected the KP184 in the combobox, you have to press add, then click on the "Address" field and type in the comport. You may also have to modify the baudrate.
You can now try to "Reload" and if it a new firmware it will fail.

To test with the new firmware:
Open the file "Kunkin KP184.txt"

Change the subdriver line to:
#subDriver Kunkinx

Add a ; before the line: #verifyDevice 1840 model?
This line will have to be fixed later on, but for testing it is easier to disable it.

First try is adding some handshake signals to the baudrate on the load device page (Use the correct baudrate):
9600N81dr
9600N81Dr
9600N81dR
9600N81DR

Press Reconnect to try each setting
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 11:53:03 am
.....
Press Reconnect to try each setting
Code: [Select]
Starting
;; Start thread for: COM11 - Kunkin KP184
;; COM11: Set params: 9600
;; COM11: Tx <mode?>
;; COM11: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 44 30
java.lang.NullPointerException: Cannot load from byte/boolean array because "ans
wer" is null
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface$ModbusRTUInterfa
ceKunkin.readHoldingInputL(DeviceModbus.java:396)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModb
us.java:874)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:77)
        at dk.hkj.main.DeviceInterface.threadStarted(DeviceInterface.java:244)
        at dk.hkj.devices.DeviceSCPI.threadStarted(DeviceSCPI.java:28)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads
.java:1380)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1
428)
;; COM11: Rx Timeout
;; Found Kunkin KP184 on USB2.0-Ser! (COM11)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 12:21:02 pm
Try changing the subdriver to:
#subDriver RTU

And try the different handshake combinations again (Remember to restart TestController).
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 12:30:26 pm
Try changing the subdriver to:
#subDriver RTU

And try the different handshake combinations again (Remember to restart TestController).
Quote
Starting
;; Start thread for: COM11 - Kunkin KP184
;; COM11: Set params: 115200
;; COM11: Tx <mode?>
;; COM11: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 02 C4 32
java.lang.NullPointerException: Cannot load from byte/boolean array because "ans
wer" is null
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface$ModbusRTUInterfa
ce.readHoldingInputL(DeviceModbus.java:259)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModb
us.java:874)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:77)
        at dk.hkj.main.DeviceInterface.threadStarted(DeviceInterface.java:244)
        at dk.hkj.devices.DeviceSCPI.threadStarted(DeviceSCPI.java:28)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads
.java:1380)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1
428)
;; COM11: Rx Timeout
;; Found Kunkin KP184 on USB2.0-Ser! (COM11)
I installed the program from a nearby thread. Without the "CRC LSB First - 2020 FW and above" checkbox, there is no connection at all.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 12:50:58 pm
I installed the program from a nearby thread. Without the "CRC LSB First - 2020 FW and above" checkbox, there is no connection at all.

I do not know what you mean?

As long as TC says it is connected, you can try other commands, may be mode commands has a problem? This is done my typing the command on the command line in TC and pressing ENTER (Without the quotes):
Define current: "current 5"
Ask for defined current: "current?"
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 01:55:33 pm
Define current: "current 5"
Ask for defined current: "current?"


Quote
current 5
;; KP184: Tx <current 5>
;; KP184: Tx <holdingL 0x0116 5 *1000>
;; COM11: Tx: 01 10 01 16 00 02 04 00 00 13 88 72 4F
current?
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 02 24 33
java.lang.NullPointerException: Cannot load from byte/boolean array because "ans
wer" is null
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface$ModbusRTUInterfa
ce.readHoldingInputL(DeviceModbus.java:259)
        at dk.hkj.devices.DeviceModbus$TranslatingCommInterface.write(DeviceModb
us.java:874)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:106)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:77)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:28
34)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1437)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1435)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:893)
        at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaste
r.java:248)
        at java.desktop/java.awt.Component.processKeyEvent(Component.java:6569)
        at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2
849)
        at java.desktop/java.awt.Component.processEvent(Component.java:6391)
        at java.desktop/java.awt.Container.processEvent(Container.java:2263)
        at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4990
)
        at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321
)
        at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
        at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFo
cusManager.java:1950)
        at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(De
faultKeyboardFocusManager.java:870)
        at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent
(DefaultKeyboardFocusManager.java:1139)
        at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions
(DefaultKeyboardFocusManager.java:1009)
        at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(Defau
ltKeyboardFocusManager.java:835)
        at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4871
)
        at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321
)
        at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2769)
        at java.desktop/java.awt.Component.dispatchEvent(Component.java:4822)
        at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:77
2)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
        at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
        at java.base/java.security.AccessController.doPrivileged(AccessControlle
r.java:391)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doInt
ersectionPrivilege(ProtectionDomain.java:85)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doInt
ersectionPrivilege(ProtectionDomain.java:95)
        at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
        at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
        at java.base/java.security.AccessController.doPrivileged(AccessControlle
r.java:391)
        at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doInt
ersectionPrivilege(ProtectionDomain.java:85)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
        at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Even
tDispatchThread.java:203)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDi
spatchThread.java:124)
        at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Even
tDispatchThread.java:113)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThr
ead.java:109)
        at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThr
ead.java:101)
        at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.jav
a:90)
;; KP184: Rx Timeout

Ask for defined current: "current?" does not work
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 02:14:38 pm
I don't understand anything about it. Here is an excerpt from the instructions:
Quote
Instruction example:
The following instances suppose the communication be 01, data is hexadecimal
format.
1.Set up load current:
Send instruction: 01 06 01 16 00 01 04 00 00 07 D0 0C 9D
The meaning of each byte is:
01: equipment address.
06: instruction number written in the single register.
01 16: address written in the target register (load current register).
00 01: the number written in the target register
04: the byte number of data written in the target register. If the target register
is 4-byte register, the value is 4.
00 00 07 D0 : data, if it is 07D0, the current is set up as 2000mA.
0C 9D: check code. The high order is before the low order.
Load return data: 01 06 01 16 00 01 04 00 00 07 D0 0C 9D
When operating single register of the load, the load return data is returning the
instruction as original
;; COM11: Tx: 01 10 01 16 00 02 04 00 00 13 88 72 4F
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 02:16:25 pm
Define current: "current 5"
Ask for defined current: "current?"

Quote
current 5
;; KP184: Tx <current 5>
;; KP184: Tx <holdingL 0x0116 5 *1000>
;; COM11: Tx: 01 10 01 16 00 02 04 00 00 13 88 72 4F
current?
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 02 24 33
java.lang.NullPointerException: Cannot load from byte/boolean array because "ans
wer" is null
Ask for defined current: "current?" does not work

You do not need to post the error message, I am perfectly satisfied with as much as I show above. The rest is due to the NullPointerException and is expected.

Do you have another software you can try setting and reading current, while capturing the messages?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 02:17:09 pm
I don't understand anything about it. Here is an excerpt from the instructions:

Is this instruction valid for the old or the new firmware?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 02:26:19 pm
I can only write the contents of the TC window, not the DOS window.
I only have this manual (Ver1.0 2017.09)
I do not know how to find out the firmware version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 02:36:56 pm
I can only write the contents of the TC window, not the DOS window.
I only have this manual (Ver1.0 2017.09)
I do not know how to find out the firmware version.

This probably means the example in the manual are for the old software version.
TC with a unmodified Kunkin file is supposed to work directly with the old software.

What I would really like to get is the hex codes for a working set current and get current message, then I can be sure to setup the correct checksum and message format. I had hoped the different tests would have worked.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 02:47:03 pm
Do you have another software you can try setting and reading current, while capturing the messages?
What software can do this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 02:56:29 pm
Do you have another software you can try setting and reading current, while capturing the messages?
What software can do this?

Somebody has made a software specifically for the Kunkin load (It is in this forum, but probably a few pages back) and it handles both software versions, I do not know if it can do a hex dump or you need to wire a computer in-between to capture it.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 04:54:27 pm
I can install a com port sniffer. There is data from a running program. Will such data be suitable?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2021, 05:06:52 pm
I can install a com port sniffer. There is data from a running program. Will such data be suitable?

Yes, as long as include some message I can replicate (like set current and get current).
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 08, 2021, 05:16:23 pm
Here, the current changes from 1a to 2a. Sorry that there is a lot of garbage in the log.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 10:11:01 am
I checked the sniffer commands that are listed in the user guide in the "Communication Protocol" section. Here is the data obtained:
Code: [Select]
------ write 2000mA ------------------
01 06 01 16 00 01 04 00 00 07 D0 9D 0C - sniffer
01 06 01 16 00 01 04 00 00 07 D0 0C 9D - manual

------ write 20V ---------------------
01 06 01 12 00 01 04 00 00 4E 20 AB 2B - sniffer
01 06 01 12 00 01 04 00 00 4E 20 2B AB - manual

------ ON ---------------------------
01 06 01 0E 00 01 04 00 00 00 01 5F CA - sniffer
01 06 01 0E 00 01 04 00 00 00 01 CA 5F - manual

------ mode CV -----------------------
01 06 01 10 00 01 04 00 00 00 00 1E 8A

------ mode CC -----------------------
01 06 01 10 00 01 04 00 00 00 01 DF 4A

------ mode CR -----------------------
01 06 01 10 00 01 04 00 00 00 02 9F 4B

------ mode CW -----------------------
01 06 01 10 00 01 04 00 00 00 03 5E 8B
Maybe this will somehow help to understand the problem.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 10:39:15 am
As far as I can see I generate the correct byte string when the #subDriver is "Kunkinx"
I just tried:
;; 12141.70ms KP184: Tx <current 2>
;; 12141.77ms KP184: Tx <holdingL 0x0116 2 *1000>
;; 12141.85ms COM15: Tx: 01 06 01 16 00 01 04 00 00 07 D0 9D 0C

This means the most likely reason is the handshake settings that I asked you to try before.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 11:07:14 am
This means the most likely reason is the handshake settings that I asked you to try before.
I tried both #subDriver Kunkinx and #subDriver RTU. Also ;#verifyDevice 1840 model? commented out. Without this, the connection is not established. I didn't notice the difference. No data is received from KP184. Did another data acquisition from KP184:
Code: [Select]
01 03 03 01 00 00 14 4E
01 03 1F 02 05 00 00 00 00 00 00 00 00  00  00  FA  00  FA  00  03  E8  00 00 00 00 4E 20 00 00 00 00 00 00 00 00 E9 91 - 0v
01 03 1F 02 05 00 10 63 00 00 00 00 00  00  00  FA  00  FA  00  03  E8  00 00 00 00 4E 20 00 00 00 00 00 00 00 00 0E 8D - 4.195v
               |  volt |current|
01 03 30 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 CRCH CRCL - manual
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 11:17:27 am
This means the most likely reason is the handshake settings that I asked you to try before.
I tried both #subDriver Kunkinx and #subDriver RTU. Also ;#verifyDevice 1840 model? commented out. Without this, the connection is not established. I didn't notice the difference. No data is received from KP184. Did another data acquisition from KP184:

If you capture the message with #subDriver Kunkin and Kunkinx you will see the two crc bytes has swapped location.
Can't you see on the load if it accept the current setting?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 11:57:30 am
Pressing the "Setup" button
Code: [Select]
;; Start thread for: COM11 - Kunkin KP184
;; COM11: Set params: 115200
;; COM11: Tx <mode?>
;; COM11: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 30 44
;; COM11: Rx Timeout
;; Found Kunkin KP184 on USB2.0-Ser! (COM11)
;; KP184: Tx <on?>
;; KP184: Tx <holdingL? 0x010E>
;; COM11: Tx: 01 03 01 0E 00 04 36 24
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <mode?>
;; KP184: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 30 44
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 31 A4
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 31 A4
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <voltage?>
;; KP184: Tx <holdingL? 0x0112 /1000>
;; COM11: Tx: 01 03 01 12 00 04 F0 E5
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <resistance?>
;; KP184: Tx <holdingL? 0x011A>
;; COM11: Tx: 01 03 01 1A 00 04 32 64
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <power?>
;; KP184: Tx <holdingL? 0x011E /10>
;; COM11: Tx: 01 03 01 1E 00 04 F3 25
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <remote?>
;; KP184: Tx <holdingL? 0x10a>
;; COM11: Tx: 01 03 01 0A 00 04 F7 65
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 12:01:46 pm
The sniffer is connected to the program " KP184 Modbus" из темы https://www.eevblog.com/forum/testgear/serial-to-usb-on-kunkin-kp184-electronic-load/msg3559547/#msg3559547 (https://www.eevblog.com/forum/testgear/serial-to-usb-on-kunkin-kp184-electronic-load/msg3559547/#msg3559547)
Sorry, nothing works in TestController except for the connection.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 12:09:04 pm
Pressing the "Setup" button
Code: [Select]
;; Start thread for: COM11 - Kunkin KP184
;; COM11: Set params: 115200
;; COM11: Tx <mode?>
;; COM11: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 30 44

That is not data from "Kunkin" or "Kunkinx" #subDriver[/code]
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 12:11:03 pm
#subDriver Kunkin
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 12:18:29 pm
If you set #subDriver Kunkinx, then the current value is recorded.
Write 2A:
Code: [Select]
;; Start thread for: COM11 - Kunkin KP184
;; COM11: Set params: 115200
;; COM11: Tx <mode?>
;; COM11: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 44 30
;; COM11: Rx Timeout
;; Found Kunkin KP184 on USB2.0-Ser! (COM11)
;; KP184: Tx <on?>
;; KP184: Tx <holdingL? 0x010E>
;; COM11: Tx: 01 03 01 0E 00 04 24 36
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <mode?>
;; KP184: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 44 30
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 A4 31
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 A4 31
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <voltage?>
;; KP184: Tx <holdingL? 0x0112 /1000>
;; COM11: Tx: 01 03 01 12 00 04 E5 F0
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <resistance?>
;; KP184: Tx <holdingL? 0x011A>
;; COM11: Tx: 01 03 01 1A 00 04 64 32
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <power?>
;; KP184: Tx <holdingL? 0x011E /10>
;; COM11: Tx: 01 03 01 1E 00 04 25 F3
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <remote?>
;; KP184: Tx <holdingL? 0x10a>
;; COM11: Tx: 01 03 01 0A 00 04 65 F7
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current 2.0>
;; KP184: Tx <holdingL 0x0116 2.0 *1000>
;; COM11: Tx: 01 06 01 16 00 01 04 00 00 07 D0 9D 0C
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 A4 31
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <current?>
;; KP184: Tx <holdingL? 0x0116 /1000>
;; COM11: Tx: 01 03 01 16 00 04 A4 31
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
;; KP184: Tx <mode?>
;; KP184: Tx <holdingL? 0x0110>
;; COM11: Tx: 01 03 01 10 00 04 44 30
;; KP184: Rx Timeout
;; KP184: Rx as number <NaN>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 12:21:33 pm
If you set #subDriver Kunkinx, then the current value is recorded.

What do you mean by recorder? That the load see it?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 12:25:52 pm
If you set #subDriver Kunkinx, then the current value is recorded.

What do you mean by recorder? That the load see it?
KP184 accept the current value. Sorry, Google Translate
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 12:44:16 pm
KP184 accept the current value. Sorry, Google Translate

That makes me suspect that you did not perform the handshake tests correctly:
9600N81dr
9600N81Dr
9600N81dR
9600N81DR

The letters D & R control the DTS and RTS lines, a lower case letter means signal low a upper case means signal high.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 12:47:39 pm
Where should I configure this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 12:56:21 pm
Where should I configure this?

On the "Load devices" page in the baudrate field and remember to press Reconnect after doing any changes.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 01:06:20 pm
I tried all four options. I did not notice any changes. Data from KP184 does not come.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 01:20:27 pm
I tried all four options. I did not notice any changes. Data from KP184 does not come.

I do not really know what to do know. TC is obvious sending the correct messages and you have tested the different handshake possibilities.
One detail: Did you press ENTER after typing each baudrate, the value is not used before ENTER is pressed.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 01:23:52 pm
Yes, ENTER.
Can I make a full dump from the moment of connection and before pressing the "Setup" button?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 01:28:57 pm
Yes, ENTER.
Can I make a full dump from the moment of connection and before pressing the "Setup" button?

You get that in debug mode.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 01:33:38 pm
That's what the sniffer intercepts.

Code: [Select]
01030110000444300103040E000001391B0103010E000424360103040E000000F8DB01030110000444300103040E000001391B010301160004A431010304000007D0F99F010301160004A431010304000007D0F99F010301120004E5F001030400004E20CE4B0103011A0004643201030400000000FA330103011E000425F301030400000000FA330103010A000465F701030400000000FA33
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 05:34:17 pm
I have checked all the #subDriver options. KP184 only responds if #subDriver Kunkinx is installed. If the driver is #subDriver Kunkin or #subDriver RTU, the KP184 does not respond to commands. Bitrate (9600N81dr,
9600N81Dr, 9600N81dR, 9600N81DR) has no effect. The same data is always sent and returned. I posted the dump in the previous post. TestConrtoller does not process the response from KP184.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 07:08:52 pm
I have checked all the #subDriver options. KP184 only responds if #subDriver Kunkinx is installed. If the driver is #subDriver Kunkin or #subDriver RTU, the KP184 does not respond to commands.

#subdriver Kunkin & Kunkinx uses a modified modbus protocol, originally Kunkin swapped the crc bytes, they fixed that in the new software and I changed it in Kunkinx
RTU is standard modbus protocol.

Bitrate (9600N81dr, 9600N81Dr, 9600N81dR, 9600N81DR) has no effect. The same data is always sent and returned. I posted the dump in the previous post. TestConrtoller does not process the response from KP184.

These setting do not affect the data, instead they change the handshake lines, some device wait for one of these signals before transmitting and some devices use these signals for power.
I do not verify checksum or anything on received data, i.e. any received data will be shown.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 09, 2021, 07:56:46 pm
You probably don't understand me.
With the #subDriver Kunkinx protocol, the TC controls KP184 (switches modes, changes current and voltage) and KP184 sends a response. But the answer is not accepted by TC and is not displayed on the "Setup" panel and in the "Current values" section.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 09, 2021, 08:48:05 pm
You probably don't understand me.
With the #subDriver Kunkinx protocol, the TC controls KP184 (switches modes, changes current and voltage) and KP184 sends a response. But the answer is not accepted by TC and is not displayed on the "Setup" panel and in the "Current values" section.

It do not make sense, I have not received any complains about modbus not working and all of the different #subdriver versions uses the same receive code (That is also shared with some other interfaces).
The serial library i use may fail on some os/hardware combinations, I do not keep track of exactly what it support (It do support many different combinations). But I doubt that is the problem here, because somebody else had problems with the Kunkinx driver (And it was the the right place to do a long test).
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 06:11:20 am
I can assume that the protocol for KP184 was changed again. I received the latest 2021 software from the vendor (1.0.13). Only this version is functional. There are 2019 (1.0.4) and 2020 (1.0.11) versions, but they don't work with KP184.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 09:45:17 am
I remember something about KP184 and RS485 interface. I wonder if there is a directional control in the load controlled from the handshake lines.
Try:
9600N81DR
9600N81dr
And check if it is possible to send command to the load from TC with both settings.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 12:16:22 pm
Yesterday I ran tests with different values of 9600N81DR and 9600N81dr. Where can I see the changes from 9600N81DR and 9600N81dr?
The control for the electronic load is executed at any of their values. And also commands are sent on and off.

Today I ran comparison tests using a com port monitor for different programs (Kunkin, KP184 Modbus, TC). Can this data somehow help? For change mode CV>CC.

Question why can't TestController use one command to get all the data (for example: 0103030000204456) instead of 0x0122 and 0x0126.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 01:05:04 pm
Yesterday I ran tests with different values of 9600N81DR and 9600N81dr. Where can I see the changes from 9600N81DR and 9600N81dr?
The control for the electronic load is executed at any of their values. And also commands are sent on and off.

Today I ran comparison tests using a com port monitor for different programs (Kunkin, KP184 Modbus, TC). Can this data somehow help? For change mode CV>CC.

Question why can't TestController use one command to get all the data (for example: 0103030000204456) instead of 0x0122 and 0x0126.

It is only necessary to test with Kunkinx, what is needed now is to get data back from the KP184 and I am a bit low on ideas.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 01:16:12 pm
It is only necessary to test with Kunkinx, what is needed now is to get data back from the KP184 and I am a bit low on ideas.
Data from KP184 does not come back. It would be more correct to say KP184 sends data (I see it in the com-port monitor), but TC does not understand this data.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 01:35:44 pm
It is only necessary to test with Kunkinx, what is needed now is to get data back from the KP184 and I am a bit low on ideas.
Data from KP184 does not come back. It would be more correct to say KP184 sends data (I see it in the com-port monitor), but TC does not understand this data.

I believe I found the issue, try this version (V1.64) (It may be up to an hour before you can download the correct version):
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 02:06:50 pm
There are no external changes. Data is still not being received by TC. (((

9600N81DR - does it mean RTS on, DTR on, Data bits = 8, Stop bits = 1? What is "N"?

Can the connection parameter be affected:
Code: [Select]
Handflow: ControlHandShake=(DTR_CONTROL), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL, XOFF_CONTINUE), XonLimit=2048, XoffLimit=512
Set timeouts: ReadInterval=-1, ReadTotalTimeoutMultiplier=-1, ReadTotalTimeoutConstant=1000, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
Kunkin software has this parameter:
Code: [Select]
Handflow: ControlHandShake=(DTR_CONTROL), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL), XonLimit=64, XoffLimit=64
Set timeouts: ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=500
Title: Re: Program that can log from many multimeters.
Post by: djadeski on May 10, 2021, 02:30:37 pm
I have been following this and with the jar file just made available I am receiving data to TC at 115,200 using this setting 115200N81rd - have not tested other settings but current values tab is updating. I do not have a sniffer so cannot speak to what is actually happening but the setup pop up is working as well.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 02:40:15 pm
djadeski, It still does not receive data (((
rd - RTS off, DTR off. In kunkin software RTS on, DTR on.

What's the serial number?
my 2021022700080
Title: Re: Program that can log from many multimeters.
Post by: djadeski on May 10, 2021, 02:46:33 pm
Very weird -  min is 2020101019440, so older than yours.  Perhaps another change?
                               
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 02:55:35 pm
djadeski, Will the new Kunkin software work for you?
https://disk.yandex.ru/d/5MizUcHimwxMIw
Title: Re: Program that can log from many multimeters.
Post by: djadeski on May 10, 2021, 03:06:42 pm
I had downloaded that when i was mentioned in the other thread and this is the first time it worked with this unit - see screenshots attached.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 03:15:35 pm
There are no external changes. Data is still not being received by TC. (((

Have you checked you got the correct version of TC?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 03:36:37 pm
Sure. And tried different bitrains and flags.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 04:16:49 pm
HKJ, i will ask you about these parameters again. They change several times during the boot process. First they coincide with kunkinsw, then they become different. Maybe they are the problem?
ReadTotalTimeoutMultiplier=-1
ReadTotalTimeoutConstant=1000
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 04:49:02 pm
HKJ, i will ask you about these parameters again. They change several times during the boot process. First they coincide with kunkinsw, then they become different. Maybe they are the problem?
ReadTotalTimeoutMultiplier=-1
ReadTotalTimeoutConstant=1000

TC control the serial parameters but receive timeout is in software, because it uses a event handle to capture the data from the serial port and there is no timeout associated with that.
For modbus the event handle will collect one packet at a time and kick it down to the receive routine that may show the debug output.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 06:58:59 pm
I have no more ideas. But I can see the difference in the parameters in the working connection of kunkinsw and TC  |O
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 07:06:10 pm
I have no more ideas. But I can see the difference in the parameters in the working connection of kunkinsw and TC  |O

I wonder, TC must be V1.64 and you have verified on the About page you are using that version?
My webserver has a cache, i.e. files do not get updated at the same time I upload them, there can be up to one hour delay.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 08:01:33 pm
The old version (1.62) is downloaded from the official address. I installed from here https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3566608/#msg3566608 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3566608/#msg3566608)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 08:08:51 pm
The old version (1.62) is downloaded from the official address. I installed from here https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3566608/#msg3566608 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3566608/#msg3566608)

That is an intermediate version, downloaded before the webserver cache had update.
The test version with a fixed fault is here: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
It is only a .jar file and must be used to replace the .jar file from a regular release.

If you or djadeski test it I would like the answer to: model?
typed on the command line.


Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 08:32:34 pm
Works!!!!
model?
;; COM11: Flush:
;; COM11: Tx: 01 03 00 01 00 04 15 C9
;; COM11: Rx: 01 03 04 00 00 07 30 F8 17
;; 1840
Title: Re: Program that can log from many multimeters.
Post by: djadeski on May 10, 2021, 08:46:10 pm
Working here as well - looks very good.

thank you!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2021, 08:46:50 pm
Works!!!!
model?
;; COM11: Flush:
;; COM11: Tx: 01 03 00 01 00 04 15 C9
;; COM11: Rx: 01 03 04 00 00 07 30 F8 17
;; 1840

Good, I will add a Kunkin KP184 V4 (or is it V3) to the next release of TestController.
Add the identifier is the same, i.e. the #verifyDevice do not need to be commented out. This means it will only connect if there is a load connected to the specified serial port and there is communication.

Thanks for your patience while working on fixing this.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 10, 2021, 08:54:23 pm
HKJ, this is version V4 202007 (there is still V4 20191111)
Huge gratitude for the work and patience !!! Sorry if I was so annoying.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 09:25:13 am
HKJ, today I'm doing my first full battery test. I notice a difference in the voltage and capacitance readings on the device and in the TC. This is apparently due to the difference in requests.
It is better to receive all data in one request, and not in separate ones (0x0122, 0x0126). Is it possible to implement this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 09:35:14 am
HKJ, today I'm doing my first full battery test. I notice a difference in the voltage and capacitance readings on the device and in the TC. This is apparently due to the difference in requests.
It is better to receive all data in one request, and not in separate ones (0x0122, 0x0126). Is it possible to implement this?

It is probably not possible to receive all data in one request, but TC will get the data as fast as the device support (When not in debug mode).
Another reason for small differences can be number of digits, the device may use more digits internally that can be read from the interface or the other way around (It depends on the device).
For capacity and energy readings there may also be difference in clock speed, TC is based on the Windows clock, the device has it own clock that may not be as precise.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 09:51:59 am
This is an excerpt from the user manual. Just take into account the change in CRC. Perhaps it would be more correct.
Quote
5.Read actual voltage and current:
Send instruction: 01 03 03 00 00 00 8E 45
It is a special instruction, which facilitates reading the common data register bank at one time.
01: equipment address.
03: read the instruction number of register.
03 00 : read the special defined address of the common register bank.
00 00 : it can be any value, because it is senseless in this special instruction.
8E 45: check code. The high order is before the low order.
Load return data: 01 03 30 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 CRCH CRCL
Hereinto, D1 to D18 are valid data.
D1.0 is ON/OFF bit, D1.1-D1.2 is mode bit
D3-D5 is the actual voltage value (unit mV), which is three bytes 24 bit data with the high order is before the low order.
D6-D8 is the actual current value, which is three bytes 24 bit data with the high order is before the low order..
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 10:35:54 am
This is an excerpt from the user manual. Just take into account the change in CRC. Perhaps it would be more correct.

Ok, they have implement a special instruction to read everything.
It is not really needed, at 115200 baud it takes about 0.01 second to read the two registers and at 9600 it takes about 0.1 second, assuming the load is fairly fast to answer. Even a very fast battery discharge, say 15 minutes is about 1000 second, a 0.1 second difference in reading values is completely insignificant, other errors will be way larger.

Looking on the some documentation I have found for the Kunkin, it looks like it is possible to read it power, you can try with the command:
holdingL? 0x0122 /1000

If this correctly gives the power reading I can fairly easy add it to the definition. It will not help with capacity summations, that only uses current and time.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 10:40:12 am
Another reason for small differences can be number of digits, the device may use more digits internally that can be read from the interface or the other way around (It depends on the device).
The difference in the data is likely due to ripple and mismatched sampling times.
https://www.eevblog.com/forum/testgear/an-investigation-about-ripple-current-of-kunkin-kp184/ (https://www.eevblog.com/forum/testgear/an-investigation-about-ripple-current-of-kunkin-kp184/)

Looking on the some documentation I have found for the Kunkin, it looks like it is possible to read it power, you can try with the command:
holdingL? 0x0122 /1000
Yes, I can do it a little later.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 10:51:18 am
The difference in the data is likely due to ripple and mismatched sampling times.

Voltage is not used during capacity calculations, i.e. mismatch between voltage and current cannot affect it. You can control how fast TestController samples from the load, it can run 100 samples/sec (0.01s), but the load can probably not run that fast (TC will automatic reduce sample rate to highest sustainable rate). Generally you do not have to worry much about the number of samples, TC can handle millions if you have enough memory.
TC uses double precision internally for all calculations, this is about 18 digits of precision and usually avoids any problems with rounding errors.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 11:04:29 am
I understand.
The display shows 000.40

holdingL? 0x0122 /1000
;; COM11: Flush:
;; COM11: Tx: 01 03 01 22 00 04 E5 FF
;; COM11: Rx: 01 03 04 00 00 0F A4 FE 78
;; 4.0040000000000004
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 11:11:42 am
I understand.
The display shows 000.40

holdingL? 0x0122 /1000
;; COM11: Flush:
;; COM11: Tx: 01 03 01 22 00 04 E5 FF
;; COM11: Rx: 01 03 04 00 00 0F A4 FE 78
;; 4.0040000000000004

Do not look like power, the documentation listed it as either VA or voltage measurement from 40V range, I believe the 40V range is the correct answer, even though it is meaningless to show it when there is another field from the 150V range with the same resolution.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 11:21:01 am
Sorry, I was wrong. This is the display capacity.
The display shows 03.985

holdingL? 0x0122 /1000
;; COM11: Flush:
;; COM11: Tx: 01 03 01 22 00 04 E5 FF
;; COM11: Rx: 01 03 04 00 00 0F 91 3E 6F
;; 3.985
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 11:48:57 am
Sorry, I was wrong. This is the display capacity.
The display shows 03.985

holdingL? 0x0122 /1000
;; COM11: Flush:
;; COM11: Tx: 01 03 01 22 00 04 E5 FF
;; COM11: Rx: 01 03 04 00 00 0F 91 3E 6F
;; 3.985

Now I am a bit confused, you say the command shows capacity?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 11:58:19 am
For power data, another command. Perhaps there is no command for the data power.

U MEASURE   0x0122   4   R   0-150000   电压测量值,单位mV,量程150V
VA MEASURE   0x0124   4   R   0-40000   电压测量值,单位mV,量程40V
I MEASURE   0x0126   4   R   0-30000   电流测量值,单位mA,

BATT_CAPACITY   0x0148   4   R      电池放电容量测试结果,单位为AH或WH


holdingL? 0x0148
;; COM11: Flush:
;; COM11: Tx: 01 03 01 48 00 04 C5 E3
;; COM11: Rx: 01 03 04 00 21 D7 48 F5 FF
;; 2217800
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 12:00:53 pm
For power data, another command.

Code: [Select]
VA MEASURE 0x0124 4 R 0-40000 电压测量值,单位mV,量程40V

It was that address I meant, the 122 was a typo.

For 148 my documentation says: Battery discharge capacity test result, the unit is AH or WH   
And it is probably only valid when load is configured to do battery discharge

It is easy to add a command to read any register, but for logging I only want register that always contains relevant data.

A command definition looks like this:

#scpiCmd VoltageM? holdingL? 0x0122 /1000

The M means measured value, the question mark must be present because it returns a value, the 122 is the register number and the /1000 is the adjustment to SI unit.
If you have some suggestions for more command, please test them carefully and then post them here. Defining commands removes the need to remember register number and command names are listed in the help array, making it easy to find it.



Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 12:20:50 pm
I anybody want my list of registers I can put it on my server (Temporary). I found it somewhere on the internet, but I do not remember the link.

It has lines like this (From row 2 to 47) and is in .xls format:
Fail_Alarm   0x018A   1   R/W   0,1,2   比较结果为FAIL时输出的信号   Signal output when the comparison result is FAIL   
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 12:26:03 pm
I'm a little confused. What command should I execute?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 12:36:41 pm
I'm a little confused. What command should I execute?

None, but if you want more command/registes supported, you can define them, test them and then list them for inclusion in the next release.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 11, 2021, 03:56:35 pm
Sorry, I do not speak English and did not understand you well. I will reverse engineer when I have free time.
Another question. Can TC be done with other languages?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 11, 2021, 04:35:58 pm
Another question. Can TC be done with other languages?

No, I did not design it with a language table or with extra space for words in other languages.
Anyway most test equipment use english, i.e. you must understand some english words to use the test equipment.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 06:10:55 am
In general, I figured out how what works. Basic commands for reading all parameters:
holding? 0x0300
holding? 0x0301
The point is that TC does not form them very correctly. Should accordingly be:
holding? 0x0300 >>> 01 03 03 00 00 20 44 56
holding? 0x0301 >>> 01 03 03 01 00 0C 14 4B
Because of this, everything has slowed down so far. Is there a way to fix it?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 06:27:40 am
In general, I figured out how what works. Basic commands for reading all parameters:
holding? 0x0300
holding? 0x0301
The point is that TC does not form them very correctly. Should accordingly be:
holding? 0x0300 >>> 01 03 03 00 00 20 44 56
holding? 0x0301 >>> 01 03 03 01 00 0C 14 4B
Because of this, everything has slowed down so far. Is there a way to fix it?

TC strips the protocol layer and only returns the actual value, simple scaling can be done in the same command, but you can also do some more advance processing on the value (Using :readmath:, see my documentation), but that gets fairly complicated quickly.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 06:43:24 am
Ok. Besides the answer to the holding team? 0x0301 should return 37 bytes and now returns 36 bytes. This is how I see it in TC.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 06:58:22 am
Code: [Select]
Read actual voltage and current (0x0300):
Send instruction:
01 03 03 00 00 20 44 56

It is a special instruction, which facilitates reading the common data register bank at one time.
01: equipment address.
03: read the instruction number of register.
03 00 : read the special defined address of the common register bank.
00 00 : it can be any value, because it is senseless in this special instruction.
8E 45: check code. The high order is before the low order.

Load return data:
01 03 30 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18 CRCH CRCL

D1 to D18 are valid data.
D1.0 is ON/OFF bit, D1.1-D1.2 is mode bit
D3-D5 is the actual voltage value (unit mV), which is three bytes 24 bit data with the high order is before the low order.
D6-D8 is the actual current value, which is three bytes 24 bit data with the high order is before the low order..
D9-D11 Dynamic A load current value, unit mA
D12-D13 Dynamic A load maintenance time, unit mS
D14-D16 Dynamic B load current value, unit mA
D17-D18 Dynamic B load maintenance time, unit mS


--------------------------
Read actual parameters when testing the battery (0x0301):
Send instruction:
01 03 03 01 00 0C 14 4B

Load return data:
(01 03 1F D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18) D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 CRCH CRCL
|-- -- --|--|--|voltage |current |-- --  -- |--  -- |--  --  -- |--  --  |-- |-- |-- |voltage end|--     Ah   -- |--    Wh    -- |--  |--  |

D19 When the discharge reaches the termination voltage, whether the current drops to half to continue discharging, 0 is no, 1 is yes
D20 The discharge capacity calculation unit is 0 for AH and 1 for WH
D21 Discharge end output signal: 0 beeps once, 1 always beeps, 2 output level
D22-D24 Battery discharge end voltage, unit mV
D25-D28 Battery discharge capacity test result, the unit is AH
D29-D32 Battery discharge capacity test result, the unit is WH
It remains to figure out how to translate capacity and power into normal decimal digits. Simple translation HEX> DEC doesn't work.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 07:37:36 am
Ok. Besides the answer to the holding team? 0x0301 should return 37 bytes and now returns 36 bytes. This is how I see it in TC.

TC do not support that message, it uses another format compared to the regular messages and not only for the data, but also for the frame around the data.
I could fix that, but next problem would be the command, it works on in 4 byte steps (holdingL? version) and the answer do not conform to that. Using the "holding?" could work (if the frame worked) and would return 9 answering values.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 07:42:45 am
TC do not support that message
In general, this is not a disaster. Only the end of the CRC is truncated, the data seems to arrive intact

I get the following data from KunkinSW
01 03 1F 03 05 00 0D C1 00 07 D0 00 07 D0 00 FA 00 FA 00 07 D0 00 00 00 00 0A F0 00 09 C4 00 00 22 A3 C8 A6 1B
Where
00 09 C4 00 = ~ 0.178Ah
00 22 A3 C8 = ~ 0.63Wh
How are these values obtained? Normal HEX> DEC doesn't work. (I tried in windows calculator)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 08:08:41 am
I get the following data from KunkinSW
01 03 1F 03 05 00 0D C1 00 07 D0 00 07 D0 00 FA 00 FA 00 07 D0 00 00 00 00 0A F0 00 09 C4 00 00 22 A3 C8 A6 1B
Where
00 09 C4 00 = ~ 0.178Ah
00 22 A3 C8 = ~ 0.63Wh
How are these values obtained? Normal HEX> DEC doesn't work. (I tried in windows calculator)

All the other messages uses long integers in a scaled format, this means I would expect something like 178mAh or 1780*0.1mAh or 17800*0.01mAh
But it do not match the message.
You can fairly easy check for this by opening the calculator popup, select hex format and then type in the number, it will show the expected hex string:

(http://lygte-info.dk/pic/cpf6/calc1.png)
(http://lygte-info.dk/pic/cpf6/calc2.png)
(http://lygte-info.dk/pic/cpf6/calc3.png)




Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 09:32:07 am
Now I remember. I was making a config file for East Tester ET5410.txt. Unfortunately this device is now damaged and it will probably be repaired. I haven't done all the functions, but the basic settings are fine. You can edit who wants.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 09:38:27 am
Now I remember. I was making a config file for East Tester ET5410.txt. Unfortunately this device is now damaged and it will probably be repaired. I haven't done all the functions, but the basic settings are fine. You can edit who wants.

Do you mean that everything in the file works or only some of the stuff in the file works?
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 09:50:01 am
Do you mean that everything in the file works or only some of the stuff in the file works?
The file is working. The "LIST" mode is not implemented
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 10:46:55 am
I could see I already have ET5410 with a simple definition, I have replaced it with the one you posted here.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 02:26:13 pm
I did not find examples of how to split the resulting string of 36 bytes and take the desired values and convert to dec. Can you write an example?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 03:07:56 pm
I did not find examples of how to split the resulting string of 36 bytes and take the desired values and convert to dec. Can you write an example?

You will not get a 36 bytes answer, but a list of integers, you can see that when using it from the command line.

I am working on adding a "bytes" type that can be used for that type of answer, but I would also need a special holdingxxx? command to return it as a answer. This also include functions to extract any number of bytes and you can easily typecast them to integers.
But all that is for the next release.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 12, 2021, 03:36:11 pm
Okay. In outgoing packets from the com-port, I see packets bytes, that's why I named it that way.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2021, 03:48:52 pm
Okay. In outgoing packets from the com-port, I see packets bytes, that's why I named it that way.

Communication works in layer. You have the link layer that here is serial data in RS232 format, then you have the protocol that is a modified modbus. In TestController these two parts are different part parts in the software, that can be replaced very easy (It support 4 different modbus protocols).
You work at the next layer where you see the actual data with the protocol removed and it is independent of the link layer.

Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 13, 2021, 10:49:15 am
All the other messages uses long integers in a scaled format, this means I would expect something like 178mAh or 1780*0.1mAh or 17800*0.01mAh
But it do not match the message.
You can fairly easy check for this by opening the calculator popup, select hex format and then type in the number, it will show the expected hex string:
Dear interflexo helped.
00 09 C4 00 = 640000mAs = 0.177Ah
00 22 A3 C8 = 2270152mWs = 0.63Wh
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 14, 2021, 11:00:20 am
Why doesn't this command work?
HALF CURR   0x014A   1   R/W   0,1

holdingL 0x014A 1
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 14, 2021, 11:07:37 am
Reads correctly (1 or 0).

#scpiCmd CurrHalf? holdingL? 0x014A
:readmath: (0x1&value)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2021, 11:10:43 am
Why doesn't this command work?
HALF CURR   0x014A   1   R/W   0,1

holdingL 0x014A 1

holdingL is a 4 byte register, you must use holding for a 1 byte register.
The OCP_STEP_TIME cannot be done with current version of TC, because it requires a 2 byte register.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 14, 2021, 11:37:52 am
This variation also does not work, or I am writing the wrong syntax.
This similar command "holdingL 0x0144 (value)" works great.

BATT ONOFF   0x0144   1   R/W   0,1

Probably a bug in the firmware
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2021, 11:55:56 am
This variation also does not work, or I am writing the wrong syntax.
This similar command "holdingL 0x0144 (value)" works great.

BATT ONOFF   0x0144   1   R/W   0,1

Probably a bug in the firmware

I am not sure what you mean, but the message is 4 bytes with the L and 1 bytes without it.

;; 16184.10ms KP184: Tx <holdingL 0x014A 1>
;; 16184.18ms COM15: Tx: 01 06 01 4A 00 01 04 00 00 00 01 09 5A
;; 23568.18ms KP184: Tx <holding 0x014A 1>
;; 23568.31ms COM15: Tx: 01 06 01 4A 00 01 01 01 48 EE
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 14, 2021, 12:39:39 pm
holdingL 0x014A 1
;; COM11: Flush:
;; COM11: Tx: 01 06 01 4A 00 01 04 00 00 00 01 5A 09
holding 0x014A 1
;; COM11: Flush: 01 06 01 4A 00 01 04 20 2D
;; COM11: Tx: 01 06 01 4A 00 01 01 01 EE 48

I'm talking about the fact that the value "1" in KP184 is not written by both commands.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 15, 2021, 07:50:17 am
Code: [Select]
;; KP184: Tx <VoltageEnd 5.6>
;; KP184: Tx <holdingL 0x0146 5.6 *1000                    ;0-150>
;; COM11: Flush:
;; COM11: Tx: 01 06 01 46 00 01 04 00 00 15 E0 94 84
;; KP184: Tx <VoltageEnd?>
;; KP184: Tx <holdingL? 0x0146 /1000>
;; COM11: Flush: 01 06 01 46 00 01 04 23 7D
;; COM11: Tx: 01 03 01 46 00 04 A4 20
;; COM11: Rx: 01 03 04 00 00 15 E0 F5 2B
;; KP184: Rx <5.6000000000000005>
;; KP184: Cache Tx: <VoltageEnd?> Rx: <5.6000000000000005>
;; KP184: Rx as number <5.6000000000000005>
HKJ, What is the best way to make this value appear in a comboboxhot or radio?
Need to convert <5.6000000000000005> to <5.6>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 15, 2021, 08:50:51 am
HKJ, What is the best way to make this value appear in a comboboxhot or radio?
Need to convert <5.6000000000000005> to <5.6>

Use a :readmath: with a formatDouble()

Parameters: formatDouble(number,minIntDigits,maxIntDigits,minFracDigits,maxFracDigits)

You could also use the round() function: round(value*10)/10.0
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 15, 2021, 11:40:02 am
Code: [Select]
;; KP184: Tx <VoltageEnd 5.6>
;; KP184: Tx <holdingL 0x0146 5.6 *1000                    ;0-150>
;; COM11: Flush:
;; COM11: Tx: 01 06 01 46 00 01 04 00 00 15 E0 94 84
;; KP184: Tx <VoltageEnd?>
;; KP184: Tx <holdingL? 0x0146 /1000>
;; COM11: Flush: 01 06 01 46 00 01 04 23 7D
;; COM11: Tx: 01 03 01 46 00 04 A4 20
;; COM11: Rx: 01 03 04 00 00 15 E0 F5 2B
;; KP184: Rx <5.6000000000000005>
;; KP184: Rx after :readmath: formatDouble(value,1,3,3,3) <5.600>
;; KP184: Cache Tx: <VoltageEnd?> Rx: <5.6000000000000005>
;; KP184: Rx after :readmath: formatDouble(value,1,3,3,3) <5.600>
;; KP184: Rx as number <5.6>
It did not help.
I think the problem is in the comboboxhot and radio components.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 15, 2021, 12:17:30 pm
It did not help.
I think the problem is in the comboboxhot and radio components.

They are string based, i.e. they do not match numeric values, this means formatting with 3 decimal places will try to match a value with 3 decimal places.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 15, 2021, 12:24:52 pm
There is no such problem with the Number component. Thank you.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 15, 2021, 12:35:55 pm
There is no such problem with the Number component. Thank you.

No, it is numeric based.
comboboxhot is string based
radio is numeric, but can be switched to string (In numeric mode it includes a small tolerance, that is supposed to avoid the above problem)
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 15, 2021, 01:32:41 pm
It is necessary to round up to 3 digits and discard the final 0. But I don't know what the syntax will be.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 15, 2021, 02:44:24 pm
It is necessary to round up to 3 digits and discard the final 0. But I don't know what the syntax will be.

You can use the min/max digit specifications: formatDouble(value,1,6,1,3)
Will return 1 to 6 digit before the point (leading zeros will be removed) and 1 to 3 digit after the point (Trailing zeros will be removed).
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 17, 2021, 08:08:59 am
HKJ, can you add a directory selection for saving reports to the settings?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2021, 09:03:24 am
HKJ, can you add a directory selection for saving reports to the settings?

I am not sure exactly what you mean, all save dialogs allows your to choose directory.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 17, 2021, 10:02:11 am
Default directory.
My directory is C:/18650_test. TC opens every time C:/Users/User/Documents/TestController
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2021, 11:52:16 am
Default directory.
My directory is C:/18650_test. TC opens every time C:/Users/User/Documents/TestController

This can be adjusted by a command line argument, start TC from a batch file with:
java -jar TestController.jar dataDir=C:/18650_test

The TestController.bat file has documentation about it.

This way you can have multiple shortcuts with different working directories and also different devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2021, 12:56:07 pm
V1.65 is up
It includes some internal improvements and download of data from a couple of multimeters.
   Fixed: Automatic column changing with mode change on multimeter did not always work.
   Update: ET5410 more advanced definition by PaWill68 (Thanks)
   Added: holdingBytes? for modbus protocol, it returns a bytes data type and must be processed with :readmath:   
   Fixed: Kunkin KP184 now works in V4 and newer, thanks to help from some users.
   Added: Keysight U125xA now support downloading of log
   Added: Keysight U128xA now support downloading of log
   Added: Keysight 344xxA now support downloading of data from internal flash memory
   Added: Other button, this will be visible for devices where download of screenshots or data is supported.
   Added: deviceReadBytes to read a binary IEEE block from a SCPI device.
   Added: floatBytes, doubleBytes to control casting of float/double to bytes.
   Added: binConvString that converts a bytes type to a text string.
   Added: binConvFloat that convert a string/bytes/int/long to float/double if it contains the correct bits.
   Added: binConv supports bytes data type
   Added: subbytes function similar to substring but for bytes datatype
   Added: bytes as new data type, this is only used for handling communication and not for normal math.

(https://lygte-info.dk/pic/Projects/TestController/DocCommands/DeviceButtons2.png)

The download of data means that there will sometimes be an extra device button called "Other"

(https://lygte-info.dk/pic/Projects/TestController/DocCommands/ButtonOtherMenu.png) (https://lygte-info.dk/pic/Projects/TestController/DocCommands/ButtonOtherMenu2.png) (https://lygte-info.dk/pic/Projects/TestController/DocCommands/ButtonOtherMenu3.png)

When clicked it will show a menu, the contents of this menu will depend on the device. Data can be downloaded as either text of into in the table (That will be cleared first).


Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 18, 2021, 05:20:41 am
Used the new screen shot feature. Works great. Except for date and time which which are wrong. See pics.

[attachimg=2][attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 18, 2021, 05:33:41 am
Used the new screen shot feature. Works great. Except for date and time which which are wrong. See pics.

That is a bug in the DMM or probably more likely because you have not adjusted the clock in the DMM. I get the full screen shot as a bmp or png file that includes the time stamp.
I suppose the html version uses the browser to add the PC time.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on May 18, 2021, 05:44:19 am
Sorry. Works now. Date and time are correct. I somehow messed things up. :palm:
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 18, 2021, 06:32:32 am
I run TestController.jar, ok, now I will be testController.bat, although I don't need multiple profiles.
I tested several batteries, now I'm thinking how to superimpose the comparison results on each other like here. Can this be done with TC?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 18, 2021, 06:59:47 am
I tested several batteries, now I'm thinking how to superimpose the comparison results on each other like here. Can this be done with TC?

To some degree, you can show up to 6 curves at a time.
To merge the data use the import function, there you can select what parameter to synchronize, that will probably be capacity. You may also want to play with the command #CHARTSCALESYNC and maybe #CHARTSCALENAME
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on May 18, 2021, 07:45:31 am
Does not work. The abscissa axis contains the time parameter.
Can you make a short video on how to do this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 18, 2021, 08:17:05 am
Does not work. The abscissa axis contains the time parameter.
Can you make a short video on how to do this?

Right click on the hh:mm:ss field and select the axis you want.
Note: Some axis will disable the cursor function while they are used as x-axis.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 28, 2021, 06:45:53 pm
HKJ,

I am working to try and connect a Yokogawa WT3000 Power Analyzer into Test Controller.  The WT3000 is a SCPI interfaced device but it uses what Yokogawa calls a Legacy Protocol.  Working with a Yokogawa app engineer I received the attached description and Python coding example for that protocol.  (I was told no interface spec document could be shared with me.)

Using Ethernet, the connection is a socket with a header on each message.  The header has ms bit of the leading byte set with the rest of the 4 byte header being is a count of characters in the message.  So, the standard query *IDN? is 5 characters and becomes the following hex sequence:
     80 00 00 05 2a 49 44 4e 3f

I have used Test Controller set up with
     #port LXI 10001
     #driver ascii
     #eol \_
and can send raw hex messages and get an answer with txrxnBin 8....but only get 8 characters at a time.

There is also a complication.  Yokogawa implemented their interface in a server like manner in that you must log in before you can use the interface.  The instruments is set for user anonymous with no password but you have to do the log in before Test Controller can do an *idn? or #verifyDevice.  For my initial testing I have used
Code: [Select]
; Login in command
#scpiCmd loginy? txrxnBin? 8 \x80\x00\x00\x09\x61\x6e\x6f\x6e\x79\x6d\x6f\x75\x73
; Empty password
#scpiCmd pwdy? txrxnBin? 8 \x80\x00\x00\x00
But, this method only gives 8 char of the reply at a time and you have to wait between sending the user name and then password.  See the attached file which includes Python code for logging in if that helps with details.

To move forward I need some advice and/or some help:
1.  How would you suggest handling doing the login at connection time but before doing any *idn? or #verifyDevice command?
2.  How to handle this protocol?  ascii driver with raw txrxBin? commands are close but not really working.  Is there a better driver/command pair for this device or does it really need a new protocol coded into Test Controller?

Any help would be appreciated.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2021, 07:38:17 am
I am working to try and connect a Yokogawa WT3000 Power Analyzer into Test Controller.  The WT3000 is a SCPI interfaced device but it uses what Yokogawa calls a Legacy Protocol.  Working with a Yokogawa app engineer I received the attached description and Python coding example for that protocol.  (I was told no interface spec document could be shared with me.)

I cannot help you at the moment, my main computer has crashed and it will be some time before I am up and running fully again (I need to buy and install some new harddisks and do a lot of configuration).
Title: Re: Program that can log from many multimeters.
Post by: gby on May 31, 2021, 01:08:19 pm
HKJ,

Sorry to hear about your computer HW issues.  Hopefully it won't be too time consuming or expensive to get back up and running.  My son's desktop motherboard stopped booting over the weekend so I feel you pain.

No problem waiting until your computer is back to normal for some assistance.  In the meantime I am working on some ideas within existing TC functionality to talk to the Yokogawa.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2021, 08:15:21 am
Sorry to hear about your computer HW issues.  Hopefully it won't be too time consuming or expensive to get back up and running.  My son's desktop motherboard stopped booting over the weekend so I feel you pain.

I do not expect any serious troubles, only some work. I have a up-to-date backup of all my data for development and website on a RAID 6 server (It can loose two disks before I have to worry).

No problem waiting until your computer is back to normal for some assistance.  In the meantime I am working on some ideas within existing TC functionality to talk to the Yokogawa.

One note: txrxnBin? can handle more than 8 bytes in the V1.65, it will return the new bytes datatype when doing that.

Title: Re: Program that can log from many multimeters.
Post by: gby on June 01, 2021, 10:24:13 pm
Hi HKJ,

A little more info on the Yokogawa WT3000 for when you are ready.  No hurry.

I tried creating a send message function to create the required header for the message automatically from the ascii text in the instrument driver file.  In the instrument driver file I did:

   #scpiCmd sendy? txrx? (hex(2147483648 + strlen(value)) + value)

Unfortunately when I connect to the instrument and run the sendy? command TC errors out by saying the following in the DOS Debug window:
Code: [Select]
sendy? "*IDN?"
;; WT3000: Tx <sendy? "*IDN?">
dk.hkj.script.ProgramExceptions$UnknownException: Variable not found strlen
hex(2147483648 + strlen"*IDN?"____<----____) + value
        at dk.hkj.script.Script.getVar(Script.java:73)
   + many more Java error lines.

Running the same code in a text script (not in a drive #scpiCmd) works fine:
Code: [Select]
=var temp = "*IDN?"
=temp = (hex(2147483648 + strlen(temp)) + temp)
= temp
;; 80000005*IDN?

It is as if the interpreter/evaluator used by the driver file for #scpiCmd's does not allow the string operator strlen and it thinks it is a variable name rather than a function.  Does the syntax need to change to use the strlen function in a #scpiCmd inside an instrument driver file?
   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2021, 10:32:17 am
It is as if the interpreter/evaluator used by the driver file for #scpiCmd's does not allow the string operator strlen and it thinks it is a variable name rather than a function.  Does the syntax need to change to use the strlen function in a #scpiCmd inside an instrument driver file?

That sounds correct. When doing a reconnect I first remove all the functions (To remove the interface function), add a few functions, run the *idn? commands and when they are done add all functions, including a new set of interface functions.
It sound like some of the general purpose functions are not added before the *idn? command. I cannot fix this before I have my system back (A new harddisk is supposed to arrive around the weekend).
I may consider adding functions or rather commands to handle your (Yokogawa) requirements directly. Something like txYG and txrxYG? to the ascii driver.
Title: Re: Program that can log from many multimeters.
Post by: voltsandjolts on June 08, 2021, 03:43:18 pm
I have a meter which returns this format for read? resistance:
Code: [Select]
0260.60e03 Ohms\r\n

So to extract the numeric value I use
Code: [Select]
#askValues read?
; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat fx

If the probes are open circuit (inifinite resistance) it returns:
Code: [Select]
OVLOAD\r\n

But askValuesReadFormat converts this to decimal 0.0

Test Controller has Configuration option for Overload Handling (return 0, 1e99, infinite). How can I handle OVLOAD such that this config setting is used?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2021, 05:02:04 pm
Test Controller has Configuration option for Overload Handling (return 0, 1e99, infinite). How can I handle OVLOAD such that this config setting is used?

For now overflow handling only works for devices with one return value and will kick in when the value is above 1e99.

This means using a #askValuesMathFormat  can be used to convert the answer into a numeric overflow value:
#askValuesMathFormat value=="OVLOAD"?1e100:value

Note: You may need to use some of the functions from: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions) to isolate the OVLOAD text. Could be: countMatch(value,"OVLOAD")>0?1e100:value

If it is a handheld multimeter you can probably get away with a simpler driver, like the SingleValue driver: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Single_value (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Single_value)
Title: Re: Program that can log from many multimeters.
Post by: voltsandjolts on June 08, 2021, 06:35:58 pm
Thank you, sir, works perfect:

Code: [Select]
#askValues read?
#askValuesReadFormat fxx
#askValuesMathFormat value=="OVLOAD"?1e100:value

I am working on a driver for the TTi 1908 which is mains or battery powered bench DMM.
Driver seems functional now, I'll test a little more and submit here in next few days.
There is a data logging feature (only 500 data points) and I might try to get that data downloading in TC if I have time.
https://www.aimtti.com/product-category/multimeters/aim-1908 (https://www.aimtti.com/product-category/multimeters/aim-1908)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2021, 10:58:03 am
V1.66 is up
My computer is working again and I have fixed a couple of bugs and added a bit.
   Added: Hioki DT4281 multimeter.
   Added: Driver AsciiBin, same as Ascii driver, but support a binary envelope around the ascii.
   Fixed: Standard functions are now available during a reconnect
   Fixed: DL24 dropouts (I hope)
   Added: Sanwa PC7000, it is mostly a Brymen BM869s and works with Brymen interface.
   Fixed: Param sweeper did not stop after a "Primary only" sweep.

The driver AsciiBin is for gpy and his Yokogawa, but can be used if other devices packs ascii commands into a binary envelope. This driver has not been tested with LXI interface, only with serial and socket. The login will have to be included in a redefined *idn? command.

I hope the dropouts on the DL24 is gone now and would also like a confirmation that it works with the new DL24M version. Some definitions for the different DL24M models are also needed.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 10, 2021, 03:16:05 pm
HKJ,

Good to hear your computer is back up.  Also, thanks for the new version.

I will be able to try the AsciiBin driver with the Yokogawa tomorrow.  Fully booked today.  Will let you know how it goes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2021, 08:02:55 am
I will be able to try the AsciiBin driver with the Yokogawa tomorrow.  Fully booked today.  Will let you know how it goes.

You may need to check the documentation for the driver: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_with_binary_envelope_(AsciiBin) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_with_binary_envelope_(AsciiBin))

I have added a chapter listing the differences between the 3 main SCPI/Ascii drivers, this can be useful to check before starting to implement a new device: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Difference_between_the_3_SCPI/ascii_drivers_(SCPI,_SCPIx,_Ascii) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Difference_between_the_3_SCPI/ascii_drivers_(SCPI,_SCPIx,_Ascii))


Title: Re: Program that can log from many multimeters.
Post by: gby on June 11, 2021, 05:18:24 pm
HKJ,

Thank you very much for adding asciiBin and thanks for the documentation reference.  After setting #packetFormat Length31 I am able to sort of talk to the Yokogawa.  Below is from debug mode using simple txrx? queries showing eventual answers with the proper string.
Code: [Select]
txrx? *idn?
;; WT3000: Tx <txrx? *idn?>
;; 10.8.37.94: Tx: 80 00 00 05 2A 69 64 6E 3F
;; 10.8.37.94: Rx: 80 00 00 00
;; WT3000: Rx Timeout
txrx?
;; WT3000: Tx <txrx?>
;; 10.8.37.94: Tx: 80 00 00 00
;; 10.8.37.94: Rx: 80 00 00 00
;; WT3000: Rx Timeout
txrx?
;; WT3000: Tx <txrx?>
;; 10.8.37.94: Tx: 80 00 00 00
;; 10.8.37.94: Rx: 80 00 00 00
;; WT3000: Rx Timeout
txrx?
;; WT3000: Tx <txrx?>
;; 10.8.37.94: Tx: 80 00 00 00
;; 10.8.37.94: Rx: 80 00 00 00
;; WT3000: Rx Timeout
txrx?
;; WT3000: Tx <txrx?>
;; 10.8.37.94: Tx: 80 00 00 00
;; 10.8.37.94: Rx: 80 00 00 20 59 4F 4B 4F 47 41 57 41 2C 37 36 30 33 30 34 2D 30 34 2D 4D 56 2C 30 2C 46 36 2E 33 31 41 44 0A
;; WT3000: Rx <YOKOGAWA,760304-04-MV,0,F6.31AD>
;; YOKOGAWA,760304-04-MV,0,F6.31AD

But, it seems like there is a buffer issue of some kind.  The first txrx? *idn? command times out and you have to send multiple empty commands of just txrx? in a row to get an answer.  I also tried multiple txrx? *idn? commands in a row and it still took multiple before the answer appeared.  Once it appeared follow on txrx? empty commands got the string multiple times.  It acts like the RX buffer is 4 transactions behind the tx.

Thoughts in where in the protocol/the Yokogawa/Test Controller this "buffer problem" might be or ideas to try to debug it?  In the WireShark recording of the Yokogawa terminal utility talking to the unit there is just one message sent to get one message with content back so I am at a loss??

For the moment I have been hand typing through the login sequence which is also made difficult by the "buffer issue".  I will be trying your suggestion of "...redefined *idn? command" which I assume means using the #verifyDevice command.  My question is how to make the #verifyDevice command be multiple txrx? command in a row?  For example how to:
   txrx? anonymous
   txrx?
   txrx?
where the first supplies the user name, the second enters the blank password, and the last gets past the "Ctl server is ready" final login message.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2021, 06:41:11 pm
Thank you very much for adding asciiBin and thanks for the documentation reference.

You may try adjusting the timeout value (#readingDelay)
My testing has been with a serial and a socket connection returning a answer when receiving a ? char.
If you can get me some better ideas of the problem I will look at it tomorrow (It is a bit late around here now).

For multiple commands try using multiple lines, the Ascii driver do not support ; as a command delimeter in the #scpiCmd, but is supposed to support multi lines with a command on each line (I have never gotten around to test it).

Adding debugtime=2 on the command line of TestController will add a precise timestamp to each command in the log.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 11, 2021, 08:09:48 pm
HKJ,

Thanks for the hint on adding debugTime to the debug startup.

I am not sure this is an issue of #readingDelay.  When sending just txrx? an empty message of 80 00 00 00 is sent and an empty message of 80 00 00 00 is received.  I am guessing that TC interprets a received empty message as no message and lists a timeout even though it got a reply.  Perhaps something to fix?  Also, I am manually typing the queries so there is plenty of time between queries.

See below more complete debug trace.  You can see me log in and once the instrument says "Ctl server is ready." I do two separate commands:
   txrx? *idn?
   txrx? :MEAS:AVER?
Each of the above yields an 80 00 00 00 empty reply.  I then do 3 more txrx? empty queries and eventually get the *idn and :MEAS:AVER answers.  Further txrx? queries yield empty replies.  See below sequence:
Code: [Select]
;; 15:45:02.536 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; Found Yokogawa WT3000 on 10.8.37.94
txrx? anonymous
;; 15:45:21.181 WT3000: Tx <txrx? anonymous>
;; 15:45:21.181 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 15:45:21.181 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 15:45:21.181 WT3000: Rx <username:>
;; username:
txrx?
;; 15:45:31.245 WT3000: Tx <txrx?>
;; 15:45:31.245 10.8.37.94: Tx: 80 00 00 00
;; 15:45:31.245 10.8.37.94: Rx: 80 00 00 00
;; 15:45:33.495 WT3000: Rx Timeout
txrx?
;; 15:45:40.802 WT3000: Tx <txrx?>
;; 15:45:40.802 10.8.37.94: Tx: 80 00 00 00
;; 15:45:40.802 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 15:45:40.802 WT3000: Rx <password:>
;; password:
txrx?
;; 15:45:44.316 WT3000: Tx <txrx?>
;; 15:45:44.316 10.8.37.94: Tx: 80 00 00 00
;; 15:45:44.316 10.8.37.94: Rx: 80 00 00 00
;; 15:45:46.522 WT3000: Rx Timeout
txrx?
;; 15:45:49.382 WT3000: Tx <txrx?>
;; 15:45:49.382 10.8.37.94: Tx: 80 00 00 00
;; 15:45:49.382 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 15:45:49.382 WT3000: Rx <Ctl server is ready.>
;; Ctl server is ready.
txrx? *idn?
;; 15:46:03.435 WT3000: Tx <txrx? *idn?>
;; 15:46:03.435 10.8.37.94: Tx: 80 00 00 05 2A 69 64 6E 3F
;; 15:46:03.435 10.8.37.94: Rx: 80 00 00 00
;; 15:46:05.652 WT3000: Rx Timeout
txrx? :MEAS:AVER?
;; 15:46:22.802 WT3000: Tx <txrx? :MEAS:AVER?>
;; 15:46:22.802 10.8.37.94: Tx: 80 00 00 0B 3A 4D 45 41 53 3A 41 56 45 52 3F
;; 15:46:22.803 10.8.37.94: Rx: 80 00 00 00
;; 15:46:24.996 WT3000: Rx Timeout
txrx?
;; 15:46:33.523 WT3000: Tx <txrx?>
;; 15:46:33.523 10.8.37.94: Tx: 80 00 00 00
;; 15:46:33.523 10.8.37.94: Rx: 80 00 00 00
;; 15:46:35.747 WT3000: Rx Timeout
txrx?
;; 15:46:37.289 WT3000: Tx <txrx?>
;; 15:46:37.289 10.8.37.94: Tx: 80 00 00 00
;; 15:46:37.289 10.8.37.94: Rx: 80 00 00 20 59 4F 4B 4F 47 41 57 41 2C 37 36 30 33 30 34 2D 30 34 2D 4D 56 2C 30 2C 46 36 2E 33 31 41 44 0A
;; 15:46:37.289 WT3000: Rx <YOKOGAWA,760304-04-MV,0,F6.31AD>
;; YOKOGAWA,760304-04-MV,0,F6.31AD
txrx?
;; 15:46:41.925 WT3000: Tx <txrx?>
;; 15:46:41.940 10.8.37.94: Tx: 80 00 00 00
;; 15:46:41.940 10.8.37.94: Rx: 80 00 00 31 3A 4D 45 41 53 55 52 45 3A 41 56 45 52 41 47 49 4E 47 3A 53 54 41 54 45 20 30 3B 54 59 50 45 20 45 58 50 4F 4E 45 4E 54 3B 43 4F 55 4E 54 20 32 0A
;; 15:46:41.940 WT3000: Rx <:MEASURE:AVERAGING:STATE 0;TYPE EXPONENT;COUNT 2>
;; :MEASURE:AVERAGING:STATE 0;TYPE EXPONENT;COUNT 2
txrx?
;; 15:46:46.523 WT3000: Tx <txrx?>
;; 15:46:46.523 10.8.37.94: Tx: 80 00 00 00
;; 15:46:46.523 10.8.37.94: Rx: 80 00 00 00
;; 15:46:48.726 WT3000: Rx Timeout

It acts like replies are in a 4 deep first in, first out buffer so that the answer to a query comes 3 queries later in the order the queries were asked.  I have also tried longer sequences of asking many different queries in a row and the proper answer appears after three more queries.

As for doing a multi-line command I tried automating the login sequence by putting the below in the driver file:
   #scpiCmd loginy? txrx? anonymous
   txrx?
   txrx?
   txrx?

   #scpiCmd <next command>
Running loginy? did the "txrx? anonymous" command but did not send anything else.  Did I try multi-line/multi-command incorrectly?
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 11, 2021, 08:48:12 pm
@HKJ,

Sorry to mention, but with version 1.66 I have still dropouts with DL24.
Maybe less, but can't say for sure, because dropouts never an stable behaviour.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2021, 10:45:42 am
I have uploaded a test version:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
This is a jar file, i.e. it is used to replace the jar file in a already working TC installation.

It fixes the multiline issue in the Ascii/AsciiBin driver.
For messages with an empty answer use: txrx, i.e. without the ? at the end. The ? means there must be a answer for TestController.

For DL24 I have added some debug code that will log into the log window, please run until a dropout is seen and then post the log lines that covers that.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 12, 2021, 11:56:55 am
HKJ thanks for your quick reply. I've downloaded your file and test this weekend.

Edit 1:
Made an quick start run.
When starting batterytest, (with powersupply as source) I get the following message
in the log window:

;; COM4: Zero answer for 12: CA CB 00 00 00 CE

The DL24 is on COM4.


Edit 2:
In debug window when dropout:

java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.getValue(DeviceATorchPX100.java:63)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:149)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:361)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:396)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:44)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1460)
;; ATDL24: Rx Timeout


Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2021, 01:10:35 pm
Edit 1:
Made an quick start run.
When starting batterytest, (with powersupply as source) I get the following message
in the log window:

;; COM4: Zero answer for 12: CA CB 00 00 00 CE

Yes, I have add logging of zero answers for current and voltage, they will be removed when the dropouts are fixed.


Edit 2:
In debug window when dropout:

java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.getValue(DeviceATorchPX100.java:63)

I have modified the code a bit to avoid any problems with null pointer, you can download the modified version from the same link as before.
It may be up to an hour before the caches are updated, please verify that you get V1.68 before testing.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 12, 2021, 03:41:01 pm
@HKJ,

Tested with version 1.68, looks good.
No dropouts seen in first tests.
Some spikes in Current value, but that can be generated by Dl24.
I always had more dropouts when I had connected DL24 and RD6012 at the same time.

See pictures.

1. Only DL24 connected.
2. DL24 and RD6012 connected. Dropouts are RD6012 values, when stressing de RD with the rotary Encoder.
3. The same as 2, but for 45 minutes, no dropouts.
4. More than 3 hours logging, not touching anything, no dropouts DL24, some spikes on current values, probably generated by DL24. Some dropouts in voltage reading RD6012.

Looks good for the moment, thanks.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 12, 2021, 04:57:01 pm
HKJ,

Using latest test version 1.68 the multi-line sequence does send the multiple lines.  However, in some way something is not sequencing correctly or something is not waiting at the right time.  Below is debug window from manually typing the below sequence in one at a time and successfully logging in.
   txrx? anonymous
   txrx
   txrx
   txrx
   txrx?
Code: [Select]
Starting
;; 12:37:03.608 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; Found Yokogawa WT3000 on 10.8.37.94
txrx? anonymous
;; 12:37:19.457 WT3000: Tx <txrx? anonymous>
;; 12:37:19.457 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 12:37:19.457 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 12:37:19.457 WT3000: Rx <username:>
;; username:
txrx
;; 12:37:35.151 WT3000: Tx <txrx>
;; 12:37:35.151 10.8.37.94: Tx: 80 00 00 00
;; 12:37:35.151 10.8.37.94: Rx: 80 00 00 00
txrx
;; 12:37:37.671 WT3000: Tx <txrx>
;; 12:37:37.671 10.8.37.94: Tx: 80 00 00 00
;; 12:37:37.671 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
txrx
;; 12:37:40.995 WT3000: Tx <txrx>
;; 12:37:40.995 10.8.37.94: Tx: 80 00 00 00
;; 12:37:40.995 10.8.37.94: Rx: 80 00 00 00
txrx?
;; 12:37:49.193 WT3000: Tx <txrx?>
;; 12:37:49.193 10.8.37.94: Tx: 80 00 00 00
;; 12:37:49.193 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 12:37:49.193 WT3000: Rx <Ctl server is ready.>
;; Ctl server is ready.


Using the below #scpiCmd I had hoped to get the same result.

   #scpiCmd loginy? txrx? anonymous
   txrx
   txrx
   txrx
   txrx?

   #scpiCmd  <next command>
But the result is very different including some Java errors.
Code: [Select]
Starting
;; 12:39:16.759 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; Found Yokogawa WT3000 on 10.8.37.94
loginy?
;; 12:39:28.096 WT3000: Tx <loginy?>
;; 12:39:28.096 WT3000: Tx <txrx? anonymous
txrx
txrx
txrx
txrx?>
;; 12:39:28.096 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 12:39:28.096 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 12:39:28.096 10.8.37.94: Tx: 80 00 00 00
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at dk.hkj.comm.SocketPacketInterface.readData(SocketPacketInterface.java:92)
        at dk.hkj.comm.SocketPacketInterface.writeReadData(SocketPacketInterface.java:233)
        at dk.hkj.comm.SocketPacketInterface.writeReadData(SocketPacketInterface.java:227)
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.oWriteRead(DeviceAsciiBin.java:61)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:247)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:81)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:2834)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1463)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1461)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:897)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
       at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; 12:39:28.150 10.8.37.94: Rx timeout 1000ms   In buffer:
java.lang.NullPointerException
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.decode(DeviceAsciiBin.java:76)
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.oWriteRead(DeviceAsciiBin.java:61)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:247)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:81)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:2834)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1463)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1461)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:897)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; 12:39:28.197 WT3000: Rx Timeout


I thought maybe there needed to be a delay between commands during the log in sequence but adding
   #delay 1
between the first line and the second line ended up with no errors but just the first command was done.  No delay and then doing the other command lines.

Thoughts on why the multi-line #scpiCmd yields such different results?

Also, after logging in still see a 3 transaction delay before the reply shows up.  I thought maybe it needed a line feed at the end of the message.  I put
   #eol \_
in the driver file but no line feed characters were added.  I then tried manually typing
   txrx? *idn?\r
and
   txrx? *idn?0x0A
hoping this would add the single line feed character but that just sent the characters and not an actual single character line feed.

I am out of ideas on why the reply arrives three message later...I wonder who is buffering this communications??

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2021, 11:23:58 am
Using the below #scpiCmd I had hoped to get the same result.

   #scpiCmd loginy? txrx? anonymous
   txrx
   txrx
   txrx
   txrx?

   #scpiCmd  <next command>
But the result is very different including some Java errors.
...
Thoughts on why the multi-line #scpiCmd yields such different results?

Use #cmdDelayTime, this will secure a minimum delay between commands.


Also, after logging in still see a 3 transaction delay before the reply shows up.  I thought maybe it needed a line feed at the end of the message.  I put
   #eol \_

Use #eol \n or maybe #eol \r\n
Title: Re: Program that can log from many multimeters.
Post by: gby on June 13, 2021, 01:11:45 pm
HKJ,

It turns out that #cmdDelayTime 1 allowed the automated login sequence to run.  Seems odd that only 1 mSec of additional delay makes it work but 1 mSec between commands is not going to limit performance enough to matter.

As for the issue of getting replies to queries three communications transactions later I am still at a loss.  I did try #eol \r, #eol \n but with those settings I could not log in to the instrument and thus could not try sending queries with new line or carriage return as end of line.

Any thoughts on next steps to debug what is going on?  Is there another debug option in Test Controller that might help get more information?  Do I really need to fire up WireShark and get complete traces of raw messages going back and forth?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2021, 03:12:37 pm
It turns out that #cmdDelayTime 1 allowed the automated login sequence to run.  Seems odd that only 1 mSec of additional delay makes it work but 1 mSec between commands is not going to limit performance enough to matter.

I may be the time the meter need to switch between sending and receiving.

As for the issue of getting replies to queries three communications transactions later I am still at a loss.  I did try #eol \r, #eol \n but with those settings I could not log in to the instrument and thus could not try sending queries with new line or carriage return as end of line.

If you need to build a special string, you can always switch into calculator mode with (), i.e. ("cmd\r\n") would be converter to the command followed by CR LF, but I doubt it will work.

Any thoughts on next steps to debug what is going on?  Is there another debug option in Test Controller that might help get more information?  Do I really need to fire up WireShark and get complete traces of raw messages going back and forth?

I do not have any good ideas and TC cannot do more debug than show transmitted and received data with a time stamp.

Title: Re: Program that can log from many multimeters.
Post by: gby on June 13, 2021, 06:43:57 pm
HKJ,

OK, I will keep poking at the seeming 3 transaction deep buffer in the replies.  Thanks for the help so far.

I tried using the #verifyDevice command to automate logging into the instrument and can't seem to get it to match and succeed.  Using a device file without any #verifyDevice command and then manually typing loginy? yields the following debug window result.
Code: [Select]
Starting
;; 13:52:52.539 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; Found Yokogawa WT3000 on 10.8.37.94
loginy?
;; 13:52:58.838 WT3000: Tx <loginy?>
;; 13:52:58.838 WT3000: Tx <txrx anonymous
txrx
txrx
txrx
txrx?>
;; 13:52:58.838 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 13:52:58.838 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 13:52:58.854 10.8.37.94: Tx: 80 00 00 00
;; 13:52:58.876 10.8.37.94: Rx: 80 00 00 00
;; 13:52:58.881 10.8.37.94: Tx: 80 00 00 00
;; 13:52:58.897 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 13:52:58.913 10.8.37.94: Tx: 80 00 00 00
;; 13:52:58.928 10.8.37.94: Rx: 80 00 00 00
;; 13:52:58.943 10.8.37.94: Tx: 80 00 00 00
;; 13:52:58.948 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 13:52:58.954 WT3000: Rx <Ctl server is ready.>
;; Ctl server is ready.

From the above the returned value for this loginy? command is "Ctl server is ready.".  I added the following to the device file:
   #verifyDevice "Ctl server is ready." loginy?
   #idString Ctl server is ready.
With the above in the device file it complains that  the "Device do not match" and closes the connection.
Code: [Select]
Starting
;; 14:08:05.739 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; 14:08:05.993 : Tx <txrx anonymous
txrx
txrx
txrx
txrx?>
;; 14:08:05.993 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 14:08:05.993 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 14:08:06.008 10.8.37.94: Tx: 80 00 00 00
;; 14:08:06.023 10.8.37.94: Rx: 80 00 00 00
;; 14:08:06.032 10.8.37.94: Tx: 80 00 00 00
;; 14:08:06.048 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 14:08:06.061 10.8.37.94: Tx: 80 00 00 00
;; 14:08:06.078 10.8.37.94: Rx: 80 00 00 00
;; 14:08:06.095 10.8.37.94: Tx: 80 00 00 00
;; 14:08:06.100 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 14:08:06.105 10.8.37.94: **Device do not match** <Ctl_server_is_ready.>
;; 10.8.37.94 Device Ctl server is ready. do not match: **Device do not match** <Ctl_server_is_ready.>
;; 14:08:06.147 Stopping thread for: 10.8.37.94 - Yokogawa WT3000

What do I need to put on the #verifyDevice first argument and for the #idString to get them to match given what the multi-line log in command loginy? will return the ascii text "Ctl server is ready.".
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2021, 06:52:38 pm
What do I need to put on the #verifyDevice first argument and for the #idString to get them to match given what the multi-line log in command loginy? will return the ascii text "Ctl server is ready.".

When using multiple commands the answer is a combination of all answers, you can use :readmath: to check it and maybe return "wt3000" if the answer contains  "Ctl server is ready."
The displayVar() function can be used in the :readmath: to see what you get.
Also note that only txrx? will return a answer, with txrx a answer will not be return.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 13, 2021, 08:31:23 pm
Thanks for the hint about displayVar().  But, for this driver, command and the latest beta V1.68 I can't get either :readmath: or displayVar() to work.  I tried the following command:
   #scpiCmd loginy? txrx anonymous
   txrx
   txrx
   txrx
   txrx?
   :readmath: "Yes"
to force the returned value to just be the string "Yes".  Unfortunately the combination of latest beta Ver 1.68, using asciiBin driver does not seem to ever execute the :readmath:.  See below debug window. 
Code: [Select]
loginy?
;; 16:17:33.794 WT3000: Tx <loginy?>
;; 16:17:33.794 WT3000: Tx <txrx anonymous
txrx
txrx
txrx
txrx?
:readmath: "Yes">
;; 16:17:33.794 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 16:17:33.794 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 16:17:33.803 10.8.37.94: Tx: 80 00 00 00
;; 16:17:33.822 10.8.37.94: Rx: 80 00 00 00
;; 16:17:33.828 10.8.37.94: Tx: 80 00 00 00
;; 16:17:33.847 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 16:17:33.856 10.8.37.94: Tx: 80 00 00 00
;; 16:17:33.871 10.8.37.94: Rx: 80 00 00 00
;; 16:17:33.884 10.8.37.94: Tx: 80 00 00 00
;; 16:17:33.890 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 16:17:33.898 WT3000: Rx <Ctl server is ready.>
;; Ctl server is ready.

On another computer running Ver 1.66 I added
   :readmath: "Yes"
to the end of a command for a device using the ascii driver as a test.  In this case it returns "Yes" as expected.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2021, 09:16:03 am
Unfortunately the combination of latest beta Ver 1.68, using asciiBin driver does not seem to ever execute the :readmath:.  See below debug window. 

Oops, I made a error while fixed the multiline handling. A new version is up on the same link.

Pukker: I have removed the debug messages and also tinkered a bit with the RD60xx protocol, to hopefully reduce dropouts on it.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 14, 2021, 11:03:32 am

Pukker: I have removed the debug messages and also tinkered a bit with the RD60xx protocol, to hopefully reduce dropouts on it.

Great, more than an hour testing (Version 1.69) without any dropout. Compliments to HKJ
Title: Re: Program that can log from many multimeters.
Post by: gby on June 14, 2021, 02:03:15 pm
HKJ,

Thanks for beta V1.69.  :readmath: in multi-line commands with asciiBin driver works now.

But, I still am having problems connecting when the string returned by #verifyDevice has spaces.

For a test, I added
   :readmath: "Yes"
to the end of the loginy? multi-line command and using:
   #verifyDevice "Yes" loginy?
   #idString Yes
TC logs into the Yokogawa successfully and things are working.

If I change the :readmath: at the end of the loginy? to
   :readmath: "Yes works"
and change the #verifyDevice, #idString correspondingly to:
   #verifyDevice "Yes works" loginy?
   #idString Yes works
TC fails to connect and reports:
Code: [Select]
;; 09:43:15.710 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; 09:43:15.964 : Tx <txrx anonymous
txrx
txrx
txrx
txrx?
:readmath: "Yes works">
;; 09:43:15.964 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 09:43:15.964 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 09:43:15.979 10.8.37.94: Tx: 80 00 00 00
;; 09:43:15.979 10.8.37.94: Rx: 80 00 00 00
;; 09:43:15.995 10.8.37.94: Tx: 80 00 00 00
;; 09:43:16.010 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 09:43:16.026 10.8.37.94: Tx: 80 00 00 00
;; 09:43:16.042 10.8.37.94: Rx: 80 00 00 00
;; 09:43:16.064 10.8.37.94: Tx: 80 00 00 00
;; 09:43:16.069 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; 09:43:16.091 10.8.37.94: **Device do not match** <Yes_works>
;; 10.8.37.94 Device Yes works do not match: **Device do not match** <Yes_works>
;; 09:43:16.133 Stopping thread for: 10.8.37.94 - Yokogawa WT3000

I note in the debug log that some of the strings are "Yes_works" with under score replacing the space and some are "Yes works" with the space.  I tried various things like #idString Yes_works and various other combinations and I could not find the right syntax to get #verifyDevice to succeed.

So, how to set the argument string in #verifyDevice and the value for #idString so that returned strings like "Ctl server is ready." with spaces in it will be properly recognized as a match?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2021, 02:14:57 pm
So, how to set the argument string in #verifyDevice and the value for #idString so that returned strings like "Ctl server is ready." with spaces in it will be properly recognized as a match?

Any spaces in the answer is replace with _, this means you can do the matching without using "" around the compare string.
From next version I will also replace spaces with _ in the value you type. For now use: #verifyDevice Yes_works loginy?
Title: Re: Program that can log from many multimeters.
Post by: gby on June 14, 2021, 04:19:04 pm
HKJ,

Thanks for clearing up the space versus under score.  The #verifyDevice now logs in sucessfully most of the time.  There is still some form of communications issue sometimes where sending an empty message without expecting a reply
   txrx
generates an RX time out error.  Does txrx (no question mark) with asciiBin driver expect a reply?  I thought it would just send and not expect a reply and if not expecting a reply that would mean you should not be able to get an RX receive timeout error like shown in the below DOS debug record.
Code: [Select]
Starting
;; 12:13:07.786 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; 12:13:08.033 : Tx <txrx anonymous
txrx
txrx
txrx
txrx?
:readmath: "Ctl server is ready.">
;; 12:13:08.033 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 12:13:08.033 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 12:13:08.049 10.8.37.94: Tx: 80 00 00 00
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at dk.hkj.comm.SocketPacketInterface.readData(SocketPacketInterface.java:92)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2021, 07:36:15 pm
Does txrx (no question mark) with asciiBin driver expect a reply?  I thought it would just send and not expect a reply and if not expecting a reply that would mean you should not be able to get an RX receive timeout error like shown in the below DOS debug record.

txrx? expect a reply and passes it on to the driver
txrx expect a reply and do not pass it on.
tx do not expect a reply.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2021, 11:11:41 am
A new documentation page with a list of supported equipment by function:

http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html (http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html)

(https://lygte-info.dk/pic/Projects/TestController/ImagesSupported/DSC_4399.jpg) (https://lygte-info.dk/pic/Projects/TestController/ImagesSupported/DSC_1066.jpg)
(https://lygte-info.dk/pic/Projects/TestController/ImagesSupported/DSC_6923.jpg)
(https://lygte-info.dk/pic/Projects/TestController/ImagesSupported/DSC_6633.jpg)
(https://lygte-info.dk/pic/Projects/TestController/ImagesSupported/DSC_1924.jpg)
Title: Re: Program that can log from many multimeters.
Post by: voltsandjolts on June 21, 2021, 10:04:34 am
Attached driver adds support for the TTi 1908 over USB (using CDC comport).

This DMM has a 500 datapoint memory (not a typo, only 500 datapoints unfortunately!) but I haven't had time to add support for that in the driver.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 22, 2021, 06:37:04 am
Attached driver adds support for the TTi 1908 over USB (using CDC comport).

This DMM has a 500 datapoint memory (not a typo, only 500 datapoints unfortunately!) but I haven't had time to add support for that in the driver.

Thanks, it will be included in the next release.
I changed port to: #port comNoBaud
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on June 25, 2021, 06:56:03 am
Attached a driver for Rigol DG800/DG900 series.
Only tested through ethernet connection and on 2 channel enabled hardware.
Most of the on-device Main screen UI is duplicated.
TODO (one day...):
* Arb waveform upload
* many small functions like output invert, align, sweep, trigger, ....
* counter reading

(edit 09:13 CET: new version of the file)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2021, 04:01:57 pm
Attached a driver for Rigol DG800/DG900 series.
Only tested through ethernet connection and on 2 channel enabled hardware.
Most of the on-device Main screen UI is duplicated.
TODO (one day...):
* Arb waveform upload
* many small functions like output invert, align, sweep, trigger, ....
* counter reading

(edit 09:13 CET: new version of the file)

Thanks, I will include it in next release. I have added a #author tag with you handle, please say if you want it changed.

Waveform upload must be done with the "other" menu and use data (a selected column) from the table. Selection of a column can be done easily with the functions in TC,
Title: Re: Program that can log from many multimeters.
Post by: duckduck on June 25, 2021, 06:22:46 pm
Hello. I just got a RD6006P (the "P" version has more precise V & I settings and lower noise). I noticed that the V & I settings were off so I made the following changes (in red):

Quote
#metadef
#author MikeLud
#idString Riden,Riden RD6006
#name Riden RD6006
#handle RD6006

#replacetext RD60xx 60062
#removeline 12A
#replaceText MaxCurrent 6.000
#replaceText MaxOCP 6.200
#replaceText CurrentScaleFactor 100
#replaceText VoltageScaleFactor 100

#metadef
#author DuckDuck
#idString Riden,Riden RD6006P
#name Riden RD6006P
#handle RD6006P

#replacetext RD60xx 60065
#removeline 12A
#replaceText MaxCurrent 6.000
#replaceText MaxOCP 6.200
#replaceText CurrentScaleFactor 10000
#replaceText VoltageScaleFactor 1000



#metadef
#author MikeLud
#idString Riden,Riden RD6012
#name Riden RD6012
#handle RD6012

#replacetext RD60xx 60121
#replaceText MaxCurrent 12.000
#replaceText MaxOCP 12.100
#replaceText CurrentScaleFactor 1000
#replaceText VoltageScaleFactor 100

#meta
#author MikeLud
#idString Riden,Riden RD60xx
#name Riden RD60xx
#handle RD60xx
#port comfixedbaud
#baudrate 115200
#driver Modbus

#verifyDevice RD60xx Model?

#notes RD6006/12 baud rate must be changed from 115200 to 9600 for this to work. RD6006P will not work at 9600. Consult User Manual for directions.

#scpiCmd SysTC? holding? 0x05
#scpiCmd VSet holding 0x08 (value) *VoltageScaleFactor
#scpiCmd VSet? holding? 0x08 /VoltageScaleFactor
#scpiCmd ISet holding 0x09 (value) *CurrentScaleFactor
#scpiCmd ISet? holding? 0x09 /CurrentScaleFactor
#scpiCmd VOut? holding? 0x0a /VoltageScaleFactor

That all seems to work OK, but the OCP and OVP reading and setting are off by a factor of 10. OVP on the supply of 0.7 shows up as OVP of 7 on TestController. Can someone point me in the right direction?

Also, none of my damn business since I didn't write this app, and I'm probably not the first to say this, but it sure would be nice to open source it and put it up on github. That being said, thanks to the authors and contributors for their hard work on this app. It is appreciated.

EDIT: I assume that memory settings won't work right either but I haven't tested those yet.

EDIT EDIT: I have played with these lines, but they didn't seem to do anything. Maybe I'm doing something wrong.

Quote
#scpiCmd OVP? holding? (MNS+2) /100
#scpiCmd OVP holding (MNS+2) (value) *100
#scpiCmd OCP? holding? (MNS+3) /1000
#scpiCmd OCP holding (MNS+3) (value) *1000
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2021, 06:49:15 pm
Hello. I just got a RD6006P (the "P" version has more precise V & I settings and lower noise). I noticed that the V & I settings were off so I made the following changes (in red):


I would prefer you did it directly in definition file and posted a updated file, of course you would have to define the supply as a RD6006P.
The *100 and /100 etc. is the scaling and will change the values, but you may have to check the definition for where to change it.
It would be nice if you could do a perfect working implementation for the P version. You are welcome to post questions here or mail me directly with questions.

I am the only programmer on TestController (thanks to all the contributors with definitions) and I am not very good at open source. I have been publishing programs for many years, but always without source. You can see some of my older works here: https://www.miscel.dk/ (https://www.miscel.dk/)
I may at some date decide to do open source on TestController, but I will have to do a lot of clean up in the code.

Title: Re: Program that can log from many multimeters.
Post by: duckduck on June 25, 2021, 06:59:36 pm
Hello. I just got a RD6006P (the "P" version has more precise V & I settings and lower noise). I noticed that the V & I settings were off so I made the following changes (in red):


I would prefer you did it directly in definition file and posted a updated file, of course you would have to define the supply as a RD6006P.
The *100 and /100 etc. is the scaling and will change the values, but you may have to check the definition for where to change it.
It would be nice if you could do a perfect working implementation for the P version. You are welcome to post questions here or mail me directly with questions.
<SNIP>

It is my intention to do a perfectly working implementation of the Riden RD6006P and also the East Tester ET5411.

So these lines (below) control reading and setting of OCP and OVP (see attached image)?

Quote
#scpiCmd OVP? holding? (MNS+2) /100
#scpiCmd OVP holding (MNS+2) (value) *100
#scpiCmd OCP? holding? (MNS+3) /1000
#scpiCmd OCP holding (MNS+3) (value) *1000

Title: Re: Program that can log from many multimeters.
Post by: gby on June 25, 2021, 07:57:06 pm

txrx? expect a reply and passes it on to the driver
txrx expect a reply and do not pass it on.
tx do not expect a reply.

HKJ,

Still struggling to make the interface to the Yokogawa behave.  Based on the above I would expect using TX would not give an Rx Timeout error but it does.  See below DOS debug window showing the connection/log in sequence and just typing
   tx *idn?
from the command line.  At the end of the DOS debug window record after the TX only command there is an Rx Timeout.
Code: [Select]
Starting
;; 14:13:40.029 Start thread for: 10.8.37.94 - Yokogawa WT3000
;; 14:13:40.283 : Tx <txrx anonymous
txrx
txrx
txrx
txrx?
:readmath: "Ctl server is ready.">
;; 14:13:40.283 10.8.37.94: Tx: 80 00 00 09 61 6E 6F 6E 79 6D 6F 75 73
;; 14:13:40.283 10.8.37.94: Rx: 80 00 00 09 75 73 65 72 6E 61 6D 65 3A
;; 14:13:40.346 10.8.37.94: Tx: 80 00 00 00
;; 14:13:40.346 10.8.37.94: Rx: 80 00 00 00
;; 14:13:40.398 10.8.37.94: Tx: 80 00 00 00
;; 14:13:40.398 10.8.37.94: Rx: 80 00 00 09 70 61 73 73 77 6F 72 64 3A
;; 14:13:40.455 10.8.37.94: Tx: 80 00 00 00
;; 14:13:40.456 10.8.37.94: Rx: 80 00 00 00
;; 14:13:40.517 10.8.37.94: Tx: 80 00 00 00
;; 14:13:40.529 10.8.37.94: Rx: 80 00 00 14 43 74 6C 20 73 65 72 76 65 72 20 69 73 20 72 65 61 64 79 2E
;; Found Yokogawa WT3000 on 10.8.37.94
tx *idn?
;; 14:13:55.465 WT3000: Tx <tx *idn?>
;; 14:13:55.465 10.8.37.94: Tx: 80 00 00 05 2A 69 64 6E 3F
;; 14:13:57.666 WT3000: Rx Timeout


Is this how it should work?

Also, the time lapse between starting a query and getting an Rx timeout error confuses me.  In the device file I have the command:
   #readingDelay 2
which I think means accept up to 2 seconds delay when reading values.  When I query and really get no reply it takes just over 2000 mSec per DOS Debug times stamps before the Rx timeout is reported.  But, when I query something with a long/large character count answer thre is always an Rx Timeout error.  The DOS Debug window has a line reporting "Rx timeout in 1000 mSec" and even more confusing the DOS Debug window time stamps say the Rx time out is happening after only 100's of mSec after the query start.

The DOS debug record at the end of the post shows properly getting one ascii float number via the Yokogawa command
   :num:norm:val? 30
Then, the record shows the Yokogawa command
   :num:norm:val?
with no index listed which should return all 255 values in one comma separated list.  Using the Yokogawa DLTerm software utility it reports taking from 50 to 184 mSec to receive this long message.  Test Controller just times out and lists the beginning of the buffer as 80 00 08 D2 which means it got the start of a 0x8D2 = 2258 decimal character reply.  Below is a summary of this sequence:
14:46:02.350  The :num:norm:val? query starts
14:46:02.518  SocketTimeoutException happens
14:46:02.618 Reports Rx timeout 1000ms   In buffer: 80 00 08 D2 80 80 80
14:46:02.663 WT3000: Rx Timeout

With #readingDelay 2 in the device file:
  1. Why does it report overall Rx Timeout after only 313 mSec?
  2. Why does it list "Rx timeout 1000ms" after only 268 mSec?
  3. Lastly, can Test Controller txrx? receive an ascii reply with 2000+ characters or does that over run the buffer?

Sorry for all this detail, but when testing logging two values every sec the communications gets an error anywhere from almost right away to maybe 100 sec into logging.  Once this communications error happens communications is permanently messed up with the replies coming out of order.  Sometimes after a com error Test Controller even freezes and stops responding/has to be force closed.  Unfortunately I haven't been able to reliably repeat Test Controller freezing.

For your reference I have attached the device file I have at the moment.

Code: [Select]
query? num:norm:val? 30
;; 14:45:37.770 WT3000: Tx <query? num:norm:val? 30>
;; 14:45:37.770 WT3000: Tx <txrx (value)
txrx
txrx
txrx?>
;; 14:45:37.770 10.8.37.94: Tx: 80 00 00 10 6E 75 6D 3A 6E 6F 72 6D 3A 76 61 6C 3F 20 33 30
;; 14:45:37.770 10.8.37.94: Rx: 80 00 00 00
;; 14:45:37.838 10.8.37.94: Tx: 80 00 00 00
;; 14:45:37.838 10.8.37.94: Rx: 80 00 00 00
;; 14:45:37.907 10.8.37.94: Tx: 80 00 00 00
;; 14:45:37.907 10.8.37.94: Rx: 80 00 00 00
;; 14:45:37.969 10.8.37.94: Tx: 80 00 00 00
;; 14:45:37.969 10.8.37.94: Rx: 80 00 00 04 49 4E 46 0A
;; 14:45:37.978 WT3000: Rx <INF>
;; INF
query? num:norm:val?
;; 14:46:02.350 WT3000: Tx <query? num:norm:val?>
;; 14:46:02.350 WT3000: Tx <txrx (value)
txrx
txrx
txrx?>
;; 14:46:02.350 10.8.37.94: Tx: 80 00 00 0D 6E 75 6D 3A 6E 6F 72 6D 3A 76 61 6C 3F
;; 14:46:02.350 10.8.37.94: Rx: 80 00 00 00
;; 14:46:02.403 10.8.37.94: Tx: 80 00 00 00
;; 14:46:02.403 10.8.37.94: Rx: 80 00 00 00
;; 14:46:02.465 10.8.37.94: Tx: 80 00 00 00
;; 14:46:02.465 10.8.37.94: Rx: 80 00 00 00
;; 14:46:02.518 10.8.37.94: Tx: 80 00 00 00
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at java.net.SocketInputStream.read(Unknown Source)
        at dk.hkj.comm.SocketPacketInterface.readData(SocketPacketInterface.java:92)
        at dk.hkj.comm.SocketPacketInterface.writeReadData(SocketPacketInterface.java:233)
        at dk.hkj.comm.SocketPacketInterface.writeReadData(SocketPacketInterface.java:227)
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.oWriteRead(DeviceAsciiBin.java:61)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:286)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:81)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:2834)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1463)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1461)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:897)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; 14:46:02.618 10.8.37.94: Rx timeout 1000ms   In buffer: 80 00 08 D2 80 80 80
java.lang.NullPointerException
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.decode(DeviceAsciiBin.java:76)
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.oWriteRead(DeviceAsciiBin.java:61)
        at dk.hkj.devices.DeviceAscii$TranslatingCommInterface.write(DeviceAscii.java:286)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:162)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:211)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:256)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:81)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:2834)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1463)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1461)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:897)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; 14:46:02.663 WT3000: Rx Timeout



Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2021, 07:58:28 pm
It is my intention to do a perfectly working implementation of the Riden RD6006P and also the East Tester ET5411.

So these lines (below) control reading and setting of OCP and OVP (see attached image)?

Yes and no, the lines define commands to read and write the values, but a #cmdSetup definition is used to show the value in a menu.

Generally you use #scpiCmd to define command, these can be tested from the command line. When they are working you can use #cmdSetup to make menus for them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2021, 08:07:33 pm
Still struggling to make the interface to the Yokogawa behave.  Based on the above I would expect using TX would not give an Rx Timeout error but it does.

I do not have time to do a full answer now, but I hope a short answer will help you.
tx will only send a message, but adding a ? to the command means TC will expect a answer on the SCPI level and this will always lead to a timeout.
To understand that TC has two levels:
1) The SCPI like level.
2) The actual communication level.

A command with a ? will always expect a answer on the SCPI level, this will never happen from a tx (or txrx) command and means a timeout on the SCPI level.
A txrx may get a timeout on the actual communication level, when no answer is received, this will never happen form a tx that do not expect any answer.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 25, 2021, 09:31:04 pm
HKJ,

I think I understand the idea of com level and SCPI level.  Thanks for that explanation.

However, how is #readingDelay used?  From my testing it seems that the SCPI level uses this time and the communications level uses a different Rx time out value.  The example error printed 1000 mSec for the Rx timeout in the DOS box but the DOS debug times stamps said only 168 mSec before the "SocketTimeoutException  read timed out" error.

For the socket connection and for the communications level in general what sets the Rx timeout value?

Also, the example query that always fails is returning around 2260 characters.  Does that over flow the communications buffer?

Thanks again for your help.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 26, 2021, 11:05:18 am
I think I understand the idea of com level and SCPI level.  Thanks for that explanation.

Not all drivers use multiple levels, SCPI is direct, SCPIx is direct, except when using the special commands (txrx, txrx?, tx, etc.).
All other drivers use the two levels.

On the SCPI level a timeout may often show up as a null pointer exception, instead of a timeout.


However, how is #readingDelay used?  From my testing it seems that the SCPI level uses this time and the communications level uses a different Rx time out value.  The example error printed 1000 mSec for the Rx timeout in the DOS box but the DOS debug times stamps said only 168 mSec before the "SocketTimeoutException  read timed out" error.

For the socket connection and for the communications level in general what sets the Rx timeout value?

Only the actual communication level uses timeout and that is supposed to be adjusted by #readingDelay. Default timeout is usually 1s or 1000ms. The SCPI level may inherited that timeout or get a null value return. I may have forgotten to transfer the #readingDelay setting to the communication driver for some drivers, if you suspect that please state the driver you are using and I will check.
The timeout is counter from start of the read, but this is not logged, instead you can usually assume the timestamp for the previous tx is the time the rx started (it will seldom be more than a ms off).

Also, the example query that always fails is returning around 2260 characters.  Does that over flow the communications buffer?

Generally there is not supposed to be any buffer overflows, but some messages queues are limited in length to avoid long delays. This only affects complete messages, a single message is not limited in length, but a timeout may cut it short.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 26, 2021, 01:32:45 pm
HKJ,

... if you suspect that please state the driver you are using and I will check.

The communications setup for the Yokogawa in the driver file is:
   #name Yokogawa WT3000
   #handle WT3000
   #port LXI 10001
   #driver asciiBin
   #packetFormat Length31
   #eol \_
   #cmdDelayTime 50
The "Load devices" tab is set to use Type "Socket".  Full driver file is attached for your reference.


Also, the example query that always fails is returning around 2260 characters.  Does that over flow the communications buffer?

Generally there is not supposed to be any buffer overflows, but some messages queues are limited in length to avoid long delays. This only affects complete messages, a single message is not limited in length, but a timeout may cut it short.

The query command I am having trouble with reports back all the measurements in a comma separated list and is around 2260 characters listing 255 floating point values including some "NaN" and some "INF".  This query command always times out and after it times out communications with the device always stops working; every subsequent query command errors out or comes in out of order like there is a buffer error.  Sometimes after this query command Test Controller freezes and must be force stopped (the close "X" in the upper corner does not work).

As shown in the previous detailed post in the second DOS Debug record this query command from last tx line to final line took 663-518 = 145 mSec.  Note the line in the debug where it says "timeout 1000ms " but the Debug time stamps show it is no where near 1000ms.  My eyes are not a precision clock, but the error report seems pretty much immediate after hitting return on the command line suggesting much faster than 1 sec from send start to timeout/error.
;; 14:46:02.465 10.8.37.94: Tx: 80 00 00 00
;; 14:46:02.465 10.8.37.94: Rx: 80 00 00 00
;; 14:46:02.518 10.8.37.94: Tx: 80 00 00 00
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
                        + Many more Java error lines removed to shorten.  See original post for full lines.
;; 14:46:02.618 10.8.37.94: Rx timeout 1000ms   In buffer: 80 00 08 D2 80 80 80
java.lang.NullPointerException
        at dk.hkj.devices.DeviceAsciiBin$TranslatingCommDataInterface.decode(DeviceAsciiBin.java:76)
                        + Many more Java error lines removed to shorten.  See original post for full lines.
;; 14:46:02.663 WT3000: Rx Timeout

Perhaps with this driver combination there is a short timeout at the socket level?
Can you think of any further test ideas to understand this problem?

Added a Little Later:


Further testing with this command shows that the error happens when the number of characters exceeds 127.  It turns out the Yokogawa allows retrieving 1 to a set number or by default up to the max 255 at once.
Setting the range from 1 to 16 sends 0x7F characters and works repeatedly.
Setting the range from 1 to 17 sends 0x83 characters and always errors out and communications stops working.

From the above I conclude somewhere Test Controller has a 127 character max buffer/limit of some kind.  The buffer length limit explains the long command always failing but does not explain or solve the issue of communications failing randomly/sometimes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 26, 2021, 04:01:37 pm
From the above I conclude somewhere Test Controller has a 127 character max buffer/limit of some kind.

It may also be something with signed/unsigned handling, I will have to try it out tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 27, 2021, 11:02:02 am
V1.70 is up
It fixes some bugs and add new devices.
   Fixed: Some bugs in AsciiBin driver.
   Added: TTi 1908 bench meter. Thanks voltsandjolts
   Added: Rigol DG8xx/DG9xx, thanks bateau020
   Added: Error message for missing address on "Load devices" page when pressing Reconnect.
    Fixed: Riden dropouts with help from Pukker (Thanks)
   Fixed: DL24 dropouts with help from Pukker (Thanks)

gby I hope the AsciiBin driver works now.

I have two times helped people that forgot to fill in a address, I hope the added error messages fixes that for the future.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 27, 2021, 04:22:33 pm
HKJ,

Thanks for the new version.  It has certainly fixed the buffer length issue in the asciiBin driver.  Querying the Yokogawa power analyzer for all 255 data channel samples in one reply gets the reply with no communications error.  Thank you very much for this fix.

From home I was running the connection to the Yokogawa over a VPN connection.  Even with that extra variability/delay I was able to log 16 of the data channels every 600 mSec for just over 2 hours with no communications error forcing a re-start.  Earlier versions logging would always have a comm problem and recovering/getting communications going again required re-starting Test Controller.  In the original file I had #cmdDelay 50 to help with communications problems but with this version I can comment that line out.

So, whatever you did to fix the buffer length seems to have made communications more stable also.  I will keep testing it but so far so good and thanks a lot.

Just out of curiosity on a completely different subject, what sets the sample interval when on the "Current values" tab?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 27, 2021, 04:58:20 pm
So, whatever you did to fix the buffer length seems to have made communications more stable also.  I will keep testing it but so far so good and thanks a lot.

I fixed it so the driver did not restart every time bit 7 was one.

Just out of curiosity on a completely different subject, what sets the sample interval when on the "Current values" tab?

It has a fixed maximum rate of (I believe) 5, but will reduce the rate if there is slow devices. When logging it may use the values from that instead.
Title: Re: Program that can log from many multimeters.
Post by: gby on June 30, 2021, 01:34:05 pm
txrx? expect a reply and passes it on to the driver
txrx expect a reply and do not pass it on.
tx do not expect a reply.

HKJ,

I am running into an error when running a script that might have something to do with the above.  The device is using ascii driver over a serial port and since it is a raw interface it uses txrx1Bin? and txrxnBin? communications commands.  But there is no corresponding txrx1Bin without the question mark.  So, for commands setting a value using txrx1Bin? with a ? a value is returned to the driver even though for a set we don't want a value returned.  For example, there is the below scpiCmd definition for device write to the DPoles register:
   #scpiCmd DPoles txrx1Bin? \x07\x(hex(limit(value/2,0,31)*8+3,2))

When I run scripts with the above type of set command in them a value is returned to the console.  Sometimes that extra value incorrectly ends up in a variable.  An example of this undesired value causing a script error is the below short script which comments out writing one value, reads one value from device S200, and prints the read value to the console.
   =var temp = 0
   ;S200:DPoles 0
   =temp = deviceRead("S200", "IuOffset?")
   #delay 1
   =temp

Running the above script the final value of temp on the last line correctly prints out the result of the "IuOffset?" query which should be a fixed value of -455.157.  Below is the console result when running it:
   =var temp = 0
   =temp = deviceRead("S200", "IuOffset?")
   #delay 1
   =temp
   ;; -455.157

Uncommenting out the value set command to a completely un-related device parameter (S200:DPoles 0) right before the read command the result of the final print of temp should not change.
   =var temp = 0
   S200:DPoles 0
   =temp = deviceRead("S200", "IuOffset?")
   #delay 1
   ;;-455.157
   =temp
   ;; 214

However the final value does change which is incorrect behavior.

I wonder if the root cause of this error is using txrx1Bin? for the parameter set?  The txrx1Bin? command does return a value to the driver and it looks like that returned value is messing with the script.

How to emulate the functionality of txrx1Bin with no question mark to have no returned value for a set command?  Using just txrx doesn't send the two hex values needed.  For example txrx \x07\x00 sends those ascii characters and not the two hex values according to the DOS debug window.
   ;; COM1: Tx: <\x07\x00> 5C 78 30 37 5C 78 30 30
Trying txrx1Bin \x07\x00 with no "?" just sends those characters.
   ;; S200: Tx <txrx1Bin \x07\x00>

I did the above with the latest Ver 1.70.  But, a couple of older versions also produce these same errors.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 30, 2021, 03:33:43 pm
The device is using ascii driver over a serial port and since it is a raw interface it uses txrx1Bin? and txrxnBin? communications commands.  But there is no corresponding txrx1Bin without the question mark.

I have not studied you post, but I have added txrx1Bin and txrxnBin.
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: gby on June 30, 2021, 04:18:48 pm
HKJ,

Wow, that was really fast.  Quick check shows that txrx1Bin with no question mark is there and using it does solve the script problem that was happening.

Thanks again for a great utility and your great support.

We are still working on polishing the Yokogawa power analyzer file and when polished and tested will share with you to include in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 30, 2021, 05:30:08 pm
Wow, that was really fast.  Quick check shows that txrx1Bin with no question mark is there and using it does solve the script problem that was happening.

It was very easy to duplicate the two other commands and strip the answering code.


We are still working on polishing the Yokogawa power analyzer file and when polished and tested will share with you to include in the next release.

With that many channels are you using the possibility to select what data and columns to request and show with check marks? It is a fairly new function and not really used yet.
Title: Re: Program that can log from many multimeters.
Post by: duckduck on July 02, 2021, 07:19:22 am
I have gotten the files for the Riden RD6006P DC power supply and the East Tester ET5411 high voltage DC electronic load to a 90% working state.

To get the last bit for the RD6006P I think that I need a modbus sniffer / analyzer. Are there freeware or open-source modbus sniffers? I think I'll ask UniSoft to help with the RD6006P since he is writing PC software for this device.

To get the last bit for the ET5411 I think that I need a USB or SCPI sniffer. What are people using for this (Windows or Linux)? Also is there PC software for the ET5411 (so I have something to sniff)?

EDIT:

I didn't know about debug mode. I should probably read the directions ;-)

I found a SCPI reference for the ET54xx's. I'll check that out.
see attached


Here are the files as they are. They mostly work, but some things don't. Thanks to the authors of the RD60xx and ET5410 files as I'm using those as a base to start from.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 02, 2021, 07:33:37 am
I have gotten the files for the Riden RD6006P DC power supply and the East Tester ET5411 high voltage DC electronic load to a 90% working state.

To get the last bit for the RD6006P I think that I need a modbus sniffer / analyzer. Are there freeware or open-source modbus sniffers? I think I'll ask UniSoft to help with the RD6006P since he is writing PC software for this device.

To get the last bit for the ET5411 I think that I need a USB or SCPI sniffer. What are people using for this (Windows or Linux)? Also is there PC software for the ET5411 (so I have something to sniff)?

I suppose that you problems is something you cannot do with debug mode in TestController.

If you have a couple of serial ports (can be USB-serial adapters) you can use Termite to see what is going on using forward selection, it has a hex mode that allows you to see the modbus messages.
For this to work you need to link two serial ports with a cross cable and then use a third port for connection to the device (Can be the virtual port the device creates).

https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm)

I suppose you have the communication manual for ET load, but you problems is some missing or badly documented commands.

Title: Re: Program that can log from many multimeters.
Post by: Pukker on July 04, 2021, 08:33:23 pm
@HKJ,

Question about the Current Values tab.
Could it be possible to have minimum, maximum, average values etc.
not only over an selected (30, 100, 300, 1000) number of values,
but over the whole logging session. Interesting when you log for
an long time and want to observe that values over the complete log.

Just an idea what I was looking for.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 05, 2021, 07:34:30 am
@HKJ,

Question about the Current Values tab.
Could it be possible to have minimum, maximum, average values etc.
not only over an selected (30, 100, 300, 1000) number of values,
but over the whole logging session. Interesting when you log for
an long time and want to observe that values over the complete log.

Just an idea what I was looking for.

Try the "Range" page, it does exactly that:

(http://lygte-info.dk/pic/Projects/TestController/DocRange/RangeRange.png)

You can fill in the first/last fields to limit the shown range.

Another option is the GridPanel, it can be customized to nearly show or adjust anything:

(http://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Advanced%2BChart.png)

Here the advanced readout and charting, it can be used with any DMM or other device. This is not related to any logging, but will always work.

If you want to use the same GridPanel frequently, you can save it as a menu:

(http://lygte-info.dk/pic/Projects/TestController/DocGridPanel/SaveGridPanel.png)

When specifying the menu name a semicolon can be used to create submenus.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 05, 2021, 10:29:36 pm
HKJ,

Attached is a working Yokogawa WT3000 power analyzer driver file to include in the next release.

Right now we don't have any more thoughts for updating it but as we use it I am sure we will add to it a little.  I will update if that happens.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2021, 11:36:03 am
Attached is a working Yokogawa WT3000 power analyzer driver file to include in the next release.

I will include it in the next release, thanks.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 18, 2021, 08:12:31 am
HKJ,
Am I doing something wrong? Why do I have such outliers on my graph?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 18, 2021, 08:37:38 am
Am I doing something wrong? Why do I have such outliers on my graph?

It looks like you have dropouts in communication, you can filter it out with a Math channel using DropOutFilter on maybe 5 to 10 samples.

What device do you have this problem with and what version of TC.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 18, 2021, 08:50:42 am
kunkin kp184, TCv1.70
Maybe there is an instruction on how to overlay several graphs. I'm doing something wrong.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 18, 2021, 09:55:54 am
kunkin kp184, TCv1.70
Maybe there is an instruction on how to overlay several graphs. I'm doing something wrong.

You load the first and the import the others.

With time sync:
(http://lygte-info.dk/pic/cpf6/TimeSync.png)

With capacity sync:
(http://lygte-info.dk/pic/cpf6/CapacitySync.png)

To get the imported capacity without dropouts it may be necessary to select this option (I will have to look a bit on that):
(http://lygte-info.dk/pic/cpf6/Filter.png)
Title: Re: Program that can log from many multimeters.
Post by: gby on July 19, 2021, 10:18:21 pm
Hi HKJ,

I am working on a non-SCPI device.  This device is a member of a family and I am trying to use #metadef sections to handle that but I can't seem to get it to work.

As I understand it with no *idn? command you use the #verifyDevice command which I am.  From my understanding of the documentation the #verifyDevice command has to match a fixed value on the command line.  So, how do I write the device file so that the different #idstring value needed to determine which #metadef section to use works?

I see in the web documentation #modifyIDN command.  But I could not find how to use/where to put #modifyIDN command in the device driver file?  I did define a #scpiCmd getDeviceSW? command and that works.  Is there something like #scpiCmd getDeviceModel? that I should define to get #metadef sections to work?

For reference, below is a subsection of the device file showing the #metadef, #verifyDevice, and the start of communication definition details.  The ModelQ? query is #scpiCmd defined later in the file to return the model/idstring of the device.

Code: [Select]
#metadef
#idstring S20330
#replaceText DIpeak 9.0
#replaceText VBusScale 0.25

#metadef
#idstring S20630
#replaceText DIpeak 18.0
#replaceText VBusScale 0.23

#metadef
#replaceText DIpeak 18.0
#replaceText VBusScale 1

#meta

;S200 does not reply to SCPI *IDN.  Need a #verifyDevice command that is the same for S200's.
; S200 Model read only variable replies with a code to identify the model.
#verifyDevice "S20360" ModelQ?

#idString S20660
#name Kollmorgen S200 Servo
#handle S200
#port com
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 06:55:52 am
Hi HKJ,
On KUNKIN KP184 there is a problem of strong voltage deviation (like a saw) if you receive data with a command to read one register. At the same time, no deviation is observed on the front panel. Such features of circuitry. I contacted the manufacturer and he said that it is recommended to get all the data in one command. Average data will be transmitted. This is how the front panel works.
How can you implement reading with one command?
The returned data should be 5, 6 and 7. These 3 bytes represent the average voltage value, which is the same as the value displayed on the front panel.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 07:10:28 am
As I understand it with no *idn? command you use the #verifyDevice command which I am.  From my understanding of the documentation the #verifyDevice command has to match a fixed value on the command line.  So, how do I write the device file so that the different #idstring value needed to determine which #metadef section to use works?

I see in the web documentation #modifyIDN command.  But I could not find how to use/where to put #modifyIDN command in the device driver file?  I did define a #scpiCmd getDeviceSW? command and that works.  Is there something like #scpiCmd getDeviceModel? that I should define to get #metadef sections to work?

The SCPIx driver supports the #modifyIDN command, the Asciii driver supports the #verifyDevice command.
TestController cannot automatic select the correct device for anything but SCPI devices, for all other devices you must specify the correct device. The use of #meta & #metadef simply generates more definitions (It is possible to list the generated definition).
To match different devices with #metadef you use the #replaceText to change the match string for each device.

In Ascii devices the #idString is not used with the device, but only matched to itself, i.e. the logic in TC requires a idstring that matches and the driver simply supplies the defined idstring when #verifyDevice matches (It can add version and serial number information to the idstring). For this to work correctly it is best always to define idstrings as: "brand,model," to match the SCPI format.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 07:27:53 am
Hi HKJ,
On KUNKIN KP184 there is a problem of strong voltage deviation (like a saw) if you receive data with a command to read one register. At the same time, no deviation is observed on the front panel. Such features of circuitry. I contacted the manufacturer and he said that it is recommended to get all the data in one command. Average data will be transmitted. This is how the front panel works.
How can you implement reading with one command?
The returned data should be 5, 6 and 7. These 3 bytes represent the average voltage value, which is the same as the value displayed on the front panel.

Try starting TC in debug mode and type this command:
holdingL? 0x0300

If you get a fairly long hex answer (compared to holdingL? 0x0122) it is working, but I need to add some special code to handle the answer.
And please post the long message if you get it.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 07:43:39 am
Code: [Select]
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
holdingL? 0x0300
;; 1
holdingL? 0x0122
;; 12039

The hexadecimal code of the command to read all basic registers is: 01 03 03 00 00 20 44 56
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 07:50:00 am
CoolTerm
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 08:18:17 am
Code: [Select]
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
holdingL? 0x0300
;; 1
holdingL? 0x0122
;; 12039

The hexadecimal code of the command to read all basic registers is: 01 03 03 00 00 20 44 56

I want to see if TC generated that command correctly and receives the full answer, this requires running TC in debug mode. If that is the case it is easy to add code for decoding the message.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 08:32:04 am
Code: [Select]
;; Start thread for: COM12 - Kunkin KP184
;; COM12: Set params: 115200
;; : Tx <holdingL? 0x0001>
;; COM12: Tx: 01 03 00 01 00 04 15 C9
;; COM12: Rx: 01 03 04 00 00 07 30 F8 17
;; COM12: Tx <Mode?>
;; COM12: Tx <holdingL? 0x0110>
;; COM12: Tx: 01 03 01 10 00 04 44 30
;; COM12: Rx: 01 03 04 00 00 00 01 3B F3
;; COM12: Rx <1>
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
holdingL? 0x0300
;; KP184: Tx <holdingL? 0x0300>
;; COM12: Tx: 01 03 03 00 00 04 44 4D
;; COM12: Rx: 01 03 04 00 00 00 01 3B F3
;; KP184: Rx <1>
;; 1
holdingL? 0x0122
;; KP184: Tx <holdingL? 0x0122>
;; COM12: Tx: 01 03 01 22 00 04 E5 FF
;; COM12: Rx: 01 03 04 00 00 2E C6 67 C1
;; KP184: Rx <11974>
;; 11974

Code: [Select]
holding? 0x0300
;; KP184: Tx <holding? 0x0300>
;; COM12: Tx: 01 03 03 00 00 02 C4 4F
;; COM12: Flush: 01 03 1E 0B 04 00 2E 2E 00 03 E8 00 03 E8 00 FA 00 FA 00 00 00 17 3D
;; COM12: Tx: 01 03 03 00 00 02 C4 4F
;; KP184: Rx Timeout

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 08:44:56 am
holdingL? 0x0300
;; KP184: Tx <holdingL? 0x0300>
;; COM12: Tx: 01 03 03 00 00 04 44 4D
;; COM12: Rx: 01 03 04 00 00 00 01 3B F3
;; KP184: Rx <1>
;; 1

That was better, but it looks like the documentation in the KP184 manual is not correct.
Try this command:
holdingL? 0x0300 8
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 09:10:47 am
Try this command:
holdingL? 0x0300 8
holdingL? 0x0300 8
;; KP184: Tx <holdingL? 0x0300 8>
;; COM12: Tx: 01 03 03 00 00 20 44 56
;; COM12: Flush: 01 03 1E 0B 04 00 2E 64 00 03 E8 00 03 E8 00 FA 00 FA 00 00 00 5C B7
;; COM12: Tx: 01 03 03 00 00 20 44 56
;; KP184: Rx Timeout
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 09:35:53 am
Try this command:
holdingL? 0x0300 8
holdingL? 0x0300 8
;; KP184: Tx <holdingL? 0x0300 8>
;; COM12: Tx: 01 03 03 00 00 20 44 56
;; COM12: Flush: 01 03 1E 0B 04 00 2E 64 00 03 E8 00 03 E8 00 FA 00 FA 00 00 00 5C B7
;; COM12: Tx: 01 03 03 00 00 20 44 56
;; KP184: Rx Timeout

Another bug in the Kunkin documentation.

Try downloading http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) and replace you TC jar file with it. Verify it is version 1.72 (It may take up to an hour before you can download it).

Then try the command again and if it works better try:
holdingL? 0x0300 8 /1000

Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 10:08:22 am
holdingL? 0x0300 8 /1000
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
holdingL? 0x0300 8 /1000
;; KP184: Tx <holdingL? 0x0300 8 /1000>
;; COM12: Tx: 01 03 03 00 00 20 44 56
;; COM12: Rx: 01 03 1E 0B 04 00 2D FA 00 03 E8 00 03 E8 00 FA 00 FA 00 00 00 80 E8
;; KP184: Rx <11.77 1.0>
;; 11.77 1.0

Voltage and current match. No capacity.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 10:38:25 am
Voltage and current match. No capacity.

Can you figure out what bytes contains the capacity and the divisor needed. I have from the manual:
Load return data: 01 03 30 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13
D14 D15 D16 D17 D18 CRCH CRCL

The marked bytes are voltage and current.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 12:48:33 pm
It seems that there is no capacity data in (holdingL? 0x0300 8 /1000)
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 01:10:48 pm
Code: [Select]
holding? 0x0301
;; KP184: Tx <holding? 0x0301>
;; COM12: Tx: 01 03 03 01 00 02 95 8F
;; COM12: Rx: 01 03 1F 0B 04 00 2A CA 00 19 64 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 0C A0 6C 00 8A 00 A8 46
;; KP184: Rx Timeout

Better to do this:
Code: [Select]
holding? 0x0301
01 03 03 01 00 0C 14 4B

Load return data:
 01 03 1F 0B 04 00 2A CA 00 19 64 00 19  64  00  FA  00  FA  00  00  00   00  00  00  00  0A  8C  00  0C  A0  6C  00  8A  00  A8  46   ????
(01 03 1F D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18) D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 CRCH CRCL
|-- -- --|--|--|voltage-|current-|-- --  -- |--  -- |--  --  -- |--  --  |-- |-- |-- |voltage end|--- -- mAs  ---|--- --mWs-- ---|--  |--  |
|-- -- --|--|--|10954mV-|6500mA--|-- --  -- |--  -- |--  --  -- |--  --  |-- |-- |-- |--2700mV---|---827500mAs---|---9044136mWs--|--  |--  |
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 01:14:54 pm
It seems that there is no capacity data in (holdingL? 0x0300 8 /1000)

I will include the above in the next release.
This means that the #askValues will be:
#askValues holdingL? 0x0300 8 /1000
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 01:22:02 pm
Code: [Select]
holding? 0x0301
;; KP184: Tx <holding? 0x0301>
;; COM12: Tx: 01 03 03 01 00 02 95 8F
;; COM12: Rx: 01 03 1F 0B 04 00 2A CA 00 19 64 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 0C A0 6C 00 8A 00 A8 46
;; KP184: Rx Timeout

Better to do this:
Code: [Select]
holding? 0x0301
01 03 03 01 00 0C 14 4B

Load return data:
 01 03 1F 0B 04 00 2A CA 00 19 64 00 19  64  00  FA  00  FA  00  00  00   00  00  00  00  0A  8C  00  0C  A0  6C  00  8A  00  A8  46   ????
(01 03 1F D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 D14 D15 D16 D17 D18) D19 D20 D21 D22 D23 D24 D25 D26 D27 D28 D29 D30 D31 D32 CRCH CRCL
|-- -- --|--|--|voltage-|current-|-- --  -- |--  -- |--  --  -- |--  --  |-- |-- |-- |voltage end|--- -- mAs  ---|--- --mWs-- ---|--  |--  |
|-- -- --|--|--|10954mV-|6500mA--|-- --  -- |--  -- |--  --  -- |--  --  |-- |-- |-- |--2700mV---|---827500mAs---|---9044136mWs--|--  |--  |

I only have special handling for the 0x300 address now, but I will take a look at this. It requires a bit more programming because I have to support multiple scale factors for one message.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 01:32:31 pm
I have added handling of 0x301 address, but not different division factors.
The jar file is as same address as before, please check if I correctly return As and Ws
#askValues holdingL? 0x0301 /1000
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 01:45:15 pm
holdingL? 0x0301 /1000
No data, is this normal?
holdingL? 0x0301 /1000
;; KP184: Tx <holdingL? 0x0301 /1000>
;; COM12: Tx: 01 03 03 01 00 04 15 8D
;; COM12: Rx: 01 03 04 00 00 00 01 3B F3
;; KP184: Rx Timeout
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 02:08:16 pm
holdingL? 0x0301 /1000
No data, is this normal?
holdingL? 0x0301 /1000
;; KP184: Tx <holdingL? 0x0301 /1000>
;; COM12: Tx: 01 03 03 01 00 04 15 8D
;; COM12: Rx: 01 03 04 00 00 00 01 3B F3
;; KP184: Rx Timeout

I missed you was using "holding?", i.e. without the L. If you try
holding? 0x0301 /1000

You will hopefully get the long answer, but with a Rx timeout because my special handling is in the holdingL? code.

I have uploaded a new version (1.74) where the 0x301 handling is in the holding? code.
I have also starting working on multiple divisors, but I have not tested any of it. If it works you can do:
holding? 0x0301 /1000 /1000 /3600000 /3600000
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 02:15:41 pm
holdingL? 0x0301 8 /1000
;; KP184: Tx <holdingL? 0x0301 8 /1000>
;; COM12: Tx: 01 03 03 01 00 20 15 96
;; COM12: Rx: 01 03 1F 0A 04 00 2D 07 00 00 00 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 0F 0D FD 00 A4 77 5E C6 31
;; KP184: Rx <11.527000000000001 0.0 986.621 10778.462>
;; 11.527000000000001 0.0 986.621 10778.462

Values are correct. To obtain As> Ah, divide 3600
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 02:22:52 pm
holdingL? 0x0301 8 /1000
;; KP184: Tx <holdingL? 0x0301 8 /1000>
;; COM12: Tx: 01 03 03 01 00 20 15 96
;; COM12: Rx: 01 03 1F 0A 04 00 2D 07 00 00 00 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 0F 0D FD 00 A4 77 5E C6 31
;; KP184: Rx <11.527000000000001 0.0 986.621 10778.462>
;; 11.527000000000001 0.0 986.621 10778.462

Values are correct. To obtain As> Ah, divide 3600

Ok, I uploaded V1.75 it contains the code on both holding? and holdingl?
And the untested code for multiple factors.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 02:23:23 pm
I have also starting working on multiple divisors, but I have not tested any of it. If it works you can do:
holding? 0x0301 /1000 /1000 /3600000 /3600000
Multiple dividers don't work
Code: [Select]
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
;; KP184: Tx <holdingL? 0x0301 8 /1000 /1000 /3600000 /3600000>
;; COM12: Tx: 01 03 03 01 00 20 15 96
;; COM12: Rx: 01 03 1F 0A 04 00 2D 02 00 00 00 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 10 3E AD 00 B1 65 D5 B9 3C
;; KP184: Rx <11.522 0.0 1064.621 11625.941>
;; KP184: Rx as numbers <11.522 0.0 1064.621 11625.941>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 02:28:29 pm
I have also starting working on multiple divisors, but I have not tested any of it. If it works you can do:
holding? 0x0301 /1000 /1000 /3600000 /3600000
Multiple dividers don't work
Code: [Select]
;; Found Kunkin KP184 on USB2.0-Ser! (COM12)
;; KP184: Tx <holdingL? 0x0301 8 /1000 /1000 /3600000 /3600000>
;; COM12: Tx: 01 03 03 01 00 20 15 96
;; COM12: Rx: 01 03 1F 0A 04 00 2D 02 00 00 00 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 10 3E AD 00 B1 65 D5 B9 3C
;; KP184: Rx <11.522 0.0 1064.621 11625.941>
;; KP184: Rx as numbers <11.522 0.0 1064.621 11625.941>

Are you sure you have the correct version of TC, only 1.74 & 1.75 has the code.
Also check the dos window for errors.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 02:33:41 pm
Sorry, I can't download 1.75. 1.73 is downloaded.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 02:36:32 pm
Sorry, I can't download 1.75. 1.73 is downloaded.

That is the cache at my website provider, it can take up to an hour before it is updated to the last version of a file.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 03:02:05 pm
Code: [Select]
;; KP184: Tx <holdingL? 0x0301 8 /1000 /1000 /3600000 /3600000>
;; COM12: Tx: 01 03 03 01 00 20 15 96
;; COM12: Rx: 01 03 1F 0B 04 00 2A 3B 00 19 64 00 19 64 00 FA 00 FA 00 00 00 00 00 00 00 0A 8C 00 11 3C 95 00 BC 2B EE C6 27
;; KP184: Rx <10.811 6.5 0.3137836111111111 3.425559444444444>
;; KP184: Rx as numbers <10.811 6.5 0.3137836111111111 3.425559444444444>
Everything works perfectly! Thank you.
There are several questions about the interface.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 03:07:47 pm
When I load the table data (LOAD button), the values of all fields are reset to two decimal places. Although in the settings on the "Scales for chart" tab, "Decimals" equal to 3 is set for these columns.
The same goes for "Import".
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 03:14:09 pm
Now I would very much like to know if this message exist on all versions of the load or only on the newest.

For people with the load please download the test jar and replace you original jar with it: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Then try this command to the load:
holdingL? 0x0301 8 /1000 /1000 /3600000 /3600000

Post what driver you use: Kunkin KP184 or Kunkin KP184 V4 and what version software you load uses.

If I do not get any answers I will assume this works on all versions of the KP184 and update the definition.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 03:21:24 pm
Now I would very much like to know if this message exist on all versions of the load or only on the newest.
https://www.eevblog.com/forum/testgear/an-investigation-about-ripple-current-of-kunkin-kp184/msg3611151/#msg3611151 (https://www.eevblog.com/forum/testgear/an-investigation-about-ripple-current-of-kunkin-kp184/msg3611151/#msg3611151)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 03:22:02 pm
When I load the table data (LOAD button), the values of all fields are reset to two decimal places. Although in the settings on the "Scales for chart" tab, "Decimals" equal to 3 is set for these columns.
The same goes for "Import".

Generally TC is supposed to match based on column names, i.e. a column called KP184.Voltage will look for a driver with handle KP184 and column Voltage and use the definition for that. If no match is found they revert to two decimal places.
If you have a csv file with the correct column names that do not work I want a copy of it and will check why it fails.

You can use #valueformat from a script if you want to repeatedly change the same columns.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 03:32:23 pm
A new definition for KP184, this will only work with V1.75 and newer of TC

When selection the load "Kunkin KP184 V4+" it will add Ah and Wh to the columns.

Note: Nothing has been tested.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 03:58:42 pm
For example, such a file. All values have 3 decimal places, but only 2 are loaded. All columns are registered in the "Scales for chart" tab.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on July 20, 2021, 04:06:23 pm
Second question. This is export. If you select "First sample to export" equal to 3 and "Last ..." equal to 100, in fact 2-98 are selected inclusive. These are the index numbers.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 04:40:52 pm
For example, such a file. All values have 3 decimal places, but only 2 are loaded. All columns are registered in the "Scales for chart" tab.

No surprise, the columns are not names with a device and column, then the default is used.
I cannot save any format info the the .csv file, then it would not be a correctly formatted .csv file. If you need it often simply use a script with:
Code: [Select]
#valueformat V d3
#valueformat Ah d3
#valueformat 1a d3
#valueformat 2a d3
#valueformat 3a d3
#valueformat 5a d3
#valueformat 7a d3
#valueformat 10a d3
#valueformat 15a d3
#valueformat 20a d3

You can copy it into the log window and run it or save it as a menu entry.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 20, 2021, 04:55:13 pm
Second question. This is export. If you select "First sample to export" equal to 3 and "Last ..." equal to 100, in fact 2-98 are selected inclusive. These are the index numbers.

The samples to export will usually be based on time, prefix the numbers with # to get index.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 27, 2021, 10:19:27 am
V1.76 is up
It includes a couple of new devices and improvements to the KP184
   Added: Metrix MTX3291
   Added: Chauvin Arnoux CA 5292, CA 5293, Metrix MTX3292B, Metrix MTX3293B multimeter
   Added: Kunkin KP184 V4+, includes Ah & Wh columns using 0x301 message (Thanks PaWill68)
   Added: Kunkin, support for 0x300 message, will hopefully reduce noise in logged values.
   Added: Modbus now supports multiple factors when requesting multiple values.
   Fixed: ? values in the middle of a dataset when importing
   Added: Yokogawa WT3000 power analyzer (Thanks gby)
   Added: txrx1Bin and txrxnBin in Ascii and SCPIx driver.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on July 28, 2021, 12:39:17 pm
Hi HKJ,

Thank you for releasing your Testcontroller program. Finally an easy way to "play" with SCPI commands of my equipment. I never installed the VISA drivers due to the expected complex "clutter" of all the required software.
I had a go at controlling my Rigol DS2302A and Siglent SDG2122 just to see what is possible with SCPI commands. Like you said in the beginning of this topic not to display the scope image in real time but to control the scope and signal generator.
Interesting to see is the big difference between Rigol and Siglent in their responses to a read command. While Rigol only returns the requested value of specific reads, Siglent only has global reads for many values at the same time.

During testing I got some unexpected results during tests with V1.70. To me it is not clear if I am doing something wrong or this a bug / not implemented function.

Item 1:
:enable: seems not to disable #cmdSetup button. The other controls are OK.

[attachimg=1].

   #cmdSetup button Save_source_as_current_ref_(memory) Reference
   :write: REF:SAV
   :enable: Reference.Display_refs=="1"
   :tip: Save source trace as current reference (memory only).

   #cmdSetup button Reset_current_ref Reference
   :Write: REF:RES
   :enable: Reference.Display_refs=="1"
   :update: Vscale_ratio_ref; Voffset_ref

Item 2:
#cmdSetup buttonsOn works well when On is represented by 1 in the #cndSetup definition. In my case the read returns FFT.
I tried to use the if statement, but the indicator did not turn on.
It would be nice to have a thing like :onvalue: FFT to signal the read result for the indicator to turn on.

   #cmdSetup buttonsOn FFT_status FFT
   :read: CALC:MODE?
   ; readmath > set to 1 if FFT to turn the indicator on
   :readmath: value=="FFT" ? 1 : 0
   :write: CALC:MODE #
   :color: (0,255,0)
   :tip: Turn FFT on or off
   Off OFF
   On FFT

With if I get:
   ;; DS2302A: Tx <CALC:MODE FFT>
   ;; DS2302A: Tx <CALC:MODE?>
   ;; DS2302A: Rx <FFT
   >
   ;; DS2302A: Rx after :readmath: value=="FFT" ? 1 : 0 <1>
   ;; DS2302A: Rx as number <1.0>

Item 3:
Some controls create a variable. They work with :enable: and :update:, but I could not get them to work with :read:, :readmath: and :write:
I got a Java exception for an unknown variable. I would really like to use them with those statements. Is that possible?

Example of their use for Siglent SDG modulation SCPI commands:
Current setup: Separate #cmdSetup for AM and FM modulation due to SCPI write requirements
Requires #cmdSetup statements to be repeated and additional :update: controls

   #cmdSetup comboboxhot Mod_type Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(value,1,",")
   :write: C1:MDWV WVTP,#
   :update: AM_source AM_freq AM_mod_wave FM_source FM_freq FM_mod_wave
   :updatedelayed: 0.1
   Amplitude AM
   Dual_sideband_amplitude DSBAM
   Frequency FM
   Phase PM
   Pulse_width PWM
   Amplitude_Shift_Keying ASK
   Frequency_Shift_Keying FSK
   Phase_Shift_Keying PSK

   #cmdSetup radio AM_source Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"SRC,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV AM,SRC,#
   :update: AM_freq AM_mod_wave
   :enable Mod_Out_1.Mod_type=="AM"
   Internal INT
   External EXT

   #cmdSetup radio AM_freq Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"FRQ,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV AM,FRQ,#
   :enable: Mod_Out_1.Mod_type=="AM" && Mod_Out_1.AM_source=="INT"
   :tip: Only with internal source; ext +/- 6V correspond to 100%
   Hz 1m 1M

   #cmdSetup combobox AM_mod_wave Mod_Out_1
   :write: C1:MDWV AM,MDSP,#
   :read: C1:MDWV
   :readmath: getElement(getMatch(value,"MDSP,[^,]*,"),1,",")
   :readformat: u
   :enable Mod_Out_1.Mod_type=="AM" && Mod_Out_1.AM_source
   Sine SINE
   Square SQUARE
   Triangle TRIANGLE
   Up_ramp UPRAMP
   Down_ramp DNRAMP
   Noise NOISE
   Arbitary ARB

   #cmdSetup radio FM_source Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"SRC,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV FM,SRC,#
   :update: FM_freq FM_mod_wave
   :enable Mod_Out_1.Mod_type=="FM"
   Internal INT
   External EXT

   #cmdSetup number FM_freq Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"FRQ,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV FM,FRQ,#
   :enable: Mod_Out_1.Mod_type=="FM" && Mod_Out_1.FM_source=="INT"
   :tip: Only with internal source; ext +/- 6V correspond to 100%
   Hz 1m 1M

   #cmdSetup combobox Mod_wave Mod_Out_1
   :write: C1:MDWV FM,MDSP,#
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"MDSP,[^,]*,"),1,",")
   :readformat: u
   :enable Mod_Out_1.Mod_type=="FM" && Mod_Out_1.FM_source=="INT"
   Sine SINE
   Square SQUARE
   Triangle TRIANGLE
   Up_ramp UPRAMP
   Down_ramp DNRAMP
   Noise NOISE
   Arbitrary ARB

Requested setup: Combined using (Mod_Out_1.Mod_type) as replacement for AM and FM on :write:
Giving less #cmdSetup statements and :update: controls

   #cmdSetup comboboxhot Mod_type Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(value,1,",")
   :write: C1:MDWV WVTP,#
   :updatedelayed: 0.1
   Amplitude AM
   Dual_sideband_amplitude DSBAM
   Frequency FM
   Phase PM
   Pulse_width PWM
   Amplitude_Shift_Keying ASK
   Frequency_Shift_Keying FSK
   Phase_Shift_Keying PSK

   #cmdSetup radio Source Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"SRC,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV (Mod_Out_1.Mod_type),SRC,#
   :update: Freq Mod_wave   
   Internal INT
   External EXT

   #cmdSetup number Freq Mod_Out_1
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"FRQ,[^,]*,"),1,",")
   :readformat: u
   :write: C1:MDWV (Mod_Out_1.Mod_type),FRQ,#
   :enable: Mod_Out_1.Source=="INT"
   :tip: Only with internal source; ext +/- 6V correspond to 100%
   Hz 1m 1M

   #cmdSetup combobox Mod_wave Mod_Out_1
   :write: C1:MDWV (Mod_Out_1.Mod_type),MDSP,#
   :read: C1:MDWV?
   :readmath: getElement(getMatch(value,"MDSP,[^,]*,"),1,",")
   :readformat: u
   :enable: Mod_Out_1.Source=="INT"
   Sine SINE
   Square SQUARE
   Triangle TRIANGLE
   Up_ramp UPRAMP
   Down_ramp DNRAMP
   Noise NOISE
   Arbitrary ARB
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 28, 2021, 03:46:20 pm
Item 1:
:enable: seems not to disable #cmdSetup button. The other controls are OK.

This will be supported in next release of TC

Item 2:
#cmdSetup buttonsOn works well when On is represented by 1 in the #cndSetup definition. In my case the read returns FFT.
I tried to use the if statement, but the indicator did not turn on.
It would be nice to have a thing like :onvalue: FFT to signal the read result for the indicator to turn on.

buttonsOn works with numeric results, use a :string: tag to switch to string values or use a :readmath: to convert the string value into a numeric value.



Item 3:
Some controls create a variable. They work with :enable: and :update:, but I could not get them to work with :read:, :readmath: and :write:
I got a Java exception for an unknown variable. I would really like to use them with those statements. Is that possible?

Example of their use for Siglent SDG modulation SCPI commands:
Current setup: Separate #cmdSetup for AM and FM modulation due to SCPI write requirements
Requires #cmdSetup statements to be repeated and additional :update: controls

For now these variables are only created when checking :enable: and :visible: and is not accessible anywhere else.

When selecting between controls the selector control has some advantages.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on July 29, 2021, 02:43:16 pm
Hi HKJ,

Thanks for your answers. The buttonsOn now works and I have started to use the selector control (now I understand what the intended use is  :)).

Two small questions remain:

1) The selector control displays the name of the selector control in the output window if a entry is selected with no control names attached (e.g. only OFF). I was expecting to see no text.

2) It seems, that you can only use control variables for :enable: defined on the same page of the setup window. Variables from other pages seem to be invalid.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 29, 2021, 03:26:09 pm
1) The selector control displays the name of the selector control in the output window if a entry is selected with no control names attached (e.g. only OFF). I was expecting to see no text.

I use names like No_settings for the control.

2) It seems, that you can only use control variables for :enable: defined on the same page of the setup window. Variables from other pages seem to be invalid.

You are supposed to be able to access all variables on all pages in the popup, but there is a caveat with the selector control: It removes hidden controls from the page. This means they are not update (This makes the popup update faster) and do not create variables.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on July 30, 2021, 05:33:49 pm
HKJ,

The selector control works great! I have given the selector the name "Settings_visible_in_On_State".
See attached picture.

Unfortunately not everything goes according to plan:
Siglent uses some SCPI commands with an underscore in it like: MARK_STATE
This underscore is however removed in the request sent to the device.

#cmdSetup radio Sweep_Marker Channel_1
:read: C1:SWWV?
:readmath: getElement(getMatch(value,"MARK_STATE,[^,]*,"),1,",")
:readformat: u
:write: C1:SWWV MARK_STATE,#
:string:
Off OFF
On ON

;; SDG2122X: Tx <C1:SWWV MARK STATE,ON>
;; SDG2122X: Tx <C1:SWWV?>
;; SDG2122X: Rx <C1:SWWV STATE,ON,TIME,1S,STOP,1500HZ,START,500HZ,TRSR,INT,TRMD,OFF,SWMD,LINE,DIR,UP,SYM,4012168.00585382,MARK_STATE,OFF,MARK_FREQ,0HZ,CARR,WVTP,SINE,FRQ,1000HZ,AMP,4.0004V,AMPVRMS,1.41414Vrms,OFST,0V,PHSE,0
>
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"MARK_STATE,[^,]*,"),1,",") <OFF>

Can you comment on this?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 30, 2021, 07:31:32 pm
Unfortunately not everything goes according to plan:
Siglent uses some SCPI commands with an underscore in it like: MARK_STATE
This underscore is however removed in the request sent to the device.

Yes, when transmitting commands a _ is changed to a space, I will have to add a escape (Like \_) to avoid it, I will look at this soon.

On receiving nothing is supposed to be changed, but some tests uses regular expressions (Java style). To see values exactly use the "displayVar()" function, it slows everything down significantly, but is very useful to check if a value is what you expect.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 31, 2021, 09:39:35 am
Here is a version where you can escape the _ character in commands:

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Use \_ and it will surviev, if you are in scripting language you have to use \\_, i.e. two \ because scripting language also supports escapes.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 01, 2021, 07:41:33 am
I tested your new version and the command is now sent correctly, but I get a "NullPointerException" error in the debug console.
The debug console output is attached, with result for opening Setup and sending the command.

I also attached the current state of the config file for reference.
Title: Re: Program that can log from many multimeters.
Post by: tautech on August 01, 2021, 07:52:50 am
I tested your new version and the command is now sent correctly, but I get a "NullPointerException" error in the debug console.
The debug console output is attached, with result for opening Setup and send the command.

I also attached the current state of the config file for reference.
Is this an X model SDG ? SiglentSDGxxxx.txt
If so it might be better expressed as SiglentSDGxxxxX.txt
TIA
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 01, 2021, 08:16:54 am
I tested your new version and the command is now sent correctly, but I get a "NullPointerException" error in the debug console.
The debug console output is attached, with result for opening Setup and sending the command.

Bug fixed and new version uploaded, same link as before, but it might take up to an hour before you can get the updated version (V1.78), due to caching.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 02, 2021, 06:50:07 am
HKJ,

Tested the new version and the error has disappeared. So using underscores in device requests is now possible; thank you.

Please have a look at my next challenge. I am stuck with the match() statement to solve my problem.
I need to switch between channel tracking and channel coupling. There are three possible responses of the device:

Tracking off and coupling off : COUP TRACE,OFF,FCOUP,OFF
Tracking off and coupling on  : COUP TRACE,OFF,FCOUP,ON
Tracking on and coupling off  : COUP TRACE,ON

With tracking on the response for coupling is suppressed and cannot be tested by the selector control Frequency_Coupling_Off.
So I made :readmath: into an if statement with a test for FCOUP using the match() statement. This however always returns "OFF"
even if FCOUP is part of the response. How can I make this work?

Relevant part of the Setup config:

   #cmdSetup buttonsOn Channel_Tracking Coupling
   :read: COUP?
   :readmath: getElement(getMatch(value,"TRACE,[^,]*(,|$)"),1,",")
   :write: COUP FCOUP,OFF; COUP ACOUP,OFF; COUP PCOUP,OFF; COUP TRACE,#
   :update: CH2-CH1_Coupling Coupling_disabled_while_Tracking
   :string:
   :color: (240,60,0)
   CH2_Tracks_CH1_Off OFF
   CH2_Tracks_CH1_On ON

   #cmdSetup selector Coupling_disabled_while_Tracking Coupling
   :read: COUP?
   :readmath: getElement(getMatch(value,"TRACE,[^,]*(,|$)"),1,",")
   ; selector name will be displayed in ON state
   OFF Coupling.CH2-CH1_Coupling
   ON

   #cmdSetup checkbox CH2-CH1_Coupling Coupling
   :read: COUP?
   :readmath: getElement(getMatch(value,"FCOUP,[^,]*(,|$)"),1,",")
   :write: COUP FCOUP,#
   :update: Frequency_Coupling_Off
   :string:
   Frequency OFF ON

   #cmdSetup selector Frequency_Coupling_Off Coupling
   :read: COUP?
>>>   :readmath: match(value,"FCOUP") ? getElement(getMatch(value,"FCOUP,[^,]*(,|$)"),1,",") : "OFF"
   ; selector name will be displayed in OFF state
   ON Coupling.Freq_Coupling_Type
   OFF

   #cmdSetup info Freq_Coupling_Type Coupling
   :read: COUP?
   :readmath: getMatch(value,"(FDEV)|(FRAT)")=="FDEV" ? "CH2-CH1 Deviation" : "CH2/CH1 Ratio"
   _
   _

Device trace:

;; SDG2122X: Cache Tx: <COUP?> Rx: <COUP TRACE,OFF,FCOUP,ON,PCOUP,OFF,ACOUP,OFF,FRAT,3
>
;; SDG2122X: Rx after :readmath: match(value,"FCOUP") ? getElement(getMatch(value,"FCOUP,[^,]*(,|$)"),1,",") : "OFF" <OFF>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2021, 07:11:50 am
Please have a look at my next challenge. I am stuck with the match() statement to solve my problem.
I need to switch between channel tracking and channel coupling. There are three possible responses of the device:

Tracking off and coupling off : COUP TRACE,OFF,FCOUP,OFF
Tracking off and coupling on  : COUP TRACE,OFF,FCOUP,ON
Tracking on and coupling off  : COUP TRACE,ON

There are many ways to do that, one is:
getMatch("TRACE,OFF,FCOUP,ON","FCOUP,(OFF|ON)")

to get rid of the FCOUP use
replace(getMatch("TRACE,OFF,FCOUP,ON","FCOUP,(OFF|ON)"),"FCOUP,","")
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 02, 2021, 08:54:59 am
In both examples the return message contain FCOUP.
What I want is to get an answer of OFF when FCOUP is not in the message e.g. with COUP TRACE,ON

I forgot to mention that I saw the "disabling" of #cmdSetup button, so this is now solved as well.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2021, 09:03:20 am
In both examples the return message contain FCOUP.
What I want is to get an answer of OFF when FCOUP is not in the message e.g. with COUP TRACE,ON

That is even easier:

match(value,".*FCOUP.*")?"OFF":"ON"

The ?: operator is very useful for some tests
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 02, 2021, 04:30:05 pm
Thank you HKJ, it now works.

I already found out about the getMatch(), replace() and  if with ? and :
What I did not realize was, that match() has to match the WHOLE string to be TRUE and not partially. So you have to specify ".*SUBSTRING.*" for a substring in the middle of a response.
On the other hand  getMatch() only requires to match the requested substring. In other languages you use brackets to identify the intended items you search for.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 02, 2021, 07:30:41 pm
What I did not realize was, that match() has to match the WHOLE string to be TRUE and not partially. So you have to specify ".*SUBSTRING.*" for a substring in the middle of a response.
On the other hand  getMatch() only requires to match the requested substring. In other languages you use brackets to identify the intended items you search for.

For me that was the most logical way:
match check if value matches something, there a full match is most logical.
getMatch return a matching part of a text, there I cannot match on the full text.
You can use brackets with getMatchGroup
Title: Re: Program that can log from many multimeters.
Post by: Aleks on August 03, 2021, 09:57:26 am
Hey guys,

Does the Test Controller software have the capabilities (or it is planned for them) to automate things with equipment? Or it is meant to be used so that it only manually interacts with the equipment connected to it?

What I have in mind - would it be possible to automate charging and discharging of batteries (while logging curves such as current, voltage, capacity) by using one power supply and one DC load?

Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 03, 2021, 10:47:55 am
Hey guys,

Does the Test Controller software have the capabilities (or it is planned for them) to automate things with equipment? Or it is meant to be used so that it only manually interacts with the equipment connected to it?

What I have in mind - would it be possible to automate charging and discharging of batteries (while logging curves such as current, voltage, capacity) by using one power supply and one DC load?

It has a scripting language that can control nearly any aspect of it and connected devices. There are also ways to automatic generate scripts and a couple of supplied scripts.

To make the curve below I just have to connect a power supply and a load to the battery and start the script. It will discharge the battery, then charge it while recording and when finished with that setup the chart, label the chart and save the chart and the logged data:

(https://lygte-info.dk/pic/Batteries2012/Vapcell%20INR21700%205000mAh%20P2150A%20%28Black-purple%29%202021/USB%20Charge%20Test%2020210705205303.png)
Title: Re: Program that can log from many multimeters.
Post by: Aleks on August 03, 2021, 08:25:43 pm
Hi HKJ,

Thanks a lot for the reply! After my holidays I will try to play around with it and explore the options of using it to interface with a SM15K 70V/450A power supply from Delta Elektronika. The power supply natively speaks SCPI via Ethernet, and from what I can gather, it wouldn't be too difficult to interface with it.

Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2021, 05:56:08 am
Thanks a lot for the reply! After my holidays I will try to play around with it and explore the options of using it to interface with a SM15K 70V/450A power supply from Delta Elektronika. The power supply natively speaks SCPI via Ethernet, and from what I can gather, it wouldn't be too difficult to interface with it.

To add a new power supply, check some of the already defined power supplies (Like TTi). Adding the basic functionality is not very hard, but if the power supply has a lot of modes and options and you want to support all of them a definition can get fairly long.

One of my main applications for TestController is automatic tests and it can do some without scripting:
(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/Main.png)
(https://lygte-info.dk/pic/Projects/TestController/DocParamSweeper/Primary.png)
http://lygte-info.dk/project/TestControllerPopupParamSweeper%20UK.html (http://lygte-info.dk/project/TestControllerPopupParamSweeper%20UK.html)

But the more advanced test requires scripting.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 08, 2021, 02:18:44 pm
Hi HKJ,

Using Ver 1.76 I notice some odd behavior with Readout popups set to look at Math items.  Specifically, the values in the readout do not match the values in the log record (Table or Chart).  For example, I have a Math item defined as:

   Name:  Delta.Time
   Enabled:  Yes
   Unit: mSec
   Type: Change
   Samples: 2
   Source formula: time*1000

If you look at the attached screen shot it shows Test Controller Range tab with the Readout superimposed while logging with 0.03 sec interval.  The Range tab shows a clear average at 30 mSec with a range of 17 to 50 mSec.  But the readout shows numbers around 200 mSec which is completely different.

A second problem I noticed is that if I use the logging interval set to 1 sec the readout popup of Math Delta.Time alternates between showing 0.000 and numbers around 1000 mSec.

Do Readout popups not work with Math items or is this a bug?
Title: Re: Program that can log from many multimeters.
Post by: evalent on August 08, 2021, 02:42:51 pm
Hello.
first of all, thank you this software and efforts.

I am a newbie here. I've got an Atorch DL42P, but cannot connect to it. Using the current TestController version, from Linux os, tried to connect both via Bluetoot or wires.
/dev/ttyUSB0 (as a ch341-uart device) comes up
I set DL24 or DL24P device as /dev/ttyUSB0, and the result of 'reconnect' is:

;; Start thread for: ttyUSB0
;; ttyUSB0: Set params: 9600
;; ttyUSB0: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; ttyUSB0: Rx: timeout
;; ttyUSB0: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; ttyUSB0: Rx: timeout
;; Stopping thread for: ttyUSB0
;; ttyUSB0: Close

I tried to connect during pushin' any button, of a mesurement cycle, but no success. Tried to search this forum, but could not find similar issues.
Please help, what do I miss?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2021, 03:05:50 pm
Do Readout popups not work with Math items or is this a bug?

They are supposed to work, but only the "Current values" are synchronized to the table, i.e. readout uses their own instance to do the calculations.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2021, 03:09:11 pm
I set DL24 or DL24P device as /dev/ttyUSB0, and the result of 'reconnect' is:

;; Start thread for: ttyUSB0
;; ttyUSB0: Set params: 9600
;; ttyUSB0: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; ttyUSB0: Rx: timeout
;; ttyUSB0: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; ttyUSB0: Rx: timeout
;; Stopping thread for: ttyUSB0
;; ttyUSB0: Close

I tried to connect during pushin' any button, of a mesurement cycle, but no success. Tried to search this forum, but could not find similar issues.
Please help, what do I miss?

Looks like you have checked "Scan serial ports" and it is that scan that checks for the DL24, it will not work.
You have to add the DL24 to the used devices, including defining a serial port in the address column and checkmark enable.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 08, 2021, 03:54:59 pm
Do Readout popups not work with Math items or is this a bug?

They are supposed to work, but only the "Current values" are synchronized to the table, i.e. readout uses their own instance to do the calculations.

While logging with interval 0.03 sec comparing the Math Readout popup to the Current Values tab again gives around 30 mSec from the Current Values tab and shows around 200 mSec in the Readout popup.  I guess for some Math formulas based on history (like Type Change) just don't work in a Readout popup.  Not a real problem, but needed to know.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2021, 04:05:09 pm
Do Readout popups not work with Math items or is this a bug?

They are supposed to work, but only the "Current values" are synchronized to the table, i.e. readout uses their own instance to do the calculations.

While logging with interval 0.03 sec comparing the Math Readout popup to the Current Values tab again gives around 30 mSec from the Current Values tab and shows around 200 mSec in the Readout popup.  I guess for some Math formulas based on history (like Type Change) just don't work in a Readout popup.  Not a real problem, but needed to know.

The readouts runs at a 200ms interval, i.e. 5 updates/sec. The math will reflect that.
Title: Re: Program that can log from many multimeters.
Post by: evalent on August 08, 2021, 04:35:25 pm
Well, thanks for details to uncheck 'Scan serial ports'.

Fiddling with address - ttyUSB0 instead of /dev/ttyUSB0 gave the connection!
Now - let's start the game.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2021, 05:06:14 pm
Well, thanks for details to uncheck 'Scan serial ports'.

You do not need to uncheck "Scan serial ports", but that function will only find devices that respond to a *idn? query. This can be useful if you have a couple of serial devices that do.

Fiddling with address - ttyUSB0 instead of /dev/ttyUSB0 gave the connection!

In the address field you can right click with the mouse to get a list of serial ports.
Title: Re: Program that can log from many multimeters.
Post by: evalent on August 08, 2021, 07:19:04 pm
Finally everything works fine in Linux environment.
I used device names without /dev/ prefix. (wired serial: ttyUSBx, bt: rfcommx; dont forget to bind port and channel: eg. #rfcomm bind <port> <bt-addr> <channel>)
If change in connection settings was necessary, the program had to close and restart, consequent 'reconnect' instructions may give misleading results.

Applied Java verison:
openjdk 11.0.12 2021-07-20
OpenJDK Runtirme Environment (build 11.0.12+7-post-Debian-2deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.12+7-post-Debian-2deb10u1, mixed mode, sharing)

My forum question was immediately answered !  :)
Title: Re: Program that can log from many multimeters.
Post by: AlexDavidson on August 19, 2021, 07:47:38 am
Thanks HKJ for a very useful piece of software. I have attached a device file for the dual channel East Tester 5420 DC Load that I created by modifying the device file for the single channel East Tester 5410. To anyone who wishes to use this, note that the operating mode is set from the Setup popup instead of the Mode popup used for the single channel version.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 19, 2021, 09:14:39 am
Hi HKJ,

I am still busy with the new config for my Siglent SDG2122X and I have some new questions.

Q1: The #cmdsetup info seems not to support the tag :readformat:, see "info_error" attachment.

Part of setup config:
#cmdSetup button Get_Signal_Measurement Counter
:update: Signal_Frequency Signal_Deviation Signal_Width Signal_Duty_Cycle

#cmdSetup info Signal_Frequency Counter
:read: FCNT?
:readmath: getElement(getMatch(value,"FRQ,[^,]*(,|$)"),1,",")
:readformat: u
Hz_measured
_

#cmdSetup info Signal_Deviation Counter
:read: FCNT?
:readmath: getElement(getMatch(value,"FRQDEV,[^,]*(,|$)"),1,",")
:readformat: u
ppm_from_reference
_

Result of queries, where "Rx as number" is not present:
;; SDG2122X: Tx <FCNT?>
;; SDG2122X: Rx <FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF
>
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"FRQ,[^,]*(,|$)"),1,",") <0HZ>
;; SDG2122X: Cache Tx: <FCNT?> Rx: <FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF
>
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"FRQDEV,[^,]*(,|$)"),1,",") <0ppm>
;; SDG2122X: Cache Tx: <FCNT?> Rx: <FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF
>

Q2: #cmdsetup controls, which are in a selector, will sometimes not be displayed; see "coupling_error" attachments.
However if I put these commands at the end of all statements for this page "coupling" they are displayed; see "coupling_OK" attachments.
But they are now out of the desired order of displayed items.

Q3: What to specify on :update: tag?
I see examples of page.control-name and only control-name in the Devices files.
The documentation says that using control-name will issue an update for all controls with the same name on all pages.
However what about page.control-name? Will this restrict the updates to that page or will the page be ignored and all control-names on all pages will be updated?

Q4: Which logical operators and/or combinations can be specified on :enable: tag?
This works :enable: Channel_1.Burst_Cycle=="1" && Channel_1.Burst_Trigger=="INT"
But I had no success adding a third one :enable: Channel_1.Burst_Cycle=="1" && Channel_1.Burst_Trigger=="INT" && Channel_1.Burst_Trigger_Edge=="RISE"

Q5: Is it possible to implement a variable on the #cmdsetup checkbox like on buttonsOn?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2021, 10:29:19 am
Thanks HKJ for a very useful piece of software. I have attached a device file for the dual channel East Tester 5420 DC Load that I created by modifying the device file for the single channel East Tester 5410. To anyone who wishes to use this, note that the operating mode is set from the Setup popup instead of the Mode popup used for the single channel version.

Thanks, It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2021, 10:49:23 am
Hi HKJ,

I am still busy with the new config for my Siglent SDG2122X and I have some new questions.

Q1: The #cmdsetup info seems not to support the tag :readformat:, see "info_error" attachment.

It do, check the DOS output, there any errors in :readmath: will be listed.

Q2: #cmdsetup controls, which are in a selector, will sometimes not be displayed; see "coupling_error" attachments.

?

Q3: What to specify on :update: tag?

It only checks the direct name, i.e. controls with the same name on different pages will be updated.

Q4: Which logical operators and/or combinations can be specified on :enable: tag?

It uses the calculator, this means that the reason you example fails is probably a syntax or missing variable (See DOS window).

Q5: Is it possible to implement a variable on the #cmdsetup checkbox like on buttonsOn?

Generally the #cmdSetup do not support variables, you have to use the SCPIx or ascii driver and #scpiCmd to get that.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 19, 2021, 12:11:08 pm
Quote
It do, check the DOS output, there any errors in :readmath: will be listed.

I downloaded the latest version (to be sure). The debug DOS gives no errors.

This is with a number control:
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"LLEV,[^,]*(,|$)"),1,",") <-2V>
;; SDG2122X: Rx as number <-2.0>

This is with the info control:
;; SDG2122X: Cache Tx: <FCNT?> Rx: <FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF
>
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"FRQDEV,[^,]*(,|$)"),1,",") <0ppm>

With info I don't see ";; SDG2122X: Rx as number <0.0>" assuming this is the trace of :readformat: u

Has somebody else tried this?


Quote
?
Yes, this is very strange. It only happens with more than 2 concatenated selectors. It is only the display of the item the rest seems to work.  I think this is a bug.

Quote
Generally the #cmdSetup do not support variables, you have to use the SCPIx or ascii driver and #scpiCmd to get that.
I was not thinking of user defined :setvar: but the normal variable set by some controls as documented:
*Some controls will create variables with their name or pageName.name if pages are used, they are:
Number, NumberInt, NumberDual (Adds 1 & 2 to the names), buttonsOn, radio, combobox, comboboxhot

and add checkBox.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 19, 2021, 03:01:55 pm
Hi,

To learn more about my new Siglent ARB genenrator ( SDG2122X) I tried to expand the current configuration file of Testcontroller with SCPI available functions like modulation, sweep, harmonics and burst. Added the function generator and utility functions. A lot seems to work, but no guarantees. I did not expect his ARB to be so complex, so here will be mistakes in this file, take care!

Additionally I made a documentation file based on my experience while creating the config file. Especially the selector control has helped a lot and I hope you have a look to improve your config files.

For "those playing along at home" I added a python script to clean and report on the config file. This is handy with large configs to keep in control.

IMPORTANT: the name of the config file has changed to SiglentSDGxxxxX.txt so you have to remove the old SiglentSDGxxxx.txt to work with this new file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2021, 06:19:44 pm
Quote
It do, check the DOS output, there any errors in :readmath: will be listed.

I downloaded the latest version (to be sure). The debug DOS gives no errors.

This is with a number control:
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"LLEV,[^,]*(,|$)"),1,",") <-2V>
;; SDG2122X: Rx as number <-2.0>

This is with the info control:
;; SDG2122X: Cache Tx: <FCNT?> Rx: <FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF
>
;; SDG2122X: Rx after :readmath: getElement(getMatch(value,"FRQDEV,[^,]*(,|$)"),1,",") <0ppm>

With info I don't see ";; SDG2122X: Rx as number <0.0>" assuming this is the trace of :readformat: u

Has somebody else tried this?

You can test expressions on the command line (Prefix with =) or in the calculator
declare value with:
var value="FCNT STATE,ON,FRQ,0HZ,DUTY,0,REFQ,1e+07HZ,TRG,0V,PW,0S,NW,0S,FRQDEV,0ppm,MODE,AC,HFR,OFF"

You can also use displayVar() directly in the :readmath: expression to show a value.


Quote
?
Yes, this is very strange. It only happens with more than 2 concatenated selectors. It is only the display of the item the rest seems to work.  I think this is a bug.

I have not tested much with nested selectors, maybe I have to look at bit on that.

Quote
Generally the #cmdSetup do not support variables, you have to use the SCPIx or ascii driver and #scpiCmd to get that.
I was not thinking of user defined :setvar: but the normal variable set by some controls as documented:
*Some controls will create variables with their name or pageName.name if pages are used, they are:
Number, NumberInt, NumberDual (Adds 1 & 2 to the names), buttonsOn, radio, combobox, comboboxhot

and add checkBox.

These variable cannot be reached from :readmath:, they are locally defined and only accessible for a limited number of tags.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 19, 2021, 06:31:04 pm
Hi,

To learn more about my new Siglent ARB genenrator ( SDG2122X) I tried to expand the current configuration file of Testcontroller with SCPI available functions like modulation, sweep, harmonics and burst. Added the function generator and utility functions. A lot seems to work, but no guarantees. I did not expect his ARB to be so complex, so here will be mistakes in this file, take care!

Additionally I made a documentation file based on my experience while creating the config file. Especially the selector control has helped a lot and I hope you have a look to improve your config files.

For "those playing along at home" I added a python script to clean and report on the config file. This is handy with large configs to keep in control.

IMPORTANT: the name of the config file has changed to SiglentSDGxxxxX.txt so you have to remove the old SiglentSDGxxxx.txt to work with this new file.

I hope it is ok if I include all your files on my website.
Because you sound like the Siglent definition may not be finished I will not replace the current definition, but would like to put it somewhere on my website.

I am also sure some people will love another perspective/hints on defining devices, that my reference (I have looked at it, but not read everything).

I do not know exactly what the python script do, but some tool to pretty up definitions may be a good thing.
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on August 23, 2021, 11:08:57 pm
Has anyone made a tutorial for this for the purpose of testing cells using an electronic load?

My load(KP184) is recognized and the values on the front panel are visible in the "current values" tab. I just don't know where to go from there. The commands page seems like the place to start, but this is way over my head. I know I need to enter the current I'd like to draw and the cut-off voltage and then have a go button to press. I was able to set the current by typing in the desired value in the setup popup and pressing the CC button.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 24, 2021, 07:05:25 am
Has anyone made a tutorial for this for the purpose of testing cells using an electronic load?

My load(KP184) is recognized and the values on the front panel are visible in the "current values" tab. I just don't know where to go from there. The commands page seems like the place to start, but this is way over my head. I know I need to enter the current I'd like to draw and the cut-off voltage and then have a go button to press. I was able to set the current by typing in the desired value in the setup popup and pressing the CC button.

Right click in the log part of the commands page, then select "Batteries, Test, Discharge" and verify the values in the popup before pressing start.

To do it manually you have to set the current as you have done, press the "Log" button on the commands page  and select a time interval (1 sec is fine), then press the "on" button on the "KP184" page.
To automatic stop when the battery is empty you can open the "Popups, Alarm", select the load Voltage in the combobox, enter 2.8 in the min field, checkmark "Output off" and "On".
(http://lygte-info.dk/pic/Projects/TestController/DocAlarm/Alarm3.png)

If the load is missing a capacity trace, it must be added manually to the "Math" page, this means "Add" a line, typing "Capacity" or something similar into the name field, select type "SumTimeHour" and typing the name of the current column in the formula field (See the Table page for the full name or type #values? on the command page).
The enabled checkmark can only be checked when logging is stopped and will then add a column to the table.
It will look similar to the last line here:
(https://lygte-info.dk/pic/Projects/TestController/DocMath/Example1.png)

If you are on a computer with a registered web browser you can press F1 in most windows to get some help.
Title: Re: Program that can log from many multimeters.
Post by: mmee on August 25, 2021, 09:29:30 am
Hello.
I'm a new user on DL24. That works.
Could you let me know how to chart, in real time, not from 0 to the last value, but from 0 to 2 hours (fixed time, progressing chart)?
Thank you
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2021, 09:59:07 am
Hello.
I'm a new user on DL24. That works.
Could you let me know how to chart, in real time, not from 0 to the last value, but from 0 to 2 hours (fixed time, progressing chart)?

You can limit the chart displayed using the "First sample to display" and "Last sample to display" fields.
Typing 2:: or 7200 in the "Last sample to display" field will limit the chart to two hours.
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on August 25, 2021, 06:26:09 pm
"Batteries, test, discharge" option doesn't show up. With your prompting, I was able to get started manually.

Can I make the bottom of the graph for voltage to be the cut-off voltage? And get amp hours instead of time?

This is what I'm doing:

(https://images2.imgbox.com/fb/52/93rmHG2z_o.png)


This is what you're doing that I like:

(https://images2.imgbox.com/46/6a/4mZG8vhB_o.png)

(https://images2.imgbox.com/25/87/hnTObTL0_o.png)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2021, 06:56:31 pm
"Batteries, test, discharge" option doesn't show up. With your prompting, I was able to get started manually.

It is a script that TestController download from my server when it is started, but it will only be visible if the load definition has implemented a interface. This is some lines in the definitions that allows a generic script access to the load and makes it possible for a script to work on many similar devices.

Can I make the bottom of the graph for voltage to be the cut-off voltage? And get amp hours instead of time?

You right-click on the hh:mm:ss checkbox to select what is shown at the bottom.
To adjust the scale use the "Scales for charts", remove the checkmark in auto and fill in minimum and maximum for the voltage trace.

You can do some other formatting, but it requires using script, the chart below is done in TestController from a script:

(https://lygte-info.dk/pic/Batteries2012/Keeppower%2018650%203500mAh%20P1835U%20%28White-blue%29%202020/USB%20Charge%20Test%2020201215030539.png)

What I have done in the above is use other scale names, change colors and adding annotations.


To include multiple discharges in the same chart you must do them separately and then import them, during import you can synchronize either time or capacity.
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 28, 2021, 06:03:54 pm
Hi guys,

I finished my exercise with the Testcontroller Setup function for the Siglent SDGxxxxX.
Nearly all SCPI commands have been implemented and are as best as possible tested on the SDG2041/SDG2122.
I also had a look at the scripting interface and the settings for the different models in the #metadefs.

This version V0.94 should have the same basic functionality as the current SDGxxxx.txt, but
some corrections of / additions to the functionality have been made to better represent the device characteristics.
The file has however been renamed to SDGxxxxX.txt, because it will only support the X version of the SDG.

NOTE: the SDGxxxx.txt needs to be removed from the Devices directory to work with SDGxxxxX.txt OR
the #metadef of your device must be set to comment in SDGxxxx.txt.

Due to the large number of required device reads this version has a slower update rate of the Setup window than the current one.
I did some improvements  by introducing the selector control and giving different control names to CH1 and CH2.

The build-in frequency counter had been configured, but can at this moment not be used in conjunction with the current scripting interface.
In the file you find the explanation how to switch between the two modes manually.
I wanted to make a solution with different MODES, but that is not possible because the SDG does not support a mode indicator variable.
I hope HKJ has look at it and makes a solution.

Previously I posted some additional attachments and the updated versions are posted again:
The Python script main.py has been updated and renamed to check-setup.py
A new script to copy a device channel e.g. CH1 to CH2 had been added: copy-setup.py
An updated version of some setup documentation: Version 2
The csv file from the check-setup.py with some errors examples in it: SiglentSDGxxxxX.csv.txt; Remove .txt and you can load this in excel and add filter capability to select on column 1.


@HKJ, has the fix for the underscore in read/write been released yet?
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 28, 2021, 06:11:39 pm
Hi HKJ,

I found a bug in your selector processing.
When the selector switches to another entry AND this entry has THE SAME NUMBER of displayed items then an error occurs:
the text fields of the LAST ITEM in the active entry are not cleared before the new text is written.
This gives overlapping text in the Setup window for these items; see attached pictures.

Attachment before.jpg shows frequency modulation, we then switch to amplitude modulation and the error occurs (see red circles in after.jpg) and it should be correct.jpg
Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 28, 2021, 06:19:52 pm
Hi HKJ,

My last question for the moment; I had a look at the devices with #otherFunc implementations and tried to make one myself.
However Java was not very happy with me  :-//

Modifying the statements from the KeysightU1461A gave me a response, but any addition ended in Java errors
I use syncPopups and syncPopups() with no luck.

Code: [Select]
#otherFunc
if (popupShowQuestion("Recall internally stored Instrument State","ok","Load","Cancel"))
deviceWrite(handle,"VKEY_VALUE,4,STATE,1;[*OPC];VKEY_VALUE,70,STATE,1;[*OPC]");
deviceWrite(handle,"VKEY_VALUE,175,STATE,1;[*OPC]");
deviceWrite(handle,"VKEY_VALUE,13,STATE,1;[*OPC]");
syncPopups();
endif

Resulted in:

Code: [Select]
;; SDG2122X: Tx <VKEY VALUE,4,STATE,1>
;; SDG2122X: *OPC waited: 44ms
;; SDG2122X: Tx <VKEY VALUE,70,STATE,1>
;; SDG2122X: *OPC waited: 158ms
;; SDG2122X: Tx <VKEY VALUE,175,STATE,1>
;; SDG2122X: *OPC waited: 75ms
;; SDG2122X: Tx <VKEY VALUE,13,STATE,1>
;; SDG2122X: *OPC waited: 191ms
dk.hkj.script.ProgramExceptions$UnknownException: Function not found syncPopups
;
deviceWrite(handle,"VKEY_VALUE,175,STATE,1;[*OPC]");
deviceWrite(handle,"VKEY_VALUE,13,STATE,1;[*OPC]");
syncPopups();____<----____
endif
        at dk.hkj.script.Script.getFunc(Script.java:93)
        at dk.hkj.script.Script.parseValue(Script.java:268)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.statement(Script.java:1099)
        at dk.hkj.script.Script.doExecute(Script.java:1250)
        at dk.hkj.script.Script.execute(Script.java:1270)
        at dk.hkj.script.Script.execute(Script.java:1276)
        at dk.hkj.main.DeviceInterface.otherActionsBackground(DeviceInterface.java:943)
        at dk.hkj.main.DeviceInterface.access$5(DeviceInterface.java:923)
        at dk.hkj.main.DeviceInterface$10.run(DeviceInterface.java:917)

Replacing popupShowQuestion by popupCombo did not work at all.

Code: [Select]
#otherFunc
var instrumentState = "STATE01";
popupCombo("Recall internally stored Instrument State", instrumentState, "STATE01, STATE02, STATE03", "Recall pre-stored C:STATExx.XML files");
var clicks = listIndex(instrumentState,"STATE01 STATE02 STATE03"," ");
deviceWrite(handle,"VKEY_VALUE,4,STATE,1;[*OPC];VKEY_VALUE,70,STATE,1;[*OPC]");
for i=1 to clicks do
deviceWrite(handle,"VKEY_VALUE,175,STATE,1;[*OPC]");
endfor
deviceWrite(handle,"VKEY_VALUE,13,STATE,1;[*OPC]");
syncPopups;

Resulted in:

Code: [Select]
dk.hkj.script.ProgramExceptions$UnknownException: null
rnally stored Instrument State", instrumentState, "STATE01, STATE02, STATE03", "Recall pre-stored C:STATExx.XML files");____<----____
var clicks = listIndex(instrumentState,"STATE01 STATE02 STATE03"," ");
deviceWrite(handle,"VKEY_VALUE,4,STATE,1;[*OPC];
        at dk.hkj.script.Script.doExecute(Script.java:1265)
        at dk.hkj.script.Script.execute(Script.java:1270)
        at dk.hkj.script.Script.execute(Script.java:1276)
        at dk.hkj.main.DeviceInterface.otherActionsBackground(DeviceInterface.java:943)
        at dk.hkj.main.DeviceInterface.access$5(DeviceInterface.java:923)
        at dk.hkj.main.DeviceInterface$10.run(DeviceInterface.java:917)
Caused by: java.lang.NullPointerException
        at dk.hkj.script.FunctionsPopup$15.execute(FunctionsPopup.java:455)
        at dk.hkj.script.Script.parseValue(Script.java:269)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.statement(Script.java:1099)
        at dk.hkj.script.Script.doExecute(Script.java:1250)
        ... 5 more

There are not enough examples to find the right answers. Please correct my second example so I can run it.
Some guidance on this subject is highly appreciated.

   
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2021, 08:23:37 am
I found a bug in your selector processing.
When the selector switches to another entry AND this entry has THE SAME NUMBER of displayed items then an error occurs:
the text fields of the LAST ITEM in the active entry are not cleared before the new text is written.
This gives overlapping text in the Setup window for these items; see attached pictures.

Fixed, I had to issue a repaint for the control.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2021, 08:31:52 am
My last question for the moment; I had a look at the devices with #otherFunc implementations and tried to make one myself.
However Java was not very happy with me  :-//

Modifying the statements from the KeysightU1461A gave me a response, but any addition ended in Java errors
I use syncPopups and syncPopups() with no luck.

#syncPopups is a command, not a function.
You can get around that by using runScript() or runScriptAsync() functions.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2021, 08:49:12 am
I finished my exercise with the Testcontroller Setup function for the Siglent SDGxxxxX.
Nearly all SCPI commands have been implemented and are as best as possible tested on the SDG2041/SDG2122.
I also had a look at the scripting interface and the settings for the different models in the #metadefs.

Ok, I will replace the old SDG file with yours.
Note I get two errors when reading the file:
dk.hkj.devices.SetupFormats$RadioField - Ampl_Coupling_Type - Line do not contain 2 parameters: _
dk.hkj.devices.SetupFormats$RadioField - Phase_Coupling_Type - Line do not contain 2 parameters: _


The build-in frequency counter had been configured, but can at this moment not be used in conjunction with the current scripting interface.
In the file you find the explanation how to switch between the two modes manually.
I wanted to make a solution with different MODES, but that is not possible because the SDG does not support a mode indicator variable.
I hope HKJ has look at it and makes a solution.

Can't you check if the frequency counter is on?

@HKJ, has the fix for the underscore in read/write been released yet?

No, but it can be downloaded from the test link
It may be a good idea to say what version is required and include a link to the test version in the post when the definition use a test version.

Title: Re: Program that can log from many multimeters.
Post by: yaybee on August 29, 2021, 06:10:38 pm
Quote
Note I get two errors when reading the file:
dk.hkj.devices.SetupFormats$RadioField - Ampl_Coupling_Type - Line do not contain 2 parameters: _
dk.hkj.devices.SetupFormats$RadioField - Phase_Coupling_Type - Line do not contain 2 parameters: _

I overlooked those underscores, but it does not impact the functionality. Attached is a version without these errors.

Quote
Can't you check if the frequency counter is on?

I did some tests with the counter after enabling the FCOUNTER script interface in de config. The ARB on CH1 puts out a sweep signal from 10k to 100k and this is measured with the counter (cable from CH1 to Counter input). Here is the small test script:

Code: [Select]
#scriptMenu Siglent ARB; Frequency counter test
#scriptInterface ARB setOn setOnCounter setCounterFreqRef
#logcmds 0
="Start counting"
=var arb=getDevice("ARB")
=setOn(arb,1);
=setCounterFreqRef(arb, 55k)
=setOnCounter(arb,1);
#log 2
#delay 40
#log 0
=setOnCounter(arb,0);
=setOn(arb,0);
="Done"

You cannot get counter info from a script with your special #askValuesProcessor SiglentSDG. There are different key names.
You have to use #askValues FCNT? and then #askValuesMathFormat ... to get the values.
As far as I know this cannot be combined with the standard values for CH1&2.
So it has to be changed to:

Code: [Select]
; A list of column name with unit and formatter
#value Frequency Hz SI
#value RefDeviation ppm D2
#value DutyCycle % D1
; How to poll for data, this is used for table and #values?
#askValues FCNT?
#askValuesMathFormat getMatchGroup(value,"FRQ,(.*?)HZ",1) + " " + getMatchGroup(value,"FRQDEV,(.*?)ppm",1) + " " + getElement(getMatch(value,"DUTY,[^,]*(,|$)"),1,",")

Attached are the created tables for #log 0.5 and #log 2. It seems that the counter takes between 1-2 sec to output a new measurement.
Also attached is the settings for CH1.
 
Quote
No, but it can be downloaded from the test link
It may be a good idea to say what version is required and include a link to the test version in the post when the definition use a test version.

It is mentioned in the config file. Here is the link:
https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3618040/#msg3618040 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3618040/#msg3618040)

Quote
#syncPopups is a command, not a function.
You can get around that by using runScript() or runScriptAsync() functions.

I will try that, but I still get a Java null error on my comboBox function and I have no idea what is wrong. Please have a look at it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2021, 07:25:53 pm
I will try that, but I still get a Java null error on my comboBox function and I have no idea what is wrong. Please have a look at it.

You cannot just use a popupCombobox, you need popupInit(title);popupCombo(text,varName,list{,tip});popupShow(x,y);
I do not believe I have documented these functions, but there are similar #commands and functions for popups. Only problem with the functions is that they are not linked to the TC window. The list is a array, you can use either array() or split() to make it.

Example:
=var aaa="b";popupInit("Hi");popupCombo("Value","aaa",split("a;b;c",";"));popupShow(0,0);
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on August 29, 2021, 09:12:03 pm
I looked for an import method and have come up short.

At the moment, my pressing concern is how to move the alarm popup that was accidentally launched while full screen. It's insisting on being on top of everything! lol

edit: Ok, I was able to click on the very bottom edge of the popup when the double-sided arrow appears to resize a window. Just a single click on that brought the top of the window down so I could then move it. Whew! I had a long test started and didn't want to reset everything!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2021, 09:35:59 pm
I looked for an import method and have come up short.

On the Table page, together with Load, Save and Export

At the moment, my pressing concern is how to move the alarm popup that was accidentally launched while full screen. It's insisting on being on top of everything! lol

edit: Ok, I was able to click on the very bottom edge of the popup when the double-sided arrow appears to resize a window. Just a single click on that brought the top of the window down so I could then move it. Whew! I had a long test started and didn't want to reset everything!

A key press will close the visual alarm window or a click on the X in the upper corner (Windows)
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on August 30, 2021, 01:06:54 am
I'm going to have to play around with the import option more. I seem to have a propensity to display things in a way doesn't show what I'm after.


I'm not sure what key press closes the alarm window. Tried escape, but I was afraid to get too adventurous with the key pressing because I didn't want to have to restart the test.

The problem was the alarm title bar spawns 100 pixels above the main Test Controller title bar. So depending on the position of Test Controller when the alarm is opened, or if Test Controller is full-screen, the alarm title bar(and X) may end up where the user can not click on it. But clicking on the bottom of the alarm window(when the resize cursor appeared) brought it down.

It would still be nice to be able to close the alarm window once set because it's always on top. And I don't really need an alarm, I just want to set the low-voltage cut-off. One thing I discovered by accident is the cut-off in the load still works if I forget the alarm window altogether.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 30, 2021, 09:08:27 am
I'm going to have to play around with the import option more. I seem to have a propensity to display things in a way doesn't show what I'm after.

When importing it is important to select the correct reference, usually it is Time, but when changing the x-scale you will most probably be the same as the new x-scale.

I'm not sure what key press closes the alarm window. Tried escape, but I was afraid to get too adventurous with the key pressing because I didn't want to have to restart the test.

The problem was the alarm title bar spawns 100 pixels above the main Test Controller title bar. So depending on the position of Test Controller when the alarm is opened, or if Test Controller is full-screen, the alarm title bar(and X) may end up where the user can not click on it. But clicking on the bottom of the alarm window(when the resize cursor appeared) brought it down.

It would still be nice to be able to close the alarm window once set because it's always on top. And I don't really need an alarm, I just want to set the low-voltage cut-off. One thing I discovered by accident is the cut-off in the load still works if I forget the alarm window altogether.

I was thing about the alarm popup, not the regular alarm window. You can close with ALT-F4 and then more the TC frame a bit down. To avoid this in the future checkmark "Restore popup locations" on the Configuration page, then it will remember the last location where you got it and always open at that location.
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on August 30, 2021, 06:59:19 pm
I thought what I was using was called the Alarm popup. To get whatever it is I've been using, I go to the Commands tab, then click Popups, then click Alarm.

There's a "regular" alarm window? In hopes of finding something that doesn't require an always-on-top popup to be open to have low-voltage cut-off, I searched google for "test controller" "alarm" site:lygte-info.dk, but the only reference I'm seeing is to the alarm popup I've been using. If I Ctrl+F on the intro page, the alarm popup is the only thing I'm finding reference to.
Title: Re: Program that can log from many multimeters.
Post by: Johnny10 on August 30, 2021, 10:53:54 pm
 :popcorn:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 31, 2021, 05:16:28 am
I thought what I was using was called the Alarm popup. To get whatever it is I've been using, I go to the Commands tab, then click Popups, then click Alarm.

It is the alarm window and it can show a visual alarm window.

There's a "regular" alarm window? In hopes of finding something that doesn't require an always-on-top popup to be open to have low-voltage cut-off, I searched google for "test controller" "alarm" site:lygte-info.dk, but the only reference I'm seeing is to the alarm popup I've been using. If I Ctrl+F on the intro page, the alarm popup is the only thing I'm finding reference to.

You will have to use scripting if you want to avoid the alarm window. It is not very complicated.

Copy these two lines into the log window and change the expression after #wait to match your load value:

#wait IT8512.Voltage>3
#off

Then press the RUN button and first time the load voltage goes below the specified value it will be turned off.
You can do a lot more with scripting, like starting and stopping logging (#log 1 & #log 0) and turning the load on.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 02, 2021, 11:00:07 am
V1.79 is up
It contains one new popup, a few modification and new devices.
   Added: Log event popup, this will log for a specified time or until a specified value and turn devices on/off.
   Changed: New definition file for Siglent SDG (Thanks yaybee)
   Fixed: Device setup did not always update correct when using selector controls.
   Changed: _ can be escaped in SCPI commands to get a _ instead of a space
   Added: East Tester ET5420 dual channel electronic load (Thanks AlexD)
   Added: Support for :enable: tag in button fields.

The new popup is very useful for testing batteries, without needing a script:
(https://lygte-info.dk/pic/Projects/TestController/DocLogEvent/minmax.png)
(https://lygte-info.dk/pic/Projects/TestController/DocLogEvent/Time.png)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 02, 2021, 11:03:55 am
A example of the new popup used to test a battery:

(http://lygte-info.dk/pic/Projects/TestController/DocLogEvent/BatteryTestSetup.png)

First I configure the load for desired discharge current and remote sense.

(http://lygte-info.dk/pic/Projects/TestController/DocLogEvent/BatteryTestSetting.png)

Next I open the LogEvent setup and defined the final voltage, here I use 2.5V. Then pressed Start

(http://lygte-info.dk/pic/Projects/TestController/DocLogEvent/BatteryTestCurve.png)

After some time I have this curve.

(http://lygte-info.dk/pic/Projects/TestController/DocLogEvent/BatteryTestCurveFormatted.png)

That can be formattet, I used these commands to do it (They can be copied to the log window and executed with the run button):

#CHARTSCALENAME IT8512.Voltage "Battery voltage"
#CHARTSCALENAME IT8512.Capacity "Capacity"
#CHARTCURVES IT8512.Voltage
#CHARTX IT8512.Capacity
#CHARTANNOTATE text "Discharge 5A" LB 0 3.0 red 3
#CHARTTITLE "Keeppower 26650 5200mAh P2652U"
#SAVECHART BatteryTestCurveFormatted


;To remove all formatting again
#CHARTRESET
#CHARTANNOTATE

Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 02, 2021, 06:50:56 pm
Oops I just realized that the new Log Event was not visible, it is fixed now and the version is 1.80
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on September 04, 2021, 01:41:46 pm
I downloaded 1.79 and didn't see the new thing, but didn't ask because I probably ask too many questions! lol I'm glad to see it in 1.8.

I just loaded it up and clicked the setup popup and noticed my current was set to 40 amps. I did not set that. I've been testing a cell at 4 amps, but other than that, 10 amps is the highest I've loaded this thing yet, and that was without software. Just a rubber band on an 18650 and the front panel. I clicked "set" on the front panel on the load and indeed 40 amps sent to the load. Yikes if I had just started another test! This is on my desktop, but I first loaded 1.8 on my laptop and that massive current setting did not occur.

What else have I somehow magically messed up about my configuration to cause the load to not turn off at the set cut-off voltage(in this case 2.75V)? Mine continues on for several seconds while the current waffles about before eventually stopping. I thought it was only happening at "high" current(2 - 4A), but at "low" current(100mA) I notice it as well, the last few seconds were merely compressed on the chart due to the longer discharge time.

(https://i.ibb.co/560QQM5/unstablecutoffchart.png)

(https://i.ibb.co/zRYQJVd/unstablecutoff.jpg)



Title: Re: Program that can log from many multimeters.
Post by: MeterReader on September 05, 2021, 05:10:24 am
I decided to do a test with a 2.5V cut-off, but it didn't get that far before it got worse than ever.

(https://i.ibb.co/HpwkMJt/SMT-17350-1-4-A-manual-cutoff.png)

So I just manually turned off the load.

I did another test with a 2.8V cut-off and everything was perfect. So I guess if I see weird current at the end of a test, I know to up the cut-off voltage.

(https://i.ibb.co/WWZVsvm/SMT-17350-1-850-851-2-8-V.png)

I noticed if I put "2.8V" in my chart filename, it wouldn't add the .CSV extension. This precludes importing it because there's no way to override the file extension filter when importing. I manually added .CSV to the end of the filename and then it worked.

edit: I'm blind, there's an "all files" option.  :-//
Title: Re: Program that can log from many multimeters.
Post by: Kean on September 05, 2021, 10:54:43 am
I decided to do a test with a 2.5V cut-off, but it didn't get that far before it got worse than ever.
[snip]
I did another test with a 2.8V cut-off and everything was perfect. So I guess if I see weird current at the end of a test, I know to up the cut-off voltage.

Maybe your cell includes a protection circuit that is cutting off just below 2.8V?  e.g. S-8211CAN-M5T1x
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on September 05, 2021, 11:44:05 am
Don't protected cells typically go 0 volts at the user terminals when the protection activates? Then there's a period of recovery before they're released again and pass the recovery voltage threshold?

Regardless, I don't think there's any protection on this cell I've been testing at 4A. Ovoid pouch lipo with just solder terminals.

Just weird how I was 6 or 7 thousandths of a volt from completion with more than one test in a row before I upped the cut-off to 2.8V. I was so confused I hooked up my DMM and set it to MIN. Each time the lowest voltage it would detect was 2.757V while the KP184 and TC were reading 2.756V before going nuts.

It might be neat to check a box at the beginning of a test that would complete the test if the set current started to falter.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 05, 2021, 11:58:53 am
I decided to do a test with a 2.5V cut-off, but it didn't get that far before it got worse than ever.

I have no idea why you are having these trouble, I do not have a KP184 load and cannot verify anything.

I noticed if I put "2.8V" in my chart filename, it wouldn't add the .CSV extension.

The problem is that I made it possible to override the default extension. Maybe that was not a good idea?
Title: Re: Program that can log from many multimeters.
Post by: gby on September 06, 2021, 04:35:29 pm
HKJ,

Couple of questions.

In the Chart, Histogram, and Range tabs at the bottom there are entry boxes for "First sample to display".  I get entering 1.5s for starting at 1.5 seconds or 1.5m for starting at 1.5 minutes.  But, I thought in the early versions of Test Controller that entering just a bare number/no units would start at that sample number.  However with all the recent versions entering just a number selects that number of seconds for the first point.  Is there a way to enter just a starting sample number and not a time index?

When using the ascii driver to send/receive binary values over a serial port is it possible to define a scpiCmd that uses another scpiCmd?  For example define:

   #scpiCmd readByte? txrx1Bin? \x(hex(0xFE&value,2))\x00

which reads one byte from the device at the command's argument address and then define additional scpiCmd's that use this command like:

   #scpiCmd getMyValue? readByte? value

When I try something like the above and execute getMyValue 0x40 the debug window shows:

   getMyValue? 0x40
   ;; S200: Tx <getMyValue? 0x40>
   ;; S200: Tx <readByte? value>
   ;; S200: Rx Timeout

and nothing else.  The above tells me nothing is sent to the device and certainly no value is returned since it complains about a Timeout.  If I execute the readByte command by itself instead of using it inside a second command it properly does:

   readByte 0x40
   ;; S200: Tx <readByte 0x40>
   ;; S200: Tx <txrx1Bin? \x(hex(0xFE&value,2))\x00
   ;; COM4: TxBin: <@.> 40 00
   ;; COM4: RxBin: B0
   ;;176

So, is there a way to define a scpiCmd with the ascii driver that uses other defined scpiCmd's in its definition?

Title: Re: Program that can log from many multimeters.
Post by: Kean on September 06, 2021, 04:57:21 pm
Is there a way to enter just a starting sample number and not a time index?

Prefix the number with # to specify sample number.
https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3047118/?topicseen#msg3047118 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3047118/?topicseen#msg3047118)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 06, 2021, 05:11:19 pm
In the Chart, Histogram, and Range tabs at the bottom there are entry boxes for "First sample to display".  I get entering 1.5s for starting at 1.5 seconds or 1.5m for starting at 1.5 minutes.  But, I thought in the early versions of Test Controller that entering just a bare number/no units would start at that sample number.  However with all the recent versions entering just a number selects that number of seconds for the first point.  Is there a way to enter just a starting sample number and not a time index?

Use a # before the number, it is also in the tool tip.

Note: If the time column is missing it will index on samples.

When using the ascii driver to send/receive binary values over a serial port is it possible to define a scpiCmd that uses another scpiCmd? 

Sorry, but no. I did not make the handling of #scpiCmd recursive, it is only one level.
Title: Re: Program that can log from many multimeters.
Post by: gby on September 06, 2021, 06:46:40 pm
HKJ,

Thanks for the quick answer.  Sorry I missed the explanation in the tool tip....I need to read more.

Title: Re: Program that can log from many multimeters.
Post by: MeterReader on September 09, 2021, 06:02:14 am
Found out why my tests were being ruined at the end of discharges:





(https://images2.imgbox.com/fa/3d/E02G6SwZ_o.jpg)

The KP184 manual describes the above as a setting which will turn off the load if the input voltage of the load is lower than the set voltage.

This kind of happens. But what happens first is that milliseconds before that value is reached, the load throttles the current down so it doesn't reach that voltage until it can abuse the cell/pack for a bit. I think it's for testing power supplies and giving it some leeway before it kicks off. If you're testing batteries, you might want this off, entirely. But you definitely want it below your cutoff if you're testing capacity.

How the aforementioned setting got set and stayed set, in my case, was playing around with other programs that change settings differently than Test Controller. When you set the load current in Test Controller, that setting is sent to the load before the test begins, or if you click CC in the setup popup. The cutoff voltage is never sent to the load, Test controller merely sends an "off" signal when the cutoff voltage is detected. When I opened another program while experiencing new-user shock with Test Controller, I spotted the threshold voltage and set it. This "permanently" set that setting as if I were using the panel of the KP184. I used that program again and changed that setting again to a higher voltage in order to escape that low voltage cutoff/throttle issue. But as we now know, if load threshold is as high or higher than end voltage(whether set in Test Controller or the front panel itself), current throttling will occur before actual cutoff happens, even if the load is set to BAT mode. Threshold voltage is more of a power supply testing mode which in my opinion should not be in effect while in BAT mode. But that's an issue for another thread.

So maybe a future version of Test Controller would set the voltage threshold to a 0V setting if it can detect it being higher than the selected minimum voltage. Now that I know about it, I don't think it's going to be a problem for me.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 09, 2021, 07:51:53 am
So maybe a future version of Test Controller would set the voltage threshold to a 0V setting if it can detect it being higher than the selected minimum voltage. Now that I know about it, I don't think it's going to be a problem for me.

As I have already stated: I do not have the load.
But it would be nice if some owner of the load added that setting to the Setup menu, tested it and posted it here.
Title: Re: Program that can log from many multimeters.
Post by: MeterReader on September 09, 2021, 03:28:04 pm
I'll certainly help if I can. I'm not a computer programmer like apparently everyone else on this site! lol

Tried a program called Virtual Serial Port Emulator and a Russian program called Port Sniffer. VSPE creates two virtual ports and Port Sniffer bridges the gap between one of the virtual ports and the device, while the program connects to the other virtual port. I couldn't seem to get everything connected, although once I did see TC sending the *IDN? command. Looking back at the Russian author's page, it was mentioned that only text was captured. Looking at the KP184 manual it looks like both text and hex is key, here.

I asked a computer programmer if they'd ever tried to sniff their own ports, and they replied in the affirmative. Something about logic probes and TTL levels. If they have time to help me they will, but with the main programmer at their company having recently passed away and his assistant getting a job with more pay, they're getting slammed.

Microsoft bought a company called Sysinternals and they're offering a program called Portmon. Apparently that's not going to work with my 64-bit system and XP compatibility mode doesn't seem to work. I do have an old single-core laptop I can try.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 09, 2021, 03:50:48 pm
I'll certainly help if I can. I'm not a computer programmer like apparently everyone else on this site! lol

You do not need to be a programmer to make or modify definitions for TestController.
My guess is that you need to add these lines:

#scpiCmd onLoadVoltage holdingL 0x011A (value) *1000
#scpiCmd onLoadVoltage? holdingL? 0x011A /1000

#cmdSetup number On_Load_Voltage
:read: onLoadVoltage?
:write: onLoadVoltage
:tip: Turn load off below this voltage
Volt 0 150.000


To "Kunkin KP184.txt" file

Tried a program called Virtual Serial Port Emulator and a Russian program called Port Sniffer. VSPE creates two virtual ports and Port Sniffer bridges the gap between one of the virtual ports and the device, while the program connects to the other virtual port. I couldn't seem to get everything connected, although once I did see TC sending the *IDN? command. Looking back at the Russian author's page, it was mentioned that only text was captured. Looking at the KP184 manual it looks like both text and hex is key, here.

I usually uses a terminal program called Termite, it can do the above and show hex.

Title: Re: Program that can log from many multimeters.
Post by: Neptuni on September 12, 2021, 07:21:22 pm
Hi,

I’m writing a driver for the Fluke 8840A DMM using GPIB and have a question:
To read function, range and some more info i need to send a command that reads string back.
The format is four digits and each position needs to be decoded separatly.
For example in a reply like 1300, 1 means DCV, 3 means 20V range and the zeroes are rate and trigger settings.

How do i decide this?

Best regards
Mikael
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 12, 2021, 07:36:06 pm
I’m writing a driver for the Fluke 8840A DMM using GPIB and have a question:
To read function, range and some more info i need to send a command that reads string back.
The format is four digits and each position needs to be decoded separatly.
For example in a reply like 1300, 1 means DCV, 3 means 20V range and the zeroes are rate and trigger settings.

How do i decide this?

Depends on what you want to get back, maybe declaring four functions, one for each digit.
The actual decoding is done with :readmath: where you have access to a lot of functions: https://lygte-info.dk/project/TestControllerFunctions%20UK.html (https://lygte-info.dk/project/TestControllerFunctions%20UK.html)

substring(value,0,1) would return the first digit, substring(value,1,2) the next digit.
Use this with a getElement() to convert the digit to something else.

Something like this:
:readmath: getElement("VAC VDC AAC ADC",substring(value,0,1))

On the line after a #scpiCmd to fetch the value

Title: Re: Program that can log from many multimeters.
Post by: Neptuni on September 18, 2021, 01:19:01 pm
Hi and thanks for the tips!

Slowly getting the funktionality in place for the 8840A, read and set function/range etc working. Still some status information to add to the driver. I have a couple of questions:

1) Depending on firmware version a command to read device info is implemented or not, is there a preferd way to handle this (I will get back an error if not implemented in the instrument)?

2) I’m using th AR488 interface, but sometimes I have to connect multiple times before the instrument is detected, any suggestions?

3) There are a Fluke 8842A also and the only added funktionality is a 20 mv/20 ohm range, what is the preferd way to handle this (and not write a slightly modified driver)?

Thanks for a nice software and all the work you have done!

Ps I have bought a second hand Fluke 8506A also so hopefully I will write a driver for that also.

Best regards,
Mikael
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 18, 2021, 01:25:48 pm
1) Depending on firmware version a command to read device info is implemented or not, is there a preferd way to handle this (I will get back an error if not implemented in the instrument)?

You can write another definition for it (See 3)

2) I’m using th AR488 interface, but sometimes I have to connect multiple times before the instrument is detected, any suggestions?

No, can you capture something useful in debug mode?

3) There are a Fluke 8842A also and the only added funktionality is a 20 mv/20 ohm range, what is the preferd way to handle this (and not write a slightly modified driver)?

The solution is to write another definition, it is rather easy when using #meta & #metadef. You do not need multiple files, but all are based on the same definition that is modified to fit the different devices.
Title: Re: Program that can log from many multimeters.
Post by: Neptuni on September 18, 2021, 05:43:54 pm
I will look at the definitions

The issues with the instrument not detected, was only a problem when I have a error (exception) in the code.
Without errors the instrument already responds:)

Mikael
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 18, 2021, 06:04:27 pm
I will look at the definitions

The issues with the instrument not detected, was only a problem when I have a error (exception) in the code.
Without errors the instrument already responds:)

I would like to get a list of the Java errors when it fails, preferable with the newest version of TestController.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 30, 2021, 12:03:51 pm
V1.82 is up
It is a few extra functions in the software.
   Added: Support "Math" channels in Alarm popup
   Added: annotation value, it is similar to arrow, but find its own y value and text based on the curve
   Added: Grid panel: Efficiency readout
   Added: Grid panel: Volt/Current/Power readout
   Added: Grid Panel can directly be saved as menu entry

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/EfficiencyReadout.png)

The efficiency readout is very useful to check a buck/boost converter.

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/EfficiencyReadoutUsage.png)

It can be used together with volt/current/power readout to see values from a power supply and load at the same time.

#CHARTANNOTATE value 6000 45 green

The "annotate value" function is a optimized way to put a value label on a curve, the non-optimized way is "annotate arrow" that requires the value as parameter.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 01, 2021, 10:27:21 am
I decided to do a minor update to the TC intro page: https://lygte-info.dk/project/TestControllerIntro%20UK.html (https://lygte-info.dk/project/TestControllerIntro%20UK.html)
Small changes to the text, more popup shows and added links to all shown popups.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 05, 2021, 06:20:53 pm
Hi HKJ,

I'm trying to use V1.82 with Atorch JL44. I can connect to the device, but nothing is in Current Values page. How can I troubleshoot this?

Thanks,
-JK
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 05, 2021, 06:37:23 pm
Hi HKJ,

I'm trying to use V1.82 with Atorch JL44. I can connect to the device, but nothing is in Current Values page. How can I troubleshoot this?

TC did not find it (It is not listed in the help area).

Use the batch file called "testControllerDebug.bat" to start it, it will list some debug information.

Note: I am not aware I have changed anything with JL44 in 1.82 compared to the last few releases
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 05, 2021, 06:48:42 pm
I used testControllerDebug.bat. Please see attached screenshot. I was traveling for the past 6 months, so I haven't used TC with JL44 for 6 months. It was working fine back then.

Thanks,
-JK
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 05, 2021, 07:24:30 pm
HKJ,

There was a bluetooth issue, so I resolved it. Now, TC can find the JL44. But Current Value page is still empty.

Thanks,
-JK
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 05, 2021, 07:34:03 pm
There was a bluetooth issue, so I resolved it. Now, TC can find the JL44. But Current Value page is still empty.

I will have to simulate it with a Arduino, but I can first do that tomorrow.
You can help me a bit by posting a few lines of the text after the COM5: directly and not as a picture (Then I can directly copy it to my Arduino and do not need to type it).
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 05, 2021, 07:52:19 pm
Absolutely. Here is the text. Thanks for your help!

;; Start thread for: COM5 - ATorch JL44
;; Start thread for: COM3
;; Start thread for: COM4
;; Start thread for: COM7
;; COM7: Set params: 9600
;; COM3: Set params: 9600
;; COM5: Set params: 9600
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 7A
;; Found ATorch JL44 on BthModem0 (COM5)
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 6F
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 63
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 57
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 6B
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 0F
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 23
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 C7
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 E4
;; Stopping thread for: COM4
;; COM4: Close
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 5C
;; COM5: Rx: FF 55 01 01 00 04 AC 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 18
;; COM5: Rx: FF 55 01 01 00 04 AB 00 00 00 00 00 00 00 00 00 00 00 00 64 02 55 00 00 00 19 00 00 00 04 3C 00 00 00 00 E5
;; COM5: Rx: FF 55 01 01 00 04 AC 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 20
;; COM5: Rx: FF 55 01 01 00 04 AC 00 00 00 00 00 00 00 00 00 00 00 00 64 02 54 00 00 00 19 00 00 00 04 3C 00 00 00 00 63
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2021, 11:23:56 am
Try using this .jar file: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 06, 2021, 05:37:07 pm
I tried it, but it's the same. I see the message "Found ATorch JL44 on BthModem0 (COM5)", but the Current Values page is still blank.

Here is debug output.

read for: COM3
;; Start thread for: COM4
;; Start thread for: COM7
;; COM7: Set params: 9600
;; COM3: Set params: 9600
;; Stopping thread for: COM4
;; COM4: Close
;; COM5: Set params: 9600
;; COM5: Rx: FF 55 01 01 00 04 B0 00 00 00 00 00 00 00 00 00 00 00 00 64 02 55 00 00 00 18 00 00 00 04 3C 00 00 00 00 AD
;; Found ATorch JL44 on BthModem0 (COM5)
;; COM5: Rx: FF 55 01 01 00 04 B0 00 00 00 00 00 00 00 00 00 00 00 00 64 02 55 00 00 00 18 00 00 00 04 3C 00 00 00 00 E9
;; COM5: Rx: FF 55 01 01 00 04 B0 00 00 00 00 00 00 00 00 00 00 00 00 64 02 55 00 00 00 18 00 00 00 04 3C 00 00 00 00 25
;; COM5: Rx: FF 55 01 01 00 04 B0 00 00 00 00 00 00 00 00 00 00 00 00 64 02 55 00 00 00 18 00 00 00 04 3C 00 00 00 00 61
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2021, 06:09:04 pm
I tried it, but it's the same. I see the message "Found ATorch JL44 on BthModem0 (COM5)", but the Current Values page is still blank.

And I suppose it is also missing in the debug window. Try deleting it from the "Load devices" page, restart program and add it again.
Title: Re: Program that can log from many multimeters.
Post by: jk2017 on October 06, 2021, 07:24:09 pm
I tried it, but it's the same. I see the message "Found ATorch JL44 on BthModem0 (COM5)", but the Current Values page is still blank.

And I suppose it is also missing in the debug window. Try deleting it from the "Load devices" page, restart program and add it again.

I did exactly what you said, and it's working! Thank you! I'll remember to do that first if I have a problem in future.
Title: Re: Program that can log from many multimeters.
Post by: strawberry on October 06, 2021, 07:26:48 pm
how to add support for 34970A and 33120A ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2021, 07:42:48 pm
I did exactly what you said, and it's working! Thank you! I'll remember to do that first if I have a problem in future.

This is nearly never necessary, only some specific changes (connection or name) in the definition file can make it necessary.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2021, 07:53:52 pm
how to add support for 34970A and 33120A ?

What type of interface RS232, Network, GPIB?
Note: GPIB requires a adapter, the Arduino based AR488 is a possibility.
Note: With RS232 or network TC can generate a skeleton definition: Right click "Load devices page, combobox" and select "Create new SCPI device definition"

34970A looks like some sort of multi channel DMM, at the current time I do not really have some well tested method to handle a variable number of channel with variable data type.

33120A looks like a normal ARB, there is a very complete definition for Siglent SDG types to look at, but because it is very complete it is also very complex.
Title: Re: Program that can log from many multimeters.
Post by: Bobby85 on October 11, 2021, 04:58:42 pm
Hello All,

I'm working on the Keysight 34970A datalogger (via serial) as we speak :)
This unit is one 6 1/2 dig multi meter which is relay switched to cards and from cards to channels.
We use the 20 channel cards exclusively.
The unit measures V/R/F/temp via thermocouple and more.

Like the software but it's quite a climb to get the data logger going with my limited experience..

So perhaps someone can help me along with the flowing.

CONF:VOLT:DC #,DEF,(@101) is the channel configuration.
The code below works but what i would like is a couple of combo-boxes. One for unit one for scale one for resolution and so on and use the value's from all those in sending this one command.
Here VOLT DC # DEF and (@101) are all variables.

How might i go about this?

Code: [Select]
#cmdSetup combobox Ch_1
:write: CONF:VOLT:DC #,DEF,(@101)
;:read: CONF? (@101)
DC_Voltage_auto AUTO
DC_Voltage_0.1V 0.1
DC_Voltage_1V 1
DC_Voltage_10V 10
DC_Voltage_100V 100
DC_Voltage_300V 300
:tip: Set channel function
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 11, 2021, 07:01:22 pm

CONF:VOLT:DC #,DEF,(@101) is the channel configuration.
The code below works but what i would like is a couple of combo-boxes. One for unit one for scale one for resolution and so on and use the value's from all those in sending this one command.
Here VOLT DC # DEF and (@101) are all variables.

How might i go about this?

You need to use the multi control, but it lacks a combobox at least for now.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 12, 2021, 08:49:07 am

CONF:VOLT:DC #,DEF,(@101) is the channel configuration.
The code below works but what i would like is a couple of combo-boxes. One for unit one for scale one for resolution and so on and use the value's from all those in sending this one command.
Here VOLT DC # DEF and (@101) are all variables.

How might i go about this?

You need to use the multi control, but it lacks a combobox at least for now.

I have added the combobox to multi, but it will not solve all problems (Ask if you want a version, it will be included in the next release, but it will probably be some time).
First problem is that you cannot switch contents of a combobox easily, i.e. best solution is to make a combobox with both mode and range.

I.e. use lines like: DC_Voltage_0.1V CONF:VOLT:DC_0.1
This means the combobox will have many entries.

Next problem is the columns, they are only switched after using the mode menu, i.e. you cannot use a column name like DC_VOLT_1 for channel 1 DC voltage, but must use something like VALUE_1, i.e. without specifying what mode is selected.

I do not believe I will get a good solution before I have a multichannel DMM (It can either be a card for my DMM6500 or another meter), but I have no idea when I will buy one.
Title: Re: Program that can log from many multimeters.
Post by: Bobby85 on October 12, 2021, 10:20:29 am
Thank you for the quick reply.

I now use the datalogger with benchlink might be interesting to have a look.
https://www.keysight.com/nl/en/lib/software-detail/computer-software/benchlink-data-logger-3-778242.html (https://www.keysight.com/nl/en/lib/software-detail/computer-software/benchlink-data-logger-3-778242.html)
If you want to have a go at it on a real device let me know i'm sure we can arrange some remote session.

So there is no way to put a combobox value in a variable or use the contents of several combo boxes when hitting the set button?

If not the all in a single combobox will have to do for now ;).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 12, 2021, 10:54:15 am
So there is no way to put a combobox value in a variable or use the contents of several combo boxes when hitting the set button?

Yes and no. When using SCPIx you get a extra command layer where it is possible to store stuff in variables.
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on October 13, 2021, 12:27:44 am
I apologize if these issues have been mentioned before, but I ran into two problems today in my first attempt to actually use this program.  First, for the Fluke 8846A, the value column always shows "F8846.VoltageDC" regardless of what range is selected.  The numbers are correct.  Second, when I try to save a chart, it goes through all the motions--I press save, a dialog box comes up that lets me give it a name and specify where to save it, I press save and the dialog box disappears--but no file has been saved.

I don't see any way to determine the version number here, but I downloaded this on 5 SEP 2021.

Edit:  Using the MODE button from within TestController to set the 8846A modes causes the value label to read correctly, but unlike the F289, changing it from the meter does not--so not a significant issue.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 13, 2021, 05:16:31 am
I apologize if these issues have been mentioned before, but I ran into two problems today in my first attempt to actually use this program.  First, for the Fluke 8846A, the value column always shows "F8846.VoltageDC" regardless of what range is selected.  The numbers are correct.  Second, when I try to save a chart, it goes through all the motions--I press save, a dialog box comes up that lets me give it a name and specify where to save it, I press save and the dialog box disappears--but no file has been saved.

I don't see any way to determine the version number here, but I downloaded this on 5 SEP 2021.

Edit:  Using the MODE button from within TestController to set the 8846A modes causes the value label to read correctly, but unlike the F289, changing it from the meter does not--so not a significant issue.

The version number can be found by selecting the Configuration page and pressing About.

I try to avoid regular polling of the devices, to leave as much bandwidth as possible for fast logging, this means I do not check the meter for mode at a regular interval, but only when the "Mode"  popup is used to change mode.

I wonder what is going wrong with the save, try using the debug batch file to start the program and see if there is an error message in the log or console output.

Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on October 13, 2021, 05:54:28 pm
OK, the mode issue is a non-issue then.

The version is v1.80

I tried the debug batch file, but when I look at the now-verbose command window in the program, I don't see anything at all in response to my pressing the save button (in the CHART window), entering a filename and location and then pressing ENTER or SAVE.  I don't know if this is related, but the data files that the program put in the Documents folder are all completely empty except for a file called ScriptLibrary.dat.  My loaded devices are not remembered from one session to the next either, I hadn't gotten that far.  I do not see a log file saved anywhere.

Any ideas?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 13, 2021, 06:36:35 pm
I tried the debug batch file, but when I look at the now-verbose command window in the program, I don't see anything at all in response to my pressing the save button (in the CHART window), entering a filename and location and then pressing ENTER or SAVE.  I don't know if this is related, but the data files that the program put in the Documents folder are all completely empty except for a file called ScriptLibrary.dat.  My loaded devices are not remembered from one session to the next either, I hadn't gotten that far.  I do not see a log file saved anywhere.

Any ideas?

The console output (i.e. DOS window) can contain more error messages than the log window. The program basically try to catch errors, print the message to console output and then ignore the error. In normal usage the console output is invisible, but when in debug the DOS window is open and showing the console output that also includes the regular debug messages. You could also start TC from a DOS window with "java -jar TestController.jar", this would give you the console window, but not include debug information, only errors.

I wonder if you have some access limitations on your computer that prevents TC from saving files. It is not supposed to happen, because I use the document folder to save stuff in.
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on October 13, 2021, 07:21:56 pm
OK, I

a) updated Java (I had disabled updates a while back so it was ~2 years old)
b) installed v1.82
c) restarted Windows 10 with an update

and I now have at least the nominal ability to save the chart as a .png.  So that's all good.  :-+

Now on to the detailed issues:

I started looking at editing the device configuration .txt file and just as an exercise, I was able to change it so that when I select 4W Ohms it also selects 100NPLC instead of 10, which I want.  However, I cannot get the program to display the proper resolution in the 'Current Values' or 'Table' windows.  It simply displays "1K" when the meter is reading 1000.002 ohms.  v1.80 was displaying more digits, but not enough--there should be 8 digits.  When I open the Chart or Histogram windows, provided I have set values correctly in the 'Scales for Chart' window, I can see intermediate values that reflect the 8 digits.  IOW, I have ticks at 1000, 1000.002, 1000.004, etc and there are multiple data points in between those.  So all 8 available digits are being transmitted, but they don't show up.

Also, the program still does not remember the meter if I exit and start a new session--I have to go to Load, select the Fluke 8846A from the menu, select 'Scan Serial Ports', then 'Reconnect'.  Is that normal or is something still amiss?





Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 13, 2021, 07:36:41 pm
a) updated Java (I had disabled updates a while back so it was ~2 years old)
b) installed v1.82
c) restarted Windows 10 with an update

and I now have at least the nominal ability to save the chart as a .png.  So that's all good.  :-+

None of that is supposed to affect the program.
There is none (As far as I remember) versions of TestController that do not work. Newer versions contains new functions and sometime bugfixes, but the bugfixes are usually minor or related to a very specific function/device, i.e. nothing that prevents TC from working.

I started looking at editing the device configuration .txt file and just as an exercise, I was able to change it so that when I select 4W Ohms it also selects 100NPLC instead of 10, which I want.  However, I cannot get the program to display the proper resolution in the 'Current Values' or 'Table' windows.  It simply displays "1K" when the meter is reading 1000.002 ohms.  v1.80 was displaying more digits, but not enough--there should be 8 digits.  When I open the Chart or Histogram windows, provided I have set values correctly in the 'Scales for Chart' window, I can see intermediate values that reflect the 8 digits.  IOW, I have ticks at 1000, 1000.002, 1000.004, etc and there are multiple data points in between those.  So all 8 available digits are being transmitted, but they don't show up.

Look for the #value definitions, they contain the numeric format definition (Typically D1, D2, etc or SI).
The chart uses its own definition of numeric format controlled from the "Scales for Charts" page.
You can override the default numeric format from the "Table" window, in next version you will be able to do it from both "Table" and "Current values" and the dialog will be different.

Also, the program still does not remember the meter if I exit and start a new session--I have to go to Load, select the Fluke 8846A from the menu, select 'Scan Serial Ports', then 'Reconnect'.  Is that normal or is something still amiss?

These settings are supposed to be saved in ...\Documents\TestController\Settings\ in a couple of files called Settings something.txt
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 13, 2021, 08:44:26 pm
I have a question.

I only recently started trying to use this awesome software so I have a lot of learning to do.

Does the "Readout" popup support multiple readouts from the same device? I have found I can do it with a grid panel, but I think I might want multiple popups, I'm just wondering if it can do it already ?

I am in the process of writing the definition for a Siglent SDL1030X, I have the app reading the loads values and I am able to control the modes etc. I still have a lot to do, such as the various mode settings etc. but I am making good progress I think.

FYI I also added this to the Siglent SDM30xxxx file so that it returns back to local mode when quitting the app: #finalCmd abort;*cls;*rst
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on October 14, 2021, 12:46:56 am
These settings are supposed to be saved in ...\Documents\TestController\Settings\ in a couple of files called Settings something.txt

OK, so I installed this on another computer just to make sure it wasn't some one-off sort of deal.  This problem occurs on both--there is nothing saved in a that folder (or anywhere else) on exit and not only does the program not remember meters used in previous sessions, I just realized that it is running as if it were the first time each time I start it.  I get the dialog box that asks if I want to load the demo units, and it opens a browser page and takes me to the TestController installation page.

Edit:  OK, case closed!  The problem was my Avast antivirus (specifically the Ransomware Shield) blocking javaw.exe   :palm:   Entered an exception to the block and things appear to work.   :-+  Now I have work to do before more questions.  Thanks, HKJ!
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on October 14, 2021, 02:31:46 am
This tool is brilliant!  It was precisely what I've been searching for, and I've taken several days to pore over the documentation and this thread, and to explore Test Controller's scripting capabilities.  Having said that, I've run into some bugs (or maybe some quirks) and I have some questions I'd like to put to you.

First, a bug: The "Script List" popup fails to list any of the scripts I created (and, in fact, is completely blank except for when I sweep the mouse cursor over the dialog box buttons, which individually reappear when I do so).  Here's what the dialog box looks like after I've painted the mouse cursor all over it:

[attach=1]


Here's the debug output:

Code: [Select]
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at dk.hkj.devices.LoadDeviceConfig.getIndex(LoadDeviceConfig.java:122)
        at dk.hkj.main.PopupScriptList$3.prepareRenderer(PopupScriptList.java:118)
        at javax.swing.plaf.basic.BasicTableUI.paintCell(Unknown Source)
        at javax.swing.plaf.basic.BasicTableUI.paintCells(Unknown Source)
        at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
        at javax.swing.plaf.ComponentUI.update(Unknown Source)
        at javax.swing.JComponent.paintComponent(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JViewport.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at javax.swing.JLayeredPane.paint(Unknown Source)
        at javax.swing.JComponent.paintChildren(Unknown Source)
        at javax.swing.JComponent.paintToOffscreen(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
        at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
        at javax.swing.RepaintManager.paint(Unknown Source)
        at javax.swing.JComponent.paint(Unknown Source)
        at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
        at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
        at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
        at java.awt.Container.paint(Unknown Source)
        at java.awt.Window.paint(Unknown Source)
        at javax.swing.RepaintManager$4.run(Unknown Source)
        at javax.swing.RepaintManager$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
        at javax.swing.RepaintManager.access$1200(Unknown Source)
        at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

For what it's worth, initially the dialog did work as expected.  At some point while I created more scripts and files containing scripts, it stopped working.

Next, the documentation states:

Code: [Select]
To check the type of a variable use type(v), the normal types will be long/double/string, but there are also complex/dateTime/array/struct/...

This seems to suggest that it's possible to declare a variable as a struct; how do we go about doing so?  Is such a thing possible right now?  (Being able to do so would be amazing...and being able to declare arrays of structs would be even more so!)

Finally, I'm not clear on how the iterator variable works in the #FOREACH command.  I tried doing something like this, using #FOREACH to iterate through an array of arbitrary size:

Code: [Select]
=var my_array = array("some value", "another value", "and so on")
#foreach item my_array
#echo (item)
#endforeach

This code results in this output:

Code: [Select]
;; my_array

...but I was hoping for something like this output:

Code: [Select]
;; some value
;; another value
;; and so on

Clearly I am misunderstanding the command's usage.  Could you clarify it?

Thanks again for your work on this really great tool!
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 14, 2021, 04:25:49 am
I have another question...

Is there a button type that toggles states ?

What I am wanting is a button for On/Off without having to use two buttons, much like the ButtonsOn version that has the indicator but a single button that can toggle between two states, change its button text, and change its activated output to toggle commands, so you can send a 0 or 1 just like a checkbox etc.

I wanted to use a button like this for the SDL1030X definition I am making, to have features such as Load On/Off, Short On/Off, Remote Sensing On/Off etc.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 04:55:48 am
First, a bug: The "Script List" popup fails to list any of the scripts I created (and, in fact, is completely blank except for when I sweep the mouse cursor over the dialog box buttons, which individually reappear when I do so).  Here's what the dialog box looks like after I've painted the mouse cursor all over it:

I will look at it, with your debug dump I suppose it will be easy to fix.

Next, the documentation states:

Code: [Select]
To check the type of a variable use type(v), the normal types will be long/double/string, but there are also complex/dateTime/array/struct/...

This seems to suggest that it's possible to declare a variable as a struct; how do we go about doing so?  Is such a thing possible right now?  (Being able to do so would be amazing...and being able to declare arrays of structs would be even more so!)

That is basically automatic:
Code: [Select]
var a;
a.x=4
will make a a struct with the element x
There is no problem combining arrays and structs.
Some of the electronic functions returns structs with the answer.

Finally, I'm not clear on how the iterator variable works in the #FOREACH command.  I tried doing something like this, using #FOREACH to iterate through an array of arbitrary size:

Code: [Select]
=var my_array = array("some value", "another value", "and so on")
#foreach item my_array
#echo (item)
#endforeach

This code results in this output:

Code: [Select]
;; my_array

...but I was hoping for something like this output:

Code: [Select]
;; some value
;; another value
;; and so on

Clearly I am misunderstanding the command's usage.  Could you clarify it?

Code: [Select]
=var my_array = array("some value", "another value", "and so on")
=var item;
#foreach item (my_array)
#echo (item)
#endforeach
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 04:58:22 am
Does the "Readout" popup support multiple readouts from the same device? I have found I can do it with a grid panel, but I think I might want multiple popups, I'm just wondering if it can do it already ?

Each Readout can only show one value, but you can use multiple Readouts.

I am in the process of writing the definition for a Siglent SDL1030X, I have the app reading the loads values and I am able to control the modes etc. I still have a lot to do, such as the various mode settings etc. but I am making good progress I think.

Please post it here when you are ready.

FYI I also added this to the Siglent SDM30xxxx file so that it returns back to local mode when quitting the app: #finalCmd abort;*cls;*rst

I will add this to the definition file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 05:00:05 am
Is there a button type that toggles states ?

What I am wanting is a button for On/Off without having to use two buttons, much like the ButtonsOn version that has the indicator but a single button that can toggle between two states, change its button text, and change its activated output to toggle commands, so you can send a 0 or 1 just like a checkbox etc.

I wanted to use a button like this for the SDL1030X definition I am making, to have features such as Load On/Off, Short On/Off, Remote Sensing On/Off etc.

No, but you can use checkbox (Not recommended for on/off, but fine for the other settings).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 09:14:16 am
V1.84 is up
A lot of small additions and fixes.
   Fixed: (I hope) A problem showing script list popup
   Added: Table "Goto value" value move the view to the value that is closet to specified value in column.
   Added: Table goto min/max move the view to the highest/lowest value in a column.
   Changed: Table numeric format selection changed to match "Current values" numeric format selection (They adjust the same global format).
   Added: Numeric format can be changed on "Current values", this is a global change similar to #VALUEFORMAT command.
   Added: Menus on Readout shows selected value
   Added: Readout support one larger text size (This could be done from scripting, but not from menu)
   Fixed: Script layout generation did not save transparency on Readout correctly
   Added: "#cmdSetup multi combobox" and :string: tag support for multi control.
   Added: Alarm popup can also be set on LogEvent and script done
   Added: Support "Math" channels in Grid panel popup
   Added: Support "Math" channels in Param sweeper popup, breaker
   Added: Support "Math" channels in Log event popup
   Added: Support "Math" channels in Auto hold popup

(https://lygte-info.dk/pic/Projects/TestController/DocTable/Decimals.png)

The right click menu on the table page is changed and has some goto functions.

(https://lygte-info.dk/pic/Projects/TestController/DocReadout/Menu1.png)

The right click menu on Readout shows what is selected and has a local format override.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 09:43:23 am
and to explore Test Controller's scripting capabilities.

Not all scripting is documented, you can switch into programming mode with #calc . When this is used in a text block (Like log window or a loaded script file, but not command line) it gives access to all the scripting. This includes (all can be nested):
if ... ... elseif ... ... else ... endif
for ... to ... do ... endfor
foreach ... in ... do ... endforeach
repeat ... until ...
while ... ... endwhile

You can find some examples in KeysightU1461A.txt and Keysight344xxA.txt
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on October 14, 2021, 05:55:23 pm
V1.84 is up
   Fixed: (I hope) A problem showing script list popup

The Script List popup is indeed fixed.  Thank you for the quick response and bugfix!  I've noticed in that popup that the "Lines" column is highlighted in red for some of my scripts--what does that signify?

Not all scripting is documented, you can switch into programming mode with #calc .

<snip>

You can find some examples in KeysightU1461A.txt and Keysight344xxA.txt

Thanks for this tip!  Because I wasn't focused on instrument definitions--Test Controller helpfully already includes definition files for all of the instruments I possess--I hadn't thought to look very closely at those definition files for examples of TC's more advanced scripting capability.

The examples prompt another question:  I've noticed that end-of-statement semicolons are inconsistently applied in various examples, and my experimentation with it suggests that the script interpreter doesn't really much care about requiring a semicolon as a statement delimiter (but, obviously, it requires a semicolon to signify a comment).  What is the scripting language's grammar for the end-of-statement semicolon?  Is this something I should pay attention to?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 14, 2021, 06:10:44 pm
I've noticed in that popup that the "Lines" column is highlighted in red for some of my scripts--what does that signify?

That TC has a problem with them.

The examples prompt another question:  I've noticed that end-of-statement semicolons are inconsistently applied in various examples, and my experimentation with it suggests that the script interpreter doesn't really much care about requiring a semicolon as a statement delimiter (but, obviously, it requires a semicolon to signify a comment).  What is the scripting language's grammar for the end-of-statement semicolon?  Is this something I should pay attention to?

My usual languages are C++ and Java, both requires a semicolon, this means I nearly always put one after a statement. To avoid getting a lot of errors due to that the TC "programming" language accept semicolons, but do not require them.
note:
Scripting language is commands starting with #
"Programming" language is another interpreter that is invoked at the places where expressions can be used. For TC I have only documented the functions and operators, not that it is mostly a programming  language.

The semicolon at the start of a line works with the scripting language interpreter, but not with the "Programming" language, there it is // anywhere on the line.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 14, 2021, 11:32:47 pm
I noticed that if my internet connection is being crap that the app doesn't launch, the TC window opens but stays blank, until the internet is available.

Internet where I am is pretty bad, sometimes it is fine, other times it is so slow it cant even load an email.

Why does the app not load until the internet is OK ? is this something that can be improved / removed?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 04:38:31 am
I noticed that if my internet connection is being crap that the app doesn't launch, the TC window opens but stays blank, until the internet is available.

Internet where I am is pretty bad, sometimes it is fine, other times it is so slow it cant even load an email.

Why does the app not load until the internet is OK ? is this something that can be improved / removed?

The program downloads a couple of files from the internet, there is a backup of them in home_dir/TestController/Settings/
If it cannot download the files from the internet the backup is used.

But TC is obvious very bad at detecting your bad connection and uses way to much time on trying to download the files, instead of using the backup.

I will try if I can improve that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 05:19:43 am
I have reduced the timeout on the download, please try this .jar file (It is used to replace the release .jar file in TC):

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 15, 2021, 06:55:33 am
That seems better, after a few seconds the TC window populated.

I have another question / feature request.

I have found that the Siglent SDL10xxx load returns TWO different sets of modes, one for constant modes, and one for dynamic modes, each with a different SCPI query.
This is making it hard to make a nice Setup window as the last mode used by each stays set even if using the secondary mode, for example one returns VOLTAGE (constant mode) and the other returns CURRENT (dynamic mode) at the same time !

It seems Siglent don't have a SCPI command to know what the currently active mode is overall!

I tried using selectors which does a nice job when switching modes, but due to the parallel modes the SDL returns THREE different modes at the same time.

Specifically:
Normal mode functions you send :SOUR:FUNC? (which returns CURR,VOLT,RES,POW,LED)
but if you want the secondary functions you send :SOUR:FUNC:TRAN? (which also returns CURR,VOLT,RES,POW, but for the Dynamic modes)
and then to make it even worse there is a battery mode which is :SOUR:BATT:FUNC? (which returns 0,1).

So basically what I would want is a selector that is based upon the last mode button that was pressed to track the last chosen mode, so it doesn't rely on what is returned from a SCPI query.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 15, 2021, 07:10:39 am
Another question..
I am using this (and similar) in the setup window to get the present settings to give an overview, is there a way I can control the number of decimal places it shows using this ? I would like to reduce it to 3 or 4 places for this display.

Code: [Select]
#cmdSetup info Voltage
:read: :SOUR:VOLT:LEV:IMM?
Volts
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 07:26:59 am
Another question..
I am using this (and similar) in the setup window to get the present settings to give an overview, is there a way I can control the number of decimal places it shows using this ? I would like to reduce it to 3 or 4 places for this display.

Code: [Select]
#cmdSetup info Voltage
:read: :SOUR:VOLT:LEV:IMM?
Volts

Doing something like this after the :read: line:
:readmath: formatDouble(value,1,9,1,3)
or
:readmath: formatSI(value,4)

Will probably do it.
Manual for functions: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble)


It will take a bit longer before I have a answer for you previous question. Not being able to read the full mode is rather problematic, because TC will not know the initial condition of the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 08:02:05 am
So basically what I would want is a selector that is based upon the last mode button that was pressed to track the last chosen mode, so it doesn't rely on what is returned from a SCPI query.

There is a way to get around this, this requires using the SCPIx or Ascii driver, i.e. adding "#driver SCPIx" to you definition.
This enables a extra layer in the communication where you can have variables, making it possible to do something like this:

#scpiCmd myMode tx
:setvar: myMode=inputValue

#scpiCmd myMode? txrx? valid_SCPI_command?
:readmath: (myMode)

But to avoid a fault if myMode? is used before the variable is defined, you have to override on of your initial commands and add a :setvar: myMode="" to it.

I will add a "none" and "none?" mode to scpiCmd, this way it is not necessary to use dummy commands.

You will probably redefine all your mode commands to use the "#scpiCmd mode_command tx mode_command" and then place a ":setvar: line below each of them with the mode you want to save for local usage.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 11:49:53 am
A new test version is uploaded, link is the same as before.

The two commands from before can now be done this way:

#scpiCmd myMode none
:setvar: myMode=inputValue

#scpiCmd myMode? none?
:readmath: (myMode)

The :setvar: do not need its own command, but can be added to other #scpiCmd like this:

#scpiCmd :SOUR:FUNC tx :SOUR:FUNC
:setvar: myMode="Regular_"+inputValue
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 15, 2021, 02:22:54 pm
I had a tinker with it but couldn't figure out how to make the SCPIx work to track the modes, I don't understand it well enough yet.

The code you suggested for adjusting the number of decimal places worked fine, that display is much tidier now.

I have attached the current version of the definition file for the Siglent SDL1030X in case anyone has a unit and want to try it out. (it SHOULD also work with the SDL1020X-E, SDL1020X, SDL1030X-E).

NOTE I still have more features to add to this, such as Battery, OCPT, OPPT testing modes, I will post an updated file once I have those completed, I still also need to get the improved switching of the setup window figured out so it tracks ALL modes, not just CC,CV,CR,CP,LED
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2021, 03:06:31 pm
I had a tinker with it but couldn't figure out how to make the SCPIx work to track the modes, I don't understand it well enough yet.


Add (This requires V1.86 to work):
#driver SCPIx

#scpiCmd :SOUR:FUNC tx :SOUR:FUNC
:setvar: myMode=inputValue

#scpiCmd :SOUR:FUNC:TRAN tx :SOUR:FUNC:TRAN
:setvar: myMode="tran"+inputValue


#scpiCmd myMode? none?
:readmath: myMode

#initCmd :SOUR:FUNC CURR

Then try the command "myMode?" from the command line when you select the different modes.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 15, 2021, 10:36:25 pm
Im still not having much luck, the code worked OK to track a cmdMode button mode change, but was blocking the commands from getting to the instrument.

What I would really like is to be able to do this:
Code: [Select]
#cmdMode Constant_Current CURRENT
:SOUR:FUNC CURR;[*OPC]
:setvar: myMode="Current"

If it were possible to just tack on a variable handler to the cmdMode function it would solve the problem, as then the mode selection buttons would still work and it could track the last button pressed, if this could be added to all button controls (for cmdMode, cmdSetup) to ease tracking of control clicks it would be great as then people can use it for various tasks.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 15, 2021, 11:22:16 pm
I think I might have made some progress, now I seem to understand what #scpiCmd is actually doing.

I am now sending a flag as a SCPI command, which scpiCmd is detecting and then stripping out of the query.

Code: [Select]
#cmdMode Constant_Current CURRENT
:SOUR:FUNC CURR;[*OPC];ModeCC

I am then using this to catch it and set the variable:
Code: [Select]
#scpiCmd ModeCC none?
:setvar: myMode="CC"

The next issue is I need to get this myMode variable to display on the setup page to replace the existing text, but for whatever reason it doesn't show up ?

Code: [Select]
#cmdSetup info Present_Mode
:readmath: myMode
:updatemodechange:


*****************************
UPDATE 1
I changed to the below code, it now displays on the page...yay!
Code: [Select]
#cmdSetup info Present_Mode
:read: myMode?
:updatemodechange:

Now back to trying to figure out how to have a selector for the setup window... I might actually be able to do this LOL.


******************
UPDATE 2 !

IT WORKS !

I am using this selector now and it is switching the setup box correctly:
Code: [Select]
#cmdSetup selector Mode_settings
:read: myMode?
:updatemodechange:
CC CC.
CV CV.
CR CR.
CP CP.
LED LED.
Dyn_CC Dyn_CC.
Dyn_CV Dyn_CV.
Dyn_CR Dyn_CR.
Dyn_CP Dyn_CP.
;Batt Batt.
;OCPT OCPT.
;OPPT OPPT.


Now I just need to tidy up the code and add the remaining secondary modes Battery, OCPT, OPPT.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 16, 2021, 12:33:54 am
Is there a way of creating a whitespace or a solid line in the Setup window?

I would like to add some spacing/seperation between some sections on the Setup window above the Load off/on buttons (see attached pic)

I was also wondering if there is a way to add text like "info" to the Mode window, I was thinking the currently selected mode would be best displayed in the mode window as a header to the buttons, or is there a way of highlighting a button for the current mode ?

I also noticed that the auto width isn't handling the text below the buttons, it is pushing the contents wider... but if I can move that text to the Mode window instead that doesn't matter.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 16, 2021, 05:10:03 am
Is there a way of creating a whitespace or a solid line in the Setup window?

I would like to add some spacing/seperation between some sections on the Setup window above the Load off/on buttons (see attached pic)

No, generally it is best to keep the window as compact as possible, user may need to have multiple windows open.

I was also wondering if there is a way to add text like "info" to the Mode window, I was thinking the currently selected mode would be best displayed in the mode window as a header to the buttons, or is there a way of highlighting a button for the current mode ?

No, mode window only support buttons and a checkmark

I also noticed that the auto width isn't handling the text below the buttons, it is pushing the contents wider... but if I can move that text to the Mode window instead that doesn't matter.

Add a :layout: tag to the info control.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 16, 2021, 11:31:51 am
Is there a way of creating a whitespace or a solid line in the Setup window?

I would like to add some spacing/seperation between some sections on the Setup window above the Load off/on buttons (see attached pic)

No, generally it is best to keep the window as compact as possible, user may need to have multiple windows open.

I decided to add a separator anyway:

(https://lygte-info.dk/pic/Projects/TestController/Controls/separator.png)

#cmdSetup separator -
2 100 Solid

The first number if thickness of line, the second number is how many percent of form width is must fill.
The third value is one of: Solid, Dual, DashedShort, DashedLong, Raised, Sunken

The link to the .jar file is the same again.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 16, 2021, 11:57:03 am
Excellent, thank you, that will help me tidy up the appearance of the window.

I have pretty much finished the definition file, I’m just cleaning up and tweaking bits here and there now, adding the separator will be part of it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 16, 2021, 12:12:26 pm
I have pretty much finished the definition file, I’m just cleaning up and tweaking bits here and there now, adding the separator will be part of it.

Looking at you post with the example, my cleaning up would include:

For items with 2 or 3 possibilities, use radio buttons, not combo boxes (They require only one click to change).
Split the configuration onto two pages, to make the window smaller.

You do, of course, not have to follow this, it is only what I would have done.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 16, 2021, 03:14:11 pm
I just had another idea (sorry!)

For the cmdMode window, can you add something SIMILAR to the comboboxHot?

What I had in mind is a menu that appears like comboboxHot but has a different function, instead of handling a value with :read: :write: etc it sends the SCPI command, this could then replace a stack of buttons in the mode window making it a lot smaller, and would also have the advantage of showing you the active mode as well.

Something like this:
Code: [Select]
; Item formatting: Menu Item Display Text, SCPI Command
#cmdSetup scpicomboboxHot Mode
CC :SOUR:FUNC CURR;[*OPC]
CV :SOUR:FUNC VOLT;[*OPC]
CP :SOUR:FUNC POW;[*OPC]
CR :SOUR:FUNC RES;[*OPC]
Batt :SOUR:BATT:MODE 1;[*OPC]
Dyn_CC :SOUR:FUNC:TRAN CURR;[*OPC]

In fact thinking about it, you could make this a more generalised control and use it in both the cmdMode and cmdSetup window too as I can see potential uses there as well.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 16, 2021, 03:40:32 pm
I just had another idea (sorry!)

I like getting ideas, but do not expect I will use all of them.

For the cmdMode window, can you add something SIMILAR to the comboboxHot?

What I had in mind is a menu that appears like comboboxHot but has a different function, instead of handling a value with :read: :write: etc it sends the SCPI command, this could then replace a stack of buttons in the mode window making it a lot smaller, and would also have the advantage of showing you the active mode as well.

Something like this:
Code: [Select]
; Item formatting: Menu Item Display Text, SCPI Command
#cmdSetup scpicomboboxHot Mode
CC :SOUR:FUNC CURR;[*OPC]
CV :SOUR:FUNC VOLT;[*OPC]
CP :SOUR:FUNC POW;[*OPC]
CR :SOUR:FUNC RES;[*OPC]
Batt :SOUR:BATT:MODE 1;[*OPC]
Dyn_CC :SOUR:FUNC:TRAN CURR;[*OPC]

I cannot see that, the cmdMode do support a bit more than buttons and when I get around to multichannel DMM's I expect even more control types.


In fact thinking about it, you could make this a more generalised control and use it in both the cmdMode and cmdSetup window too as I can see potential uses there as well.

You can do the above in #cmdSetup, the parameter to :write: can be reduced to #, this will directly send the what you have defined.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 16, 2021, 07:38:49 pm
The difference with what I suggest is that it can send a completely different type of SCPI command for each menu item selection, which is different to the existing menu which sends different values to the same command.

Doing it this way would offer a different kind of control to its functionality, there is nothing wrong with the existing menu types, this one would just work in a different way.

For example the device I’ve been making the definition for uses 5 different kinds of SCPI commands for mode selections, any/all of which can be on at the same time, so the existing menu doesn’t allow for that situation from what I can tell, the example code I gave shows each menu selection with different SCPI mode definitions that this device uses, those were just some of them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 16, 2021, 07:50:03 pm
The difference with what I suggest is that it can send a completely different type of SCPI command for each menu item selection, which is different to the existing menu when sends different values to the same command.

Doing it this way would off a different kind of control to its functionality, there is nothing wrong with the existing menu types, this one would just work in a different way.

With #cmdSetup the :write: tag can be used to send a different command for each selection, the normal use of only having the parameter for a selection is to allow the :read: command to match entries.
Anyway I got an idea from your ideas and I will look at it.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 16, 2021, 09:39:51 pm
Attached is my (hopefully) finished Rev 1.0 Siglent SDL1030X definition, which should work with the SDL1020X-E, SDL1020X, SDL1030X-E, SDL1030X

File is named "Siglent SDL10xxXxx.txt" to reflect that it should work on the entire series.

Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 17, 2021, 06:16:09 am
I am now working to try and make a definition for the East Tester ET4401 (and similar) LCR meters.

I have a control interface built, but I am having trouble trying to read values from it, examples of the SCPI query are shown below, it returns two sets of values at once with a single query.

I don't know how to split out the individual data segments from the response and allocate them to values, obviously this is made more complicated by the changing dual modes as well.



Code: [Select]
;; Found Zc ET4401 on STM32 Virtual COM Port (cu.usbmodem5D11) sn: V1.00.1942.009
fetc?
;; Cs,0pF,ESR,--OL--
fetc?
;; Cs,-8pF,ESR,-539.8M¦¸
fetc?
;; Ls,-5.369MH,ESR,--OL--
fetc?
;; Zs,--OL--,ESR,--OL--
fetc?
;; Rp,--OL--,X,--OL--
fetc?
;; Rs,--OL--,ESR,-943.3M¦¸
fetc?
;; Cp,0pF,X,58.64M¦¸
fetc?
;; Cp,-1pF,D,3.7414
fetc?
;; Cp,-1pF,Q,0.3193
fetc?
;; Cp,-1pF,¦È,163.35deg
fetc?
;; Cp,-1pF,ESR,-547.6M¦¸
fetc?
;; DCR,--OL--,-,------
fetc?
;; ECs,-97.22F,ESR,-0.0018¦¸
fetc?
;; DCR,0.000¦¸,-,------

These are the main primary 1st function modes of operation, and have series and parallel suffixes as seen in the example above:
Code: [Select]
Auto AUTO
Inductance L
Capacitance C
Elecrolytic_Capacitance ECAP
AC_Resistance R
DC_Resistance DCR
Impedance Z



These are the 2nd function modes:
Code: [Select]
ESR ESR
Dissipation D
Reactance X
Quality_Factor Q
Angle THR
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 06:35:33 am
I have a control interface built, but I am having trouble trying to read values from it, examples of the SCPI query are shown below, it returns two sets of values at once with a single query.

I don't know how to split out the individual data segments from the response and allocate them to values, obviously this is made more complicated by the changing dual modes as well.

You might get away with
#askValuesReadFormat xsxs

If you use the same command for mode it gets a bit more complicated:
#askModeMathFormat getElement(value,0)+getElement(value,2)

The auto mode is not supported at the current time. The problem is that TC will not change used values/columns automatic, I only do that for handheld DMM's.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 06:36:08 am
Attached is my (hopefully) finished Rev 1.0 Siglent SDL1030X definition, which should work with the SDL1020X-E, SDL1020X, SDL1030X-E, SDL1030X

File is named "Siglent SDL10xxXxx.txt" to reflect that it should work on the entire series.

Thanks, I will include it in next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 10:54:56 am
I am now working to try and make a definition for the East Tester ET4401 (and similar) LCR meters.

New version again, now this works:

#value Capacity_P F SI Cp
#value Capacity_S F SI Cs
#value Inductance H SI Ls,Lp
#value ESR ohm SI ESR
#value Impedance ohm SI X
#value Impedance ohm SI Zs

#askValues value?              <- Replace with your command
#askValuesReadFormat xsxs

#askMode value?              <- Replace with your command
#askModeMathFormat getElement(value,0)+";"+getElement(value,2)

#modeFromValue getElement(value,0)+";"+getElement(value,2)

#cmdMode Cs Cs cmd
#cmdMode Cp Cp cmd
#cmdMode Ls Ls cmd
#cmdMode Lp Cp cmd
#cmdMode Zs Zs cmd
#cmdMode Zp Zp cmd
#cmdMode ESR ESR cmd
#cmdMode ohm ohm cmd

cmd must be a command to the meter.

You can get the actual modes with:
=deviceMode(device_handle_in_quotes)

Note: TestController supports multiple modes at the same time it is what I use above, but it is nearly untested.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 11:27:20 am
Another note:

You may want to add a:

#charset UTF-8

to your definition
This will probably fix the strange characters.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 17, 2021, 08:57:14 pm
Thanks for the charset hint, I tried a few different ones and in this case the only one that seemed to at least show the chars was #charset ISO-8859-1, UTF-8 didn't like those odd chars and just showed ? for them.

Is there a way of passing through a raw string with the #askValuesReadFormat function? I'm currently using uuuu, I am trying to grab all 4 fields to see both of the modes as a row value (can it even do that?)

I am able to now at least see MOST of the returned values, but anything with a symbol is failing, IE values with Ω (or some mangled up version of it) are failing.

Can you add (or does it already have an undocumented) a regex filter to #askValuesReadFormat so it will only return [0-9], commas, and the decimal place (and maybe any SI units)?, so it can remove any other junk chars and fix the formatting.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 09:39:24 pm
Is there a way of passing through a raw string with the #askValuesReadFormat function? I'm currently using uuuu, I am trying to grab all 4 fields to see both of the modes as a row value (can it even do that?)

I am able to now at least see MOST of the returned values, but anything with a symbol is failing, IE values with Ω (or some mangled up version of it) are failing.

You can get raw data with some of the functions in the SCPIx driver. In the last version I posted (V1.88) the s format works (In the example above I used the answer string you showed and it worked nicely). The #getValues can only handle numeric data.
If you do not find a matching charset, you can use the replace() function to replace the strange characters (Mostly the micro symbol) with something more sensible.

If you can start TestController from the command line you can add a debug option to it (Check the .bat file), then it will show all received data in hex and also how it process them.

Can you add (or does it already have an undocumented) a regex filter to #askValuesReadFormat so it will only return [0-9], commas, and the decimal place (and maybe any SI units)?, so it can remove any other junk chars and fix the formatting.

Something like getMatch(value,"[0-9.+-]+") qualifies for that.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 17, 2021, 10:01:43 pm
progress...

using
Code: [Select]
#value data SI
#askValuesReadFormat s
#askModeMathFormat getMatch(getElement(value,0),"[0-9.+-]+")

is at least giving me value for all modes now, hopefully I can now get the rest done now LOL.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2021, 10:14:44 pm
is at least giving me value for all modes now, hopefully I can now get the rest done now LOL.

The example I posted a few posts back gave both values and selected columns with the correct units. I programmed some of you strings into a Arduino for testing it.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 18, 2021, 12:39:54 am
Well, for whatever reason the selectors on the values are not working (it was like this the entire time, so it didn't break), I rewrote my code to use the ones you gave in your example Cs, Cp,Zs etc. but the values do not appear in the current values list unless I remove the selector from it, which obviously means the units/modes are not correctly shown, and likely means I am missing something and doing something dumb.

Code: [Select]
#cmdMode Ls Ls
FUNC:IMP:A L;FUNC:IMP:EQU SERial;

#cmdMode Lp Lp
FUNC:IMP:A L;FUNC:IMP:EQU PALlel;

#cmdMode Cs Cs
FUNC:IMP:A C;FUNC:IMP:EQU SERial;

#cmdMode Cp Cp
FUNC:IMP:A C;FUNC:IMP:EQU PALlel;

#cmdMode ECs ECs
FUNC:IMP:A ECAP;FUNC:IMP:EQU SERial;



#cmdMode Rs Rs
FUNC:IMP:A R;FUNC:IMP:EQU SERial;

#cmdMode Rp Rp
FUNC:IMP:A R;FUNC:IMP:EQU PALlel;

#cmdMode Zs Zs
FUNC:IMP:A Z;FUNC:IMP:EQU SERial;

#cmdMode Zp Zp
FUNC:IMP:A Z;FUNC:IMP:EQU PALlel;

#cmdMode DCR DCR
FUNC:IMP:A DCR



#cmdMode ESR ESR
FUNC:IMP:B ESR;[400];

#cmdMode D D
FUNC:IMP:B D;[400];

#cmdMode X X
FUNC:IMP:B X;[400];

#cmdMode Q Q
FUNC:IMP:B Q;[400];

; this one might need the handle changing, as the meter returns this: ¦È for the phase symbol
#cmdMode Angle Deg
FUNC:IMP:B THR;[400];

This is what else I am using:
Code: [Select]
#value Capacity_P F SI Cp
#value Capacity_S F SI Cs,ECs
#value Inductance H SI Ls,Lp
#value Impedance ohm SI Zs,Zp,Rs,Rp
#value ESR ohm SI ESR
#value Impedance ohm SI X


#askValuesReadFormat xsxs

#askModeMathFormat getMatch(getElement(value,1),"[0-9.+-FH]+")+getMatch(getElement(value,3),"[0-9.+-FH]+")


I tried using #modeFromValue getElement(value,0)+";"+getElement(value,2) but for whatever reason on a couple of mode it resulted in the returned readings flickering on/off a few times a second, as thought it was only seeing every other reading, I have commented that back out for the time being, as my current issue is the selector for #value not working.

Another interesting issue is that despite sending two commands at once to set the mode and series/parallel modes, the second command is being ignored by the meter, I tried using various [400] delays between the commands etc. but that didn't work, I went from [1] up to [2000] without any change, BUT if I send two commands together from the tc window instead it works, responding to the first command, then the second command shows up and the second response shows up.

I am also seeing an odd behavour with this meter where sometimes it ignores commands completely, so I have to push the button again, sometimes more than once.

This is connected via USB, in case that is of consequence.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 18, 2021, 06:02:19 am
Well, for whatever reason the selectors on the values are not working (it was like this the entire time, so it didn't break)

If you are using this line:

Code: [Select]
#askModeMathFormat getMatch(getElement(value,1),"[0-9.+-FH]+")+getMatch(getElement(value,3),"[0-9.+-FH]+")

I am not surprised. It uses the values instead of the range as selectors.

I tried using #modeFromValue getElement(value,0)+";"+getElement(value,2) but for whatever reason on a couple of mode it resulted in the returned readings flickering on/off a few times a second, as thought it was only seeing every other reading, I have commented that back out for the time being, as my current issue is the selector for #value not working.

For #modeFromValue to work it must have exactly the same parameters as #askModeMathFormat or you will get the flickering.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 18, 2021, 08:47:05 am
Attached is my current version for the ET4401/ET4402/ET4410, so far I cannot get the modes to select the #value, I have been trying lots of different things, some of the code attempts are still in the file.

Maybe take a look and try to work out what stupid thing I am doing wrong! This file is returning values in the current format, although I'm not sure they are exactly correct as things like the F of uF and H in uH in the values is missing, so they just show as u or m.

Maybe anyone with an East Tester ET4401 or ET4402 or ET4410 could try this file out and see how it works for them, it should work on all three models, once I have this file working properly I will also do a modified version to allow for the ET4501, ET4502 and ET4510 variants which are very similar.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 18, 2021, 09:05:12 am

Code: [Select]
; THIS ONE WORKS
#askModeMathFormat getMatch(getElement(value,1),"[a-zA-Z0-9.+-]")+getMatch(getElement(value,3),"[a-zA-Z0-9.+-]")

No, it do not, it is a check of mode, but it read the numeric values, you have to use (The ; makes it two simultaneous modes):
#askModeMathFormat getElement(value,0)+";"+getElement(value,2)
#modeFromValue getElement(value,0)+";"+getElement(value,2)

You cannot get any mode change to work before this is correct.
Use:
=deviceMode("ET4401")
On the command line to see your actual mode string that TC uses.

Getting the values from the answer is done nicely by:
#askValuesReadFormat xsxs

It do not need any help from a
#askValuesMathFormat    <-- Note this starts with askValue, not askMode

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 18, 2021, 09:24:05 am
Maybe take a look and try to work out what stupid thing I am doing wrong! This file is returning values in the current format, although I'm not sure they are exactly correct as things like the F of uF and H in uH in the values is missing, so they just show as u or m.

I forgot to comment on this.

Only the SI prefix is included in the value, the unit (F/H/ohm) is the unit and is supposed to be part of the column information.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 18, 2021, 09:53:45 am
When you get the columns working, you will hit another snag with the different readouts: They do not track.

To fix this I am working on a dual readout for GridPanel that will track the two first channels on a device:

(http://lygte-info.dk/pic/cpf6/ET4401-1.png)
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 18, 2021, 09:03:44 pm
I am pretty sure I am battling poor behaviour of this meters communication system, (you cant send it two commands one directly after the other as the second is ignored)

I cant get rid of the flickering readings in the current values display, and I cant get that to display the 2nd value with a selector, if I put an empty selector at the end of the values list then I will get a reading from that one.

I am getting "C,X" from the command line check for example, and yet only the C will be selected, the X is not, but even then it is with flickering readings, if I comment out the #modefromvalues the flickering goes away but the selector breaks.

This meter is driving me nuts.

If I give up on trying to read the modes at all I can get both readings out of it, it just doesn't know what they are referenced to.

Interestingly commenting out the #askmodemathformat has absolutely no effect on any of this, I can try it with and without it, and it makes no difference.

I am really at the point of giving up with this thing and just accepting that the current values won't have a mode.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 01:05:50 am
Attached is my initial release for the ET4401, ET4402, ET4410, ET4501, ET4502 and ET4510, it has only been tested on the ET4401 but should work on all the others too.

It isn't perfect, but it is 99% there.

It shows the primary function OK, but the 2nd function "Angle" is not being linked to a mode, it is readable however.

File is named: East Tester ET4xxx to reflect that it should work on the entire series.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 04:47:17 am
Attached is my initial release for the ET4401, ET4402, ET4410, ET4501, ET4502 and ET4510, it has only been tested on the ET4401 but should work on all the others too.

It isn't perfect, but it is 99% there.

It shows the primary function OK, but the 2nd function is not being linked to a mode, it is readable however, it just isn't flagged as to what it is doing, IE ESR,D,Q,X,Angle.

File is named: East Tester ET4xxx to reflect that it should work on the entire series.

Change #askMode :FUNC:IMP:A?;
To:
Code: [Select]
#askMode :FETC?
#askModeMathFormat getElement(value,0)+";"+getElement(value,2)
#modeFromValue getElement(value,0)+";"+getElement(value,2)
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 05:08:06 am
It is replacing the first mode name with the 2nd function name (but still showing the first functions readings), commenting out #modefromvalue (leaving #askmodemathformat on) has no effect on how this is working, in case that is s clue.

If I comment out the fallback #value 2nd I don't get a 2nd reading at all, so its not that causing a clash.

This meter is rather frustrating to deal with... when I first starting writing the definition for it, it was going really well, within a couple of hours I was controlling everything... reading it was another story!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 05:24:45 am
It is replacing the first mode name with the 2nd function name (but still showing the first functions readings), commenting out #modefromvalue (leaving #askmodemathformat on) has no effect on how this is working, in case that is s clue.

If I comment out the fallback #value 2nd I don't get a 2nd reading at all, so its not that causing a clash.

I programmed these into a Arduino:
Cs,-8pF,ESR,-539.8M¦¸
Ls,-5.369MH,ESR,--OL--
Zs,--OL--,ESR,--OL--
Cp,0pF,X,58.64M¦¸
Cs,102nF,X,0.87¦¸
And they works with the above specification (Reply #1972)

You could try making a simple test definition (You will have to move your real definition out of the directory):
Code: [Select]
#idString ZC,ET4401
#name Zc ET4401
#handle ET4401
#port comfixedbaud
#baudrate 115200

#value Capacity_P F SI Cp
#value Capacity_S F SI Cs
#value Inductance H SI Ls,Lp
#value ESR ohm SI ESR
#value Impedance ohm SI X
#value Impedance ohm SI Zs

#askValues :FETC?
#askValuesReadFormat xsxs

#askMode :FETC?
#askModeMathFormat getElement(value,0)+";"+getElement(value,2)
#modeFromValue getElement(value,0)+";"+getElement(value,2)

With this you will have to change mode from the command line, but if it works you can put it into your real definition.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 05:51:54 am
OK, your code did work, I forgot to change the modes to include the series/parallel flag, it is now FINALLY working !

Almost.

When in the phase/angle 2nd mode the symbol is not being handled, I think the vertical bar is a representation of a shift/alt keybress, followed by the special E char, I haven't been able to figure out how to detect that.

That (I think) would be the last problem to solve.

Code: [Select]
fetc?
;; Ls,-816.80uH,¦È,-81.61deg
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 06:03:44 am
When in the phase/angle 2nd mode the symbol is not being handled, I think the vertical bar is a representation of a shift/alt keybress, followed by the special E char, I haven't been able to figure out how to detect that.

That (I think) would be the last problem to solve.

Code: [Select]
fetc?
;; Ls,-816.80uH,¦È,-81.61deg

Use the replace function:

Code: [Select]
getElement(value,0)+";"+replace(getElement(value,2),"¦È","phi");

You will probably also have to do one for u on the #askValues


When using special characters in the file, it is best if you have a way to secure the file includes a BOM mark. This is something your editor must do. If you cannot do it, I need to now exactly what character it is (Just now is see an E with a forward mark and one with a backward mark) and I can add the BOM mark to the file.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 06:23:57 am
I don't know what the char actually is, I have tried copying and pasting it from the command window after doing a fetc? but that didn't help.

I have this set as the last selector (apart from the fallback one), none of those are matching (THR is the 2nd mode selection flag)

#value Angle Deg D2 phi THR ¦È È

I pasted the letter into google, heres the wiki page: https://en.wikipedia.org/wiki/È
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 06:40:21 am
I don't know what the char actually is, I have tried copying and pasting it from the command window after doing a fetc? but that didn't help.

I have this set as the last selector (apart from the fallback one), none of those are matching (THR is the 2nd mode selection flag)

#value Angle Deg D2 phi THR ¦È È

I pasted the letter into google, heres the wiki page: https://en.wikipedia.org/wiki/È

That is not a valid specification, you have to use:
#value Angle Deg D2 phi,THR,¦È,È

But it is best to not keep the È by using the replace function to change it. The definition is more readable that way.

i.e.
#value Angle Deg D2 phi,THR

and then use the replace() on #askModeMathFormat and #modeFromValue

Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 06:56:15 am
I updated to last file I uploaded a few posts ago, that is the latest version with everything apart from the angle working (I kept the same Rev number)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 07:08:09 am
I updated to last file I uploaded a few posts ago, that is the latest version with everything apart from the angle working (I kept the same Rev number)

#value is still missing a comma

Try measuring a uF or uH component, I will expect that it will show wrong values, because the µ will not be returned as a µ symbol.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 07:16:36 am
The meter outputs a u not a mu symbol, so that is working ok.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 09:48:35 am
The ¦È is a bit tricky, the easiest way is to use debug mode and pick the hex codes from there. Playing a bit around with the Arduino, I got this:

I tried to look at some charset table and got this (Using hex codes also removes the requirement for a BOM):

#askModeMathFormat getElement(value,0)+";"+replace(getElement(value,2),"\xa6\xc8","PHI");
#modeFromValue getElement(value,0)+";"+replace(getElement(value,2),"\xa6\xc8","PHI");

And changed the #value to

#value Angle Deg D2 PHI,THR

In debug mode (Command: java -jar TestController debugtime=2) TestController shows this for #askMode:
;; 1664.44ms ET4401: Tx <:FETC?>
;; 1665.68ms COM19: Tx: <:FETC?.> 3A 46 45 54 43 3F 0A
;; 1665.74ms COM19: Rx: <Cs,111nF,¦È,0.10¦¸> 43 73 2C 31 31 31 6E 46 2C A6 C8 2C 30 2E 31 30 C2 A6 C2 B8
;; 1665.78ms ET4401: Rx <Cs,111nF,¦È,0.10¦¸>
;; 1673.26ms ET4401: Rx after :readmath: getElement(value,0)+";"+replace(getElement(value,2),"\xa6\xc8","PHI"); <Cs;PHI>


Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 07:55:50 pm
Nice one, that worked.

Everything is now working correctly.

Final version for the East Tester ET4401, ET4402, ET4410, ET4501, ET4502, ET4510 is attached.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 08:10:04 pm
Nice one, that worked.

Everything is now working correctly.

Final version for the East Tester ET4401, ET4402, ET4410, ET4501, ET4502, ET4510 is attached.

Just one detail: You have used Zc as name, not east tester? I suppose I can change that to East Tester (And leave the id string as Zc)?
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 19, 2021, 08:17:54 pm
Good point.

I have just fixed the file, download the file from the last post again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 19, 2021, 08:36:25 pm
Good point.

I have just fixed the file, download the file from the last post again.

Thanks, this definition will also be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 20, 2021, 07:43:16 am
V1.89 is up
With the new devices from TheDefpom and a lot of small improvements
   Added: East Tester LCR meters (Thanks TheDefpom)
   Added: Published doc on GridPanel/SinglePanel
   Added: Device readout (3 types) on GridPanel, will track range changes, useful for multimeters.
   Added: Dual device readout on GridPanel, will track range changes, useful for LCR meters.
   Added: Mode button got a right click menu that can send the same commands as the popup
   Fixed: #askValuesReadFormat s-format could not handle any letters after SI prefix.
   Added: #modeFromValue makes it possible to change mode from a #getValues command.
   Added: Siglent SDL loads (Thanks TheDefpom)
   Added: A separator control for Setup layouts.
   Added: SCPIx/Ascii got a #scpiCmd mode called none/none? that makes it possible to define commands that only do stuff in TC
   Changed: Faster timeout on downloads.
   Changed: Serial update from 2.6.2 to jSerialComm-2.7.0.jar

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DualDeviceReadout.png)

A new tracking readout in GridPanel, this was necessary for LCR meters. These are also useful for multimeters.

(http://lygte-info.dk/pic/Projects/TestController/DocCommands/ButtonModeMenu.png)

The Mode button now has a right click menu with the modes for the selected device. This can save screen estate and is fast to use when only one device need to be controlled.
Title: Support for additional LCR meters?
Post by: C.J.S. on October 20, 2021, 05:29:27 pm
I am new to Test Controller, and have just figured out how I can use this program to log measurement data from my Brymen BM257s DMM and Siglent SDS1104X-E DSO.
Since in the last version support for East Tester LCR meters is added (thanks to TheDefpom), I expect it should be easy to add support for identical LCR meters with different brand name. I happen to know that these East Tester LCR meters are also sold under the Ruoshui brandname:
Ruoshui 4090A = East Tester ET4401
Ruoshui 4090B = East Tester ET4402
Ruoshui 4090C = East Tester ET4410

I own the Ruoshui 4090C. After connecting my RouShui to my PC and selecting the East Tester ET4410 under the Test Controller "Load devices" tab, I get following response after hitting the Reconnect button:

Code: [Select]
;; Start thread for: COM3 - East Tester ET4410
;; COM3: Set params: 115200
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM3: Rx: <ELEC,RuoShui 4090C  ,V1.01.2026.016,V1.12.2035.007,098465905      > 45 4C 45 43 2C 52 75 6F 53 68 75 69 20 34 30 39 30 43 20 20 2C 56 31 2E 30 31 2E 32 30 32 36 2E 30 31 36 2C 56 31 2E 31 32 2E 32 30 33 35 2E 30 30 37 2C 30 39 38 34 36 35 39 30 35 20 20 20 20 20 20
;; STM32 Virtual COM Port (COM3) Device ZC,ET4410 do not match: ELEC,RuoShui 4090C  ,V1.01.2026.016,V1.12.2035.007,098465905
;; COM3: Close
;; Stopping thread for: COM3 - East Tester ET4410
;; COM3: Close

So the id string of my RuoShui is "ELEC,RuoShui 4090C" instead of "ZC,ET4410" of the corresponding East Tester ET4410 device.

What is the best way to make a configuration file for the 3 RuoShui LCR meters mentioned above? Should I just copy the "East Tester ET4xxx.txt" config file and change the id strings and device names to the coresponding strings/names of the RuoShui devices? Or should a new config file be made in which somehow (how?) aliases for the East Tester devices are defined? Can someone please explain or point me to the relevant documentation?
Title: Re: Support for additional LCR meters?
Post by: HKJ on October 20, 2021, 05:50:19 pm
So the id string of my RuoShui is "ELEC,RuoShui 4090C" instead of "ZC,ET4410" of the corresponding East Tester ET4410 device.

What is the best way to make a configuration file for the 3 RuoShui LCR meters mentioned above? Should I just copy the "East Tester ET4xxx.txt" config file and change the id strings and device names to the coresponding strings/names of the RuoShui devices? Or should a new config file be made in which somehow (how?) aliases for the East Tester devices are defined? Can someone please explain or point me to the relevant documentation?

No, the best way is to duplicate all the matching #metadef sections and then modify #idstring, #handle & #name strings, check that it works and then post the modified file here.
Pressing F1 in TestController will open your browser with documentation, there you can find information about the definitions files. The definition file also contains a direct link to the documentation for the file.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 07:02:57 pm
As the brand and model are completely different I would have thought duplicating the file and replacing those parts would be the better way to go.

Just add notes in the file stating it is based on the east tester.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 20, 2021, 07:09:01 pm
As the brand and model are completely different I would have thought duplicating the file and replacing those parts would be the better way to go.

Just add notes in the file stating it is based on the east tester.

As long as they are the same I prefer to keep one definition, this means if anything is fixed in the definition it will be fixed for all of them.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 07:21:38 pm
I have modified the original file to include that meter, which I have attached, please try it.

If it works then the new file can be used instead.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 07:31:44 pm
HKJ I am glad that you added the tracking readouts, I was just about to ask you if you had something for that as changing modes on the LCR meter was requiring multiple displays to be present, I have tried the new tracking display out and it works well, great improvement.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 20, 2021, 08:06:10 pm
HKJ I am glad that you added the tracking readouts, I was just about to ask you if you had something for that as changing modes on the LCR meter was requiring multiple displays to be present, I have tried the new tracking display out and it works well, great improvement.

I did know about the problem and already promised something in post #1983
The single line tracking displays are for DMM's, I know that it is not needed as much, but it is a nice to have and it was not that much work.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 20, 2021, 10:11:51 pm
I have modified the original file to include that meter, which I have attached, please try it.
If it works then the new file can be used instead.

Thanks Defpom,

I have tried your new "East Tester ET4xxx.txt" config file with my LCR meter.
With the new config file my RuoShui 4090C LCR Meter is indeed recognized, and I have verified that I can control the LCR meter with the Mode and Setup windows.
This is illustrated in attached screenshot at the end of this post.

I have a problem however with displaying the readout values (capacitance value and ESR value).
When I select Popups => Readout, the popup windows only shows four dashes ( ---- )
When I select Popups => Grid Panel, the popup windows shows 888888, and nothing is shown after "Select Channel".
I also did not manage to display readout values on tabs "Current values" or Table.
I have only just started to use TestController, so probably I am missing something.

When I start TestController in debug mode, I can see that the values of Cs and ESR are actually read by TestController. The debug window shows the following information:

Code: [Select]
;; Start thread for: COM5 - Ruoshui 4090C
;; COM5: Set params: 115200
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <ELEC,RuoShui 4090C  ,V1.01.2026.016,V1.12.2035.007,098465905      > 45 4C 45 43 2C 52 75 6F 53 68 75 69 20 34 30 39 30 43 20 20 2C 56 31 2E 30 31 2E 32 30 32 36 2E 30 31 36 2C 56 31 2E 31 32 2E 32 30 33 35 2E 30 30 37 2C 30 39 38 34 36 35 39 30 35 20 20 20 20 20 20
;; Found Ruoshui 4090C on STM32 Virtual COM Port (COM5) sn: V1.01.2026.016
;; 90C: Tx <:FETC?>
;; COM5: Tx: <:FETC?.> 3A 46 45 54 43 3F 0A
;; COM5: Rx: <2.14122e-07,0.107718> 32 2E 31 34 31 32 32 65 2D 30 37 2C 30 2E 31 30 37 37 31 38
;; 90C: Rx <2.14122e-07,0.107718>
;; 90C: Rx after :readmath: getElement(value,0)+";"+replace(getElement(value,2),"\xa6\xc8","PHI"); <2.14122e-07;>
Unknown mode: 2.14122e-07
Known modes: ECAP, C, L, Z, R, DCR, ESR, D, X, Q, Deg, AUTO,

Note the line:
Code: [Select]
;; 90C: Rx <2.14122e-07,0.107718>2.14122e-07 is the capacitor value, and 0.107718 is the ESR value. These are the exact values that are shown on the screen of the LCR meter.
But as said before, so far I did not manage to display these value on a popup window on my PC.

Also note the next line:
Code: [Select]
Unknown mode: 2.14122e-07It seems that TestController expects a mode when reading the capacitance value?

Hints on how to display the capacitance value + ESR value are welcome!
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 10:44:04 pm
If you go to the "Current Values" tab you should see the readouts there, this confirms communication is OK.

When you create popoups or grid windows, once you have the display there, you need to right click on it and choose a device or reading to view.

Also the "Active mode:" display in the Setup window isn't perfect, it will only show a mode once you have clicked on one in the Mode window.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 10:48:57 pm
I just looked a bit closer at your Debug info, the modes are not returned with the response so it is not exactly the same as the ET4xxx series, as those return the mode at the same time which is how TC knows how to display the data.

The ET4xxx response is: Mode1,Value1,Mode2,Value2 which is different.

This might need a seperate definition file after all as it is just returning the two values instead.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 20, 2021, 11:17:47 pm
Here is a ROUGH definition for your meter, it may or may not work!

It will not show modes, only the values, but will be a good basis to write the proper definition file.

Make sure you remove the modified East Tester ET4xxx file and return it to original to avoid possible clashes.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 21, 2021, 09:33:25 am
To make the readouts show mode (C/H/ohm/etc.) automatic it is necessary that they are supplied on the line with #askValues?

This can be either a single command that supplies both values and modes or two commands after the #askValues?
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 10:06:41 am
I just looked a bit closer at your Debug info, the modes are not returned with the response so it is not exactly the same as the ET4xxx series, as those return the mode at the same time which is how TC knows how to display the data.

The ET4xxx response is: Mode1,Value1,Mode2,Value2 which is different.

Just to summarize, the responses of the ET4xxx and Ruoshui 4090x on the FETC? command are indeed different.
ET4xxx response is: Mode1,Value1,Mode2,Value2
4090x response is: Value1, Value2
So we can conclude that unfortunately the firmware of the ET4xxx and Ruoshui 4090x is not exactly the same.

The response of the ET4xxxx is more convenient, since it shows immediately the names of the two parameters that are displayed.

Here is a ROUGH definition for your meter, it may or may not work!

It will not show modes, only the values, but will be a good basis to write the proper definition file.

Make sure you remove the modified East Tester ET4xxx file and return it to original to avoid possible clashes.

I can confirm that with your Ruoshui 4090x definition file TC indeed correctly reads out the two values (Primary and 2nd). The values are now displayed on the Current values tab, and can now also be displayed via popups. This is illustrated in the screenshot attached below.

@ Defpom and HKJ, thank you very much for your time, it is much appreciated. I will have a closer look at the 4090x definition file and do some further testing, and see if with my limited coding skills I can find a way to show the parameter (mode) names for the two values that are displayed. The coming few days however I have other things to take care of. I expect to come back after the weekend.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 21, 2021, 10:39:30 am
So we can conclude that unfortunately the firmware of the ET4xxx and Ruoshui 4090x is not exactly the same.

Correct, the question is how different they are. To make a definition you need to know the commands!

The response of the ET4xxxx is more convenient, since it shows immediately the names of the two parameters that are displayed.

For TestController it do not really matter if it has to use one or two commands to get the information, the important part is to get it.

@ Defpom and HKJ, thank you very much for your time, it is much appreciated. I will have a closer look at the 4090x definition file and do some further testing, and see if with my limited coding skills I can find a way to show the parameter (mode) names for the two values that are displayed. The coming few days however I have other things to take care of. I expect to come back after the weekend.

A definition is not really coding or programming, but some programming knowledge may make it easier to understand how it works.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 08:47:11 pm
To make a definition you need to know the commands!
For TestController it does not really matter if it has to use one or two commands to get the information, the important part is to get it.
For your information, I found a PDF document that describes SCPI commands for the RuoShui 4090x LCR meters. I have attached the PDF at the bottom of this message.
The document is not very tidy, but it seems that the information in it is valid for the 4090C meter that I have.
The commands to query the primary and secondary measurement mode are:
FUNCtion:IMPedance:A?
FUNCtion:IMPedance:B?
FUNCtion:IMPedance:EQUivalent?

Below the response on some SCPI queries with the LCR meter set to measure Capacitance + ESR:
Code: [Select]
;; Found Ruoshui 4090C on STM32 Virtual COM Port (COM5) sn: V1.01.2026.016
FETCh?
;; 2.14287e-07,0.146838
FUNCtion:IMPedance:A?
;; C
FUNCtion:IMPedance:B?
;; ESR
FUNCtion:IMPedance:EQUivalent?
;; SERial

With this information is should be possible to update the configuration file for proper display of the measurement modes.

PS (just for background information): I found this SCPI document on the youtube channel (https://www.youtube.com/c/TonyAlbus) of Tony Albus, who is also active on this forum. See video #083.
The youtube video is a review + teardown of the RuoShui 4090C that I own. At the end of the video at circa 21:00 the housing is opened and it is shown that the PCB is labeled "ET44". This label suggests that the meter is designed and manufactured by East Tester, and that these RuoShui meters are the same as the ET44xx meters. However I noticed that the PCB of the RuoShui is actually different from the PCB of the ET4401 meter shown by Defpom in his youtube review + teardown of the ET4401. So even if the specs of the RuoShui and East Tester meters are the same, both hardware and firmware appear to be somewhat different. Another possibility is that we are looking at different PCB revisions that may be used by both brands.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 09:06:26 pm
If the meter is responding to the mode commands and setting changes then the SCPI format is the same, just check the series/parallel mode as I found that command was a bit odd and not quite as per the manual for the ET4xxx, but if that is working too then that part isn't the issue.

The SCPI manual is almost identical to the ET it even has the same typos in it ! the SCPI commands are identical.

The challenge will be tracking the modes (well not that much of a challenge, as it can be tracked when you change modes in TC), so that parts needs to be added to the definition, what I provided was just to get started, I might sit down today and try to add mode tracking to it.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 09:24:22 pm
I agree that the SCPI format of both meters seems to be the same, but as we have seen the response on the FETCh? query of the ET4401 and RuoShui 4090C is different. Hopefully that is the only difference. I am not sure why you say that tracking the modes will be a challenge, since you can query the active operating mode by means of the FUNCtion:IMPedance:A/B/EQUivalent? queries.
Anyway, if you have time and sense (not sure if this is proper English) to add mode tracking, feel free to do so  :). But don't feel obliged.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 09:25:27 pm
Can you post the response from sending the unit:
:FUNC:IMP:A?
and also
:FUNC:IMP:B?

Attached is a small tweak that SHOULD at least give you primary mode detection AFTER changing modes from the window, not the unit.

I am sure that this can be tracked from the :FUNC:IMP:A? and :FUNC:IMP:B? but I am still learning how to do this stuff myself.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 09:41:46 pm
Hi Scott,

These are the responses on FUNC:IMP:A? and B? and EQU?

Code: [Select]
:FUNC:IMP:A?
;; C
:FUNC:IMP:B?
;; ESR
:FUNC:IMP:EQU?
;; SERial

So the same responses as on the longer commands that I posted in my earlier post.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 09:43:50 pm
Can you put the meter into Angle mode and see what it returns for that too?

Attached is a version that MIGHT give you most of the readouts, apart from angle.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 09:55:19 pm
Hi Scott,
After putting the meter in Angle mode I get following respons:
Code: [Select]
:FUNC:IMP:B?
;; THR
I will now try your latest config and after that it is bedtime for me :)
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 09:58:39 pm
The easiest way to see if this is working is to view the "Current Values" tab as you switch between modes from the window.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 10:08:04 pm
I have tried your latest config file, but something seems to go wrong.
The Current values tab now shows only 2nd mode in the Name column, but the value that is displayed corresponds with the primary mode value, but with the decimal on the wrong position (EDIT: the problem with the decimal point was already there before). See screenshot attached below. The second last config had the same problem.

The meter itself shows:
Cs    214.2 nF      (corresponding readout value is 2.142E-7, see previous screenshot)
ESR  0.12   Ohm  (the ESR display actually varies between circa 0.08 and 0.14 ohm)

I am now off to bed. Thanks a lot for your support!

EDIT: Corrections made.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 10:10:58 pm
OK, I am obviously doing this wrong LOL, like I said I am still trying to learn how to do this myself.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 21, 2021, 10:20:02 pm
FYI, I made few EDITs to my previous post. The decimal point issue was there before I think. I am now really off to bed!
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2021, 10:20:16 pm
OK try this version, it probably won't work but its worth a shot LOL.

I have a couple of "fallback" values, Primary and 2nd, if those show up then it isn't working properly.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 22, 2021, 07:12:31 am
OK try this version, it probably won't work but its worth a shot LOL.

I have a couple of "fallback" values, Primary and 2nd, if those show up then it isn't working properly.

I did a few modifications to you try that will improve the possibility it works.
I have not tried doing any simulation with a Arduino, i.e. I can just hope it works.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 22, 2021, 08:55:56 am
I tried the last device file posted by HKJ. It is definitely an improvement, since now the correct mode names (Capacitance and ESR) and units (F and Ohm) are shown, and also the readout values are correct ( 214n  and around 110m ). Only the readout values for Capacitance and ESR are now fast blinking. To illustrate this I made a short recording of the TestController window. The recording can be found in attached zip file. This fast blinking was actually introduced in the last version posted by Scott. The versions before that one did not show this fast blinking behavior.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 22, 2021, 09:09:54 am
Only the readout values for Capacitance and ESR are now fast blinking. To illustrate this I made a short recording of the TestController window. The recording can be found in attached zip file. This fast blinking was actually introduced in the last version posted by Scott. The versions before that one did not show this fast blinking behavior.

Can you do a debug mode and post some logging from it.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 22, 2021, 01:52:11 pm
Hi HKJ and Scott,
I talked about "fast blinking" of the readout values, but a better description would be "fast switching of measurement values on the "Current values" tab between the actual measured value and zero". Anyway, for the moment I will still call this issue "fast blinking".

I figured out that this fast blinking was introduced after Scott modified and uncommented the line that starts with #modeFromValue.

After I figured this out I took the last device file that you posted, and commented out line #173:
;#modeFromValue getElement(value,2)+";"+getElement(value,3);

After this modification the fast blinking was gone, and the presentation of the measurement values on the Current values tab looks OK.
Btw, I noticed that you modified this line in the file that you posted, but the function of this line is not clear to. As said, commenting out this line fixes the fast blinking issue, but other than that I did not notice any change in the way that the measurement values are presented. FYI, also commenting out line #172 that starts with #askModeMathFormat does not seem to have any effect, but since this line does not influence the blinking issue I left this line untouched.

I have attached the updated config file that works OK for me. Detailed description of changes that I made
1) Commented out line #173 that starts with #modeFromValue to avoid the fast blinking
2) Fixed a typo in comment line #209 (:FUNC:IMP:C changed to :FUNC:IMP:B)
3) Updated handle names "4090x" to "RS4090x" (with handle 4090C my meter was called "90C" which I don't like)
4) Commented out lines 146 and 147 (#value Primary and #value 2nd) to get rid of the two superfluous rows in the "Current Values" tab

Again thank you Scott and HKJ for your time, and let me know if you have remarks.

Attachments: Updated config file and screenshot of Current values tab with grid panel popup.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 22, 2021, 02:07:45 pm
I talked about "fast blinking" of the readout values, but a better description would be "fast switching of measurement values on the "Current values" tab between the actual measured value and zero". Anyway, for the moment I will still call this issue "fast blinking".

I figured out that this fast blinking was introduced after Scott modified and uncommented the line that starts with #modeFromValue.

After I figured this out I took the last device file that you posted, and commented out line #173:
;#modeFromValue getElement(value,2)+";"+getElement(value,3);

This line is important when you are in auto mode. TC will not issue a mode check automatically, but this line is used to extract mode information from the #askValues command. This is also the reason for the flashing, the string returned by #modeFromValue and #askMode must match or you get flashing.


After this modification the fast blinking was gone, and the presentation of the measurement values on the Current values tab looks OK.
Btw, I noticed that you modified this line in the file that you posted, but the function of this line is not clear to. As said, commenting out this line fixes the fast blinking issue, but other than that I did not notice any change in the way that the measurement values are presented. FYI, also commenting out line #172 that starts with #askModeMathFormat does not seem to have any effect, but since this line does not influence the blinking issue I left this line untouched.

#askModeMathFormat is used to modify the answer from #askMode, sometimes it is needed, sometimes not. Here you only have the two mode values and nothing else and TC can figure it out without the use of #askModeMathFormat


And try using the "Device (tracking readout, Dual device readout"
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 22, 2021, 08:29:37 pm
This line is important when you are in auto mode. TC will not issue a mode check automatically, but this line is used to extract mode information from the #askValues command. This is also the reason for the flashing, the string returned by #modeFromValue and #askMode must match or you get flashing.

OK, I am trying to understand this, but need some help. We have now the following 3 lines in the config file:

Code: [Select]
#askMode :FUNC:IMP:A?; :FUNC:IMP:B?
#askModeMathFormat getElement(value,0)+";"+getElement(value,1);
;#modeFromValue getElement(value,2)+";"+getElement(value,3);

The 3rd line was commented out by me to avoid the flashing. You say the string returned by #modeFromValue and #askMode must match or you get flashing.
Is there a way to see the strings returned by system commands #modeFromValue and #askMode ?

I have looked at help page https://lygte-info.dk/project/TestControllerCommands%20UK.html, but could not find the answer. So far, for every command starting with # that I enter on the command line of the selected device, I get an "Invalid command" error message in the "Log and program editor window". Also it is stated that "The help window will show help for the command line, it has help for all commands that starts with # and for most non-SCPI devices". How do I for example get help for commands #askMode and #modeFromValue ?

Quote
And try using the "Device (tracking readout, Dual device readout"
Sorry, I don't understand. How do I do this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 22, 2021, 08:45:08 pm
The 3rd line was commented out by me to avoid the flashing. You say the string returned by #modeFromValue and #askMode must match or you get flashing.
Is there a way to see the strings returned by system commands #modeFromValue and #askMode ?

I have looked at help page https://lygte-info.dk/project/TestControllerCommands%20UK.html, but could not find the answer. So far, for every command starting with # that I enter on the command line of the selected device, I get an "Invalid command" error message in the "Log and program editor window". Also it is stated that "The help window will show help for the command line, it has help for all commands that starts with # and for most non-SCPI devices". How do I for example get help for commands #askMode and #modeFromValue ?

Debug do not display the #modeFromValue string, but it shows the #askMode string (I may add the other later on). You can see the currently used modes by using the command line: =deviceMode("RS4090C"), but when the readouts are flashing it may be a bit difficult to see both.

The # lines in the definitions are not commands as such, they cannot be used from the command line and do not have entries in the help file.
You can find documentation here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)
And here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)

Quote
And try using the "Device (tracking readout, Dual device readout"
Sorry, I don't understand. How do I do this?

When you right click in the "Grid panel" window you can select a dual device readout. It is present in the two first menu entries, the first one is for a specific channels, the second one "Device (tracking) readout" will change if the device changes it channels names.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 23, 2021, 06:51:32 am
I have updated the file a little from the last one supplied by CJS.

I did a quick search and found that there are other models in the range (basically the same as the ET versions), so I have added those to the definition, and tidied up a few bits here and there.

So base any further changes on this one.

I have also renamed the file to reflect the official model numbers.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2021, 07:03:01 am
I have updated the file a little from the last one supplied by CJS.

I did a quick search and found that there are other models in the range (basically the same as the ET versions), so I have added those to the definition, and tidied up a few bits here and there.

Good, now it just needs to get the #modeFromValue working, i.e. support of AUTO mode. I wonder what exactly goes wrong, one possible fix is to swap the parameters to #askValues, i.e. place mode first (This will work if the problem is due to something in the :FETC? command). This would also require adjustment in the #askValuesReadFormat and #modeFromValue commands. I hope CJS will work a bit on it when he have time.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 23, 2021, 07:10:36 am
I think it is complicated a bit by the meter not responding with the active modes when it sends the readings with the FETC?, unlike the ET4xxx version.

It can only get the modes from :FUNC:IMP:A?; and :FUNC:IMP:B? and if it is like the ET series it may not respond to a string of commands like that, it may need seperate commands to be sent after it has responded to each.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2021, 07:17:11 am
I think it is complicated a bit by the meter not responding with the active modes when it sends the readings with the FETC?, unlike the ET4xxx version.

It can only get the modes from :FUNC:IMP:A?; and :FUNC:IMP:B? and if it is like the ET series it may not respond to a string of commands like that, it may need seperate commands to be sent after it has responded to each.

You can easily list many commands on the  #askValues line and get whatever you wish. It do not matter if the meter can handle a line with multiple commands, TC will split them into single commands (This can be seen in log mode).
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on October 24, 2021, 02:51:43 am
I've made significant progress with my little scripting project involving Test Controller, but I've run into a problem.  I intermittently receive the following error:

Code: [Select]
java.lang.NullPointerException
        at dk.hkj.main.InterfaceThreads$LoggingSample.run(InterfaceThreads.java:1192)

The effect of this error is that Test Controller fails to start logging data in the Table page (the "Log" button does not turn red and the Table page remains empty), and my script--which is supposed to loop until a certain number of entries are logged into the Table--endlessly loops.

This error doesn't happen every time I run my script, but it does appear to happen in the same location in my script, shortly after I enable logging with the #log 1 command.  It also seems to happen more often when I have more than one instrument enabled in Test Controller.  Closing and restarting Test Controller also doesn't seem to reliably resolve the error.

My script is complex, large, and spread across multiple files (I'm basically using scripts as subroutines), but aside from this issue it works well, thanks to Test Controller!  However, this error seems to be intermittent and, because of that, I'm not sure how best to troubleshoot.  Does this post give you enough information to chase down the error?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 24, 2021, 09:49:03 am
I've made significant progress with my little scripting project involving Test Controller, but I've run into a problem.  I intermittently receive the following error:

Do you #RECONNECT devices in your script? If you do remember to use a #WAITREADY

The error happens when TC tries to put data into the table, the below test version will ignore the problem:
lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

TheDefpom talks a bit about TestController in his latest video:

https://www.youtube.com/watch?v=hPHZNbftJg0&t=3080s (https://www.youtube.com/watch?v=hPHZNbftJg0&t=3080s) 
The link is to the point in the video where he start talking about TestController.

The start is about the device definitions, later on he shows some remote readout and control for a couple of devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 25, 2021, 07:22:43 am
V1.91 is up
This is mostly a bug fix.
   Fixed: Some bugs in the latest definitions that could affect TC V1.89.
   Added: GridPanel, DevicePopups support the device mode right click menu when possible.

Due to some problems in the latest definitions, TC could fail when parsing the definitions (This is not always done during program start, but often later).
If have fixed the definitions (But not tested them), including the Ruoshui that is not included in the release yet.

In the future this kind of bug will only affect the definition, not TC.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 25, 2021, 09:54:30 pm
You can easily list many commands on the  #askValues line and get whatever you wish. It do not matter if the meter can handle a line with multiple commands, TC will split them into single commands (This can be seen in log mode).
@Defpom, this is an illustration of what HKJ says. When I enter the following SCPI command on the VC4090C commandline:
Code: [Select]
FETC?;:FUNC:IMP:A?;:FUNC:IMP:B?, I get following response in the Commands & Log window:
Code: [Select]
FETC?
;; 2.14313e-07,0.133632
:FUNC:IMP:A?
;; C
:FUNC:IMP:B?
;; ESR

Good, now it just needs to get the #modeFromValue working, i.e. support of AUTO mode. I wonder what exactly goes wrong, one possible fix is to swap the parameters to #askValues, i.e. place mode first (This will work if the problem is due to something in the :FETC? command). This would also require adjustment in the #askValuesReadFormat and #modeFromValue commands. I hope CJS will work a bit on it when he have time.

The problem that I see with AUTO mode is that the response of the VC4090C LCR meter on SCPI command :FUNC:IMP:A? is AUTO. So from this response it is not clear if the LCR meter has detected an inductor, capacitor or a resistor. Also in AUTO mode, the response on :FUNC:IMP:B? is the last secundary mode that was active before entering AUTO mode, and not the secondary mode that is active in AUTO mode.

Example:
When I first set C as primary mode and ESR as secondary mode, the response on
Code: [Select]
:FUNC:IMP:A?; :FUNC:IMP:B?is
Code: [Select]
:FUNC:IMP:A?
;; C
:FUNC:IMP:B?
;; ESR

When I then switch the meter to AUTO mode, the following parameters are shown on the display of the LCR meter:
Cs: 214.31 nF
D:  0.0001
So the meter is measuring capacitance and dissipation factor (in AUTO mode, the secondary mode cannot be changed)

The response on 
Code: [Select]
FETC?;:FUNC:IMP:A?;:FUNC:IMP:B?is:
Code: [Select]
;; 2.1432e-07,0.00012804
:FUNC:IMP:A?
;; AUTO
:FUNC:IMP:B?
;; ESR
So the measurement values that are returned are for C and D (dissipation factor), but the modes that are returned are AUTO and ESR.

Maybe other SCPI commands must be used to get the actual primary and secondary operating modes in AUTO mode. But in the SCPI command document that I posted earlier in this thread, I cannot find which other SCPI commands to use.

For me the AUTO mode is not really important. When I do automated measurements for characterization of a specific component, I know if the component is an L, C or R. And a limitation of the AUTO mode is that the secondary mode is not freely selectable. In AUTO mode, the secondary mode for an inductor is Q, for a capacitor it is D (dissipation factor), and for a resistor it is X (reactance). Other choices for the secondary mode are not possible.

Maybe we should just forget about the AUTO mode? We could remove AUTO mode from the Mode and Setup popups, and mention under Notes that AUTO mode is not supported.
Let me know what you think.
Title: LCR meter PC application
Post by: C.J.S. on October 25, 2021, 10:26:50 pm
Just for information, a PC application exists for remote control of the East Tester / Ruoshui / Victor LCR meters. This PC application can be downloaded from the Youtube channel of Tony Albus (https://www.youtube.com/c/TonyAlbus/featured). It is attached to Video #083.

The picture attached below shows a screenshot of the PC application, with a 220nF capacitor connected to the LCR meter, and the meter set to AUTO mode. As can be seen on the screenshot the PC application shows values for Cs and D (dissipation factor). This suggests that SCPI commands exist to query which are the primary and secondary parameters when the meter is set to AUTO mode. As said in my previous post, I don't know which SCPI commands should be used for this.

Maybe software exists for monitoring of SCPI traffic between PC application and instrument? If we could monitor the SCPI traffic, we could probably find the SCPI commands for querying primary and secondary operating modes when the meter is in AUTO mode. As said in my previous post, for me this AUTO mode is not really important. But if other people want to use AUTO mode, we could try to find the relevant SCPI commands.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2021, 08:31:53 am
It is easy enough to add a AUTO column, but it cannot show what mode is selected.

In the attached file I have done that and also swapped the command sequence in the #askValues command.

I usually use https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm) to monitor serial communication, but it requires 3 serial ports, two cross connected.
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on October 26, 2021, 02:56:46 pm
I've made significant progress with my little scripting project involving Test Controller, but I've run into a problem.  I intermittently receive the following error:

Do you #RECONNECT devices in your script? If you do remember to use a #WAITREADY

The error happens when TC tries to put data into the table

I finally got some free time to take another look at this.  I don't use the #RECONNECT command; instead, I connect to only those devices that I plan to run the script against prior to launching the script.  The script I'm currently developing runs generalized performance verification tests, using subroutines to define and administer tests for the various equipment I own.  Right now I'm testing it against my two SDM3055s and my SDG2122X.  At some point I'd like to get my SDS1202X-E and my GW Instek GPP-4323 involved.

The good news is that with TestController v.1.91 my script runs consistently and successfully--many thanks for the bugfix!

The bad news is that I can't run it against all three aforementioned instruments at the same time without Test Controller complaining about slow logging and ultimately throwing exceptions while becoming unresponsive.  For example, I can successfully use my script to verify the frequency accuracy of one SDM3055 using one channel of the SDG2122X, and I can separately do the same for the other SDM3055 using, e.g., the other channel of the SDG2122X, but I can't run it against both SDM3055s using both channels of the SDG2122X at the same time.  I attempted that, and here is an excerpt of the resulting death throes before I had to force-quite Java/TestController using Windows Task Manager:

Code: [Select]
************************* Logging slow *****************************
;; SDM3055_1: Rx <+5.00001406E+05   HZ
>
;; SDM3055_1: *OPC waited: 720ms
************************* Logging slow *****************************
;; SDM3055_1: Rx as numbers <500001.406>
;; SDM3055_1: Tx <DATA:LAST?>
;; SDM3055_2: Tx <DATA:LAST?>
;; SDG2122X: Tx <C1:BSWV?>
************************* Logging slow *****************************
************************* Logging slow *****************************
************************* Logging slow *****************************
;; SDM3055_1: Rx <+5.00001328E+05   HZ
>
************************* Logging slow *****************************
;; SDG2122X: Rx <C1:BSWV WVTP,SINE,FRQ,500000HZ,PERI,2e-06S,AMP,0.169731V,AMPVRMS,0.06Vrms,MAX_OUTPUT_AMP,20V,OFST,0V,HLEV,0.0848656V,LLEV,-0.0848656V,PHSE,0
>
;; SDM3055_2: Rx <+0.00000000E+00   HZ
>
************************* Logging slow *****************************
************************* Logging slow *****************************
;; SDG2122X: Tx <C2:BSWV?>
************************* Logging slow *****************************
;; SDM3055_1: *OPC waited: 1304ms
;; SDM3055_2: *OPC waited: 1289ms
************************* Logging slow *****************************
;; SDG2122X: Rx <C2:BSWV WVTP,SINE,FRQ,20HZ,PERI,0.05S,AMP,0.8487V,AMPVRMS,0.300015Vrms,MAX_OUTPUT_AMP,20V,OFST,0V,HLEV,0.42435V,LLEV,-0.42435V,PHSE,0
>
;; SDM3055_1: Rx as numbers <500001.328>
************************* Logging slow *****************************
************************* Logging slow *****************************
************************* Logging slow *****************************
;; SDM3055_2: Rx as numbers <0.0>
;; SDG2122X: Rx after internal processor <500000 0.169731 0 0 20 0.8487 0 0 >
************************* Logging slow *****************************
************************* Logging slow *****************************
;; SDG2122X: Rx as numbers <500000.0 0.169731 0.0 0.0 20.0 0.8487 0.0 0.0>
************************* Logging slow *****************************
Exception in thread "AWT-EventQueue-0" Exception in thread "AWT-EventQueue-0"
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "AWT-EventQueue-0"
Exception in thread "LoggerSample" ;; SDM3055_2: Tx <:SENSE:FUNCTION?>java.lang.OutOfMemoryError: Java heap space

;; SDM3055_2: Rx <"FREQ"
>
************************* Logging slow *****************************
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "Input to log mover"

Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "TimerQueue"
Exception in thread "Device: SDM3055" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Device: SDM3055" Exception in thread "Device: SDG2122X" java.lang.OutOfMemoryError: Java heap space
Exception in thread "BackgroundCommands" java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

I've got plenty of RAM; all other open applications are crisp and responsive while Test Controller ignores its UI as it rolls over and dies.  I'm using many parameterized subscripts as a sort of "poor man's" subroutines and have defined variables in my top-level script as a return-value mechanism for those subroutine that need to modify variables that are used elsewhere.  (I've architected the script in this manner based on my totally untested theory and bald assumption that script parameters are passed by value and not by reference.)

Given Test Controller's debug excerpt and my descriptions of the script--and assuming that I'm probably doing something wrong on my end--do you have have suggestions for how to proceed with troubleshooting?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2021, 03:19:20 pm
Code: [Select]
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

...

Given Test Controller's debug excerpt and my descriptions of the script--and assuming that I'm probably doing something wrong on my end--do you have have suggestions for how to proceed with troubleshooting?

The "Out of memory error" is probably the reason for it running slow. My best guess is that you call some scripts recursively.
Try using #runscript without parameters, this is possible as long as you run your main script in background (#RUNSCRIPTASYNC).


"Logging slow" is related to log output, not logging data.
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on October 26, 2021, 05:12:00 pm
The "Out of memory error" is probably the reason for it running slow. My best guess is that you call some scripts recursively.
Try using #runscript without parameters, this is possible as long as you run your main script in background (#RUNSCRIPTASYNC).

None of my scripts are called recursively, but your suggestion did give me the idea to investigate potential variable scoping issues.  Sure enough, a couple of my "child" scripts implicitly used a parent script's iterator variable instead of defining their own locally scoped iterator variable.  It looks something like this:

Code: [Select]
#scriptScript MyParentScript

=var i = 0;
; iterate through an array using i...
#runScript MyChildScript1
; do some other things...
#runScript MyChildScript2
#return

;-------------------------------------------------------------
#scriptScript MyChildScript1
=i = 0;
; iterate through some other array using i...

; note that I failed to actually declare "i" here using "=var i = 0;" and TC doesn't complain about it,
; so MyChildScript must be using the "i" declared in MyParentScript above and, consequently,
; this script merely redefines "i" here.
#return

;-------------------------------------------------------------
#scriptScript MyChildScript2
=i = 0;
; iterate through yet another array using i...

; note the same issue with variable scoping as in MyChildScript1
#return

Once I corrected my variable scoping mistakes in a couple scripts, everything suddenly behaves properly and the whole script runs flawlessly.  Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2021, 05:28:41 pm
Once I corrected my variable scoping mistakes in a couple scripts, everything suddenly behaves properly and the whole script runs flawlessly.  Cheers!

Yes, scripting understands inherited variables.

You can check variables with: =getVarList(0) or =getVarList(1)
0=global, 1=local, it will not list inherited variables.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 27, 2021, 03:27:33 pm
It is easy enough to add a AUTO column, but it cannot show what mode is selected.
In the attached file I have done that and also swapped the command sequence in the #askValues command.

I have tested the updated definition file Ruoshui VC409xx.txt that you posted. Measurement values returned in AUTO mode are now indeed displayed under "Current values".
But unfortunately with the following line active:
#modeFromValue getElement(value,0)+";"+getElement(value,1);
, the measurement values on the "Current values" tab are flashing again, as shown in the video that I posted on October 22nd. So I have commented out this line again.

Furthermore I made following improvement to the Ruoshui VC409xx.txt definition file:
* fixes to #value section for proper display of returned values in ECAP and Z mode
* renamed Dissipation to Dissipation_Factor, and changed unit from % to none
   (rationale: the value that the LCR meter returns for D is 1/Q; this is not a percentage)
* fixed a few typos

The updated definition file is attached below.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2021, 07:00:15 am
But unfortunately with the following line active:
#modeFromValue getElement(value,0)+";"+getElement(value,1);
, the measurement values on the "Current values" tab are flashing again, as shown in the video that I posted on October 22nd. So I have commented out this line again.

I need a debug log to fix that.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 28, 2021, 08:46:18 am
I need a debug log to fix that.

OK, I have attached 2 debug log files. The text is copied from the command line window after starting TestController with testControllerDebug.bat.
After starting TC with the Debug.bat file I first hit Reconnect on the Load devices tab. After that I select the Current values tab for a few seconds.

The first log file VC4090C_Debug_Log_no_flashing.txt was recorded with the #modeFromValue line commented out:
;#modeFromValue getElement(value,0)+";"+getElement(value,1);

The second log file VC4090C_Debug_Log_flashing.txt was recorded with the #modeFromValue line active:
#modeFromValue getElement(value,0)+";"+getElement(value,1);

In the second case following error messages are generated (these errors are only shown in the command line window, not in TC's own Commands & Log window):
Unknown mode: 2.14364e-07
Known modes: ECAP, C, L, Z, R, DCR, ESR, D, X, Q, Deg, AUTO,
Unknown mode: 0.143981
Known modes: ECAP, C, L, Z, R, DCR, ESR, D, X, Q, Deg, AUTO,

I hope this makes sense to you.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2021, 12:14:48 pm
OK, I have attached 2 debug log files. The text is copied from the command line window after starting TestController with testControllerDebug.bat.

Now I found the issue or issues.

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

The new #modeFromValue did not handle multiple commands correctly, this is fixed in the above file.

The getElement() guesses on delimiter and was wrong in this case, specifying delimiter fixed that.


If you do not have any changes to the definition this is the one that will be included it the next release and thanks to both you and TheDefpom for making and testing it.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 28, 2021, 01:29:43 pm
Now I found the issue or issues.
Thanks HKJ,

Good news! With the updated jar and VC409xx definition file everything looks OK. No flashing and no errors anymore in the debug log. Very nice!
For completeness I have attached the debug log that I got with latest jar and definition file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2021, 03:17:57 pm
I decided to add these lines to the definition:
Code: [Select]
#scpiCmd *idn? txrx? *idn?
:readmath: getElement(value,0)+","+getElement(value,1)+","+getElement(value,4)+","+getElement(value,2)+" "+getElement(value,3)

Now TestController can correctly read serial number and versions, see "Popups, List all connected devices"
That popup is mostly designed for people that want documentation of devices used for a test, but is also a fast way to check version numbers.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 28, 2021, 04:36:53 pm
I decided to add these lines to the definition:
Code: [Select]
#scpiCmd *idn? txrx? *idn?
:readmath: getElement(value,0)+","+getElement(value,1)+","+getElement(value,4)+","+getElement(value,2)+" "+getElement(value,3)

FYI, as a quick test I added these lines to my Ruoshui VC490xx definition file. Now "Popups, List all connected devices" indeed shows the correct serial number + firmware version, where before it incorrectly showed the firmware version instead of the serial number. So this change is indeed an improvement.
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 10:53:32 am
Hello, dear forum members!
Sorry for my English - this is a google translator (((
I bought ET3240. Good multimeter, but I can't connect it. TestController sees him, but refuses to work with him.
If someone has already connected it, please tell me how to set up the work.
Thank you!

By the way, the AD + DC mode does not work for me. The multimeter already has a new printed circuit board (PCB design) - without wires and alterations. It's if someone's interested.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 11:03:44 am
I bought ET3240. Good multimeter, but I can't connect it. TestController sees him, but refuses to work with him.
If someone has already connected it, please tell me how to set up the work.

If you are using V1.89 (See on configuration page, about button), please update TestController.
Use debug mode, i.e. start the program with testController.bat file and check both log window and DOS window (DOS window may contain error messages that is missing from log window). Post the log here or email it to me.
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 11:17:41 am
Thanks for the quick response!
The program is fresh. There is little information in the dos window. If I understand correctly, TestController turns it off and closes the com-port. But on the multimeter itself, the status is "Remote."
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 11:35:00 am
I tried to change the port number, but nothing depends on it
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 11:36:30 am
Thanks for the quick response!
The program is fresh. There is little information in the dos window. If I understand correctly, TestController turns it off and closes the com-port. But on the multimeter itself, the status is "Remote."

It is very fresh, it is a test version, not that it really matters, except if you run it standalone. The .jar file must be used to replace the .jar file from a unpacked zip file. This is required to get the Devices directory with all definitions.

Maybe I need to add a error message about missing definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 11:41:42 am
I tried to change the port number, but nothing depends on it

As long as "Scan serial ports" is checked TestController will find any device that answers with a SCPI header to a *idn? request at 9600 baud. This is very useful if you have serial devices based on Arduino that changes port frequently (I have posted some projects with that).
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 11:47:20 am
I've updated this file, but I can't figure out what the problem is.
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Changed the speed of the port. Changed the port number. Put a mark on the monitoring. But the multimeter is still unavailable.
Maybe it's something with my computer))
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 12:25:52 pm
I tried on another computer - it also does not work.

Not critical, I'll wait for new versions of TestController.
Thank you for this program!
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 12:39:22 pm
I think it's a multimeter problem.
Thanks for your help!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 01:24:56 pm
I think it's a multimeter problem.

I tried on my ET3240 and it works.
Code: [Select]
;; 880.22ms Start thread for: COM20 - East Tester ET3240
;; 3286.88ms COM20: Tx: <*IDN? |.> 2A 49 44 4E 3F 20 7C 0A
;; 3301.14ms COM20: Rx: <ZC,ET3240,08202008008,V2.04.1941.000> 5A 43 2C 45 54 33 32 34 30 2C 30 38 32 30 32 30 30 38 30 30 38 2C 56 32 2E 30 34 2E 31 39 34 31 2E 30 30 30
;; 3311.14ms COM20: Tx <trig auto>
;; 3313.41ms COM20: Tx: <trig auto |.> 74 72 69 67 20 61 75 74 6F 20 7C 0A
;; Found East Tester ET3240 on STM32 Virtual COM Port (COM20) sn: 8202008008
=globalvar ntc1=ntcCoef(22k,5,10k,25,4k,45)
;; 3383.29ms ET3240: Tx <CONF?>
;; 3394.22ms ET3240: Rx <DCV,D,D,A>
;; 3398.75ms ET3240: Rx after :readmath: getElement(value,0); <DCV>
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 01:30:05 pm
Thank you very much! I already texted the seller.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 04:11:30 pm
Thank you very much! I already texted the seller.

The only idea I have is if it reset the USB port after connecting. I have never seen anything do that, i.e. I believe it is unlikely.

I will see if I can add some more information to why a connection fail, but it will be a few days before I can do it.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 29, 2021, 04:27:43 pm
I've updated this file, but I can't figure out what the problem is.
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Just double checking. Did you download the TestController.zip file that includes the device definitions?
https://lygte-info.dk/pic/Projects/TestController/TestController.zip
The folder with TestController.jar should contain a folder Devices, and that folder should contain a definition file called "East Tester ET3240.txt".
Can you confirm that you have that folder and definition file on your PC?
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 04:54:32 pm
Thank you! But what do you say about OWON XDM2041 if you chose between him and ET3240 now? Will you not support him in your program?
And on installation - I will check everything again. Thank you!
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 05:02:48 pm
I just downloaded the portable version of the TestController, and then replaced the file TestController.jar with a new one, from the archive. Was that the right thing to do?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 05:13:36 pm
Thank you! But what do you say about OWON XDM2041 if you chose between him and ET3240 now? Will you not support him in your program?
And on installation - I will check everything again. Thank you!

I do not support the OWON and I do not have it, somebody else will have to make the definition for it.
I have made a list of supported equipment here: https://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html (https://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html)

I just downloaded the portable version of the TestController, and then replaced the file TestController.jar with a new one, from the archive. Was that the right thing to do?

There is no portable version of TestController, there is the zip file that has to be unzipped, then either a bat file or TestController.jar must be run.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 29, 2021, 06:16:18 pm
I just downloaded the portable version of the TestController, and then replaced the file TestController.jar with a new one, from the archive. Was that the right thing to do?

Create a folder TestController on your PC, and unzip the full content of the TestController.zip file (including folder Devices) to that folder.
From your replies in this topic it is still not clear to me if you did that. After unzipping the zip file you should have a folder TestController with contents as shown in the picture below. Folder Devices contains definition files in text format, and one of these files is definition file "East Tester ET3240.txt" for your DMM.

=> Can you please confirm confirm that you see folder Devices and that it contains file "East Tester ET3240.txt"?
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:04:44 pm
I tried it on the third computer, too Windows7
Turned on the multimeter, he immediately decided on Windows, received the comport number.
Unpacked all the contents of the archive to the folder "TestController."
The Devices folder contains file "East Tester ET3240.txt"
Unable to find "javaw" when starting "testController.bat"
Downloaded "jdk-17_windows-x64_bin.exe" and installed
Launched "testController.bat," the program opened.
On the Load devices tab, select ET3240 - Add
"Adress" - specified port number
"Reconnect" does not help. The display ET3240 the inscription "Local"
Next, downloaded "http://lygte-info.dk/pic/Projects/TestController/TestController.jar"
and replaced the file in the folder "D :\_ ET3240\TestController"
Does not work.
I thought it was a defective multimeter, but decided to try with the power supply Korad3005P. Does not work. Korad works perfectly with its program, checked.
So I think I'm doing something wrong.
If not difficult, help, please. I really want to assemble devices in one program.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 08:10:59 pm
"Adress" - specified port number

For serial connected devices it is the serial port name, on windows com1..com..
You can see valid choices by clicking on the address field, press F2 to enter edit mode and then right click on the mouse.

6 or 7 is not a valid value.

I cannot control this value in any strict way, the field is used for many types of addresses on a couple of operation systems.
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:14:46 pm
I tried to choose different numbers - nothing changes (((
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:17:21 pm
com17
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 29, 2021, 08:26:54 pm
I tried to choose different numbers - nothing changes (((

Using numbers alone will not work on windows, it has to be com..
Use right click to get the correct value. Using right click will take a few seconds for TestController to collect the port numbers (That is the main reason I do not automatically do it).
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:31:50 pm
Thanks for the tips! But that's what I do - F2 - right key - select from the list
You have helped a lot. I'm already uncomfortable asking you further ((
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:37:30 pm
Korad3005P
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 29, 2021, 08:50:13 pm
I accidentally ran not * .bat, but jar - it worked! Now starts and * .bat
I don't know what happened, but thanks for your patience! If possible, I will write an addendum to my ET3240 article with a link to your program and how to configure it. Do you mind?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 30, 2021, 06:25:58 am
I accidentally ran not * .bat, but jar - it worked! Now starts and * .bat
I don't know what happened, but thanks for your patience! If possible, I will write an addendum to my ET3240 article with a link to your program and how to configure it. Do you mind?

I have no idea why it now works for you, there is usually not supposed to be any difference between using the .bat file or .jar file. Only problem is if the program is started from outside its directory, then it may not be able to find the device definitions.

You are welcome to write about TestController, it may be a good idea to post a link to your writing about it here.
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 30, 2021, 09:26:08 am
Perhaps I missed something because of the difficulties of translation. Thanks for the help! When I complete my note about the multimeter (https://delta-f.ru/et3240), I will definitely inform about it.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on October 30, 2021, 11:06:52 am
Thanks for the help! When I complete my note about the multimeter (https://delta-f.ru/et3240), I will definitely inform about it.
Nice review. In your note you say that only little information can be found about this meter on the internet. Did you know that HKJ also did a review of the ET3240 (https://lygte-info.dk/review/DMMEastTester%20ET3240%20UK.html)? Apart from that there are also a few reviews on YouTube.
Title: Re: Program that can log from many multimeters.
Post by: Alias on October 30, 2021, 11:15:56 am
Of course, I've seen these reviews on YouTube too, but not all questions are answered there. And we became spoiled and got used to the fact that you can always find any answer on the Internet))) My review is short and it was the answer to questions from the forum. But now I will do it in more detail.
Title: Re: Program that can log from many multimeters.
Post by: rfdes on October 30, 2021, 02:58:42 pm
I believe this has been bought up a couple of times.  I recently acquired a used NI GPIB-USB-HS controller that I want to use with the Test Controller software and saw that only the RS232 version of the NI-GPIB controller is supported.  Does anyone know of wrapper software that would allow the USB version of the controller to emulate the RS232 version?  I've looked and couldn't find a solution.  Any other solutions to using the USB controller versions?
Thanks
Jim
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on November 01, 2021, 05:28:15 am
I believe there is not yet any way to use the NI USB GPIB adapter with Testcontroller.

Does anyone have a link to a specific cable that is known to work well as a USB/RS232 connector with Testcontroller?  The one I got from Fluke works, but I'd like another eBay special or whatever--is there a $15 solution?
Title: Re: Program that can log from many multimeters.
Post by: Pukker on November 01, 2021, 04:13:30 pm
I believe there is not yet any way to use the NI USB GPIB adapter with Testcontroller.

Does anyone have a link to a specific cable that is known to work well as a USB/RS232 connector with Testcontroller?  The one I got from Fluke works, but I'd like another eBay special or whatever--is there a $15 solution?

This one works good for me with DL24 and PX100 loads. Seems to support RS232 to.

https://nl.aliexpress.com/item/1005001908476987.html?spm=a2g0s.9042311.0.0.27424c4dw443HL
Title: Device definition for Siglent SPD3303X PSU
Post by: C.J.S. on November 02, 2021, 04:32:27 pm
I am working on a TestController device definition file for the Siglent SPD3303X 3-channel power supply. The same definition should also work for models SPD3303C and SPD3303X-E.
The definition file is mostly working, as can be seen in attached screenshot:

Unfortunately the control buttons for switching ON and OFF the individual channels (located inside the red box in the screenshot) are not working yet.
There are two issues with these ON and OFF buttons, that are related to the non standard SCPI commands that are specified for this PSU:

1) The required SCPI commands for switching ON or OFF an output of this PSU are as follows (example for channel 1):
Code: [Select]
OUTP CH1,ON
OUTP CH1,OFF

Unfortunately the SCPI code that is generated by control "ButtonsOn" (used for CH1 and CH2) and control "Buttons" (used for CH3) is as follows:
Code: [Select]
OUTP CH1, ON
OUTP CH1, OFF

The space between the comma and ON or OFF causes the generated SCPI command not to work.
=> Can somebody (HKJ?) advise me how to get rid of this space?

2) Proper operation of the colored indicator of Control "ButtonsOn" (used for CH1 and CH2) requires correct readout of the ON or OFF state of channels CH1 and CH2. The output state of CH1 and CH2 can be checked by reading a 10-bit status word by means of following SCPI command:
Code: [Select]
SYST:STAT?
This SCPI command returns the hexadecimal value of the 10-bit status word. The hex value of this word can vary between 0 and 3FF. The output state of CH1 and CH2 is indicated by bits 4 and 5 of this status word, see attached picture. I am not sure but I think that I need to use function "binConvBit" to extract the value of the two status bits from the returned hex value.
=> Can somebody suggest which is the proper syntax for the :read: tag inside the definition of the two "ButtonsOn" control buttons (taking into account the definition of the status word)?
My not working attempt ( :read: binConvBit(SYST:STAT?,4,1) ) can be found at the end of attached SPD3303X definition file.

For reference I have attached the SCPI chapter from the SPD3303X user manual, as well as the definition file for the SPD3303X (work in progress) below.
Thanks in advance for your assistance!

UPDATE: Latest SPD3303X definition file is attached to Reply #2094 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3792209/#msg3792209).
Title: Re: Device definition for Siglent SPD3303X PSU
Post by: HKJ on November 02, 2021, 04:51:32 pm
1) The required SCPI commands for switching ON or OFF an output of this PSU are as follows (example for channel 1):
Code: [Select]
OUTP CH1,ON
OUTP CH1,OFF

Unfortunately the SCPI code that is generated by control "ButtonsOn" (used for CH1 and CH2) and control "Buttons" (used for CH3) is as follows:
Code: [Select]
OUTP CH1, ON
OUTP CH1, OFF

The space between the comma and ON or OFF causes the generated SCPI command not to work.
=> Can somebody (HKJ?) advise me how to get rid of this space?

There are 3 way to build a answer string:
1) :write: OUTP CH1,
2) :write: OUTP CH1,#
3) :write: OUTP CH1,(value)

One 1) will include a space.


2) Proper operation of the colored indicator of Control "ButtonsOn" (used for CH1 and CH2) requires correct readout of the ON or OFF state of channels CH1 and CH2. The output state of CH1 and CH2 can be checked by reading a 10-bit status word by means of following SCPI command:
Code: [Select]
SYST:STAT?
This SCPI command returns the hexadecimal value of the 10-bit status word. The hex value of this word can vary between 0 and 3FF. The output state of CH1 and CH2 is indicated by bits 4 and 5 of this status word, see attached picture. I am not sure but I think that I need to use function "binConvBit" to extract the value of the two status bits from the returned hex value.
=> Can somebody suggest which is the proper syntax for the :read: tag inside the definition of the two "ButtonsOn" control buttons (taking into account the definition of the status word)?
My not working attempt ( :read: binConvBit(SYST:STAT?,4,1) ) can be found at the end of attached SPD3303X definition file.

For reference I have attached the SCPI chapter from the SPD3303X user manual, as well as the definition file for the SPD3303X (work in progress) below.
Thanks in advance for your assistance!

Isolating the bit is done with :readmath:
The main question is how the value is returned from the power supply, if it is a binary value you need to use "#driver SCPIx" and a txrxbin command. If it is a number (hex or decimal) in ascii format you can work directly with it (You may need to add a 0x before a hex value).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 02, 2021, 04:52:43 pm
I believe this has been bought up a couple of times.  I recently acquired a used NI GPIB-USB-HS controller that I want to use with the Test Controller software and saw that only the RS232 version of the NI-GPIB controller is supported.  Does anyone know of wrapper software that would allow the USB version of the controller to emulate the RS232 version?  I've looked and couldn't find a solution.  Any other solutions to using the USB controller versions?

For GPIB take a look at AR488, it is a Arduino based GPIB interface. It is cheap and fast enough for this purpose.
Title: Re: Device definition for Siglent SPD3303X PSU
Post by: C.J.S. on November 02, 2021, 08:40:10 pm
Thanks HKJ, we are nearly there.
Turning ON and OFF the individual channels is working now. Your tip helped to get rid of the space in the SCPI command.
Only the indicator of the two buttonsOn controls (CH1_Output and CH2_Output) is not working yet.

Isolating the bit is done with :readmath:
The main question is how the value is returned from the power supply, if it is a binary value you need to use "#driver SCPIx" and a txrxbin command. If it is a number (hex or decimal) in ascii format you can work directly with it (You may need to add a 0x before a hex value).

The value of the status word that is returned is a hex number, and I am now able to isolate the CH1 and CH2 status bits from the returned hex value.
I have now the following definition for the Off and On buttons for CH1:
Code: [Select]
#cmdSetup buttonsOn CH1_Output
:read: SYST:STAT?
:readmath: binConvBit(value,4,1)
:write: OUTP CH1,#
:updatealloff:
:tip: Turn CH1 output On or Off
:color: (0,240,0)
Off OFF
On ON

When I open the Setup window, the indicator lights are ON for a fraction of a second, and then they are turned OFF again (actually the indicators become _very_ faint, i.e. hardly visible). This behavior is independent from the output state (ON or OFF) of CH1 and CH2.

When I click on the CH1_Output OFF button, the debug window shows following response:
Code: [Select]
;; SPD33: Tx <OUTP CH1,OFF>
;; SPD33: Tx <SYST:STAT?>
;; SPD33: Rx <0x4>
;; SPD33: Rx after :readmath: binConvBit(value,4,1) <0>
;; SPD33: Rx as number <0.0>

And when I click the CH1_Output ON button, I get following response:
Code: [Select]
;; SPD33: Tx <OUTP CH1,ON>
;; SPD33: Tx <SYST:STAT?>
;; SPD33: Rx <0x14>
;; SPD33: Rx after :readmath: binConvBit(value,4,1) <1>
;; SPD33: Rx as number <1.0>

So the CH1 output status bit is correctly isolated (value 0 when OFF, value 1 when ON), but the indicator light stays off.

The help for buttonsOn says:
Quote
buttonsOn
One or more buttons on a line with a indicator last on the line. A :read: tag is needed to get the status for the indicator, it will be on if the read value matches second parameter line. The rest is similar to buttons.
The read result is supposed to be a numeric result, use a :string: tag for a non-numeric result.

If I understand correctly the second parameter line is (correct me if I am wrong):
On ON

Do I somehow need to translate numerical value "1" to text string "ON" or vice versa for a correct comparison?
Can you advise?

Latest definition file is attached FYI.
UPDATE: Latest definition file is attached to Reply #2094 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3792209/#msg3792209).
Title: Re: Device definition for Siglent SPD3303X PSU
Post by: HKJ on November 02, 2021, 09:04:32 pm
The value of the status word that is returned is a hex number, and I am now able to isolate the CH1 and CH2 status bits from the returned hex value.

TestController cannot hand a text string like 3ff, it needs to be 0x3ff, then it will be automatic converted to an int
This can be done in :readmath: with ("0x"+value)

Do I somehow need to translate numerical value "1" to text string "ON" or vice versa for a correct comparison?
Can you advise?

The result from :readmath: must match the "ON" text, i.e. you have to use an expression that returns ON when the output is on, it is probably easiest to do with the ?: style test/expression.

Note: You can use the displayVar() function in :readmath: to see what is going on.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on November 03, 2021, 11:59:31 am
Thanks for your very useful hints! With the following code the indicator lights for the channel output buttons are working (example is for CH1 output):

Code: [Select]
#cmdSetup buttonsOn CH1_Output
:string:
:read: SYST:STAT?
:readmath: (binConvBit(value,4,1) == "1") ? "ON" : "OFF"
:write: OUTP CH1,#
:updatemodechange:
:update: CH2_Output
:updatealloff:
:tip: Turn CH1 output On or Off
:color: (0,240,0)
:bgcolor: (128,128,128)
OFF OFF
ON ON

The SYST:STAT? command is already returning a hex code starting with 0x, so there was no need to add 0x at the beginning. After translating the isolated CH1 and CH2 status bits to "ON" and "OFF" using the conditional expression in the :readmath: line, it was needed to add the :string: tag to make the indicator lights work.

I will do some more tweaking and testing on the Configuration Menu before posting a new definition file.
Title: Definition file for Siglent SPD3303X/X-E PSU
Post by: C.J.S. on November 04, 2021, 06:34:43 pm
Attached below is version 1.0 of my TC definition file for the Siglent SPD3303X and SPD3303X-E 3 channel Power Supplies.
This definition supports basic setup of the PSU, including Independent, Serial and Parallel operating modes for CH1 and CH2. I have included the Operating Mode control in the Setup menu, such that all settings of the PSU can be controlled from a single menu. A picture of the Setup menu is attached below.

Limitations:
- Only LAN connection is supported, not USB
- No support for the built-in Timer functionality of the SPD3303X/X-E
- No indicator for the output state (ON or OFF) of CH3. The output state of CH3 cannot be read out via SCPI. This is a limitation of the PSU.

I have tried to control the PSU via USB, but found that the USB connection uses the "USBTMC" protocol (not virtual COM port), and it seems that this protocol is not supported by TC (correct me if I am wrong). This means that the definition cannot be used to control model SPD3303C, that only has an USB port (no LAN).

@HKJ, if you want you can include this definition file in the next release of Test Controller.

UPDATE 06 Nov 2021: Attached an updated version v1.0.1 of the Siglent SPD3303X.txt definition file. This version includes the changes to the #interface section of the Setup menu (per recommendation of HKJ below). Also a remark is added to the #notes section that firmware version 1.01.01.02.07R2 is required. The definition appears not to work with firmware versions 1.01.01.02.05 and earlier.
Title: Re: Definition file for Siglent SPD3303X/X-E PSU
Post by: HKJ on November 04, 2021, 07:09:21 pm
@HKJ, if you want you can include this definition file in the next release of Test Controller.

I will.
I have changed the interface definitions slightly:
Code: [Select]
#interface setVoltage CH(channel):VOLT (value)
#interface getVoltage CH(channel):VOLT?
:readmath: getMatch(value, "( |^)[-+.0-9].*")

#interface setCurrent CH(channel):CURR (value)
#interface getCurrent CH(channel):CURR?
:readmath: getMatch(value, "( |^)[-+.0-9].*")

#interface readVoltage 0 3
#interface readCurrent 1 4

The idea is to have the same names for ALL power supplies, i.e. a script using these function can work with any power supply without modification.
Title: Re: Definition file for Siglent SPD3303X/X-E PSU
Post by: C.J.S. on November 04, 2021, 08:20:43 pm
I have changed the interface definitions slightly:
<snip>
The idea is to have the same names for ALL power supplies, i.e. a script using these function can work with any power supply without modification.

OK, that is fine. Then you may also want to update a few #interface lines in the "Owon ODP6033.txt" definition file, since I copied the lines with setCHVoltage and setCHCurrent from that file.
Title: Re: Definition file for Siglent SPD3303X/X-E PSU
Post by: HKJ on November 05, 2021, 06:11:53 am
OK, that is fine. Then you may also want to update a few #interface lines in the "Owon ODP6033.txt" definition file, since I copied the lines with setCHVoltage and setCHCurrent from that file.

Thanks, it will be fixed in next release.
Title: Re: Program that can log from many multimeters.
Post by: C.J.S. on November 06, 2021, 05:35:36 pm
@ HKJ, FYI I have attached an updated version v1.0.1 of the Siglent SPD3303X definition file to reply #2094 above. Today I found that the definition works well with the latest firmware version of the SPD3303X/X-E, but not with earlier firmware versions. For this reason I have added a remark to the #notes section about the firmware version that is required.

v1.0.1 release notes:
- Updated #interface section per recommendation of HKJ.
- Removed leading colons from SCPI commands in #askValues (just for consistency).
- Added a remark about required firmware version to the #notes section.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 06, 2021, 07:28:09 pm
@ HKJ, FYI I have attached an updated version v1.0.1 of the Siglent SPD3303X definition file to reply #2094 above. Today I found that the definition works well with the latest firmware version of the SPD3303X/X-E, but not with earlier firmware versions. For this reason I have added a remark to the #notes section about the firmware version that is required.

v1.0.1 release notes:
- Updated #interface section per recommendation of HKJ.
- Removed leading colons from SCPI commands in #askValues (just for consistency).
- Added a remark about required firmware version to the #notes section.

I have updated the definition.
It will be some time before I release the next version with this definition included, mostly because I do not have any significant updates to the TestController software. Until then just put the file from CJS into the device directory.
I have no idea what "some time" is, it may be a week or a month, if somebody post a good idea or a bug I need to fix, it will be soon after that.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 08, 2021, 04:15:44 pm
Correction for R&SHMC8043.txt

Remove line
:enable: Output_3.Overload.Turn_off
since Output 3 currently cannot be switched ON and OFF via the popup.

Now the definition for output 3 corresponds to the definitions for output 1 and 2 resp 1/2.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 09, 2021, 06:58:54 am
Correction for R&SHMC8043.txt

Remove line
:enable: Output_3.Overload.Turn_off
since Output 3 currently cannot be switched ON and OFF via the popup.

Now the definition for output 3 corresponds to the definitions for output 1 and 2 resp 1/2.

Thanks, this will be fixed in the next release.
Title: Re: Program that can log from many multimeters.
Post by: joxelito on November 22, 2021, 08:00:05 pm
SystemCommands.txt versions issue: one of 14Kb, one of 46Kb !!

While using the help function for reading system commands information, some times for example  "#STOPSCRIPT" shows this command, sometimes not.
I have found that there are 2 versions of SystemCommands.txt , one of 14Kb, one of 46Kb

After deleting the file and restarting the program, some times the 46Kb version is downloaded, but sometimes (the majority) the 14kb one is downloaded
I have the last version of test controller
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 22, 2021, 08:23:55 pm
SystemCommands.txt versions issue: one of 14Kb, one of 46Kb !!

While using the help function for reading system commands information, some times for example  "#STOPSCRIPT" shows this command, sometimes not.
I have found that there are 2 versions of SystemCommands.txt , one of 14Kb, one of 46Kb

After deleting the file and restarting the program, some times the 46Kb version is downloaded, but sometimes (the majority) the 14kb one is downloaded
I have the last version of test controller

I suspect you only get the first part of the file and I do not detect correctly that there was a fail during download.
This is probably related to the faster timeout I added recently.
I will take a look on it.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on November 22, 2021, 08:26:39 pm
I have played a bit with my Brymen vs. Linux and this is what I have got so far:


(https://i.postimg.cc/fLsLYs7f/Bildschirmfoto-vom-2021-11-22-21-10-10.png) (https://postimg.cc/Lqy2MrbJ)


TestController does find it, but it does not appear under "Current values"...


Code: [Select]
;; Found Brymen BM867s on HIDv0820p0001
#DEBUG BM867 +modeComm +valueComm +otherComm +commHex
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F
;; BM867: Rx as numbers <-Infinity>
;; BM867: Tx <VALUE?> 56 41 4C 55 45 3F
;; BM867: Rx <-∞> 2D 3F


Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 24, 2021, 11:24:39 am
I have played a bit with my Brymen vs. Linux and this is what I have got so far:

I only support HID interfaces on windows at the current time.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 24, 2021, 11:26:47 am
V1.97 is up
It is a couple of new devices, some bugfixes and a few addition to the internal stuff.
   Fixed: Downloading of files sometimes gave incomplete files.
   Modified: binConvString added swap and termination parameters.
   Fixed: binConvString codepage specification did not work
   Added: Function msToDate()/dateToms()/msToDateGMT()/dateTomsGMT()/tzOffset(), can be used to convert date/time information.
   Added: Modbus/ascii protocol and holdingS? for reading signed 16 bit value
   Fixed: R&S HMC4043 Channel 3 was disabled (Thanks Messtechniker)
   Added: Metrix MTX3292 (Thanks to a user)
   Added: Siglent SPD3303X power supplies (Thanks C.J.S.)
   Fixed: Interface names in Owon ODP6033
   Added: Ruoshui LCR meters (Thanks TheDefpom & C.J.S.)
   Fixed: #modeFromValue did not handle multiple commands
Title: Re: Program that can log from many multimeters.
Post by: PushUp on November 24, 2021, 12:32:22 pm
I have played a bit with my Brymen vs. Linux and this is what I have got so far:

I only support HID interfaces on windows at the current time.

Yes, I know.

However, over a year ago I couldn't manage that a Brymen with its USBHID was detected by TestController using Linux:

https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3019724/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg3019724 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3019724/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg3019724)

..., but now it works. Therefore I thought you "only" need to implement the missing "definitions" and it could be a step forward, trying to use a cheap Brymen with an even cheaper Pi with Linux?

As Brymen works with SmuView under Linux, there is probably only a "piece" missing?

It is only a question, as I am not able to judge the required deal of work!  ;)


Cheers and thanx for version 1.97!  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 24, 2021, 12:41:22 pm
Yes, I know.

However, over a year ago I couldn't manage that a Brymen with its USBHID was detected by TestController using Linux:

https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3019724/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg3019724 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg3019724/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg3019724)

..., but now it works. Therefore I thought you "only" need to implement the missing "definitions" and it could be a step forward, trying to use a cheap Brymen with an even cheaper Pi with Linux?

As Brymen works with SmuView under Linux, there is probably only a "piece" missing?

It is only a question, as I am not able to judge the required deal of work!  ;)

A long time ago I implemented different solutions for Windows and Linux, but the HID library did not work on my RasberryPi (With std. OS), that is the only stand-alone Linux computer I have at the moment, i.e. I could not test and debug it.
It may be a simple fix, but I am not expecting to look at it before I have a way to test/debug, I also need a new look on the Windows part.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 30, 2021, 10:34:33 am
V1.98 is up
This is mostly a bugfix to the modbus protocol that I damaged in the last version, but it also add a new multimeter.
   Added: Info control supports :format: tag
   Fixed: Modbus/ascii disabled the other modbus protocoles.
   Added: Metrix MTX3281, Metrix MTX3282 multimeters (Thanks tgotic)
   Fixed: holdingS? modbus protocol for signed 16 bit value
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 30, 2021, 02:49:10 pm
RE.: Windows HID equipment definitions
I also need a new look on the Windows part.

I'm sure there is quite some interest in this area.
Since I have a Voltcraft VC 940 (UT71E) I could
help with testing once the framework is up and
running. Writing a definition for HID equipment
is unfortunately beyond my abilities. :scared:
Doing the initial definition for the HMC 8043
was already stretching it a bit for me. :phew:
50 years of experience, but my learning ability
is gradually going downhill. :palm:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 02, 2021, 08:38:09 pm
I could help with testing once the framework is up and running.

It will probably be some time yet, before I get around to do it.
Title: Re: Program that can log from many multimeters.
Post by: PaWill68 on December 08, 2021, 07:20:56 am
There is an error in the RidenRD60xx file.
It is not possible to set the current to more than 1A. If you choose 1A, then in fact the current is set to 10A.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 08, 2021, 10:12:51 pm
There is an error in the RidenRD60xx file.
It is not possible to set the current to more than 1A. If you choose 1A, then in fact the current is set to 10A.

Yes, that is true.

Look in devicefile RidenRD60xx.txt and replace

#metadef
#author MikeLud
#idString Riden,Riden RD6012
#name Riden RD6012
#handle RD6012

#replacetext RD60xx 60121
#replaceText MaxCurrent 12.000
#replaceText MaxOCP 12.100
#replaceText CurrentScaleFactor 1000

with

#metadef
#author MikeLud
#idString Riden,Riden RD6012
#name Riden RD6012
#handle RD6012

#replacetext RD60xx 60121
#replaceText MaxCurrent 12.000
#replaceText MaxOCP 12.100
#replaceText CurrentScaleFactor 100

The CurrentScaleFactor 1000 has to be 100.

Works fine with my RD6012.

Attached my RidenRD60xx.txt file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2021, 08:28:58 am
There is an error in the RidenRD60xx file.
It is not possible to set the current to more than 1A. If you choose 1A, then in fact the current is set to 10A.

Yes, that is true.

Look in devicefile RidenRD60xx.txt and replace

This will be fixed in the next release.
I only have definitions for RD6006 & RD6012, if anybody makes definitions for other models I am very interested in getting them.
Note: A definition is probably not more than the 10 lines Pukker has posted, just with other values.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on December 17, 2021, 12:48:08 am
Thanks for this really useful software.

I'm working on an instrument definition file for the OWON BT35-41 series multimeters and may attempt my OWON XDS3014 CRO after that (as the manufacturer's Windows app for it is truly woeful!)

All going well, except I can't see a way to get the available commands to display in the help window on the Commands tab. It works for all the virtual instruments, but not

I've found the help file folder \documents\TestController\Settings but it only seems to have help files for the Virtual instruments. I'm using version 1.98 on Win 10-64 bit.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on December 17, 2021, 12:56:00 am
I have a FY6900-40M

The following needs to be added to the FeelElecFY6x00-xxM.txt definition file around line 132.

Thanks

Code: [Select]
#metadef
#idString FeelElec,FeelElec FY6900-40M

#name FeelElec FY6900-40M
#handle FY6900

#replacetext FY6x00-xxM FY6900-40M
#replaceText MaxFrequency 40M
#replaceText MaxVpp 24
#replaceText MinOffset -12
#replaceText MaxOffset 12
#replaceText >CAL >12000
#sections WAVE2
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on December 17, 2021, 01:12:32 am
Quote
Thanks for this really useful software.

I'm working on an instrument definition file for the OWON BT35-41 series multimeters and may attempt my OWON XDS3014 CRO after that (as the manufacturer's Windows app for it is truly woeful!)

All going well, except I can't see a way to get the available commands to display in the help window on the Commands tab. It works for all the virtual instruments, but not

I've found the help file folder \documents\TestController\Settings but it only seems to have help files for the Virtual instruments. I'm using version 1.98 on Win 10-64 bit.

I think I've solved my own problem #scpCmd tags in the definition file seem to provide the help/
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on December 17, 2021, 01:34:03 am
Quote
Quote
Thanks for this really useful software.

I'm working on an instrument definition file for the OWON BT35-41 series multimeters and may attempt my OWON XDS3014 CRO after that (as the manufacturer's Windows app for it is truly woeful!)

All going well, except I can't see a way to get the available commands to display in the help window on the Commands tab. It works for all the virtual instruments, but not

I've found the help file folder \documents\TestController\Settings but it only seems to have help files for the Virtual instruments. I'm using version 1.98 on Win 10-64 bit.

I think I've solved my own problem #scpCmd tags in the definition file seem to provide the help/

That answer is wrong! The #help tag does the trick.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 17, 2021, 05:52:35 am
I have a FY6900-40M

The following needs to be added to the FeelElecFY6x00-xxM.txt definition file around line 132.

Thanks, this will be included in next release
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 17, 2021, 05:59:28 am
That answer is wrong! The #help tag does the trick.

If the help file name match the device name the #help tag is not needed.
Title: Re: Program that can log from many multimeters.
Post by: Karlis on December 17, 2021, 04:56:00 pm
Hi, realy nice tool, thank's.

But I have a problem with East Tester ET3240, maybe I need somewhere to change something, but can't figure it out.
All works, but in TestController measured values is displayed and logged without taking in to account multiplier.
As example if ET3240 measures 18.05mV on PC it is displayed as 18.05V.
Can You help me?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 17, 2021, 05:13:48 pm
Hi, realy nice tool, thank's.

But I have a problem with East Tester ET3240, maybe I need somewhere to change something, but can't figure it out.
All works, but in TestController measured values is displayed and logged without taking in to account multiplier.
As example if ET3240 measures 18.05mV on PC it is displayed as 18.05V.
Can You help me?

I do not have time to look at it today, but you can try opening the "East Tester ET3240.txt"  file and add:

#askValuesReadFormat s

after the "#askValues read?" line

Please report back if it works or not.
Title: Re: Program that can log from many multimeters.
Post by: Karlis on December 17, 2021, 05:51:30 pm
Adding
#askValuesReadFormat s
din't help.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 17, 2021, 06:24:58 pm
Adding
#askValuesReadFormat s
din't help.

Ok, I will dig out the meter tomorrow (Usually it is not on my bench) and look at it.
Title: Re: Program that can log from many multimeters.
Post by: Karlis on December 17, 2021, 08:12:38 pm
Adding
#askValuesReadFormat s
din't help.

Ok, I will dig out the meter tomorrow (Usually it is not on my bench) and look at it.

I didn't know what response is expected on read? command, but maybe problem is in ET3240.
I noticed that at least my ET3240 on read? command returns exactly same string that is displayed on screen (not a measured value).
For 18.50mV it returns <18.50>.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 18, 2021, 04:13:00 pm
I didn't know what response is expected on read? command, but maybe problem is in ET3240.
I noticed that at least my ET3240 on read? command returns exactly same string that is displayed on screen (not a measured value).
For 18.50mV it returns <18.50>.

It is some work to get the correct exponent, I need to check both range and mode.
I will work one it, but I do not know when it is fixed.
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on December 20, 2021, 05:15:52 pm
Hi,
not sure if you prefer debug questions here or via email, but : is there a way to get slightly more detailed debug info ? I'm on linux and trying to connect with a prologix-USB clone (i.e. serial port), gives the following
Code: [Select]
Exception in thread "Scan ports" java.lang.NoClassDefFoundError: Could not initialize class com.fazecast.jSerialComm.SerialPort
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:271)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:736)
(my config has one GPIB interface, id 'A', at address '/dev/ttyACM0' , and an hp3478a on A:23)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2021, 08:51:27 am
Hi,
not sure if you prefer debug questions here or via email, but : is there a way to get slightly more detailed debug info ? I'm on linux and trying to connect with a prologix-USB clone (i.e. serial port), gives the following
Code: [Select]
Exception in thread "Scan ports" java.lang.NoClassDefFoundError: Could not initialize class com.fazecast.jSerialComm.SerialPort
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:271)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:736)
(my config has one GPIB interface, id 'A', at address '/dev/ttyACM0' , and an hp3478a on A:23)

You get the most detailed debug when starting with a debug on the command line (This is explained in the .bat file and works similar on all supported os). The console output contains more information than the log window.

There are generally two reasons why serial can fail:
1) You do not have access to serial ports (This problem is not present on windows)
2) The build-in driver do not support os-processor combination. The library I uses supports a lot of os-processor combinations, but not all.

Asking on the forum has the advantage that other people may be able to use the answer.
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on December 21, 2021, 01:07:30 pm
You get the most detailed debug when starting with a debug on the command line

Thanks; that's already what I was doing and the only output I got was what I pasted, from the .log file; no output in the commandline where I ran "tcrundebug".

But I tried again afresh and had a better look at the logfile ; last paste I made had trimmed a lot of what I thought were duplicate entries. I forgot about these :

Code: [Select]
Exception in thread "Scan ports" java.lang.UnsatisfiedLinkError: /tmp/jSerialComm/1640091629552-libjSerialComm.so: /tmp/jSerialComm/1640091629552-libjSerialComm.so: failed to map segment from shared object
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1934)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1817)
at java.lang.Runtime.load0(Runtime.java:810)
at java.lang.System.load(System.java:1088)
at com.fazecast.jSerialComm.SerialPort.<clinit>(SerialPort.java:252)
at dk.hkj.comm.SerialInterface.getSerialPorts(SerialInterface.java:271)
at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:736)

Aah. I think I see what's going on :  for more and more linux systems, by default /tmp/ and anything in it cannot be executed (for security reasons etc etc). I wonder why jSerialComm copies itself into there...

But my theory may be wrong : I just found this issue with similar symptoms,
https://github.com/Fazecast/jSerialComm/issues/277

[EDIT] My method of re-packaging the .jar with a different version of jSerialPort worked fine, but was not necessary. The problem was indeed execute permissions on /tmp, and can be worked around by modifying the tcrun / tcrundebug scripts to specify a different temp dir to the java -jar command:
Code: [Select]
-Djava.io.tmpdir=/home/...tmpdir/See https://github.com/Fazecast/jSerialComm/issues/387 for details.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2021, 07:01:32 pm
But my theory may be wrong : I just found this issue with similar symptoms,
https://github.com/Fazecast/jSerialComm/issues/277

I will not update the current TestController with a old version of the library, the current version uses jSerialComm V2.70 and I will update when a new is published.

If you need a older version of TestController until then, i.e. from before I updated the serial library, I can put it up (That will be jSerialComm V2.6.2).
Title: Re: Program that can log from many multimeters.
Post by: strawberry on December 21, 2021, 11:11:17 pm
34401A in ohms range internal current source and sample time it take to charge to value and calculate capacitor capacitance in software
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on December 21, 2021, 11:31:12 pm
I will not update the current TestController with a old version of the library, the current version uses jSerialComm V2.70 and I will update when a new is published.

Of course, I understand.
I tried to re-pack your .jar and replace jserialComm with a few different versions (2.5.3, 2.6.1, 2.6.2), but I wasn't able to eliminate the issue. Perhaps my method is flawed, I don't really java :
Code: [Select]
1- fastjar -xvf TestController.jar
2- jar -xvf jSerialComm-2.5.3
3- restore the original META-INF/MANIFEST file that jSerialComm just overwrote
4- jar cmvf META-INF/MANIFEST.MF ../testcontroller_repack.jar *

Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 22, 2021, 08:15:04 am
Of course, I understand.
I tried to re-pack your .jar and replace jserialComm with a few different versions (2.5.3, 2.6.1, 2.6.2), but I wasn't able to eliminate the issue. Perhaps my method is flawed, I don't really java :

I have never tried to replace a library in a .jar file, when you have the source code there is no reason to do it.
From next version TestController will list the version of jSerialComm used when starting in debug mode and using serial ports.
I do not believe there is a way to check if a specific os-processor combination is supported, except the exception.

Note: To check if it is access control problems, you can try running TC from sudo.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on December 22, 2021, 08:30:19 am
Thanks for sharing your soft which works perfectly with my Siglent DC load.

Regarding the tti QL355P, I have two questions :
There is two entries for it in the add menu; is there a difference between them ?
It seems that Ihere is no possibility to choose a serial USB connexion for it (only socket or GPIB), is it a mistake from me ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 22, 2021, 08:42:12 am
Regarding the tti QL355P, I have two questions :
There is two entries for it in the add menu; is there a difference between them ?

They are the same, but the ID string from the QL355P has changed, i.e. only one of them will work with your supply.

It seems that Ihere is no possibility to choose a serial USB connexion for it (only socket or GPIB), is it a mistake from me ?

To add serial:
Open the file TTiQL355P.txt
Change the line "#port 9221 GPIB" to "#port 9221 GPIB com"
After restart of TC and adding the PS you can click on the "Type" and change it from socket to serial.

If it works, please post a confirmation and I will add it to the original file.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on December 23, 2021, 07:51:31 am
After reading your documentation this configuratio is working :
#idString THURLBY-THANDAR,QL355P,D,1.6
#name dumy_QL335
#handle QL335
#port comFixedBaud
#baudrate 19200

result in your Commands windows :
;; Found TTI QL355P on QL355P Power Supply (COM54)
*IDN?
;; THURLBY-THANDAR,QL355P,D,1.6
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 26, 2021, 10:35:19 am
There is an error in the RidenRD60xx file.
It is not possible to set the current to more than 1A. If you choose 1A, then in fact the current is set to 10A.

Yes, that is true.

Look in devicefile RidenRD60xx.txt and replace

This will be fixed in the next release.
I only have definitions for RD6006 & RD6012, if anybody makes definitions for other models I am very interested in getting them.
Note: A definition is probably not more than the 10 lines Pukker has posted, just with other values.

There are also more values where 1000 must be replaced with 100.
Done in the attached RD60xx.txt file.
Only tested with RD6012, the only one I have. Firmware is the latest version from Unisoft, which is great.

Two problems I've seen and I don't know how to solve.
1. in RD6012 popup, tab settings, the Buzzer function was inverted, corrected that, but to select On I have to click Off and vv.
2. in the tab Memory M4 is selected by default and selecting another, (M0 to M9), always returns to M4
Making settings to M4 works OK, but only M4 is selectable. Don't know how to solve.

BTW. Making settings from Testcontroller is not the main function, logging (core business) works fine.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 27, 2021, 02:01:44 pm

There are also more values where 1000 must be replaced with 100.
Done in the attached RD60xx.txt file.
Only tested with RD6012, the only one I have. Firmware is the latest version from Unisoft, which is great.

Two problems I've seen and I don't know how to solve.
1. in RD6012 popup, tab settings, the Buzzer function was inverted, corrected that, but to select On I have to click Off and vv.
2. in the tab Memory M4 is selected by default and selecting another, (M0 to M9), always returns to M4
Making settings to M4 works OK, but only M4 is selectable. Don't know how to solve.

BTW. Making settings from Testcontroller is not the main function, logging (core business) works fine.

I am a bit worried about if 6006 and 6012 uses the same factors, can anybody with a 6006 confirm that this file works correctly (The original Riden file must be replaced to test it).

Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 27, 2021, 02:05:07 pm
After reading your documentation this configuratio is working :
#idString THURLBY-THANDAR,QL355P,D,1.6
#name dumy_QL335
#handle QL335
#port comFixedBaud
#baudrate 19200

result in your Commands windows :
;; Found TTI QL355P on QL355P Power Supply (COM54)
*IDN?
;; THURLBY-THANDAR,QL355P,D,1.6

I will add the serial definitions.
And it looks like I must have QL355P_A/QL355P_B/QL355P_C to handle the different identifications strings it uses.

Title: Re: Program that can log from many multimeters.
Post by: trp806mo on December 30, 2021, 10:22:56 am
@TheDefpom :  tested ok with a SDL1020X-E   :

;; Found Siglent SDL1020X-E on 192.168.0.20 sn: SDL13GCX5R0__

*IDN?
;; Siglent Technologies,SDL1020X-E,SDL13GCX5R0__,1.1.1.21R2

Title: Re: Program that can log from many multimeters.
Post by: trp806mo on December 30, 2021, 03:29:15 pm
@HKJ :
regarding the defintion file of the SDL "siglent SDL10xxXxx.txt" i had to change some "#interface" in order to be able to pass the parameter :
#interface setOn :SOUR:INP:STAT (value) instead of   #interface setOn :SOUR:INP:STAT value (I don't kow why)

I added #interface readPower 2  just after #interface readCurrent 1  in order to get the power
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 31, 2021, 07:22:10 am
@HKJ :
regarding the defintion file of the SDL "siglent SDL10xxXxx.txt" i had to change some "#interface" in order to be able to pass the parameter :
#interface setOn :SOUR:INP:STAT (value) instead of   #interface setOn :SOUR:INP:STAT value (I don't kow why)

I added #interface readPower 2  just after #interface readCurrent 1  in order to get the power

Thanks, this will be included in the next release.
In definitions () will activate the "calculator", that is needed to handle variables (and expression).
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 01, 2022, 03:52:16 am
Hi,

When I use the following script
Code: [Select]
=globalvar  sVal=0.01
=sVal=0.05
PlatyLoad::SOUR:CURR (sVal)
=sVal=(sVal*1.1)
PlatyLoad::SOUR:CURR (sVal)
It sends the following commands to the device:
Code: [Select]
:SOUR:CURR 0.05
:SOUR:CURR 0.05500000000000001

All values are defined as D3 in the definitions file (attached).

The length of the second (double precision) value sent is tripping up my SCPI parser (which I will fix), but it would be much better if I could get TestController to send the values as D3.

Have I missed something in the little script or my definitions file that would trim the values to 3 decimal places?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 01, 2022, 05:22:14 am
I'm trying to get the control value in this script to log.

Code: [Select]
#logcmds 0
#log 2
=globalvar  sVal=0.01
=sVal=0.005
#while (sVal<3.5)
#echo (sVal)
#hasLogged
=sVal=(sVal*1.1)
#endwhile

I've created a Math variable (see attached) which doesn't update with sVal. I've tried both Formula and FormulaNU settings. I've read the documentation and some other posts here on the same topic and am still none the wiser!

Can you explain again how to log a control variable.

Thanks.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 01, 2022, 06:49:50 am
I have been working on another definition file, this time for the Siglent SPD1168X and SPD1305X power supplies.

I have it basically working apart from some weird issue where despite giving the correct commands the power supply does not action turning the output On/Off or switching between internal and external sensing, it just beeps for a command error, I have spent a few hours trying to figure out why that is happening but can't figure it out, it seems like a bug with the power supply.

The Siglent EasyPower software CAN turn the output On/Off and switch the sense, so it must be an error with the commands or quirky behaviour of the unit that the official software allows for.

Maybe someone else has come across this and knows of a fix, or has one of these supplies and a bit of time to figure it out, I may even dig into it further if I can get a network sniffer for the PC so I can see what the official software is sending the power supply (I haven't even looked yet), I use a Mac and my software couldn't sniff the entire network, again I haven't looked for something better.

On a side note, the TC software doesn't open a window or anything on Mac when clicking the About button... and doesn't fetch updates, I have to download manually off the website.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on January 01, 2022, 09:59:03 am
Maybe someone else has come across this and knows of a fix, or has one of these supplies and a bit of time to figure it out, I may even dig into it further if I can get a network sniffer for the PC so I can see what the official software is sending the power supply (I haven't even looked yet), I use a Mac and my software couldn't sniff the entire network, again I haven't looked for something better.


You can get Wireshark for Windows. Or, if you have a network switch or router that can do port mirroring, you could use the Mac to sniff the entire network traffic?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 01, 2022, 10:34:11 am
Have I missed something in the little script or my definitions file that would trim the values to 3 decimal places?

You can use the script formatting functions, they do not use the same format names, but a couple of integers to specify.
https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble)

Code: [Select]
PlatyLoad::SOUR:CURR (formatDouble(sVal,1,6,0,3))
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 01, 2022, 10:41:11 am
Can you explain again how to log a control variable.

You are doing it nearly correctly, nut I would suggest you declare sVal before using it, i.e. move the globalvar up before #log.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 01, 2022, 10:49:17 am
I have been working on another definition file, this time for the Siglent SPD1168X and SPD1305X power supplies.

I am not too happy about the problem you list, it sort of spoils a lot of the usefulness (I will include it anyway).

On a side note, the TC software doesn't open a window or anything on Mac when clicking the About button... and doesn't fetch updates, I have to download manually off the website.

Can you run it in debug mode and see if it list some error messages to the console output? I hope you can do a console output on the Mac.

Software do not download updates automatic, it will only advise your about updates.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 01, 2022, 11:04:52 am
The current definition at least allows setting of the voltage and current, and gives readings for both as well as power, so it is pretty useful as it is, but I agree that the ability to turn the output on and off etc is important.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 01, 2022, 04:03:29 pm
The current definition at least allows setting of the voltage and current, and gives readings for both as well as power, so it is pretty useful as it is, but I agree that the ability to turn the output on and off etc is important.

You are aware that you can use the command line to test commands?
Anything you type on the command line that do not start with ; # or = will be transmitted to the selected device, that makes it fairly easy to test different SCPI commands.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 01, 2022, 05:47:03 pm
Do we have a scripting command to hide a column in the Table page during the acquisiton  (i'm not speaking about the #exportcolumn during the export)  ? 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 01, 2022, 06:05:23 pm
Do we have a scripting command to hide a column in the Table page during the acquisiton  (i'm not speaking about the #exportcolumn during the export)  ?

No, I do generally not see a problem with collecting extra data columns. The program is designed to handle a fairly high number of columns.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 01, 2022, 06:49:07 pm
Yes I tried using the command line to send raw commands to try and determine the commands, from those I know the ones in the user manual don’t work, as well as dozens of variations that I tried.

The user manual is actually wrong for some of the other commands, which I figured out by trial and error.

I will try and get wireshark on the PC today and see if that yields any clues to how the official software does it.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 02, 2022, 02:45:38 am
Thanks

It seems that the globalvar's name and the Name used in the Math tab (attached) need to be the same for the value to update in the Current values tab.

Even after moving the declaration to the top, the value didn't become available until I made the names the same.

Now everything works!

Code: [Select]
=globalvar sVal=0
#log 2
=sVal=0.01
#while (sVal<3.5)
#echo (sVal)
#hasLogged
=sVal=(sVal*1.1)
#endwhile
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 02, 2022, 03:36:15 am
After a few hours of frustration and instal, uninstall, reinstall I managed to get wireshark to run on the PC, see the network and not crash... I hate PC's.

Attached are screen photos showing the differences between what TC sends from my Mac and when the official "EasyPower" software is sending, interestingly EasyPower is using port 9009, and if I tried using that in TC it could not connect to the device. EasyPower is probably using some other backend (not just sending SCPI) as the software is used to update firmware on the power supply etc too.

There are two shots from the PC, one is using its SCPI command line option, one is from the GUI doing the same thing, the Mac one is from the command line (it is exactly the same from the GUI).

You may notice that there is the short form and long form of the command on the PC version, the long form OUTPUT is sent from the EasyPower software GUI, the short from was me from the command line, BOTH work.

The commands being passed by either the Mac TC or PC EP are the same... so I am none the wiser to why it doesn't work, aside from the EasyPower software having a different backend running.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2022, 10:28:52 am
After a few hours of frustration and instal, uninstall, reinstall I managed to get wireshark to run on the PC, see the network and not crash... I hate PC's.

One idea to try is using:
#port 5024
or
#port LXI

If both works you can also use
#port 5024 LXI

The above is not supposed to change anything, at least if Siglent has done a good SCPI implementation.
Title: Re: Program that can log from many multimeters.
Post by: pizzigri on January 03, 2022, 10:19:29 pm
Hi,
I saw that the Agilent/Keysight 34410A is not supported, is there a way to add it to the list of supported devices?
It is a LXI device, but I do not have it in a network... it is only connected with a USB to my workshop PC, that is a Win10 machine.
How can I connect it? I do already have it working with Agilent DMM application.
BTW, I installed the program and it seems to work - but no joy in connecting said 34410.

Best,
Franco
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 04, 2022, 03:53:17 am
Owon B series multimeters are difficult to connect to TestController as there are several "features" that are uncommon.

Dean Cording explains these at https://github.com/DeanCording/owonb35.

I've created an ESP-32 dongle and a device file for Owon B series multimeters (all variants of the B31, B35 and B41). The code for the dongle and a TestController definition file for the B41T+ in my github repo. https://github.com/palmerr23/Owon_B41T

It should work with the main functions on the B31 and B35 series as well.

I wouldn't recommend adding the definitions file to a TC release, as it is useless without the dongle.

I hope someone else finds this solution useful.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 04, 2022, 08:01:59 am
I saw that the Agilent/Keysight 34410A is not supported, is there a way to add it to the list of supported devices?
It is a LXI device, but I do not have it in a network... it is only connected with a USB to my workshop PC, that is a Win10 machine.
How can I connect it? I do already have it working with Agilent DMM application.
BTW, I installed the program and it seems to work - but no joy in connecting said 34410.

TC needs a (virtual) serial connection or a network connection to work, the meter probably do not provide a serial connection on the USB, i.e. you have to use network.
To make a definition it is probably easiest to copy the "Keysight344xxA.txt" file and modify it (It is a fairly complicated definition, because it supports nearly all functions in the newer DMM's).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 04, 2022, 02:36:21 pm
I've created an ESP-32 dongle and a device file for Owon B series multimeters (all variants of the B31, B35 and B41). The code for the dongle and a TestController definition file for the B41T+ in my github repo. https://github.com/palmerr23/Owon_B41T

I will add a link to your github on the supported equipment page.
Title: Re: Program that can log from many multimeters.
Post by: Karlis on January 04, 2022, 08:14:27 pm

There are also more values where 1000 must be replaced with 100.
Done in the attached RD60xx.txt file.
Only tested with RD6012, the only one I have. Firmware is the latest version from Unisoft, which is great.

Two problems I've seen and I don't know how to solve.
1. in RD6012 popup, tab settings, the Buzzer function was inverted, corrected that, but to select On I have to click Off and vv.
2. in the tab Memory M4 is selected by default and selecting another, (M0 to M9), always returns to M4
Making settings to M4 works OK, but only M4 is selectable. Don't know how to solve.

BTW. Making settings from Testcontroller is not the main function, logging (core business) works fine.

I am a bit worried about if 6006 and 6012 uses the same factors, can anybody with a 6006 confirm that this file works correctly (The original Riden file must be replaced to test it).

I have 6018 and 6006P, I started to modify original definition. With 6006P we need other factors for voltage too.
Currently my job takes over my free time, but I hope in next week I will have more time.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 04, 2022, 09:19:24 pm

Quote
Thanks

It seems that the globalvar's name and the Name used in the Math tab (attached) need to be the same for the value to update in the Current values tab.

Even after moving the declaration to the top, the value didn't become available until I made the names the same.

Now everything works!

;initialisation math calculation
=globalvar effi=0
#math Efficiency % FormulaNU 0 effi
#TRIG
#log 0.1
#WHILE
....
=effi=formatDouble(100*readPower(load)/(readVoltage(ps)*readCurrent(ps)),1,3,0,3);
#ENDWHILE

-> effi is updated in "realtime". I don't catch your remark
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 04, 2022, 09:28:06 pm
Thanks for the request for further explanation of my post.
Quote
It seems that the globalvar's name and the Name used in the Math tab (attached) need to be the same for the value to update in the Current values tab.

Even after moving the declaration to the top, the value didn't become available until I made the names the same.

Now everything works!

=globalvar sVal=0
#log 2
=sVal=0.01
#while (sVal<3.5)
#echo (sVal)
#hasLogged
=sVal=(sVal*1.1)
#endwhile

I was trying to log the variable - have it auto update in the Table tab as well as using it live.

It appears that this only works if the script variable and the Name of the Math variable are the same (see the attachment to the original post). When the Math variable was Named sValx, its value didn't update in Current Values or the logging Table. When I changed it to sVal (same as the script variable) it did.

I'm new to TC, so am unsure whether this is how it works, but thought it worth recording if someone else had the same issue.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 04, 2022, 10:21:00 pm
I'm a noob too  :)
In my example the math.Efficiency variable which is using the glabal varaible "effi" is well updated in real time in the "current values" page. In fact i well understood what you said and it seems that your issue is not coming from not reusing teh same name for the declaration
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 05, 2022, 06:32:29 am
I have 6018 and 6006P, I started to modify original definition. With 6006P we need other factors for voltage too.
Currently my job takes over my free time, but I hope in next week I will have more time.

That sounds good, I hope you do it the with text replacement like the "CurrentScaleFactor"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 05, 2022, 06:36:24 am
It seems that the globalvar's name and the Name used in the Math tab (attached) need to be the same for the value to update in the Current values tab.

The only way TC can know what value to use is if the variable names match.
It is also important to use "FormulaNU" as the Type or the result will be changed when TestController recalculates the math columns (This happens when a formula is modified or a csv file is loaded).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 05, 2022, 06:40:38 am
;initialisation math calculation
=globalvar effi=0
#math Efficiency % FormulaNU 0 effi
#TRIG
#log 0.1
#WHILE
....
=effi=formatDouble(100*readPower(load)/(readVoltage(ps)*readCurrent(ps)),1,3,0,3);
#ENDWHILE

-> effi is updated in "realtime". I don't catch your remark

While this works, it is not the best way to do it. It is much better to the all the math on a math channel.

Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 05, 2022, 08:31:25 am
One idea to try is using:
#port 5024
or
#port LXI

If both works you can also use
#port 5024 LXI

The above is not supposed to change anything, at least if Siglent has done a good SCPI implementation.

Unfortunately trying to use LXI or port 5024 didn't connect to the unit at all... I guess someone else is going to have to figure this out at some point in the future, I can't.
Title: Re: Program that can log from many multimeters.
Post by: Karlis on January 05, 2022, 06:17:20 pm
I have 6018 and 6006P, I started to modify original definition. With 6006P we need other factors for voltage too.
Currently my job takes over my free time, but I hope in next week I will have more time.

That sounds good, I hope you do it the with text replacement like the "CurrentScaleFactor"

Yes, I do it with text replacement.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 05, 2022, 10:11:52 pm
I'm trying to import multiples .csv file directly into the table page under Test Controller or by scripting but i wasn't able to achieve one of them. I'm doing something wrong or I don't understand the process.

My csv are based on this kind of body :
First file
"SDL1020XE.CurrentSet","SDL1020XE.Current","QL355.VoltageSet","QL355.Voltage","Eff Vin=12.0v"
0.01,0.00976,12,12,100
Second file
"SDL1020XE.CurrentSet","SDL1020XE.Current","QL355.VoltageSet","QL355.Voltage","Eff Vin=10.0v"
0.01,0.00928,10,10,100

Under Test Controlller, all seems to be fine but when i click on the import button, nothing happens (picture below) and I respect the condition concerning the incrementation of the column for the column reference.

For scripting, i have those lines :
#CLEARTABLE
#loadtable temp9_0
#IMPORTTABLE temp12_0 SDL1020XE.Current  SDL1020XE.Current  Eff Vin=12.0v

and this result :
; #IMPORTTABLE temp12_0 SDL1020XE.Current  SDL1020XE.Current  Eff Vin=12.0v failed due to / by zero

Any idea ?
[attachurl=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 06, 2022, 09:47:34 am
I'm trying to import multiples .csv file directly into the table page under Test Controller or by scripting but i wasn't able to achieve one of them. I'm doing something wrong or I don't understand the process.

The problem is the reference column, it is used to synchronize the imported data with the already loaded data. It will often be time and usually has to match the x-axis on the chart.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 06, 2022, 10:49:20 pm
I played with the import function again folowing your answer  and i notice (i guess) that my issue is more related to the number of raw within the file loaded/imported into the table. It doesn't have matter with the number of column nor the synchronization with the index or time.

I attached two files for test if you want to fix it (but in my use case I fix it by forcing a minimum of steps). It's only when I click the import button that nothing happens. I can load a file correctly  but not import it.

I have an other question, as we are able with the mouse under the table page to move to a specific line (min/max/..), do you have some dedicated math function available by scripting as finding automatically the  minimum or maximum of a raw/column in the chart or table page ?

 [attachmini=1]to be renamed in .csv
 [attachmini=2]to be renamed in .csv

Title: Re: Program that can log from many multimeters.
Post by: 5q5r on January 07, 2022, 08:52:44 am
These may already have been answered previously, but I was unable to find the information on either the webpage nor in this monster thread ;-)

What is the license for the software?

Is the source code available?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 07, 2022, 09:49:41 am
I played with the import function again folowing your answer  and i notice (i guess) that my issue is more related to the number of raw within the file loaded/imported into the table. It doesn't have matter with the number of column nor the synchronization with the index or time.

This will be fixed in the next release.

I have an other question, as we are able with the mouse under the table page to move to a specific line (min/max/..), do you have some dedicated math function available by scripting as finding automatically the  minimum or maximum of a raw/column in the chart or table page ?

Yes: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Table_related_functions)

There are two version of each function, one will return the table index of the min/max/... (Called table...), the other the actual min/max/... value (Called tableCalc...).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 07, 2022, 09:56:45 am
What is the license for the software?

I have never specified it, but it is something like:
The software is free to use for anybody and can be used for both hobby and commercial work.
The software is as it is, there is no promise of fitness for any purpose or any support.

Note: At the current time I do provide support through this thread and on email

Is the source code available?

No.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 07, 2022, 11:19:53 am
HKJ is it possible to send commands without TC automatically adding the \n terminator? It appears that the issue I’ve been having with the SPD1168X is due to a firmware bug as it expects those commands (only) to not have a terminator, Siglent are now aware of the issue but I don’t know if or when they will issue a firmware update, so for the time being I want to work around it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 07, 2022, 12:00:26 pm
HKJ is it possible to send commands without TC automatically adding the \n terminator? It appears that the issue I’ve been having with the SPD1168X is due to a firmware bug as it expects those commands (only) to not have a terminator, Siglent are now aware of the issue but I don’t know if or when they will issue a firmware update, so for the time being I want to work around it.

Yes and no, you can redefine the line termination to empty, but then you have to include it on each command, I do not see this as a good solution.
Will it work if you add a space after the command?

Looking in you definition I see: :write: OUTP CH1, #[*OPC]
Have you tried: :write: OUTP CH1, #;[*OPC]
i.e. adding a ; before the [
To sneak a space through the system you may need to use: :write: OUTP CH1, #_;[*OPC]
i.e. a underscore

In next version I will include a "txBin" function in SCPIx/Ascii drivers for sending commands without the default line termination character
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 07, 2022, 06:07:41 pm
Concerning the #chartCurves, i understand and tested ok the name as for example :
#chartCurves Name1 Name2
or used a variable
#chartcurves (VarName1) (VarName2),

but if my names are into a list i didn't find a way to be able to use well #charcurve in my use case

I triedfor example (but not only) :
ListName=array("Name1", "Name2", "Name3")
#chartCurves (ListName[0])  -> graph curv name1
#chartCurves (ListName[1])  -> no graph, only index 0 is working
#chartCurves (ListName[0]) (ListName[1]) -> only the curv with index 0 is plot---  : corrrected following HKJ answer, I found a typo mistake : this works 
CNames="Name1 Name2 Name3"
#chartCurves (CNames) -> not working if I had more than one Name in CNames
---

Do you have a command which "adds" plot without erasing the existing curv(s) on the graph or is there a way to pass the list by scripting ?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 07, 2022, 07:11:06 pm
Concerning the #chartCurves, i understand and tested ok the name as for example :
#chartCurves Name1 Name2
or used a variable
#chartcurves (VarName1) (VarName2),

but if my names are into a list i didn't find a way to be able to use well #charcurve in my use case

I triedfor example (but not only) :
ListName=array("Name1", "Name2", "Name3")
#chartCurves (ListName[0])  -> graph curv name1
#chartCurves (ListName[1])  -> no graph, only index 0 is working
#chartCurves (ListName[0]) (ListName[1]) -> only the curv with index 0 is plot
---

It works for me.

CNames="Name1 Name2 Name3"
#chartCurves (CNames) -> not working if I had more than one Name in CNames
---

That will not work.

Do you have a command which "adds" plot without erasing the existing curv(s) on the graph or is there a way to pass the list by scripting ?

No, but I will look at accepting an array directly.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 07, 2022, 09:03:27 pm
I updated my last post, it's working for me too

Great for the integration of the array, thanks
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on January 07, 2022, 09:22:31 pm
OK good news, now that I have turned off EOL for the SPD1168X all the controls now work...

Updated file is attached, my original file had errors in the OUTP commands as the manual was wrong too, it had spaces before ON or OFF which was wrong (I found that out a few days ago when I sniffed the network when using the EasyPower software).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 08, 2022, 09:40:43 am
V2.01 is up
This is a couple of new devices and some very minor fixes/improvements to the software
   Added: #chartCurves accept an array type as parameter
   Added: Siglent SPD1168X & SPD1305X bench power supplies (Thanks TheDefpom)
   Added: txBin to SCPIx & Ascii driver, they will transmit without the default line termination character.
   Fixed: Import function did not work with very short csv files.
   Fixed: #interface part of Siglent SDL10xxx (Thanks trp806mo)
   Modified: TTI QL355P to A/B/C version, because the different software versions uses different ID strings.
   Added: GW INSTEK GPD-3303S 2/3 channel bench power supply (Thanks MarkW)
   Added: OWON XDM3041 bench multimeter (Thanks MarkW)
   Added: TENMA 72-6685A DMM, (Thanks MarkW)
   Added: jSerialComm will list its version when using debug mode.
   Added: ARB FeelElec FY6900-40M (Thanks palmer23)
   Added: Metrix MTX3281/MTX3281 data downloads (Thanks tgotic)
   Fixed: Change multiplication factor for RD6012 current. (Thanks Pukker)
   Added: RND KEL103v2 advanced driver for load (Thanks tgotic)
   Fixed: RND KEL103 simple driver for load (Thanks tgotic)

Note that TTI QL355P name is changed, this means that any instance of it must be removed from the "Load devices" page and a new instance added.

Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 08, 2022, 04:35:27 pm
THANKS a million times for Test Controller HKJ !
I was able to download it, and then install java
connect to my multimeter SDM3055 (it actually found it, and did everything compleetly automaticly happy for that)
the screen Current Values, i assume the avarage is a result of the selected sample number in Direct ?

the field Slope time is what value/time, i tried to change the input, but the value it display
dont really help me understand what it is ?

on main menu : the pop ups, WOW genius idea really love it.. how ever, how to select the configured avarage value ?
I can only make it display the readout , actual live value, however it jumps alot, and I need avarage filter on it,
to reveal the interesting parts of it,
i have the same "challenge" with chart, i like to use the avarage, as input to chart
log using 1 sec, i set chart to show the last 20 sec, removing the voltage input, dont update the chart
I had the idea chart will just continue ? for ever ? to be a roll of last 20 sec
if i stop log, and start log, and go into chart again, i again get the last live 20 sec, and can now see it is zero volts, as i removed the input.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 08, 2022, 04:57:21 pm
the screen Current Values, i assume the avarage is a result of the selected sample number in Direct ?

That is correct, all the statistical values on this page is based on the selected sample size.
The time shown below the selected sample size is the actual time covered by the used samples.

the field Slope time is what value/time, i tried to change the input, but the value it display
dont really help me understand what it is ?

The slope is calculated over the selected sample size, the selected time only scales the value.

on main menu : the pop ups, WOW genius idea really love it.. how ever, how to select the configured avarage value ?
I can only make it display the readout , actual live value, however it jumps alot, and I need avarage filter on it,
to reveal the interesting parts of it,

The only average display is the "Average" on the "Current values" tab. but using the "Math" page it is possible to create averages and many other types of values. These can be used on all the different readouts.
Note: The popup "Adjust scale" can also do some averaging, this is designed to help with sensitive adjustments.

i have the same "challenge" with chart, i like to use the avarage, as input to chart
log using 1 sec, i set chart to show the last 20 sec, removing the voltage input, dont update the chart
I had the idea chart will just continue ? for ever ? to be a roll of last 20 sec
if i stop log, and start log, and go into chart again, i again get the last live 20 sec, and can now see it is zero volts, as i removed the input.

The chart will by default show all logged data, but you can limit it by filling values into the two fields below the chart, this will usually freeze the chart when it has reached the limits, but using a negative value in the first field and leave the second empty will make a scrolling chart.
To get a averaged curve you must use the "Math" page.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 08, 2022, 10:24:51 pm
thanks a lot for getting back to me
YES i see now the popups, readout, then rightclick and now the option math apear , nice
I try to figure out how to configure math, dont see any examples on the web page ?
i try search in this thread and see if this is explained here. i guess i need to define readout and math feature somehow

I tried to connect a lot of other siglent Equipment, all fails to connect, I am sure dhcp is on, and the units do say their ip number
but so far only my SDM 3055 show up, and works stable
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 08, 2022, 10:52:44 pm
FINALLY figured it out.. wow this took a long time to guess :-)
one problem, math average result is missing two digits, by default,
right click select format SI and ask for more digits, got it
but now if last digit is a zero, it is not displayed, and all digits move :-)
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 09, 2022, 02:01:01 am
I'm working on a device file for my (ancient) Metex 3850D.

I've confirmed that the comms should be  1200 No parity 7 bits, 2 stop (1200N72)  (see TTerm2 attachment.)

It returns a reading every time a "D" (no CR or LF required) is sent from teraterm, and the reading is of the format "DC -x.xxx    V" for DCV. (see Tterm1 attachment).

When I run the attached device file, it hangs for 10+ seconds after the Start Thread message and finally sends the "Found" and "Mode reported" lines.

Moving to the Current values tab produces a string of error messages, and a Re-connect suggests that there's an error in my device file (attached), with the same time delays as the first attempt at connection.

Any suggestions?

Code: [Select]
Starting
;; jSerialComm version: 2.7.0
;; Start thread for: COM10 - Metex 3850D
;; Found Metex 3850D on CP2102 USB to UART Bridge Controller (COM10)
;; Mode reported: <DCV>
; -------- Current values tab here ----------
;; M3850D: Tx <VALUE?>
;; M3850D: Rx Timeout
;; M3850D: Rx as numbers <NaN>
;; M3850D: Tx <VALUE?>
;; M3850D: Rx Timeout
;; M3850D: Rx as numbers <NaN>
;; M3850D: Tx <VALUE?>
;; M3850D: Rx Timeout
;; M3850D: Rx as numbers <NaN>
;; M3850D: Tx <VALUE?>
;; M3850D: Rx Timeout
;; M3850D: Rx as numbers <NaN>
;;---- reconnect here ---------------
dk.hkj.devices.SetupFormats$ButtonsOnField - Load - Line do not contain 2 parameters: _
dk.hkj.devices.SetupFormats$ButtonsOnField - Load - Line do not contain 2 parameters: _
;; jSerialComm version: 2.7.0
;; Start thread for: COM10 - Metex 3850D
;; COM10: Set params: 1200N72
;; Found Metex 3850D on CP2102 USB to UART Bridge Controller (COM10)
;; Mode reported: <>
;; Mode reported: <DCV>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 09:22:13 am
I try to figure out how to configure math, dont see any examples on the web page ?
i try search in this thread and see if this is explained here. i guess i need to define readout and math feature somehow

There is a webpage about the Math tab, you can usually open it by pressing F1 when on the Math tab.
Or you can find it here: https://lygte-info.dk/project/TestControllerMath%20UK.html (https://lygte-info.dk/project/TestControllerMath%20UK.html)

I tried to connect a lot of other siglent Equipment, all fails to connect, I am sure dhcp is on, and the units do say their ip number
but so far only my SDM 3055 show up, and works stable

Generally you have to type the IP address into the address field. For this to work stable you have to program the dhcp server with fixed IP addresses for the test equipment or reserve address range and then program the IP addresses directly into the test equipment.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 09:23:07 am
one problem, math average result is missing two digits, by default,
right click select format SI and ask for more digits, got it
but now if last digit is a zero, it is not displayed, and all digits move :-)

Instead of SI format you can use the D format, it uses a fixed number of digits after the decimal point.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 09:29:05 am
You forgot to attach the definition.

I've confirmed that the comms should be  1200 No parity 7 bits, 2 stop (1200N72)  (see TTerm2 attachment.)

This means your use this definition for the port:
#port comfixedbaud
#baudrate 1200N81

It returns a reading every time a "D" (no CR or LF required) is sent from teraterm, and the reading is of the format "DC -x.xxx    V" for DCV. (see Tterm1 attachment).

That sounds like you need the:
#driver SingleValue
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 09, 2022, 11:34:15 am
>There is a webpage about the Math tab, you can usually open it by pressing F1 when on the Math tab.

GENIUS :-) this trick works on all other tabs as well,
this feature is so usefull and smart, i recommend you explain about this, top line, in the about / help
since I did not find access to this page from the normal webpage
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 09, 2022, 12:13:47 pm
Siglent SPD3303X connects, in tab current values, beep beep like 10 times, no data
then it gives up, and resume all other units with correct read data.

I also tried to unclik enable in load devices on all other units.
so now it is only the SPD3303X, same issue.

i retried this with two different SPD3303X, same result.

see attached picture,

-----
EDIT : SDS2504x plus is not on the list,
;; 192.168.0.235 Device Siglent Technologies,SDS2204X, do not match: Siglent Technologies,SDS2504X Plus,

SSA3032X is not in the list, just tried to connect using random other name from siglent, just to see its type answer
, do not match: Siglent Technologies,SSA3032X,

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 12:37:25 pm
this feature is so usefull and smart, i recommend you explain about this, top line, in the about / help
since I did not find access to this page from the normal webpage

Using F1 for help is not new, it was introduced before Windows and Microsoft uses it in their programs.
There is a couple of links to the Math page description from the Intro page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 12:39:30 pm
Siglent SPD3303X connects, in tab current values, beep beep like 10 times, no data
then it gives up, and resume all other units with correct read data.

From the notes:

- Requires firmware version 1.01.01.02.07R2. Firmware versions 1.01.01.02.05 and earlier do not work.

Maybe that explains your problems?

Anyway I have not made the definition and do not know much about Siglent equipment.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 09, 2022, 01:33:51 pm
>Maybe that explains your problems?

YES that did explain it, now it works :-) thanks for great support,
now i will try to dig deeper into the math tap, this is where the magic happens.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 02:57:10 pm
now i will try to dig deeper into the math tap, this is where the magic happens.

You can apply math columns before or after you do a log. The after also means you can load a old csv file and then apply some math columns to it.

There are functions for a lot more stuff than just using the math tab, you can do a lot of scripting.
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on January 09, 2022, 03:06:04 pm
Hi again,
different issue this time ( I solved the earlier one re jSerialPort and /tmp execute permissions).
I have a Prologix GPIB-USB  adapter configured in the GPIB popup, with "connection :  ID "A", "serial no baudrate", address "/dev/ttyACM0".
In the device list: one hp3478,  address "A:23".

When I click "Reconnect", and when I manually try to send commands (either raw strings or pre-defined commands e.g. "DCV" or "RANGE:30K" etc), I see no activity on the USB bus (capturing with Wireshark), and no activity on the 3478. In tc.log I see no errors either. It doesn't appear to be even opening the serial port ? I can still open the same port in different software... Any suggestions ?

I can manually communicate with this device with a generic serial terminal, so my setup is functional.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 04:08:14 pm
I can still open the same port in different software... Any suggestions ?

I tried on my system and it worked (Except I do not have the DMM), do you use the correct name for the serial port?
You can right click in a address field on the "Load devices" page (But on on the GPIB page).

Linux also has a issue with access to serial ports, I hope you have fixed that.
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on January 09, 2022, 05:26:23 pm
do you use the correct name for the serial port?

Ah ! good idea - it seems this (or more likely the jSerialport layer ?) needs only the last part, e.g. "ttyACM0". This is very unusual; devices are almost always fully-specified on linux. I would suggest at least, if the name starts with "/dev/", to use it as-is... Let me know if that's jSerialport behaviour, I can open a ticket with them.

That right-click  feature would be awesome, but sadly doesn't work here; nothing is shown (neither in the GPIB page, or if I add e.g. a 34401 with direct serial connection).

Otherwise things are much better now, I can actually take readings and logs. Having some mode-switching issues but for those I blame my own incompetence.

Thanks !
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 09, 2022, 05:57:08 pm
Ah ! good idea - it seems this (or more likely the jSerialport layer ?) needs only the last part, e.g. "ttyACM0". This is very unusual; devices are almost always fully-specified on linux. I would suggest at least, if the name starts with "/dev/", to use it as-is... Let me know if that's jSerialport behaviour, I can open a ticket with them.

I do not know if jSerialPort accept both type of names, I request a list of serial names from it and then match them to the names in the address fields.

That right-click  feature would be awesome, but sadly doesn't work here; nothing is shown (neither in the GPIB page, or if I add e.g. a 34401 with direct serial connection).

The right click feature only works with devices that has a serial port type, i.e. it is supposed to work with the 34401 if there are any serial ports accessible.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 09, 2022, 10:56:26 pm
Definition file attached this time.  I used the Protek 506 definition as a template - commenting out almost most of the ranges until I get DCV working.

I'm already using the SingleValue driver and comfixedbaud port (thanks for confirming that they're the correct ones).

Why use 1200N81 when it's 7 bits, 2 stop bits? I tried N81 and it made no difference (commented out).

Quote
Quote from: palmerr23 on Today at 02:01:01 am
I've confirmed that the comms should be  1200 No parity 7 bits, 2 stop (1200N72)  (see TTerm2 attachment.)

This means your use this definition for the port:
#port comfixedbaud
#baudrate 1200N81

Quote from: palmerr23 on Today at 02:01:01 am
It returns a reading every time a "D" (no CR or LF required) is sent from teraterm, and the reading is of the format "DC -x.xxx    V" for DCV. (see Tterm1 attachment).

That sounds like you need the:
#driver SingleValue
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 10, 2022, 09:09:44 am
Definition file attached this time.  I used the Protek 506 definition as a template - commenting out almost most of the ranges until I get DCV working.

I cannot see any problems in it, but maybe you need to disable the eol character: #eol \_

You can try using debug mode and see if it shows something useful.
Title: Re: Program that can log from many multimeters.
Post by: RikV on January 11, 2022, 04:12:12 pm
Are there any plans to support USBTMC? I could of course connect my Siglent on TCPIP but I preferably would have evrything through USB since my scope (GW_Instek) does'nt have a TCPIP port.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 11, 2022, 04:49:47 pm
what is USBTMC ?
if it is just a COM port ? with added serial protocol on top ?
it should be very easy to support ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 11, 2022, 05:01:16 pm
Are there any plans to support USBTMC? I could of course connect my Siglent on TCPIP but I preferably would have evrything through USB since my scope (GW_Instek) does'nt have a TCPIP port.

I will if I find a java library to support it, preferable multi platform.

if it is just a COM port ? with added serial protocol on top ?

It is not.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 12, 2022, 11:11:21 am
USBTMC stands for USBTest and Measurement Class and allows GPIB-style communication over USB using USBTMC-compliant VISA layers
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on January 12, 2022, 11:15:24 am
Is there a trick to delete a row in the table (in order to suppress a glitch from the acquisition but after log 0)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 12, 2022, 12:05:52 pm
Is there a trick to delete a row in the table (in order to suppress a glitch from the acquisition but after log 0)

Generally you cannot modify the data in the table, but you can filter it during a export and then reload it (Export/reload is a one button operation)
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 12, 2022, 12:33:03 pm
HA HA i am super happy about this program,
just added two I2C temperature sensors TMP275, Via arduino
modifyed the good example code and TC driver allready provided my HKJ (see homepage links)
with the power of average I can get even more resolution, from a temperaure sensor,
its native resolution is 0.0625C wich is quite allright, but its jumps are very nice and PWM alike, see the attached picture,
this means with average added on top of this, you can get the values in between the native steps :-)
i need this, for my temperature controlled voltage refferance , so i can reveal how well or bad, the temperature regulation performs.
side note : the two sensors are hand soldered to wires, and not calibrated, the values you see here, are directly what the chips say,
my plan is to add 8 and make a nice temperature monitor unit.
Temperature Measurement is one of the most important things to get into your data set
almost no matter what kinds of science recording you are doing.
PPS : incase any of you want to play along, with Test Controller and Arduino, I found a problem with reset, lock up, and program not running
when a new connection to TC is made, HKJ and I are on it, i plan to dig more into it during the next weeks, until then, if you see this, just short reset to +5
while you hit the reconnect button in TC and all will be fine.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 12, 2022, 01:18:31 pm
just added two I2C temperature sensors TMP275, Via arduino
modifyed the good example code and TC driver allready provided my HKJ (see homepage links)

Adding a temperature channel to TestController is easy and cheap: Connect a Arduino (Nano/ProMicro) to a temperature sensor (DS1820) and you can directly use the Arduino example code from my website. https://lygte-info.dk/project/TestControllerArduino2%20UK.html (https://lygte-info.dk/project/TestControllerArduino2%20UK.html)

I am very curious about your problem, I have used a lot of Nano and ProMicro and never seen a problem. I hope the modified TC version I have made will solve it.
Title: Re: Program that can log from many multimeters.
Post by: RikV on January 12, 2022, 05:13:45 pm
This is maybe a good starting point?
https://github.com/javatmc/javatmc-core
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 12, 2022, 05:31:40 pm
>I am very curious about your problem, I have used a lot of Nano and ProMicro and never seen a problem.
>I hope the modified TC version I have made will solve it.

NEW JAR file received, so i open this experiment again :-)

the problem is ONLY related to MEGA i tried one original brand new,
and an older china clone, both lock up after the com connect reset pulse, and is only released running again
when TC time out its connections..
Attached pictures of the two, (the cure right now, is to use other boards, or if you insist on using mega, tie its cpu reset to +5, easy access via jumper)

ALL other Ardunio boards, UNO, Normal, clone, Nano and nano clone, WORKS just fine, i went thru all my boxes and tried them all,
actually also wanted to see if any one was blown :-) so it was a win win.
i see the connect reset, and a little while after the reset, rx tx negotiation with TC goes well,
and it finds the unit, all is happy.
if you like to solve this ? I will be happy to assist with experiments.
Else we could also just call it case closed, and just dont use mega, they are big and expensive, why would you use them ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 08:23:40 am
This is maybe a good starting point?
https://github.com/javatmc/javatmc-core

No, it do not support more than I already do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 08:29:23 am
the problem is ONLY related to MEGA i tried one original brand new,
and an older china clone, both lock up after the com connect reset pulse, and is only released running again
when TC time out its connections..

I tried a clone MEGA and it worked fine.

Attached pictures of the two, (the cure right now, is to use other boards, or if you insist on using mega, tie its cpu reset to +5, easy access via jumper)

I can see one significant difference between your MEGA and mine: The serial port, yours is probably a AVR processor, mine is a serial-USB chip.
I do not have any Arduino with the square serial chip, all mine a DIP serial-USB chip.

I have no idea why that would affect the communication, maybe it is a USB driver problem for that square chip.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 13, 2022, 10:59:51 am
i am sorry for jumping back and forward in the topics :-)
when we add temperature sensors, using whatever external hardware like arduino or what not,
people use DS18B20 or other sensors like LM75 to TMP275, for high accuracy , and high resolution.
i love to see a bunch of DS sensors on the same temp and same curve, zoomed in to only show +/- 1C
do they track ? to halve of one lsb ?
time:
conversion time pr sensor is multiplied by number of sensors,
this total will limit the TC program loop speed of all your instruments,
i tried to add reply delays in my arduino, TC runs fine and stable, no matter how long and crasy i try to be,
it just limit the max log speed, so that is nice to know.
see the attached pictures,
i like to be able to attach 1-8 sensors to a unit, that is serial or ethernet connected to TC,
and i like to be able to run TC in 1sec log mode,
all other instruments i got, are ethernet connected, so i assume the com time is close to zero,
at least in the mS range we talk about here.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 11:47:14 am
i am sorry for jumping back and forward in the topics :-)
when we add temperature sensors, using whatever external hardware like arduino or what not,
people use DS18B20 or other sensors like LM75 to TMP275, for high accuracy , and high resolution.
i love to see a bunch of DS sensors on the same temp and same curve, zoomed in to only show +/- 1C
do they track ? to halve of one lsb ?
time:
conversion time pr sensor is multiplied by number of sensors,
this total will limit the TC program loop speed of all your instruments,
i tried to add reply delays in my arduino, TC runs fine and stable, no matter how long and crasy i try to be,
it just limit the max log speed, so that is nice to know.
see the attached pictures,
i like to be able to attach 1-8 sensors to a unit, that is serial or ethernet connected to TC,
and i like to be able to run TC in 1sec log mode,
all other instruments i got, are ethernet connected, so i assume the com time is close to zero,
at least in the mS range we talk about here.

When reading values from devices all reads are performed in parallel, i.e. the slowest devices sets the pace.
When TC is logging all the communication and logging is off-loaded to background jobs, i.e. slow response time will not affect user interface.
BUT when TC is communicating from the command line, Setup and Mode popups it is in the same thread as the user interface and will slow down the user interface, if the device is slow.
Scripts are usually also background jobs and it is possible to run many scripts threads in parallel, even if they access the same device (If a device is configured correctly in TC only a single TX/RX is indivisible).

The time a sensor needs to convert a value do not need to affect the response time of a device, all my examples are written that way. This may mean that the actual value logged in TC is only updated for every X entries (I.e. logging the same values for X entries), but it will not slow down logging from other devices or slow down TC.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 12:14:13 pm
I forgot:

conversion time pr sensor is multiplied by number of sensors,

I do not believe that, I am pretty sure they can be run i parallel, i.e. only a slightly longer cycle time for 8 sensors compared to 1 sensor.
Title: Re: Program that can log from many multimeters.
Post by: Jester on January 13, 2022, 03:08:46 pm
HELP.....
I'm sure this must be documented somewhere, it's just not obvious where.

I'm trying to setup logging from 3x 34401A meters using GPIB

Under load devices I added a 34401A, however it defaults to Type "Serial" and I would like to use GPIB. I'm using what I'm guessing is a clone Agilent 82357B USB to GPIB adapter, that is recognized by Windows7 device manager as a  Keysight 82357B. I have successfully used this adapter in the past so I know it works.

When I click on GPIB the GPIB interfaces pops up as type AR488 id A connection serial and the Address and baudrate are blank and red in color.

It's not obvious how I configure the program to use GPIB with my 34401A meters.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 04:02:56 pm
HELP.....
I'm sure this must be documented somewhere, it's just not obvious where.

I'm trying to setup logging from 3x 34401A meters using GPIB

Under load devices I added a 34401A, however it defaults to Type "Serial" and I would like to use GPIB. I'm using what I'm guessing is a clone Agilent 82357B USB to GPIB adapter, that is recognized by Windows7 device manager as a  Keysight 82357B. I have successfully used this adapter in the past so I know it works.

When I click on GPIB the GPIB interfaces pops up as type AR488 id A connection serial and the Address and baudrate are blank and red in color.

It's not obvious how I configure the program to use GPIB with my 34401A meters.

There are few issues:
1) To use a GPIB interface click on the Serial/... in the Type column and select GPIB (It will only be shown for devices that has been defined with a GPIB interface).
2) TC only support a few GPIB interfaces as can be seen in the combobox on the GPIB popup. The AR488 is a cheap GPIB interface, there is a thread about it here on EEVBlog.
3) TC only handle one device for each GPIB interface at the current time, it is a bug in the software and will be fixed, but I have no timeline for it.

Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 13, 2022, 06:03:26 pm
i just went out and got a brand new china clone mega, i dont give up on research that easy ha ha..
YES that one works with TC
But both my genuine original arduino Mega, dont
if you like to solve this ? I am ready to help, my suggestion : we live quite close, i dont mind meeting,
we could simply swap a clone mega of yours, for one of my original,
then i am curious to hear how this works out your place :-)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 13, 2022, 07:12:43 pm
i just went out and got a brand new china clone mega, i dont give up on research that easy ha ha..
YES that one works with TC
But both my genuine original arduino Mega, dont
if you like to solve this ? I am ready to help, my suggestion : we live quite close, i dont mind meeting,
we could simply swap a clone mega of yours, for one of my original,
then i am curious to hear how this works out your place :-)

I am not sure how much time I want to spend on a old MEGA model, the smaller Arduino and the newer models are much more interesting.
You could try controlling the handshake signals and see if it changes anything, i.e. using 9600RD as baudrate (Assuming you use 9600 baud on the Arduino).
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 19, 2022, 02:09:16 pm
This may be a very dumb problem but I need some help.

Since my C-programing knowledge is not existing I started a small ESP32 interface project using Micropython.

For first testing I used 2 DS18b20 sensors. Everything works with a serial terminal as expected. See screen shot of terminal. So far so good. 

I modified the DS18b20 definition of HKJ (attached) but the response of the device is unexpected strange and I have no idea why and how to overcome this problem:

Starting
;; jSerialComm version: 2.7.0
;; Start thread for: COM3 - BD_DS18b20
;; Start thread for: COM4
;; Start thread for: COM8
;; Stopping thread for: COM8
;; Stopping thread for: COM4
;; COM8: Close
;; COM4: Close
;; COM3: Set params: 115200
;; COM3: Tx: <*IDN?.> 2A 49 44 4E 3F 0D
;; COM3: Rx: <*IDN?> 2A 49 44 4E 3F
;; CP2102 USB to UART Bridge Controller (COM3) Device BD,DS18b20, do not match: *IDN?
;; COM3: Close
;; Stopping thread for: COM3 - BD_DS18b20
;; COM3: Close

Any help will be appreceated!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 19, 2022, 02:26:47 pm
Since my C-programing knowledge is not existing I started a small ESP32 interface project using Micropython.

For first testing I used 2 DS18b20 sensors. Everything works with a serial terminal as expected. See screen shot of terminal. So far so good. 

I modified the DS18b20 definition of HKJ (attached) but the response of the device is unexpected strange and I have no idea why and how to overcome this problem:

It is a echo function, your device is echoing any input it receives.
Is there some way you can disable that?
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 19, 2022, 02:58:34 pm
Thanks for this hint, I will search for a „non-echo-setting“.

Edit:
Isn't that simple in (mirco)python as I thought. If I'll got it running I post it as example for others.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 19, 2022, 07:35:59 pm
Thanks for this hint, I will search for a „non-echo-setting“.

Edit:
Isn't that simple in (mirco)python as I thought. If I'll got it running I post it as example for others.

I am sure there is a way to disable echo, it is only when using a terminal program you want it, for any other purpose you do not want any.

If you get some useful Micropyton code I would be happy to post it as examples on the TC part of my website (of course with credit to you).
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 19, 2022, 08:49:50 pm
I am now done with my 4 channel Temperature logger for Test Controller
I use I2C sensors TMP275, all the sensors i got, track within 1 LSB in 12 bit mode = 0.0625C initial
so i dont see any need for calibration yet.
if any one like to know more, i plan to share all files for free, and they can be used for non commercial purpose.
you need : arduino uno with socket or atmega328pu with arduino bootloader
3D printer, PCB CNC, or etching, or order the pcb's from jlc,
so i plan to give away all gerber files too,
arduino sw is a combo of HKJ demo and I2C temperature demo,
and a modified HKJ serial config file, if any one like to know more, PM me..

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 20, 2022, 03:41:17 pm
I am now done with my 4 channel Temperature logger for Test Controller
I use I2C sensors TMP275, all the sensors i got, track within 1 LSB in 12 bit mode = 0.0625C initial
so i dont see any need for calibration yet.
if any one like to know more, i plan to share all files for free, and they can be used for non commercial purpose.
you need : arduino uno with socket or atmega328pu with arduino bootloader
3D printer, PCB CNC, or etching, or order the pcb's from jlc,
so i plan to give away all gerber files too,
arduino sw is a combo of HKJ demo and I2C temperature demo,
and a modified HKJ serial config file, if any one like to know more, PM me..

If you want I can put it up on my website.
I would like a section with user designs where people can read a description, see a picture and then download a zipfile with the project.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 20, 2022, 07:13:03 pm
I got my DS18b20-interface based on ESP32 and Micropython running with 7 sensors parallel (makes no sense but for testing).
Thanks to HKJ for his hint with "echo". I will prepare it during the next days for you all here. Stay tuned.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 21, 2022, 08:14:40 am
please show us curves, how well all your seven DS18B20 track ?
zoom into the last bit of their resolution.
tape them all good together, and isolate them, wrap two socks around them, this should make you sure they are all exactly the same temperature.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 22, 2022, 06:10:02 pm
Sorry I killed my last ESP32 with wrong power supply. It will take some days before I have replacement.   

Short answer: precision of DS18b20 depends on the badge/supplier you bought (from). I had 2 older ones and 5 new bought. The new ones seems to have more differences but all differs about. 0.5 degrees from each other. I missed to make a screenshot. In the past I did a 2 point calibration with ESPeasy and this is easy to implement. May be later.

And it seems that TestController allows „only“ 6 graphs at the same time. (what is really enough!)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2022, 07:09:33 pm
And it seems that TestController allows „only“ 6 graphs at the same time. (what is really enough!)

I put the limit at 6 because each one requires a scale and 6 scales takes up a lot of space, i.e. very little space for the actual chart.
I have added a function to combine scales, but it can only be accessed from the command line, if I get around to make a popup for it I may increase the limit to 8 or 10 (That would be useful for battery discharge charts at multiple currents).

Note: For digital signals the limit is much higher, because they share one scale.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 22, 2022, 07:56:21 pm
Thanks bad-driver, so far all my own sensors are from same batch, so the performance benchmark seems unfair
so far all them i tried to compare, align to last bit, this dont say much about accuracy, only repeatability.

if TC could allow me to lock ? or fix ? or assign ? 6-12 inputs of same type, voltage or current or temperature ?
to use SAME scale settings, it will make my work more easy, as it is now, it is a little bit of a hazzle to change many min-max values, at the same time.
and this way let me see more, at the same time, but I guess, i could also start TC multible times ?
as long as the PC can handle the load, but then data will not be on the same chart.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2022, 08:25:52 pm
if TC could allow me to lock ? or fix ? or assign ? 6-12 inputs of same type, voltage or current or temperature ?
to use SAME scale settings, it will make my work more easy, as it is now, it is a little bit of a hazzle to change many min-max values, at the same time.

You can do that for up to 6 curves with the #CHARTSCALESYNC command.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 22, 2022, 08:36:54 pm
wow nice.. please explain a total noob how to execute this ?
i am still very erly in the process of learning how to use TC
it looks like it can do so much more, than is seen at first glance
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2022, 08:57:04 pm
wow nice.. please explain a total noob how to execute this ?

If you type the the command on the command line you will get a explanation in the help field.
Basically you have to type the full name of the curves after the command.

i am still very erly in the process of learning how to use TC
it looks like it can do so much more, than is seen at first glance

I have packed a lot of functionality into TC and not everything is obvious at first glance. Most of it is explained on the help pages (That can usually be reached by pressing F1), but that only explains the functions, not very much about how they can be used.
One example is the function "Param sweeper" it can do some very advanced automatic tests, like testing a converter (boost or buck) at multiple input voltage and varying load and generate charts of the result.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 23, 2022, 09:15:13 am
I got it again running after some rework tonight. 6 graphs are enough because you can easily switch between with the help of the switch boxes. Since I use a 4k monitor I have enough space for many many axis but I understand the reason for the limit.

I noticed it only since I connected all my 7 sensors at the same time. Regarding the ongoing discussion in another thread at EEVBLOG (siglent DMM) I think, the digital sensors are much handier as all this thermocouples, you have no connection issues etc.

OZ2CPU, if you want to change all limits and scales at the same time, than you can in „scales for chart“ mark the rows
and change all limits with the help of the limit fields on the bottom of the screen.

I come back later in the afternoon with images and a description of my little Micropython program and my bread board solution and the results of my ongoing measurment.

I started coding 45 years ago at high school with PASCAL and did a lot of assembler (Z80) at university but for more than 30 years I made not a single program. For people like me Python is much easier compared to Arduino C and with the help of the Micropython development environment you can step by step interpreter-like develop you solution.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 23, 2022, 10:03:55 am
I got it again running after some rework tonight. 6 graphs are enough because you can easily switch between with the help of the switch boxes. Since I use a 4k monitor I have enough space for many many axis but I understand the reason for the limit.

Just to clarify: What you call switch boxes is checkboxes in the user interface, it is not some external hardware.

I noticed it only since I connected all my 7 sensors at the same time. Regarding the ongoing discussion in another thread at EEVBLOG (siglent DMM) I think, the digital sensors are much handier as all this thermocouples, you have no connection issues etc.

IC sensors (Both analog and digital) are useful and fairly precise in normal ambient temperatures (Something like -40°C to 150°C), but cannot be used if you want to measure 500°C, that is for thermocoulers and the usually 1-2°C tolerance is not a big deal. For really precise temperature measurement platinum RTD sensors are used.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 23, 2022, 10:12:26 am
Sorry, my english is not as good as yours. I mean „check boxes“

For my bench testing and working the range up to about 100 degrees seems to be enough but I agree, there are many other situations where you need much higher temperature measurements thermocouples are needed.

For more than 1 year I protocol the temps of my floor heating tubes with ESPeasy, 8x DS18b20 and Domoticz via WiFi.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 23, 2022, 11:44:53 am
Attached you find the recording of last night with 7x DS18b20, 6 shown in the diagram.
All 3 seconds a reading, average of 40 readings. The peak in the beginning of recording came from my handling with the sensors.
(averages of the first 6 sensors as popup, you see that one sensor is a bit out of range)

- photos of my breadboard setup (I used an old ESP32 board with display ripped of)
- a measurement with a lab thermometer as proof
- my Micropython program
- the TC definition file (very simple)

How to use Micropython?

- install "Thonny" as environment (https://thonny.org/)
- connect your ESP32 to the PC
- install Micropython from Thonny (google is your friend)
- load my program file
- start it and enjoy
- you can store the little program as "main.py" on the esp32 board, than it starts after powering up without PC connection.

The USB connection of the ESP32 board is used as interface for REPL in Thonny (REPL = Read Evaluate Print Loop, the interactive console).
Since you can't use this interface for TC (echo problem), you have to use one of the UARTs of the ESP32. I will try to find a WiFi socket solution but I can't promise this now.
I used URAT#2. Identify the pins of TX/RX of UART2 and connect the USB-adaptor.

Identify the ESP32 pin for connecting the DS18b20. All in parallel, don't forget 4.7k resistor between Vcc and data line.

The Micropython program is simple and has some comments and can be used for other sensor.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 24, 2022, 11:37:30 am
Attached you find the recording of last night with 7x DS18b20, 6 shown in the diagram.

Is it ok to put it on my website?
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 24, 2022, 03:56:36 pm
Yes, of course!

I try to get a socket connection via WiFi instead of all the UART/RX/TX/USB-wiring. This can be helpful for all serial connected devices but it will take some time.
Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on January 25, 2022, 09:00:21 am
Here's a file for the Keysight DSOX2014A.  Modified gby's Tektronix file.

It's a work in progress but at least it doesn't crash or freeze.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2022, 12:35:22 pm
Yes, of course!

It is up: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html)

I try to get a socket connection via WiFi instead of all the UART/RX/TX/USB-wiring. This can be helpful for all serial connected devices but it will take some time.

If you make another version I can add two zip files to the project.


A note to the code: It would work better if you can use the RTOS (i.e. multitasking OS) and split the gathering of sensor data and the command loop into two separate threads (I have no idea if it is possible in python). Only responding to command every few seconds makes TC very sluggish when using the "Current values" tab.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2022, 12:35:58 pm
Here's a file for the Keysight DSOX2014A.  Modified gby's Tektronix file.

It's a work in progress but at least it doesn't crash or freeze.

I can see you added a few other models.
The definition will be included in the next release of TC
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2022, 12:38:25 pm
I am now done with my 4 channel Temperature logger for Test Controller

If you want it on my website, please send me a zip file with everything in it, you can see on bad_drivers project how I plan on publishing it.
Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on January 25, 2022, 05:27:36 pm
Here's a file for the Keysight DSOX2014A.  Modified gby's Tektronix file.

It's a work in progress but at least it doesn't crash or freeze.

I can see you added a few other models.
The definition will be included in the next release of TC
The current file has a few customizations that suited my project.  I should probably take them out before you add to a release.  For instance, the current values for tables and charts are ch1 peak-peak, ch2 peak-peak, ch3 peak-peak (but shows A) and ch4 is used for phase between ch1 and ch2.  I haven't figured out how to make this not hard coded or better yet be able to switch between functions for each channel and only show the desired in current values.
Any idea when the next release?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2022, 05:45:41 pm
The current file has a few customizations that suited my project.  I should probably take them out before you add to a release.  For instance, the current values for tables and charts are ch1 peak-peak, ch2 peak-peak, ch3 peak-peak (but shows A) and ch4 is used for phase between ch1 and ch2.  I haven't figured out how to make this not hard coded or better yet be able to switch between functions for each channel and only show the desired in current values.

You cannot change column names, but you can switch between active columns with modes and it is possible to use multiple modes.
Any mode switching must be done from the mode popup, not from setup popup.

If you post a new version I will update the file.

Any idea when the next release?

Not really, basically I post updates when I have a couple of additions or fixes. I do have some now, but nothing very important.
The most interesting for the next release is a new version of the serial library, that will support the new processors used for MAC and Windows PC's.

Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on January 25, 2022, 08:31:25 pm
Here's a new file for the Keysight DSOX2014A.
Changes for Rev A:
   1. A few bug fixes in the setup window.
   2. Since I don't know how to do this correctly, made it so others can look at the file and hopefully see better how to change for their use.
        chan1 V
        chan2 Vpeak to peak
        chan3 Vavg
        chan4 Vrms

With a complex 4 channel oscilloscope with 16 digital I/O there's way to many options.  I'm trying to think of the minimum that makes sense to be able to setup remotely.  I seems to make more sense to setup with the actual oscilloscope controls and just start, stop ect. remotely, which it does pretty good now.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 26, 2022, 01:58:13 pm
A note to the code: It would work better if you can use the RTOS (i.e. multitasking OS) and split the gathering of sensor data and the command loop into two separate threads (I have no idea if it is possible in python). Only responding to command every few seconds makes TC very sluggish when using the "Current values" tab.

You are right. 1 year ago I made a Arduino-C version for 2 sensors which used time interrupts. But I'm not so familiar with C, that's why I started this Micropython project.
But I'm still learning....
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2022, 02:24:59 pm
Here's a new file for the Keysight DSOX2014A.

I have updated.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2022, 02:32:13 pm
You are right. 1 year ago I made a Arduino-C version for 2 sensors which used time interrupts. But I'm not so familiar with C, that's why I started this Micropython project.
But I'm still learning....

multi-threading is not the same as interrupts. In can be very simple to use, but also has some serious caveats if you do not know what you are doing.
It looks like there may be some support with a _thread module https://techtutorialsx.com/2017/10/02/esp32-micropython-creating-a-thread/ (https://techtutorialsx.com/2017/10/02/esp32-micropython-creating-a-thread/)
Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on January 26, 2022, 04:38:27 pm
My oscilloscope serves a built in SCPI reference page at ://LOCAL_ADDRESS/InfiniiVision_Quick_Reference.html#measure

The below works nicely using keyboard F1:
#helpurl  ://192.168.1.94/InfiniiVision_Quick_Reference.html#measure

Is there a way to get #helpurl to automatically put the LOCAL_ADDRESS in?

Also how is the #help file accessed?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2022, 05:08:22 pm
My oscilloscope serves a built in SCPI reference page at ://LOCAL_ADDRESS/InfiniiVision_Quick_Reference.html#measure

The below works nicely using keyboard F1:
#helpurl  ://192.168.1.94/InfiniiVision_Quick_Reference.html#measure

Is there a way to get #helpurl to automatically put the LOCAL_ADDRESS in?

Not at the current time, but I will see to it in the next release.

Also how is the #help file accessed?

It is fetched from my server and a local copy is stored in ...\Documents\TestController\Settings
As long as the file do not exist on my server, you can make on in the above directory and it will be used.

Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on January 26, 2022, 05:52:22 pm
It is fetched from my server and a local copy is stored in ...\Documents\TestController\Settings
As long as the file do not exist on my server, you can make on in the above directory and it will be used.

I guess I mean how is that file used?  ie what do I do in TC that causes it to do something. 

Also the settings that TC seems to use by default on the mac are in ~/TestController/Settings  not  ~/Documents/TestController/Settings.  This caused problems when I first installed.  Things didn't wok right until I moved the downloaded TestController directory into ~.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2022, 05:59:47 pm
I guess I mean how is that file used?  ie what do I do in TC that causes it to do something. 

It is used to fill the help window with commands for the actual device.

Also the settings that TC seems to use by default on the mac are in ~/TestController/Settings  not  ~/Documents/TestController/Settings.  This caused problems when I first installed.  Things didn't wok right until I moved the downloaded TestController directory into ~.

I ask the Java/OS about a working directory, on Windows I get the document directory and I believe it is the home directory on Linux.
Title: Re: Program that can log from many multimeters.
Post by: Bad_Driver on January 26, 2022, 06:18:26 pm

multi-threading is not the same as interrupts. In can be very simple to use, but also has some serious caveats if you do not know what you are doing.
It looks like there may be some support with a _thread module https://techtutorialsx.com/2017/10/02/esp32-micropython-creating-a-thread/ (https://techtutorialsx.com/2017/10/02/esp32-micropython-creating-a-thread/)

Thanks again, I will do some home work but suffer from a shortage of hobby time nowadays  :-//
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 26, 2022, 07:06:28 pm
here you go

all files are free to use

http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm (http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm)

if I forgot anything please let me know
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 28, 2022, 01:59:01 pm
here you go

all files are free to use

http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm (http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm)

I have added the URL to my page with user projects.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 28, 2022, 02:06:02 pm
Thanks again, I will do some home work but suffer from a shortage of hobby time nowadays  :-//

Something like this may work:
Code: [Select]
def testThread():
  sensors = ds_sensor.scan()
  while True:
    ds_sensor.convert_temp()
    time.sleep_ms(700)
    index=0
   
    for sensor in sensors:
        temp_list[index]=(ds_sensor.read_temp(sensor))
        index=index+1
    sensor_numbers = index
 
_thread.start_new_thread(testThread, ())
while True:
    if uart.any() > 0:
        line = uart.read()
...
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 31, 2022, 08:49:18 am
Math Formula Question:

we are trying to play the parameter sweeper in baby steps, first experiments are very simple,
a power supply sweep voltage, a bulb is load, very unlinear gives great curves to play with,
multimeter added to increase voltage resolution,
sweeps works perfectly, we have still not been able to trig the curve and data collection to the param sweeper,
so we just manually start and stop them both, for this experiment it does not matter much,
but this is next move to figure out.

then we wanted to get more familiar with the math features, if the data collection run at 0.1 sec, and the param sweep at 0.3 sec,
it is fair to use 3 times average, to get more smooth curves on the calculated resistance,
this dont work, it seems like we can create new variables for outputs of calculations,
BUT we are not able to use the created variables as input to new math, as seen on the picture.

see the attached picture, only the last line dont work,
all other lines create the wanted data fine.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 31, 2022, 09:00:02 am
sweeps works perfectly, we have still not been able to trig the curve and data collection to the param sweeper,
so we just manually start and stop them both, for this experiment it does not matter much,
but this is next move to figure out.

It will only control logging if you have check marked "Save log each"

then we wanted to get more familiar with the math features, if the data collection run at 0.1 sec, and the param sweep at 0.3 sec,
it is fair to use 3 times average, to get more smooth curves on the calculated resistance,
this dont work, it seems like we can create new variables for outputs of calculations,
BUT we are not able to use the created variables as input to new math, as seen on the picture.

You cannot use the result from other math channels in math, that is the problem.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on January 31, 2022, 09:08:45 am
thanks mate, we plan to play further with this tonight,
we wanted to recreate your setup with signal generator SDG6022X, and SDM3055 Multimeter,
make the AC voltmeter sweep, did you release a step by step explain how to recreate this ?
we see your time axis is frequency, and the multimeter read, must be synced to each new stimulus from the signal generator,
we found your pages with param sweeper and multimeter measurements,
but none of them explain all we need, to be able to run the exact test,
this way we expect to learn a lot of very usefull things we need for our future use of TC
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 31, 2022, 09:26:27 am
we see your time axis is frequency, and the multimeter read, must be synced to each new stimulus from the signal generator,

To show frequency axis you have to right click on the hh:mm:ss field.
Because everything is controlled from TC it is synchronized.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on February 01, 2022, 10:01:14 am
@ HKJ:

Do you also have interruptions while logging with the Metrahit Energy?

No matter how many data or period of time I choose I always have breakdowns, which are obviously not there in reality, as other meters like Brymen, Keysight or Fluke work just fine at the same usb port / setup...


(https://i.postimg.cc/Ssb8LHtw/Bildschirmfoto-vom-2022-02-01-09-51-40.png) (https://postimg.cc/rdgKMZTJ)


...and also METRAwin10 does not show these unforeseen interruptions?


(https://i.postimg.cc/9fgXC9y1/Bildschirmfoto-vom-2022-02-01-09-53-42.png) (https://postimg.cc/NyTvx5Jr)


I would prefer using TestController, but I can live with METRAwin10, so that I don't have any expectancy, just asking as I have no other Metrahit DMM to compare, as it is probably more like this Brymen USBHID-thingy, because the Gossen USB-IR-Interface also does not run under linux itself in contrast to Keysight or Fluke, which are the best brands for linux users...

I have tested different setups with Win7, Win10, Linux with VirtualBox so far and always have this problem with TestController. As there is a "serial fixed baudrate" there is also no difference whether I keep the 9600 or change it to 38400 in the "settingsLoad.ini".

Does anyone else have similar issues?

By the way:

Does your USB-IR-Interface look like this with this wide "opening":


(https://i.postimg.cc/jjBC09VZ/Bildschirmfoto-vom-2022-02-01-01-00-37.png) (https://postimg.cc/f3jMY8R9)


...or like the one with two small wholes for the diodes:


(https://i.postimg.cc/m2nvwG7X/Gossen-Metrawatt-Z216-D-USB-X-TRA-Schnittstellenadapter-USB-X-TRA-mit-Software-METRAwin-10-1-St.jpg) (https://postimg.cc/svpHjq67)


Have they changed the design?


ThanX & Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 01, 2022, 10:27:45 am
Do you also have interruptions while logging with the Metrahit Energy?

I do not see any:
(http://lygte-info.dk/pic/cpf6/EnergyLogging.png)

You can try reducing the sample rate and/or look at what else is running on the computer (The sample thread uses a fairly high priority and will usually not be affected by other programs).


By the way:

Does your USB-IR-Interface look like this with this wide "opening":


(https://i.postimg.cc/jjBC09VZ/Bildschirmfoto-vom-2022-02-01-01-00-37.png) (https://postimg.cc/f3jMY8R9)

No, it has holes in the plastic for the leds like your second picture, but then my interface is more than 10 years old.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on February 01, 2022, 07:07:22 pm
As always: Thank you very much for your quick and helpful reply, HKJ!  :-+

Mmmh, very strange, I think I have to invest a bit further, but at the moment I have no idea, why there are no interruptions in METRAwin10:


(https://i.postimg.cc/Y2RDpRWk/Bildschirmfoto-vom-2022-02-01-19-11-07.png) (https://postimg.cc/NLykD1DP)



However, the good thing is, that I am able to export the data as a *.txt file from METRAwin10 to your genious TestController, as you have thought of anything...  ;)



(https://i.postimg.cc/Sxy61bsp/Bildschirmfoto-vom-2022-02-01-19-44-37.png) (https://postimg.cc/HVh8jKXS)



..., so that I have the best readability and a clear layout, to analyze the data, which is definitely missing in the ancient METRAwin10...



(https://i.postimg.cc/mg5PYv1j/Bildschirmfoto-vom-2022-02-01-19-42-12.png) (https://postimg.cc/nXqVZwk9)


ThanX & best wishes!  :)
Title: Re: Program that can log from many multimeters.
Post by: EHT on February 01, 2022, 11:57:21 pm
Hi @HKJ, you've clearly done a great job supporting such a wide range of hardware! Is the project on github? Sorry if its in the thread somewhere. Also, I was wondering why you didn't build upon Sigrok, say a new UI and/or adding drivers for missing hardware?

I was hoping to find remote control/logging in a client-server design: backend interfacing with the h/w, say on a R-Pi (which could even be built into test equipment) and the client web / mobile...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 07:19:01 am
Hi @HKJ, you've clearly done a great job supporting such a wide range of hardware!

It is not me alone, I got a lot of help from people here (You can see a list on the About page).

Is the project on github? Sorry if its in the thread somewhere.

No.

Also, I was wondering why you didn't build upon Sigrok, say a new UI and/or adding drivers for missing hardware?

I wanted the program simple to install and use. The program is in Java and works on multiple platforms with one executable file, you could not do that with Sigrok.

I was hoping to find remote control/logging in a client-server design: backend interfacing with the h/w, say on a R-Pi (which could even be built into test equipment) and the client web / mobile...

I may at some time in the future make it possible to use remote serial ports.
If you want to design your own test equipment, there is documentation on how to interface it to TestController.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on February 02, 2022, 08:53:20 am
A KS 34465A can sample every 40us (0.001PLC, manual range), but TC can only log every 10ms for now. And of course I want those 40us.
Has anyone tried to bridge that gap? I have ideas on how to do it, but didn't want to waste my time if people tell me it it will not work, or if it is possible already.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on February 02, 2022, 08:55:59 am
i also see those rare, random dropouts, first i had the idea it was a loose connection,
then i tribble checked all, and taped all cables, but it still happens,
maybe some of our internet routers are old crap ?
none of my internet connectivity stuff is new, i go thru 3 switches to access all my lab equipment,

it seems like:
usb DIY arduino: newer seen dropouts
ethernet (siglent equipment) yes, rarely
ethernet keysight, newer seen it.

the last 61hrs, not a single dropout, on two multimeters (3 sec data collection)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 09:15:55 am
A KS 34465A can sample every 40us (0.001PLC, manual range), but TC can only log every 10ms for now. And of course I want those 40us.
Has anyone tried to bridge that gap? I have ideas on how to do it, but didn't want to waste my time if people tell me it it will not work, or if it is possible already.

The fast sample only works to internal memory, not for reading single values on the interface.
TC is not designed for fast sampling, but for logging multiple devices synchronous.

You can load csv files with fast sample rate and analyze them in TC.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 09:18:17 am
i also see those rare, random dropouts, first i had the idea it was a loose connection,
then i tribble checked all, and taped all cables, but it still happens,
maybe some of our internet routers are old crap ?
none of my internet connectivity stuff is new, i go thru 3 switches to access all my lab equipment,

it seems like:
usb DIY arduino: newer seen dropouts
ethernet (siglent equipment) yes, rarely
ethernet keysight, newer seen it.

I wonder if a "Automatic retry" option for SCPI commands would be a good idea. It will give a hickup in the sampling (Timeout is usually a couple of seconds), but you will probably avoid the dropouts.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on February 02, 2022, 09:29:25 am
>I wonder if a "Automatic retry" option for SCPI commands would be a good idea.

yes : that would add the missing data, better over a dropout ?
or : what if the request is not answered ? will it time out and deliver a zero ? or a random result to the curve ?
some might prefer missing data if no reply ? so they know the unit is unstable.
but other equipment might deliver their data fine, there will be a hole from the timed out unit,
so what data to put in that hole ? previous known good data ? or a zero ? or retry x number of times (create a time jitter) but at least deliver data to the curve.
but then, what if times out after x retry ? then what do to ?

the more i think about this, the more complex it gets :-) 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 09:42:04 am
the more i think about this, the more complex it gets :-)

Yes.
Another option is to hold/repeat the last value for a couple of samples, this will not affect the logging.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on February 02, 2022, 09:50:43 am
super, but make it possible to "know" if data fetch from each unit is not answering ALL times in first go ?
like a total retry counter ? we can access some how ?
this way we can fix the issue, new cables, new router, new equipment
Title: Re: Program that can log from many multimeters.
Post by: EHT on February 02, 2022, 11:04:23 am
Hi @HKJ, you've clearly done a great job supporting such a wide range of hardware!

It is not me alone, I got a lot of help from people here (You can see a list on the About page).

Is the project on github? Sorry if its in the thread somewhere.

No.

I presume that means it isn't open source licenced. You'd get a lot more help from others if it was Open Source rather the proprietary. For instance, what happens if you become too busy with other things in your life to support it, or if it becomes really popular the amount of support, bug fixing etc will become too much of a burden?

Also, I was wondering why you didn't build upon Sigrok, say a new UI and/or adding drivers for missing hardware?
I wanted the program simple to install and use. The program is in Java and works on multiple platforms with one executable file, you could not do that with Sigrok.
Sigrok says it has cross platform build, still, it looks a bit rough at the edges and has plenty of nasty use of macros in the code (just took a quick look), I guess to make it cross platform.

I was hoping to find remote control/logging in a client-server design: backend interfacing with the h/w, say on a R-Pi (which could even be built into test equipment) and the client web / mobile...

I may at some time in the future make it possible to use remote serial ports.
If you want to design your own test equipment, there is documentation on how to interface it to TestController.
What I meant was making it a server, say running Apache and communicating over http and having the UI/front end on another device. Perhaps easier to do so with the Java codebase than C, if it was open sourced!
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 02, 2022, 01:33:31 pm
Hi,

maybe a bold question, but would it be possible to add a Manson HCS-3300? I've already found some protocol info on: https://sigrok.org/wiki/Manson_HCS-3xxx_series
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 02:01:51 pm
maybe a bold question, but would it be possible to add a Manson HCS-3300? I've already found some protocol info on: https://sigrok.org/wiki/Manson_HCS-3xxx_series

Anybody with a bit of time can add that supply using a ascii driver.
Documentation: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_(Ascii) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_(Ascii))
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 02:12:23 pm
I presume that means it isn't open source licenced. You'd get a lot more help from others if it was Open Source rather the proprietary. For instance, what happens if you become too busy with other things in your life to support it, or if it becomes really popular the amount of support, bug fixing etc will become too much of a burden?

I do generally maintain my software for a long time and even if I stop maintaining it, it will still continue to work.

Sigrok says it has cross platform build, still, it looks a bit rough at the edges and has plenty of nasty use of macros in the code (just took a quick look), I guess to make it cross platform.

I believe Sigrok is compiled to machine code, i.e. it would require more than 10 versions of it to support the same amount of hardware and OS, I support with a single file.
To get TC working you only have to install Java and then run the TC file. To really use Sigrok you basically need to be a programmer, in TC you can make scripts, but you do not need to and can use all the functions without.
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 02, 2022, 02:52:20 pm
maybe a bold question, but would it be possible to add a Manson HCS-3300? I've already found some protocol info on: https://sigrok.org/wiki/Manson_HCS-3xxx_series

Anybody with a bit of time can add that supply using a ascii driver.
Documentation: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_(Ascii) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Non-SCPI_ascii_devices_(Ascii))

Ok, I just had a look into that, but I need more info on the subject to be able to implement this. I've looked at the Ascii Skeleton and a lot of questions. For example, I know the results of a GETD command (VVVVCCCCS\rOK\r) are in mV and mA. There is a definition value Voltage V ...  which could handle this, but what does D0..D6 mean?

Is this is a lab benchpower with only very few settings and readings this should be not that difficult to setup, but I can't figure out where to start as in the other drivers there are lots of terms and variables I can't figure out where to find the definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 03:06:37 pm
Ok, I just had a look into that, but I need more info on the subject to be able to implement this. I've looked at the Ascii Skeleton and a lot of questions. For example, I know the results of a GETD command (VVVVCCCCS\rOK\r) are in mV and mA. There is a definition value Voltage V ...  which could handle this, but what does D0..D6 mean?

D0..D6 is 0 to 6 decimal places when showing the value, you will usually use the number that match the display on the device.

To adjust the input values you usually uses a :readmath: function. It is called #askValuesMathFormat for #askValues, but :readmath: nearly everywhere else.

You may also want to look at the SCPI configuration page, it contains a lot of common stuff for all configuration files: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)

The general idea is to get a connection to the device, then you can try/test commands from the command line.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on February 02, 2022, 03:50:34 pm
I do generally maintain my software for a long time and even if I stop maintaining it, it will still continue to work.

Could you cut it in two, and have the device files in git?
Most additions are about that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 03:53:44 pm
Could you cut it in two, and have the device files in git?
Most additions are about that.

You already have the source code for the device files and I generally update the release files when a new device file is posted here (Except if it is described as test, partial or something like that).
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 02, 2022, 04:27:42 pm
Hi,

thank you for your time sofar... I hope I'm not bothering you too much with my questions.

Ok, I just had a look into that, but I need more info on the subject to be able to implement this. I've looked at the Ascii Skeleton and a lot of questions. For example, I know the results of a GETD command (VVVVCCCCS\rOK\r) are in mV and mA. There is a definition value Voltage V ...  which could handle this, but what does D0..D6 mean?

D0..D6 is 0 to 6 decimal places when showing the value, you will usually use the number that match the display on the device.

To adjust the input values you usually uses a :readmath: function. It is called #askValuesMathFormat for #askValues, but :readmath: nearly everywhere else.

You may also want to look at the SCPI configuration page, it contains a lot of common stuff for all configuration files: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)

The general idea is to get a connection to the device, then you can try/test commands from the command line.

I'm starting to grasp a vague idea... One practical question. With one ASCII command I get the complete status in one string with numbers. First 4 are V, then 4 for A and then a 0 or 1 for CC or CV.. How would I split this into the different values?

To me it looks you need to use askValues to configure which values to get en use scpiCmd to define how to get those values. But in this case I only need one command to get all the values in one go
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2022, 04:50:24 pm
I'm starting to grasp a vague idea... One practical question. With one ASCII command I get the complete status in one string with numbers. First 4 are V, then 4 for A and then a 0 or 1 for CC or CV.. How would I split this into the different values?

You use string functions to split it into 3 values with a space between each:
https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions)

You may also need to use string function to add a . to the values, if the values is in anything but basic units.

To me it looks you need to use askValues to configure which values to get en use scpiCmd to define how to get those values. But in this case I only need one command to get all the values in one go

Generally you place all the tx/rx commands in scpiCmds and then you use the commands you have defined there in the rest of the definition.

You will also want to add commands to set voltage, current, on/off. Adding interface function can be useful for automatic testing.
Title: Re: Program that can log from many multimeters.
Post by: aronake on February 04, 2022, 03:12:49 pm
Hi all,

I have an Amprobe TMD-56 Thermocouple digital thermometer I really would want to make to work with TestController.
https://www.amprobe.com/product/tmd-56/ (https://www.amprobe.com/product/tmd-56/)

Its same meter, and same interface as Omega HH806
https://www.omega.com/en-us/temperature-measurement/temperature-and-humidity-data-loggers/p/HH806 (https://www.omega.com/en-us/temperature-measurement/temperature-and-humidity-data-loggers/p/HH806)

So similar so when asking the Amprobe over serial what ID it have it responds HH806...

Specifications on communication as follows:
Connect over serial with 19200 bps, 8 bit, 1 stopbit, even parity and no flow control.
Send HEX #0A0000NA2 to meter.
The meter then responds. For this response:
Take Byte 5 and 6 as an 16 bit integer and divide by 10 to get temperature of probe 1
Take Byte 10 and 11 as an 16 bit integer and divide by 10 to get temperature of probe 2.

I have been trying lots of things but can not get it to work.

Any of you wise testcontrol stars out there who could help to make, or even come with suggestions on how to make the device file?

More info on communication protocol here:
https://forums.ni.com/ni/attachments/ni/170/1037288/1/8xxprotocol.doc (https://forums.ni.com/ni/attachments/ni/170/1037288/1/8xxprotocol.doc)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 04, 2022, 04:06:20 pm
Any of you wise testcontrol stars out there who could help to make, or even come with suggestions on how to make the device file?

It need a specially coded protocol to work fully, but just reading the values looks to be possible:
Use Ascii protocol with #scpiCmds

To read the data you can use the txrxnBin? command
And then a :readmath: with two binConv() function to extract the bits.

You need to return the two values as number with one space between (Like "12.3 45.7").

Something like this:

#scpiCmd values? txrxnBin? 13 #0A0000NA2
:readmath: (binConv(value,5,2)/10.0)+" "+(binConv(value,10,2)/10.0)
Title: Re: Program that can log from many multimeters.
Post by: GuidoK on February 04, 2022, 06:08:56 pm
Is it possible that this program doesn't work with the Brymen BM869S in 500k mode?
I can get it to read and log in 50k mode fine, and about 5 times per second, so according to the screen refresh, but when I switch the meter in 500k mode the readings are very slow, irratic (and if logged, in 50k mode) and it also won't reconnect in 500k mode.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 04, 2022, 06:55:41 pm
Is it possible that this program doesn't work with the Brymen BM869S in 500k mode?
I can get it to read and log in 50k mode fine, and about 5 times per second, so according to the screen refresh, but when I switch the meter in 500k mode the readings are very slow, irratic (and if logged, in 50k mode) and it also won't reconnect in 500k mode.

I do not remember if I checked/implemented the 500k mode, but I will check it and fix it (if necessary) soon.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2022, 01:40:07 pm
V2.03 is up
This is mostly additions to TestController, but a few new devices has also been added.
   Fixed: Brymen BM869s 500000 count mode.
   Added: On Load devices page the right click menu got a option to open web documents used for devices.
   Added: FFT View, used to analyse the table data for frequencies
   Modified: Popups menu, moved all device function to a submenu (The menu was getting too large)
   Added: #helpurl support a DEVICEIP tag that will be replace with actual device ip address if it exist
   Added: Keysight DS0X2012A, Keysight DS0X2014A, Keysight DS0X2214A (Thanks bicycleguy)
   Changed: jSerialComm updated to V2.90, this includes support for Windows/Mac ARM processors
   Added: Center/span input for min/max on "Scales for charts", click on header to switch
   Added: #resetDelay for definitions (Maybe needed for some Arduinos)
   Added: resetDelay command line option (Maybe needed for some Arduinos)

The serial library has been updated, this included some significant internal changes to the library according to the author. I hope none of this will affect TC.

(https://lygte-info.dk/pic/Projects/TestController/DocFFTView/FFTView.png)

The main addition is a FFT view
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on February 05, 2022, 01:52:26 pm
THANKS ALOT much apriciated,
we all see how much work and time you put into this free software,
I plan to push for using it at work,
and at the same time looking for a donate / paypal info ?
how about you add a little about, donate-ware info, so if people feel this help their work, save time, add value to their work,
they can express their gratitude by paying a few $ your way
I cant find any such menu in the program ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2022, 03:23:24 pm
I plan to push for using it at work,
and at the same time looking for a donate / paypal info ?
how about you add a little about, donate-ware info, so if people feel this help their work, save time, add value to their work,
they can express their gratitude by paying a few $ your way
I cant find any such menu in the program ?

I hope it can be useful at your work.

The email above the download link can be used for donations.
Title: Re: Program that can log from many multimeters.
Post by: gby on February 05, 2022, 09:15:28 pm
HKJ,

TC just keeps getting better  :-+

Questions about the #fftView command:
1.  I first tried #fftView 3 for the third column and the the console complains "failed due to null" but the window pops up anyway.  I (now) get that the argument should be the table column name, but since the fft window actually pops up it is confusing to have the error say "failed".  I then tried just #fftView with no arguments and the console gives no error message and the window does not pop up.  I would think there should be a console error if the window does not pop up.  For me it would be more convenient if it did pop up and then I could manipulate it manually to get what I want.
2.  How does this fft work?  Normally fft code assumes a constant sampling period.  But TC sampling period varies.  So, does the fft assume constant sample period at the log interval set point?
3.  What would the fft do if the logging starts at one log interval and then TC adjusts the log interval slower due to slow responses?  In other words what doe this fft do with a Table record with two or more different set points for the log interval?
4.  Is there a limit to the number of points in the Table that the fft can be taken for?  Related question, does this FFT always use all the points or is it an fft that always truncates the data to the first 2^n points for a binary number of sample points?
4.  I suggest adding a button on the Chart view to open the fftView.  It is a little awkward to have to go to the console and type in #fftView + arguments.  Great for scripts, not so much for user actively working on the data.

Again, great stuff!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 05, 2022, 09:47:23 pm
1.  I first tried #fftView 3 for the third column and the the console complains "failed due to null" but the window pops up anyway.  I (now) get that the argument should be the table column name, but since the fft window actually pops up it is confusing to have the error say "failed".  I then tried just #fftView with no arguments and the console gives no error message and the window does not pop up.  I would think there should be a console error if the window does not pop up.  For me it would be more convenient if it did pop up and then I could manipulate it manually to get what I want.

Generally you start FFTView from the "Popups" menu, starting it with the #FFTView command is only for scripting (There is some help in the help window).

2.  How does this fft work?  Normally fft code assumes a constant sampling period.  But TC sampling period varies.  So, does the fft assume constant sample period at the log interval set point?

It assumes constant sample period based on the "time" column, it takes the first and last time stamp and divides by number of samples.

3.  What would the fft do if the logging starts at one log interval and then TC adjusts the log interval slower due to slow responses?  In other words what doe this fft do with a Table record with two or more different set points for the log interval?

It gives wrong results. I was thinking about resampling the data to a constant interval, but I have not done that for now.

4.  Is there a limit to the number of points in the Table that the fft can be taken for?  Related question, does this FFT always use all the points or is it an fft that always truncates the data to the first 2^n points for a binary number of sample points?

The FFT will handle up to half a million points, when there is more it will resample.
On a slow computer it may resample at lower number of samples.
When the number of points to not fit a power of two TC will resamples.

4.  I suggest adding a button on the Chart view to open the fftView.  It is a little awkward to have to go to the console and type in #fftView + arguments.  Great for scripts, not so much for user actively working on the data.

I was thinking about where to place the access, in the end I decided to put it with all the other Popups
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 07, 2022, 05:03:39 pm
Generally you place all the tx/rx commands in scpiCmds and then you use the commands you have defined there in the rest of the definition.

You will also want to add commands to set voltage, current, on/off. Adding interface function can be useful for automatic testing.

I've got a very rudimentary driver and have a few follow-up questions:

1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.

2. On/Off is reversed on the device 0=on 1=off. This works for the buttons on the 'Setup' page, but the red square does not work anymore.

3. Is it possible to calculate for example the Ah and/or Wh in the driver ander report that as Current Values as the device doesn't report those by itself.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 08, 2022, 08:36:29 am
1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.

Use txrx2? instead

2. On/Off is reversed on the device 0=on 1=off. This works for the buttons on the 'Setup' page, but the red square does not work anymore.

Use
:readmath: value==0
to flip the answer.

3. Is it possible to calculate for example the Ah and/or Wh in the driver ander report that as Current Values as the device doesn't report those by itself.

No, you cannot add extra columns in the driver, but using the "Math" tab it is easy to do
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 08, 2022, 10:09:06 am
1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.
Use txrx2? instead
I tried that, but how to get rid of the <cr>OK ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 08, 2022, 10:27:33 am
1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.
Use txrx2? instead
I tried that, but how to get rid of the <cr>OK ?

There are a lot of functions to edit the answer, see https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions) they are used after a :readmath: tag.
Title: Re: Program that can log from many multimeters.
Post by: MichaKersloot on February 08, 2022, 12:27:42 pm
1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.
Use txrx2? instead
I tried that, but how to get rid of the <cr>OK ?

There are a lot of functions to edit the answer, see https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions) they are used after a :readmath: tag.

Let me rephrase my question ;-) If I only need the first line of the response, is it ok to use txrx? or in your experience will things go wrong later on and should I really use txrx2? and process the results to get rid of the second line.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 08, 2022, 12:42:36 pm
Let me rephrase my question ;-) If I only need the first line of the response, is it ok to use txrx? or in your experience will things go wrong later on and should I really use txrx2? and process the results to get rid of the second line.

Use the txrx2?.
TC may access the device from multiple threads and unused input can affect other communication.

There are multiple ways to strip the second line, either one of these can do it: getElement(), getMatch(), replace()
To use CR in a string write \r
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on February 08, 2022, 08:24:35 pm
HERE you go HKJ, one more for your collection :-)
i tried to make it same size as yours, feel free to use the picture,
i managed to figure out the param sweeper, thanks for your patient help as always,
by the way, how do i make param sweeper remember the settings ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 08, 2022, 08:37:17 pm
HERE you go HKJ, one more for your collection :-)

I will think about adding a section for user contributions to that article.

by the way, how do i make param sweeper remember the settings ?

Right click in log window:
(http://lygte-info.dk/pic/Projects/TestController/DocCommands/MenuParamSweeper.png)

You can get the line for any popup window by using the "Layout" and "In log window", then delete the extra lines, but there is a separate entry for ParamSweeper
Title: Re: Program that can log from many multimeters.
Post by: NekoBrinch on February 18, 2022, 12:00:44 am
@HKJ

Your piece of software is really nice.
Is your software proprietary or are you going to put it on GitHub for us to contribute to?
Like a lot of people here are pro electronics, I myself is pro software and can certainly lend a hand.

Title: Re: Program that can log from many multimeters.
Post by: PushUp on February 18, 2022, 05:14:50 am
As I couldn't justify myself paying 300 Euro for the original USB-IR-Interface by Gossen Metrawatt "Z216C USB X-TRA", when you are able to build up three units for the price of 1/3, I have a question concerning the Metrahit PM XTRA.


The USB-IR-thingie is probably old and anyone knows it, but just to sum it up for later use:


You only need the "FTDI Adapter FT232RL USB to TTL Serial":

https://www.ebay.de/itm/223727784474?hash=item341737121a:g:m2MAAOSw7old366r (https://www.ebay.de/itm/223727784474?hash=item341737121a:g:m2MAAOSw7old366r)

...and the "IrDA2 click IR by MikroElektronika".

https://eu.mouser.com/ProductDetail/Mikroe/MIKROE-1195?qs=5gSubTaN56myuTgGIeORag%3D%3D (https://eu.mouser.com/ProductDetail/Mikroe/MIKROE-1195?qs=5gSubTaN56myuTgGIeORag%3D%3D)

These are just my links, where I bought them, feel free to buy from anywhere for any pricing!


As far as the "IrDA2 click" is concerned you only have to modify the Baud rate and power selection. Using a second solder iron is most likely the easiest way to move the components, when you don't have expensive desoldering tweezers:



(https://i.postimg.cc/7ZJ5Fdqj/Bildschirmfoto-vom-2022-02-18-04-58-24.png) (https://postimages.org/)



The FTDI-Driver is already implemented in the lnux kernel and Windows probably needs the installation of the FTDI-Driver package...

https://ftdichip.com/drivers/ (https://ftdichip.com/drivers/)

..., thus one can say, that it works out of the box.


In linux it is named the same as the USB-IR-Interface from the Fluke 289:

"Future Technology Devices International, Ltd FT232 Serial (UART) IC"

I haven't opened the Fluke USB-IR-Interface yet, but if you are able, to change the Baud rate from 115200 to 38400 the same as above, this could be the cheapest and easiest way to get a working USB-IR-Interface for the Gossen Metrawatt, I will check this later.


At the moment I only have them on a breadboard, to test them:



(https://i.postimg.cc/HWh0vXKL/Bildschirmfoto-vom-2022-02-18-04-59-04.png) (https://postimages.org/)



When the DMM sits flat on the table, it fits between the rubber holster on top of a package of handkerchiefs:  :-DD



(https://i.postimg.cc/SQLP3y85/Bildschirmfoto-vom-2022-02-18-05-55-13.png) (https://postimages.org/)



Well, in order to use it with TestController I took your script from the Metrahit Energy and modified the IDs...



(https://i.postimg.cc/7PGmgqPd/Bildschirmfoto-vom-2022-02-18-05-10-38.png) (https://postimg.cc/c6WRWynB)



... and started the debugging mode...


This is what I got...

Code: [Select]

;; Found Gossen MetraHit PM XTRA on FT232R USB UART (COM8) sn:
#DEBUG GME  +modeComm +valueComm +otherComm +commHex
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Urror 01:Not implemented command:VAL:L?> 55 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>




When I change the measurement it is always shown correctly, but I don't get a reading. Is there something I can do? Do I have to modify your Energy-Script any further, to get a correct reading? Is it better to rename "GME" (= GossenMetrawattEnergy?) into something else, in order to have a distinction between both DMMs?


Thank you very much & Cheers!  ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 18, 2022, 08:24:17 am
Is your software proprietary or are you going to put it on GitHub for us to contribute to?
Like a lot of people here are pro electronics, I myself is pro software and can certainly lend a hand.

At the current time I do not have any plans to open source the software.
The device definitions are in ascii format and is open for anybody to modify and/or add new devices.
I hope people will publish (in this thread) any device definitions they make, then I will most likely include the definition in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 18, 2022, 08:41:22 am
Well, in order to use it with TestController I took your script from the Metrahit Energy and modified the IDs...

(https://i.postimg.cc/7PGmgqPd/Bildschirmfoto-vom-2022-02-18-05-10-38.png) (https://postimg.cc/c6WRWynB)

Look like it answers to *idn? command

... and started the debugging mode...


This is what I got...

;; GME: Rx <Error 01:Not implemented command:VAL:L?>


But not to the "VAL:L?"
You have to find the correct command to read the values, sadly GOSSEN have the opinion that the protocol is proprietary and they do not like to share it.
But somebody has for the Energy meter: http://www.pewa.de/DATENBLATT/METRAHit-Energy-Interface-Protokoll.pdf (http://www.pewa.de/DATENBLATT/METRAHit-Energy-Interface-Protokoll.pdf)


When I change the measurement it is always shown correctly, but I don't get a reading. Is there something I can do? Do I have to modify your Energy-Script any further, to get a correct reading? Is it better to rename "GME" (= GossenMetrawattEnergy?) into something else, in order to have a distinction between both DMMs?

The definition for the Energy meter contains lots of stuff that is only supported by the Energy meter. For another meter it is best to remove that and then maybe add stuff that is supported by that meter.
The handle is not critical for the function and there will probably not be any problems using the same for another Gossen meter.
Only issue is that when loading saved csv files the handle is used to locate the device for information about how many decimals to show for each value. 
Title: Re: Program that can log from many multimeters.
Post by: PushUp on February 18, 2022, 11:32:07 am
Ahhh - perfect! The link was helpful, even in my native language!  :-+

Now it works and I have to check the measurements...I hope, that I don't struggle as with my HMC8012-Script which is quiet difficult and extensive and still not ready, but I will give my best, not to disappoint you!  :)



(https://i.postimg.cc/fbn9wWsn/Bildschirmfoto-vom-2022-02-18-12-22-32.png) (https://postimg.cc/tskTkj72) (https://postimages.org/de/)



The best thing of this SetUp: it works under Linux out of the box and I don't have any interruptions any more; unfortunately I cannot test it any more against the original USB-IR-Interface as I have already sent it back... But as METRAwin10 also works under Windows, without a problem I am quiet confident, that it was the right decision!


;; Found Gossen MetraHit PM XTRA on FT232R USB UART (ttyUSB0) sn: XXXXXX

IDN? shows:

IDN?
;; GMC,METRAHIT PM XTRA,IDENT NO.: M250A,SERIAL NO.: XXXXXX    ,SW: 2.04


As you have a "PM Prime", which may be integrated in the future, how do you want to name the Gossen Metrawatt DMMs in TestController, so that it has a certain pattern?

Metrahit Energy: "GME" = GossenMetrawattEnergy

Metrahit PM Prime: "GMP" with P for PRIME?

Metrahit PM XTRA: "GMX" with X for XTRA?

IDN? gives GMC???


I only know, that a short term is useful, in case you wanna add a math function, but what would you prefer?


Cheers!  ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 18, 2022, 11:48:31 am
As you have a "PM Prime", which may be integrated in the future, how do you want to name the Gossen Metrawatt DMMs in TestController, so that it has a certain pattern?

Metrahit Energy: "GME" = GossenMetrawattEnergy

Metrahit PM Prime: "GMP" with P for PRIME?

Metrahit PM XTRA: "GMX" with X for XTRA?

IDN? gives GMC???

I only know, that a short term is useful, in case you wanna add a math function, but what would you prefer?

I do not care that much about the handles, your idea sounds fine.
Preferably they have to fairly short, i.e. not more than 6 characters and unique, but as I said above it is not a big issue if they are not.
TC will modify the handle names if multiple devices have the same handle or you can use the "Remap" function, but that may prevent automatic setting of decimals on loaded csv files.

Yes, I have the PM Prime and also the protocol documentation, but I had to promise not to publish the protocol documentation.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on February 20, 2022, 02:44:25 pm
I think there are some points, where I need some help/hints, please...  ;)


With hindsight, I changed the handle to "PMXTRA", because "GMX" always reminds me of my E-Mail-Provider "gmx.de".


Well, generally speaking I think the Gossen Metrawatt PM XTRA will work now together with TestController - at least it does it for me with room for some improvements I guess! As I have a clamp meter, but no clamp sensor, I haven't considered the "Clip" thingie yet.

The big difference in contrast to the "ENERGY" is the fact, that the PMXTRA requires always the use of the rotary switch by hand any time you want to have another main measurement (= position of the rotary switch from 0 till 9 = 10 positions).

Therefore it is in a way useless to build a "mode popout", but as you can control quiet a lot with the Gossen Metrawatt in general, it would be a nice gimmick, especially to make a SetUp for changing some settings easier, than manually via the command line in TestController.



I think, that there is a restriction in TestController as far as the amount of "places" for the "mode popout" is concerned:

#cmdModeLayout 4 10

...is obviously too much...and although I know, that it is a waste of space, I wanted to have it this way:


(https://i.postimg.cc/G2WGvT33/Bildschirmfoto-vom-2022-02-20-09-25-43.png) (https://postimg.cc/DJcSTZbR)


..., in order to have a better overview of the correct rotary switch position (red colour = does not work).


However, it is not that important as you have to be close to the DMM anyway and as I couldn't manage to get three readings to work (the one that I put a circle around), it is still not fully usable; at the moment this is the maximum of space I can use, which is of course totally fine:



(https://i.postimg.cc/rydqXN0d/Bildschirmfoto-vom-2022-02-21-04-26-28.png) (https://postimg.cc/XX0R9Fg3)



As mentioned above, the rotary switch has 10 positions (from 0 till 9); you ask for the current position of the rotary switch with "POS?". If it's wrong, you don't get a reading of course.

In order not to miss something, I went through any position and function/sub-function, in order to give you the possibility to look for errors or improvements within the script.

Unfortunately there is no difference in naming when using "set?" concerning my first two not working measurements via "mode popout", as you have position 0 for VAC with VAC_Filter (1kHz) and also position 1 for VAC with VAC_Filter (1kHz), but together with a 1MOhm input, which you can see here:



(https://i.postimg.cc/3xhqhdTv/20220219-180746.jpg) (https://postimg.cc/LnyDB4h9)



I couldn't solve:

Position 0 = 3rd function
VAC_F,0.6E+1 (with 1kHz-filter)

Position 1 = 2nd function, all with 1MOhm input
VAC_F,0.6E+1 (with 1kHz-filter)

Position 9 = 2nd function
FREQ_IAC,0.6E+3



All rotary switch positions with main- and sub-functions:

Code: [Select]

Position 0 = 4 functions

set?
;; VAC,0.6E+1
set?
;; FREQ_VAC,0.6E+3
set?
;; VAC_F,0.6E+1
set?
;; dB,0.6E+0


Position 1 = 3 functions

set?
;; VAC,0.6E+1
set?
;; VAC_F,0.6E+1
set?
;; FREQ_VAC,0.6E+3


Position 2 = 2 functions

set?
;; VDC,0.6E+0
set?
;; VACDC,0.6E+1


Position 3 = 2 functions

set?
;; FREQ_TTL,0.6E+3
set?
;; DUTY,0.1E+3


Position 4 = 1 Funktion

set?
;; RES,0.6E+8


Position 5 = 2 functions

set?
;; BUZ,0.6E+3
set?
;; DIO,0.6E+1


Position 6 = 3 functions

set?
;; TEMP_U,K
set?
;; TEMP_R,PT100
set?
;; TEMP_R,PT1000


Position 7 = 1 Funktion

set?
;; CAP,0.6E-7


Position 8 = 2 functions

set?
;; IDC,0.6E-3
set?
;; IACDC,0.6E-3


Position 9 = 2 functions

set?
;; IAC,0.6E-3
set?
;; FREQ_IAC,0.6E+3







That is my little interim result with the script looking like this and with some notes, what is still to do/solve...




Code: [Select]


#idString GMC,METRAHIT PM XTRA,
#name Gossen MetraHit PM XTRA
#handle PMXTRA
#port comFixedBaud
#baudrate 38400
#driver SCPIx

#eol \r\n

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si VDC,DIO,Diode
#value CurrentDC A si IDC,ADC
#value VoltageAC V d4 VAC,VAC_F
#value CurrentAC A si IAC,AAC
#value VoltageACDC V d4 VACDC
#value CurrentACDC A si IACDC,AACDC
#value Resistance ohm si RES,BUZ,Resistance,Continuity
#value Capacitance F si CAP,Capacitance
#value Temperature °C d4 TEMP,TEMP_U,TEMP_R,Temperature_K,Temperature_PT100,Temperature_PT1000
#value Frequency Hz si Frequence_AC,FREQ_IAC,Frequence_TTL,FREQ_TTL
#value DutyCycle % d3 DUTY,Duty_cycle
#value Decibel dB d2 dB,Decibel


#scpiCmd *idn? txrx? idn?
:readmath: var v=split(value,"[,]");v[0]+","+v[1]+","+trim(replace(v[3],"SERIAL NO.:",""))+","+trim(replace(v[4],"SW:",""));


; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues VAL?
#askValuesReadFormat uuuuuuxxxx

; Accept this delay when reading values (seconds), auto range can be very slow on this meter
#readingDelay 5

; Mode change have a longer delay on reading values (seconds)
#modeChangeDelay 10

; Switch meter to this mode during start, leave empty to avoid any switching
#initialMode

; String to ask about actual meter mode,
; This is a single line command
#askMode set?
#askModeMathFormat getElement(value,0,",");


#interfaceType DMM
#interface readValue 0

; Strings to configure device in different modes
; First parameter must match a #value (4 parameter) and second parameter must match what #askMode returns
; First parameter is also used in shortcut menu


; Prepare the meter to response to #askValues
#prepareSample


; Initial commands to meter when establishing connection
#initCmd  txrx NOFF

#readingDelay 3

; Final command to meter before breaking connection
#finalCmd SET:APOFF 5

;#cmdModeLayout 4 10 ...is too big!
#cmdModeLayout 4 7

; Strings to configure device in different modes
; First parameter must match a #value (4 parameter) and second parameter must match what #askMode returns
; First parameter is also used in shortcut menu

#cmdMode VAC VAC
txrx sens:volt:ac:auto

#cmdMode Frequence_AC FREQ_VAC
txrx sens:freq:vac:auto,volt:rang 1000

; Does not work!
#cmdMode NoFilterFunction VAC_F
txrx sens:volt:ac:auto

#cmdMode Decibel dB
txrx sens:db

#cmdMode VAC VAC
txrx sens:volt:ac:auto

; Does not work!
#cmdMode NoFilterFunction VAC_F
txrx sens:volt:ac:auto

#cmdMode Frequence_AC FREQ_VAC
txrx sens:freq:vac:auto,volt:rang 1000

#cmdMode

#cmdMode VDC VDC
txrx sens:volt:dc:auto

#cmdMode VACDC VACDC
txrx sens:volt:acdc:auto

#cmdMode

#cmdMode

#cmdMode Frequence_TTL FREQ_TTL
txrx sens:freq_ttl:auto

#cmdMode Duty_cycle DUTY
txrx sens:duty:auto

#cmdMode

#cmdMode

#cmdMode Resistance RES
txrx sens:res:auto

#cmdMode

#cmdMode Continuity BUZ
txrx sens:short

#cmdMode Diode DIO
txrx sens:diode

#cmdMode Temperature_K TEMP
txrx sens:temp:tc k

#cmdMode Temperature_PT100 TEMP
txrx sens:temp:rtd pt100

#cmdMode Temperature_PT1000 TEMP
txrx sens:temp:rtd pt1000

#cmdMode Capacitance CAP
txrx sens:cap:auto

#cmdMode ADC IDC
txrx sens:curr:dc:auto

#cmdMode AACDC IACDC
txrx sens:curr:acdc:auto

#cmdMode AAC IAC
txrx sens:curr:ac:auto

; Does not work!
#cmdMode NoHzFunction FREQ_IAC
txrx sens:freq_iac


; For later use: I want to have a SetUp for some settings like "rate?" and "SET:RATE 00:01.0" and so on...
; Setup menu functions
; The parameters on the first line is: type name page
; Settings on the following lines are:
; read: SCPI to read value from device, is used to synchronize when opening setup page or setting equal named fields. Not always used
; readformat: Parse read value.
; write: Send the value to device, this field is used in combination with data fields in the details to send updates to device.
; tip: Add this tip to all components for this input field.
 

;Mode-------------------------------------------------------------------------------------------







Cheers!  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 21, 2022, 08:29:12 am
I think there are some points, where I need some help/hints, please...  ;)

When you have a rotary switch, use the:

#cmdModeGet Button_Text

definition, it will add a button that can inquire the meter about actual mode.

You can use multiple commands after #askMode and then use #askModeMathFormat to combine them to a longer mode string, this will hopefully allow you to select the correct columns.

Another solution is to use #modeFromValue if the returned values contains enough information about the actual mode. This means you can put everything in the "Setup" popup and leave the "Mode" popup undefined.
Title: Re: Program that can log from many multimeters.
Post by: mirror on February 22, 2022, 01:47:05 pm
I am try to use TestController under Ubuntu 20.04. Siglent SDG and SDS are working fine.
But no luck with the USB Serial Adaptor on the Voltcraft VC830. Made a copy inside SimpleDMM.txt and plugged in the cable. A /dev/hidraw0 and /dev/usb/hiddev0 is generated.
Code: [Select]
lsusb:
Bus 002 Device 006: ID 1a86:e008 QinHeng Electronics HID-based serial adapater
and
Code: [Select]
dmesg:
[ 4606.473388] usb 2-1.1: USB disconnect, device number 6
[ 4612.118722] usb 2-1.1: new full-speed USB device number 7 using ehci-pci
[ 4612.232755] usb 2-1.1: New USB device found, idVendor=1a86, idProduct=e008, bcdDevice=14.00
[ 4612.232766] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4612.232770] usb 2-1.1: Product: USB to Serial
[ 4612.232772] usb 2-1.1: Manufacturer: WCH.CN
[ 4612.238214] hid-generic 0003:1A86:E008.0005: hiddev0,hidraw0: USB HID v1.00 Device [WCH.CN  USB to Serial] on usb-0000:00:1d.0-1.1/input0
I putted /dev/hidraw0 into the address but it doesn't. Meanwhile I am at page 50 of this longely thread but couldn't find a guess.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2022, 04:01:43 pm
But no luck with the USB Serial Adaptor on the Voltcraft VC830. Made a copy inside SimpleDMM.txt and plugged in the cable.

Sorry, but I have trouble with HID interfaces, for now it only works with a couple of Brymen meters on Windows.
I plan to take another look on it, but I do not know when.
Title: Re: Program that can log from many multimeters.
Post by: mirror on February 22, 2022, 06:42:10 pm
Thank you for this nice piece of software!
Can you tell me, what you placed into the address entry for the Brymen under Windows.
As I understood the identification for HID are Vendor and Product ID's.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2022, 06:55:03 pm
Can you tell me, what you placed into the address entry for the Brymen under Windows.
As I understood the identification for HID are Vendor and Product ID's.

I uses this in the definition:
#port usbhid
#usbVendor 0x0820
#usbProduct 0x0001
#usbpoll 0 0 0x86 0x66

And then I must use a protocol driver supporting binary communication (Like the binary DMM protocol).
I have not documented much about ascii/binary, mostly because both serial and socket can do both, i.e. they will work with both a ascii or a binary protocol driver.

USB HID do not require the address field to find the device, but will fill the serial number into the address field when connected first time.
Title: Re: Program that can log from many multimeters.
Post by: mirror on February 22, 2022, 08:30:03 pm
Just inserted this into SimpleDMM for the VC830:
Code: [Select]
#metadef
#idString Victor,Victor 86C,
#name Victor 86C
#handle V86C
#subDriver 5
#baudrate 2400N81Dr

#metadef
#idString Voltcraft,Voltcraft VC830,
#name Voltcraft VC830
#handle VC830
#port usbhid
#usbVendor 0x1a86
#usbProduct 0xe008
#driver usbhiddmm
#subDriver 869
#usbpoll 0 0 0x86 0x66

#metadef
#idString Voltcraft,Voltcraft VC850,
#name Voltcraft VC850
#handle VC850
#subDriver 5
#baudrate 2400N81Dr

It seems the program found the device:
Code: [Select]
;; jSerialComm version: 2.9.0
;; Start thread for: HIDv0000p0000 - Voltcraft VC830
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 044E 120C  39 39 39 39
;; HIDv0000p0000: Found HID: 044E 120C  39 39 39 39
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 0001 0001 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 1A86 E008 
;; Stopping thread for: HIDv0000p0000 - Voltcraft VC830

But there are no actual value shown and logging is only the time stamp.
Did not understood what you said about binary DMM protocol. How can I activate this?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 22, 2022, 08:50:07 pm
But there are no actual value shown and logging is only the time stamp.

As I already stated: It only works with a few Brymen DMM's and only on Windows. The driver is supposed to work on Linux, but I have not had any luck with it yet.

Did not understood what you said about binary DMM protocol. How can I activate this?
The binary DMM is described here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol)
Title: Re: Program that can log from many multimeters.
Post by: mirror on February 28, 2022, 09:22:47 pm
Got stable connection from the VC830 hid device under Ubuntu and Win 10. But can't understand the pinciple of device driver configuration. Especially what is inside the java binary and what is in the .txt file. I studied the documentation but is usbhiddmm code in the binary or only a name for the description. Same for subDriver - I can't change to something else than 869. (Taken over from your Brymen example.) There are special code for 869 in your java code?
Code: [Select]
#metadef
; VC830

#meta

#idString Voltcraft,Voltcraft VC830,
#name Voltcraft VC830
#handle VC830
#port usbhid
#usbVendor 0x1a86
#usbProduct 0xe008

#driver usbhiddmm
#subDriver 869

#readingDelay 1

#usbpoll 0 0 0x86 0x66

#interfaceType DMM
#interface readValue 0

#dataFormat 14 0x30 0xf0

#digits 1 5
I checked the interface with other Software https://github.com/thomasf/uni-trend-ut61d (https://github.com/thomasf/uni-trend-ut61d) and see that the VC830 is compatible with UT61B/D/C, seems they have same Fortune controller.
The perl script in the link above shows the decoding of the 14 byte. Can you take a look and give some hints to my drive description above, especially to dataFormat
What is the difference between the implemented serial driver for UT61 and the mentioned Binary driver?
BTW - found no description about the usbpoll parametrizatiion.
Sorry for my confusion.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 02, 2022, 10:14:14 am
There are special code for 869 in your java code?

Yes, the usbhiddmm is a driver for Brymen , it has 3 subdrivers: 525, 829 and 869

Using driver DMM2 with subdriver Definition will load a customable 7 segment / digit decoder, but looking at the DMM2 code I can see it will only work on serial ports, not HID. That is a fairly minor fix or I could add the definition type to the usbhiddmm (That is even simpler), but as long as I do not get data back from the HID connection I will not use time to implement it.
From the documentation you can download a zip file that uses the definition decoder on 3 different DMM's.
Title: Re: Program that can log from many multimeters.
Post by: View[+]Finder on March 04, 2022, 09:12:11 pm
Getting data from an instrument display for logging can be difficult, if not impossible, without a pathway into the device via GPIB, TCPIP, or other comm port. Messing with JTAG or sniffing the signal is far beyond the capabilities of most folks interested in using the data obtained, so "Hats off" to authors of software for reading and fetching data from an operating meter during measurement. Thanks as well to manufacturers who have provided logging capabilities in their instruments and made them accessible to users. That is the modern way . . .

Some meters are far more locked-down for reasons of security and protection of the customer's perception of the integrity of the data collected. Take Fluke, for example (see Dave's video on why Fluke meters are worth the money, etc.) and the 28X series of meters like my 289. The Fluke business model is that data collection is under the control of the firmware and is presented to the user via remote access thru form-completion software. After a technician logs voltage measurements from some industrial gear over several days, there is a printout with Fluke's name on it to support the log with timestamps for every sample and a whole lot more. Yes, the data is also available for export to CSV files and from there to any analysis, but only via the gateway FormView.

Other than the obvious, why is this a problem? Well, the Fluke 289 has the ability to capture data unattended for days at a time under battery power and preserve a detailed log for later retrieval. It can do this because it sleeps between samples using precious little power and does not rely on disks or tape for storage.

I have a couple of other logging meters (Uni-T 61E, for example) that will output readings to a PC and MooshiMeter that logs via Bluetooth, also to another device. Not even in the same league as Fluke 28X series.

What would be better for me would be the ability to access the Fluke 289 recorded data directly, 'read-only' of course, much in the same way as getting data from a modern Keithley or Keysight bench meter. To that end, I'm contributing to a long-standing 289 eevblog forum thread:https://www.eevblog.com/forum/reviews/going-further-with-the-fluke-289 (https://www.eevblog.com/forum/reviews/going-further-with-the-fluke-289)

This is not an exercise in 'reverse-engineering' or alternative firmware creation, just a little probing with Python into features documented in the Remote Interface Specification using a Fluke IR USB interface.

Title: Re: Program that can log from many multimeters.
Post by: aronake on March 13, 2022, 11:59:54 am
Any of you wise testcontrol stars out there who could help to make, or even come with suggestions on how to make the device file?

It need a specially coded protocol to work fully, but just reading the values looks to be possible:
Use Ascii protocol with #scpiCmds

To read the data you can use the txrxnBin? command
And then a :readmath: with two binConv() function to extract the bits.

You need to return the two values as number with one space between (Like "12.3 45.7").

Something like this:

#scpiCmd values? txrxnBin? 13 #0A0000NA2
:readmath: (binConv(value,5,2)/10.0)+" "+(binConv(value,10,2)/10.0)

First thanks for awesome software! I got it to work with quite some of my test equipment

I am still trying to get this thermometer to work. Seems I do not get any response from the meter when sending #0A0000NA2.

I do get a response when using a terminal program.

Some questions that could help me in the right direction:
What is best way to test if the serial connection is actually open?
Is there a way to send text (in ASCII) over serial from the command line to the device in hex? When I type #0A0000NA2, this is extra problematic starting with #, as then seen as a command.
For baudrate confirguraiton is 19200E81 correct for 19200 baud, even parity, 8 data bit, 1 stopbit, no flow control? if not, how to type?
Is CR and LF added for each command sent over serial or need to be explicitly added?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2022, 12:46:29 pm
First thanks for awesome software! I got it to work with quite some of my test equipment

I hope you will share definitions, others may have similar equipment.

I am still trying to get this thermometer to work. Seems I do not get any response from the meter when sending #0A0000NA2.

I do get a response when using a terminal program.

Some questions that could help me in the right direction:
What is best way to test if the serial connection is actually open?

If the serial port is not opened at initialization, the connection/device will be closed and removed from the open list.
Use the debug mode to see what is going on, there is a .bat file to start it

Is there a way to send text (in ASCII) over serial from the command line to the device in hex? When I type #0A0000NA2, this is extra problematic starting with #, as then seen as a command.

You can switch into calculator mode at any time using (), i.e. ("#0A0000NA2") will send the text between the quotes, including the #
When you have tx and txrx commands in a driver they can be used from the command line.

You can generally test all commands from the command line, before putting them into the definition. But you will not be able to do :readmath: from the command line (You can do the math, but not as :readmath: and this can be helpful to check if an expression works  correctly).

For baudrate confirguraiton is 19200E81 correct for 19200 baud, even parity, 8 data bit, 1 stopbit, no flow control? if not, how to type?

Yes.

Is CR and LF added for each command sent over serial or need to be explicitly added?

SCPI and ascii drives will add it, the exact sequence can de defined with #EOL
You can often use \r and \n for CR and LF
Title: Re: Program that can log from many multimeters.
Post by: aronake on March 14, 2022, 05:56:28 am
Awesome! Thanks for further info and quick answer!

And, yes of course! Very happy to share definitions! They just need some more polishing to be release ready.

Again, thanks for a truly awesome piece of software! My selection of new test equipment is now highly dependent on if they are supported by testcontroller or if it is likely that its possible to do a good definition.
Title: Re: Program that can log from many multimeters.
Post by: Oberfail on March 17, 2022, 05:24:29 pm
Hey, i'm trying to get a Atorch DL24 to work with this software, but have some issues with it. Other programs are able to read it out, so it defenitly is connected to the pc properly.
Under "Load devices" the DL24 is correctly setup, upon starting the debug version i get the following error:
Code: [Select]
Starting
;; jSerialComm version: 2.9.0
;; Start thread for: COM5 - ATorch DL24
;; COM5: Set params: 9600
;; COM5: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1394)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1467)
;; COM5: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1397)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1467)
;; Stopping thread for: COM5 - ATorch DL24
;; COM5: Close

How can i resolve the issue?

Greetings from Germany
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 17, 2022, 06:30:57 pm
Hey, i'm trying to get a Atorch DL24 to work with this software, but have some issues with it. Other programs are able to read it out, so it defenitly is connected to the pc properly.
Under "Load devices" the DL24 is correctly setup, upon starting the debug version i get the following error:

How can i resolve the issue?

The problem is that TestController do not receive any answer from the DL24, I have no explanation why.
The null pointer error is because the return value is null instead of the expected data.
Title: Re: Program that can log from many multimeters.
Post by: Oberfail on March 17, 2022, 10:13:11 pm
Is there any way to troubleshoot the issue more?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 18, 2022, 07:04:06 am
Is there any way to troubleshoot the issue more?

Not inside TC, in debug mode it will list all data going out of the serial port and all answers.
I believe DL24 is working for other people, maybe somebody else can say if they have seen any problems.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 20, 2022, 10:46:06 am
V2.04 is up
It adds some new definitions and a few new functions.
   Fixed: GridPanel, device popups. There was a null pointer error.
   Added: Definition DMM subdriver to USBHIDDMM driver
   Changed: jSerialComm updated to V2.91
   Added: Keysight U1213A multimeter (Thanks WS)
   Added: Keysight U1241C multimeter (Thanks WS)
   Fixed: Rigol DM30xx, Riden RD 6006, Siglent, Rigol DL30x1x (Thanks WS)
   Added: Rigol DL3021, Rigol DL3021A, Rigol DL3031, Rigol DL3031A electronic load(Thanks WS)
   Added: R&S HMP2020 Power supply (Thanks WS)
   Added: GridPanel Adjust and Dual adjust, these are analog like controls to adjust any parameter on a device with the mouse.
   Added: R&S NGE102 & NGE102B power supplies (Thanks PL)
   Added: R&S HMC8012 bench multimeter (Thanks PL)
   Added: Log event as script. The script will work similar to the popup, but is not exactly the same.
   Added: Timeout setting and handling for devices, see Configuration page.
   Added: Tooltips to the popups menu and a few other places.

(http://lygte-info.dk/pic/Projects/TestController/DocCommands/Hints.png)

Added tool tips to the "popups" list, it was long overdue!

(http://lygte-info.dk/pic/Projects/TestController/DocCommands/LogEventAsScript.png)

Log event as script will convert the Log Event popup to a script, this can be used as a start for custom scripts.
One idea is to generate two scripts: One for charging a battery, one for discharging a battery, then manually combine them into a single script that can charge and discharge a battery.

(https://lygte-info.dk/pic/Projects/TestController/DocConfig/TimeoutHandling.png)

New configuration to handle timeouts.

(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/Adjust.png) (https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/DualAdjust.png)

"Analog" adjustment of device parameter in GridPanel, use mouse wheel or drag on the star.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 20, 2022, 10:55:55 am
TestController is now two years old and I have published about 100 versions of it.
As expected the rate for new versions have slowed considerable down. This does not mean the program is finished, I do still have ideas for improvement and also looks for good ideas.

At the current time it supports about 450 devices, I will make more definitions and I also hope to get more definitions from the users.
The first post in this thread list all supported devices and I do update it (But not for every version).
Title: Re: Program that can log from many multimeters.
Post by: Oberfail on March 21, 2022, 05:15:37 am
I've tried it on a different computer, it gives out a slightly different error this time:
Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM4 - ATorch DL24
;; COM4: Set params: 9600
;; COM4: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException: Cannot read the array length because "bb" is null
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1420)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1493)
;; COM4: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException: Cannot read the array length because "bb" is null
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1423)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1493)
;; Stopping thread for: COM4 - ATorch DL24
;; COM4: Close

Still no clues, what could be wrong?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 22, 2022, 10:32:28 am
I've tried it on a different computer, it gives out a slightly different error this time:

Still no clues, what could be wrong?

That may be because this version of TC has a updated serial library.
For a long time I used  jSerialComm version: 2.7.0
Recently I updated to jSerialComm version: 2.9.0  This is a major upgrade of the library.
Latest version uses jSerialComm version: 2.9.1  This also looks to contain a lot of updates.

jSerialComm version version list: https://github.com/Fazecast/jSerialComm/releases (https://github.com/Fazecast/jSerialComm/releases)

As long as I do not see any RX messages after the TX, I can probably not help
Title: Re: Program that can log from many multimeters.
Post by: PushUp on April 02, 2022, 05:17:46 pm
Is it possible to pin the blue line to the point, where you get the newest readouts, having an easier and clear "Readout-Popup" so to speak?

I know, that the colour depends on your display settings, but do I have the possibility to change the yellow colour internally to a more orange one or to make it outlined with black for example? Especially old displays are not that bright any more thus especially yellow becomes blurred on a white surface.


(https://i.postimg.cc/8k9c1rqp/SNAG-0083.jpg) (https://postimg.cc/Lhk2Dh9w)


Thanx for the version update and best wishes!  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 02, 2022, 06:04:34 pm
Is it possible to pin the blue line to the point, where you get the newest readouts, having an easier and clear "Readout-Popup" so to speak?

I know, that the colour depends on your display settings, but do I have the possibility to change the yellow colour internally to a more orange one or to make it outlined with black for example? Especially old displays are not that bright any more thus especially yellow becomes blurred on a white surface.

It is not designed to be pinned, the cursor line will follow the cursor when it is moved. If you want the last values use the "Current values" page, it shows that last values read from the devices. You can also use the range page and use negative time specifications to pin the values. If you want some curves together with the readouts look at GridPanel, there you can define custom readouts and curves (If you have good ideas for other possibilities just say it).

You can use scripting for adjusting colors (#CHARTCOLORS), it allows you to define all the curve colors. Using #CHARTBACKGROUND allows you to define the chart colors (I am thinking about adding a popup menu to make this easier).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 03, 2022, 09:30:14 am
Just a note to #CHARTCOLORS:

To permanently (more or less, #CHARTRESET will undo it) override the default chart colors create a file called "autorun.txt" in ...\Documents\TestController\Settings (On Linux it is in /home/TestController/Settings) and put the line:

#CHARTCOLORS red green blue (127,255,30) yellow cyan

in it.
It is best to define at least 6 different colors, each can be defined with a name or a (r,g,b) specification and a few other ways.

It is possible to put all kind of scripting in autorun.txt to always setup some specific configuration. A shortcut to make the needed commands is to setup TestController and then use:

(http://lygte-info.dk/pic/cpf6/GenerateScript.png)

Then the desired script lines can be picked from the log window.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 08, 2022, 03:13:09 pm
Hello

I have installed TestController and connected the Atorch DL24P electronic load device under Ubuntu
20.04.1 in VirtualBox. It worked straight out of the box...I could not believe it. Well, that's the beginning
of the story!

I wanted to make it work under another Linux distribution (Bunsenlabs); a very light OS that I run on a Pentium
486. But first I had to test it in VirtualBox on a more modern PC. That did not work out of the box!

First thing first: that OS is missing a lot of stuff. This is why it is light :-)
Installing Java is pretty easy. Then you can fire up TestController.jar. Make sure you have the right permissions
on the file...Ahhhh, these permissions in Linux...

Then, it was time to add "Atorch DL24P" to the Device list and configure the Address...But which address?

On my Ubuntu machine, I had a choice of 2 ports (see below for a screenshot). I took the "ttyUSB0" port (second option)
and that worked.
On my Bunsenlabs machine, I just had one port to choose from (ttyUSB0) and I could not establish a connection with the device.
I didn't know what was going on. So, I grab a fresh OS, Linux Mint this time. Same problem.

I spent some time investigating and found out that I had an issue with the permissions on the port(s)...What? Linux permissions (@%$$#)
This is how I solved it:

On a terminal, type
Code: [Select]
groups
If you don't see "dialout" for your current user, then add it to this group:

Code: [Select]
sudo usermod -a -G dialout <user>and reboot  (absolutely necessary!)

You should now see 2 ports, choose ttyUSB0 (could be ttyUSB1, etc..it depends) and connect.

Thanks again to "HKJ" for providing this software.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 08, 2022, 04:22:24 pm
I have installed TestController and connected the Atorch DL24P electronic load device under Ubuntu
20.04.1 in VirtualBox. It worked straight out of the box...I could not believe it. Well, that's the beginning
of the story!

Thanks for your explanation, I have added the usermod command to the installation help.

Why VirtualBox? TestController can run directly on Windows, Mac and Linux and probably a few more.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 08, 2022, 07:39:19 pm
This is the way I process. My Linux machine is in the basement and it's still cold here. ..
It's an old PC with a GPIB board. I have a few old equipments I would like to make a definition file; would be nice to get rid of these cumbersome Visa drivers.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 08, 2022, 07:45:18 pm
It's an old PC with a GPIB board. I have a few old equipments I would like to make a definition file; would be nice to get rid of these cumbersome Visa drivers.

TestController only supports a few serial GPIB interfaces, if you have or make one (Very easy) it is probably not difficult to get rid of the old stuff.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 09, 2022, 09:32:08 am
Ok, thanks

Would such a board be supported?
PCI-GPIB IEEE 488.2 188513E-01L

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 09, 2022, 09:37:48 am
Ok, thanks

Would such a board be supported?
PCI-GPIB IEEE 488.2 188513E-01L

No, it supports Prologix and AR488 that is a free and very cheap Arduino GPIB interface, there is a thread about it in this forum.
There is also support for a old serial National Instruments GPIB interface.
Title: Hameg HM7044
Post by: Scheppo on April 12, 2022, 12:32:58 pm
Hi everyone,

i have an old Hameg HM7044 Powersupply with RS232 Port.
Can anybody help me with configuring this PS in TC?

I Have the Command Reference attached.

thx in advance
scheppo

Title: Re: Hameg HM7044
Post by: HKJ on April 12, 2022, 01:44:12 pm
I have an old Hameg HM7044 Powersupply with RS232 Port.
Can anybody help me with configuring this PS in TC?

I Have the Command Reference attached.

The commands looks fairly limited, there are no *idn? or other command to identify the supply and it cannot read out the current values. This means the Ascii driver is best for this.

I would suggest making 4 columns readout with the select output voltages.

Then adding commands for setting voltage and current for each channel and for turning on/off.

You can define your own commands with #scpiCmd, these commands will be listed in the help window. These commands makes it easier to define the commands.

#scpiCmd select tx SEL (value)
#scpiCmd setVoltage tx SET (value) V
#scpiCmd setColtage tx SET (value) A

#scpiCmd getVoltage? txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[; ]"),"V","");

#scpiCmd getCurrent? txrx? READ
:readmath: replace(getElement(value,inputValue+3,"[; ]"),"A","");


It is a good idea to also define #interface commands, these are used in scripting, test and some panels in GridPanel.


Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 12, 2022, 07:59:20 pm
Thank you very much for your help.
I will try it tomorrow.

In the meantime I found a Video and Viewlab drivers, maybe it can help about the commands.
https://www.youtube.com/watch?v=KTH4sPDuF9o (https://www.youtube.com/watch?v=KTH4sPDuF9o) Here can we see the idn? Command maybe work.

Viewlab driver attached.
Thx
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2022, 07:22:21 am
Thank you very much for your help.
I will try it tomorrow.

In the meantime I found a Video and Viewlab drivers, maybe it can help about the commands.
Here can we see the idn? Command maybe work.

If the *idn? command works, you can use the SCPIx driver, but you will need to redefine commands with #scpiCmd. TestController will only expect answers from commands ending with a ?, i.e. the READ command will not work without a #scpiCmd to redefine it to include a ?

If it implements a *idn? command you can probably use the TC build in function to generate a skeleton definition.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 13, 2022, 10:01:28 am
Can i use a .txt file from another Powersupply and change it?
I have absolute no Idea which Commanmds i must use.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2022, 10:38:53 am
Can i use a .txt file from another Powersupply and change it?
I have absolute no Idea which Commanmds i must use.

Yes.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 13, 2022, 12:50:55 pm
Ok, i made a little txt file.
The problem is no command go to the Hameg.
Maybe the Problem is a CR for the command termination?

#idString HAMEG,HAMEG 7044
#name Hameg 7044
#handle mostlyModel
#driver Ascii
#port comfixedbaud
#baudrate 9600N82

#scpiCmd select txrx? SEL (value)
#scpiCmd setVoltage txrx? SET (value) V
#scpiCmd setCurrent txrx? SET (value) A
#scpiCmd getVoltage txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[; ]"),"V","");
#scpiCmd getCurrent txrx? READ
:readmath: replace(getElement(value,inputValue+3,"[; ]"),"A","");


Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 13, 2022, 01:08:49 pm
The #eol \r do the Job :)

The getV and getA give no reaction
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2022, 03:23:12 pm
#scpiCmd select txrx? SEL (value)
#scpiCmd setVoltage txrx? SET (value) V
#scpiCmd setCurrent txrx? SET (value) A

You only have to use tx, not txrx?
There is no answer expected from the SEL and SET commands

#scpiCmd getVoltage txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[; ]"),"V","");
#scpiCmd getCurrent txrx? READ
:readmath: replace(getElement(value,inputValue+3,"[; ]"),"A","");

You need a ? on you own command for TC to know they returns a value. getVoltage? getCurrent?

You can test the commands from the TC command line, i.e. using "txrx? READ" on the command line is expected to return the full string from READ
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 13, 2022, 06:05:29 pm
Thank you for the infos.

The only way to readout V and A from the Channels ist the Command READ
READ output always all Channels in one String:
21.00V 22.00V 23.00V 24.00V ;1.100A 1.200A 1.300A 1.400A ;OFF F1 OFF F2 OFF F3 OFF F4
I need only the first 8 values.

Your Code for reading V and A dont work:
#scpiCmd getVoltage txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[; ]"),"V","");
#scpiCmd getCurrent txrx? READ
:readmath: replace(getElement(value,inputValue+3,"[; ]"),"A","");

If i change inputValue+3 to inputValue+2, the output of getCurrent is 23V
Iam not a programmer, so i dont know what is wrong with the Code.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2022, 06:17:44 pm
Thank you for the infos.

The only way to readout V and A from the Channels ist the Command READ
READ output always all Channels in one String:
21.00V 22.00V 23.00V 24.00V ;1.100A 1.200A 1.300A 1.400A ;OFF F1 OFF F2 OFF F3 OFF F4
I need only the first 8 values.

Your Code for reading V and A dont work:
#scpiCmd getVoltage txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[; ]"),"V","");
#scpiCmd getCurrent txrx? READ
:readmath: replace(getElement(value,inputValue+3,"[; ]"),"A","");

If i change inputValue+3 to inputValue+2, the output of getCurrent is 23V
Iam not a programmer, so i dont know what is wrong with the Code.

Two details:
You have to add a ? on the getCurrent and getVoltage commands
When using them you have to specify channel after the command, i.e. getCurrent? 1
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 13, 2022, 07:33:04 pm
Hello

Sorry to come back in the middle of this discussion. I finally managed to connect to my device with an AR488. It works pretty well.

I have the following problem. This device returns ASCII strings and I need to "extract" numbers. I am sending this command:

Code: [Select]
txrx? FREQ A
and it returns this:

Code: [Select]
;; FREQ   001.038546E+3
1) How do I get the number out of this string?
2) Can I multiply this value by 1000 and convert it to an integer?

Can I send the resulting command on the command line to verify its behaviour?

Thanks for your help.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2022, 08:24:02 pm
Hello

Sorry to come back in the middle of this discussion. I finally managed to connect to my device with an AR488. It works pretty well.

I have the following problem. This device returns ASCII strings and I need to "extract" numbers. I am sending this command:

Code: [Select]
txrx? FREQ A
and it returns this:

Code: [Select]
;; FREQ   001.038546E+3
1) How do I get the number out of this string?
2) Can I multiply this value by 1000 and convert it to an integer?

Can I send the resulting command on the command line to verify its behaviour?

Code: [Select]
#scpiCmd getFreqA? txrx? FREQ A
:readmath: getElement(value",1)

You define your own command in the definition file as shown above.
TestController will automatic convert between text and numbers when needed.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 13, 2022, 08:52:22 pm
Two details:
You have to add a ? on the getCurrent and getVoltage commands
When using them you have to specify channel after the command, i.e. getCurrent? 1

Wow, now it works with ? at the end.
I also have to change the +3 by +4 in the getCurrent Line and all work fine.
Thx for your Help

Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 14, 2022, 04:45:15 pm
Quote
Code: [Select]
#scpiCmd getFreqA? txrx? FREQ A
:readmath: getElement(value",1)

Yep, that works with a slight modification. Thanks.

Now, I need to send 3 commands. Only the first one displays a result and then it gets stuck. These commands do work within Putty. I don't know if a terminator has to be sent in between.
Anyway, this is what I have:

Code: [Select]
#value getVmaxA? V D1
#value getVminA? V D1
#value getFreqA? Hz D0

#scpiCmd getVmaxA? txrx? VMAX A
:readmath: getElement(value,1)

#scpiCmd getVminA? txrx? VMIN A
:readmath: getElement(value,1)

#scpiCmd getFreqA? txrx? FREQ A
:readmath: getElement(value,1)

#askValues getVmaxA?; getVminA?; getFreqA?;

#readingDelay 3

Thanks again
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 15, 2022, 07:43:52 am
Now, I need to send 3 commands. Only the first one displays a result and then it gets stuck. These commands do work within Putty. I don't know if a terminator has to be sent in between.
Anyway, this is what I have:

Code: [Select]
#value getVmaxA? V D1
#value getVminA? V D1
#value getFreqA? Hz D0

You column names are a bit silly here. It is not the function/command that is expected after the #value, but the column name.
Using the function name will not do any damage, but not any good either.

Code: [Select]
#askValues getVmaxA?; getVminA?; getFreqA?;

The #askValues will send the 3 commands on separate lines. You can always run TestController in debug mode to see what is transmitted and received.
If the separate commands works, the will usually also work when put together, except if the device has problems keeping up with the commands. You can add delay with ;[100]; the 100 means 100ms.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 15, 2022, 08:59:15 pm
Thanks for your quick answer.
Still no success.

I have added a delay between the commands :

Code: [Select]
#askValues getFreqA?;[100];getVmaxA?;[100];getVminA?;[100];
I noticed that all values are filled with the first value; in this case the frequency. Vmax and Vmin are not shown.
If I swap the order and put Vmax first, then all values are filled with Vmax.

The individual commands when executed from the command line show the same behaviour. If I execute the getFreqA? first and then getVmax?, I get the frequency and not Vmax.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2022, 06:19:06 am
Still no success.

You will have to run TestController in debug mode, to see what is going on. On Windows there is a .bat file to start it in debug mode.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 16, 2022, 09:48:25 am
Ok
I fired the debug mode under windows and I got the following:

Code: [Select]
Starting
;; jSerialComm version: 2.9.1
;; COM5: Set params: 115200
;; Start thread for: AR488 A:6 - Philips PM6666
;; COM5: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; Found Philips PM6666 on AR488 A:6
;; PM6666: Tx <getFreqA?>
;; PM6666: Tx <txrx? FREQ A
:readmath: getElement(value,1)>
;; COM5: Tx: <++addr 6.> 2B 2B 61 64 64 72 20 36 0A
;; COM5: Tx: <FREQ A.> 46 52 45 51 20 41 0A
;; COM5: Tx: <++read_tmo_ms 2950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 32 39 35 30 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <FREQ   001.183061E+4> 46 52 45 51 20 20 20 30 30 31 2E 31 38 33 30 36 31 45 2B

34
;; PM6666: Rx <001.183061E+4>
;; PM6666: Delay: 100ms
;; PM6666: Tx <getVmaxA?>
;; PM6666: Tx <txrx? VMAX A
:readmath: getElement(value,1)>
;; COM5: Tx: <VMAX A.> 56 4D 41 58 20 41 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <FREQ   001.183048E+4> 46 52 45 51 20 20 20 30 30 31 2E 31 38 33 30 34 38 45 2B

34
;; PM6666: Rx <001.183048E+4>
;; PM6666: Delay: 100ms
;; PM6666: Tx <getVminA?>
;; PM6666: Tx <txrx? VMIN A
:readmath: getElement(value,1)>
;; COM5: Tx: <VMIN A.> 56 4D 49 4E 20 41 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <FREQ   001.183052E+4> 46 52 45 51 20 20 20 30 30 31 2E 31 38 33 30 35 32 45 2B

34


Then, I started a Putty session and listed the commands I need to run to make it works. Here, they are:

Code: [Select]
++addr 6
++auto 1
freq a
FREQ   001.181477E+4
vmax a
VMAX   0000000.28E+0
vmin a
VMIN   -000000.26E+0

There is definitely something not right in TC.
I will be out for the next few days.

Thanks for your help.



Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 16, 2022, 11:07:47 am
Your Programm is the best for all tools with serial output, thank you for your work.

My goal is to send every command over a graphical interface, but my programming skills are not good enough.
I think the only way to do this is programming the Grid Panel
I Read and search in the Manual but I have no idea for the following problems:
1. I need On/Off Buttons for every channel, I can make them but they give no reaction with right mouse click
2. how I can switch channel on with one Command? (I must send 2 Commands „sel 1“ and „enable“)
3. The Math readouts in Grid Panel  give output „0.0000AH“ but I need „0.00 AH“
4. I need Digital font in Grid Panel, is it possible to use other fonts?
5. what basic interface commands can I use with the Hameg 7044?

Here is my Code:

#idString HAMEG,HAMEG 7044
#name Hameg 7044
#handle HAMEG7044
#driver Ascii
#port comfixedbaud
#baudrate 9600N82
#eol \r

#scpiCmd sel txrx? SEL (value)
#scpiCmd setV tx SET (value) V
#scpiCmd setC tx SET (value) A
#scpiCmd getV? txrx? READ
:readmath: replace(getElement(value,inputValue-1,"[ ;]"),"V","");
#scpiCmd getC? txrx? READ
:readmath: replace(getElement(value,inputValue+4,"[ ;]"),"A","");

#scpiCmd ch1 tx sel 1
#scpiCmd ch2 tx sel 2
#scpiCmd ch3 tx sel 3
#scpiCmd ch4 tx sel 4
#scpiCmd ch12 tx sel 1,2
#scpiCmd ch13 tx sel 1,3
#scpiCmd ch14 tx sel 1,4
#scpiCmd ch23 tx sel 2,3
#scpiCmd ch24 tx sel 2,4
#scpiCmd ch34 tx sel 3,4
#scpiCmd cha tx sel a
#scpiCmd ch0 tx sel n


#value V1 V D2
#value V2 V D2
#value V3 V D2
#value V4 V D2
#value A1 A D3
#value A2 A D3
#value A3 A D3
#value A4 A D3

#askValues getV? 1;getV? 2;getV? 3;getv? 4;getC? 1;getC? 2;getC? 3;getC? 4


Here the Grid Panel:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2022, 01:56:57 pm
I fired the debug mode under windows and I got the following:

First idea is to try:
#EOL \r\n

Another point: In putty it looks like your are using a GPIB interface, but not in TestController, why?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 16, 2022, 02:10:58 pm
I think the only way to do this is programming the Grid Panel

It is a very nice layout you have made in GridPanel. If you can accept a smaller font size for most of the value, try the "Specific type readout, PS & Load readout"
But I would recommend making a setup panel in the definition also.

I Read and search in the Manual but I have no idea for the following problems:
1. I need On/Off Buttons for every channel, I can make them but they give no reaction with right mouse click

The on/off buttons in GridPanel depends on a implemented #interface or you can use user programable buttons.

2. how I can switch channel on with one Command? (I must send 2 Commands „sel 1“ and „enable“)

You are allowed to list multiple commands with a ; between. TestController will split them up and send them independently to the device.

3. The Math readouts in Grid Panel  give output „0.0000AH“ but I need „0.00 AH“

You can change decimals in the "Table" view or from scripting.
Add the script lines to the script that restores GridPanel.

4. I need Digital font in Grid Panel, is it possible to use other fonts?

Sorry, but no. I have not made it possible to select a font anywhere in TestController.

5. what basic interface commands can I use with the Hameg 7044?

You define your own, probably something like (I have not finished all definitions):
#interfaceType PS PS:2 PS:3 PS:4
#interface setVoltage sel (channel);setV (value)
#interface setCurrent sel (channel);setC (value)
#interface setOn
#interface getVoltage
#interface getCurrent
#interface getOn
#interface readVoltage 0 1 2 3
#interface readCurrent 4 5 6 7
[/quote]

There is a popup function to test these definitions
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 18, 2022, 09:52:04 am
Quote
Another point: In putty it looks like your are using a GPIB interface, but not in TestController, why?

Nope. AR488 is used in both setups.

Current def. file (still no success, same as before)

Code: [Select]
#idString PM6666/016/32,,
#name Philips PM6666
#handle PM6666
#port GPIB
#driver ascii
#eol \r\n

#value FreqA Hz D0
#value VmaxA V D2
#value VminA V D2

#scpiCmd getID? txrx? id?

#scpiCmd getFreqA? txrx? FREQ A
:readmath: getElement(value,1)

#scpiCmd getVmaxA? txrx? VMAX A
:readmath: getElement(value,1)

#scpiCmd getVminA? txrx? VMIN A
:readmath: getElement(value,1)

#askValues getFreqA?;[100];getVmaxA?;[100];getVminA?;[100];

#readingDelay 3
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 18, 2022, 05:26:01 pm
Current def. file (still no success, same as before)

I do not have any idea at the current time.
It looks like TestController continues to receives the same answer, can it be related to any settings in the AR488?
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 18, 2022, 07:36:50 pm
Is there a way to not send these 2 commands:

Code: [Select]
;; COM5: Tx: <++read_tmo_ms 2950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 32 39 35 30 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A

To me, that the ones that creates the problems.

And can we send this command instead:

Code: [Select]
++auto 1
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2022, 05:11:02 am
Is there a way to not send these 2 commands:

Code: [Select]
;; COM5: Tx: <++read_tmo_ms 2950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 32 39 35 30 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A

To me, that the ones that creates the problems.

And can we send this command instead:

Code: [Select]
++auto 1

++read eoi is controlled with #gpibReadEol
++read_tmo_ms is controlled with #readingDelay

On the GPIB tab you can add direct commands to the GPIB interface in the "Settings" column
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 19, 2022, 08:33:19 am
Quote
Quote
++read eoi is controlled with #gpibReadEol
++read_tmo_ms is controlled with #readingDelay

On the GPIB tab you can add direct commands to the GPIB interface in the "Settings" column

I think I got it right now:

Add
Code: [Select]
++auto 1to the GPIB settings and use this file:

Code: [Select]
#idString PM6666/016/32,,
#name Philips PM6666
#handle PM6666
#port GPIB
#driver ascii
;#eol \r\n

#value FreqA Hz D0
#value VmaxA V D2
#value VminA V D2

#scpiCmd getID? txrx? id?

#scpiCmd getFreqA? txrx? FREQ A
:readmath: getElement(value,1)

#scpiCmd getVmaxA? txrx? VMAX A
:readmath: getElement(value,1)

#scpiCmd getVminA? txrx? VMIN A
:readmath: getElement(value,1)

;#askValues getFreqA?;[100];getVmaxA?;[100];getVminA?;[100];
#askValues getFreqA?;getVmaxA?;getVminA?;

;++read_tmo_ms is controlled with #readingDelay
#readingDelay 3 

;++read eoi is controlled with #gpibReadEol
#gpibReadEol 10


Thanks again for your great help.



Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 23, 2022, 03:00:13 pm
Iam working on Ascii-Driver for a HCS3004

How can i seperate the Volt and Current Output from PS:
;getting Volt & Current Setting value from PS
;in this Case 14.4V and 03.0A
GETS

144030

;Get Display Volt & Current value from PS
;14.44V 01.86A Status ON (0=ON,1=OFF)
GETD

144401860
---------------------------------------
#scpiCmd getVS? txrx? GETS
:i dont know what readmath formula i mus use here

thx for Help

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2022, 04:32:38 pm
How can i seperate the Volt and Current Output from PS:
;getting Volt & Current Setting value from PS
;in this Case 14.4V and 03.0A
GETS

144030

You have to split it onto two values with a space between and adjust the values to volt and ampers, for this you use string functions:
:readmath: (substring(value,0,3)/10.0)+" "+(substring(value,3,6)/10.0)

You can test type of math on the Command page, first define a variable called value and the the expression.
=var value="144030"
=(substring(value,0,3)/10.0)+" "+(substring(value,3,6)/10.0)

You have to put a = before each line to use the calculator mode.

For the set point you may want to only return one value at a time, i.e. doing something like:
#scpiCmd getVolt? txrx? GETS
:readmath: (substring(value,0,3)/10.0)

#scpiCmd getCurrent? txrx? GETS
:readmath: (substring(value,3,6)/10.0)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2022, 07:03:38 pm
Iam working on Ascii-Driver for a HCS3004

What is a HCS3004,?
I can see from your questions it is a power supply, but feeding the number to google do not show any power supply!

If you have a link to it, please post it.

Anyway I hope you will post the final definition when it works, you are probably not the only one with a HCS3004.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 23, 2022, 07:50:13 pm
Thank you for your help.
Your Program is so extensive, i must learn all Commands to use it but iam an old Guy, to old :)

Sorry i made a Mistake, the PS called HCS 3404 from China. In Germany is called Voltcraft DPPS-60-10
https://www.manson.com.hk/product/hcs-3404-usb/ (https://www.manson.com.hk/product/hcs-3404-usb/)

Ok, one Problem:
#scpiCmd getON? txrx? GETD
:readmath: (substring(value,8,9))

Here is the result "0" or "1" but i need ON and OFF
Can i add an Formula in the readmath to do this?

I will post the final definition but i think i can only make standart txt for read and set the values.
I will do much more but my old Brain doesnt understand the many formulas :(
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2022, 08:04:51 pm
Thank you for your help.
Your Program is so extensive, i must learn all Commands to use it but iam an old Guy, to old :)

Sorry i made a Mistake, the PS called HCS 3404 from China. In Germany is called Voltcraft DPPS-60-10
https://www.manson.com.hk/product/hcs-3404-usb/ (https://www.manson.com.hk/product/hcs-3404-usb/)

Ok, one Problem:
#scpiCmd getON? txrx? GETD
:readmath: (substring(value,8,9))

Here is the result "0" or "1" but i need ON and OFF
Can i add an Formula in the readmath to do this?

Easily, use getElement("off on", value), you replace value with the expression that get 0/1 or place the getelement on another :readmath: line (Only possible with #scpiCmd).

I will post the final definition but i think i can only make standart txt for read and set the values.
I will do much more but my old Brain doesnt understand the many formulas :(

I am not exactly young, but I enjoy figuring out technical stuff.
In my opinion it is more about motivation than age and I am not old enough to have lost my motivation.

When you have figured out how the definitions works, it is only a question about time how complete you want to make it. Checking other definitions may help.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 24, 2022, 12:00:17 am
The readout Voltage is switching sometimes from 15V to 1V, see Picture attached.

Here is my Code for the HCS Series 3xxx PS:

#handle HCS3404
#driver Ascii
#port comfixedbaud
#baudrate 9600N81
#eol \r\n
;-----------------------------
#scpiCmd setV tx VOLT(value)
#scpiCmd setC tx CURR(value)
#scpiCmd getVS? txrx? GETS
:readmath: (substring(value,0,3)/10.0)
#scpiCmd getCS? txrx? GETS
:readmath: (substring(value,3,6)/10.0)
#scpiCmd getV? txrx? GETD
:readmath: (substring(value,0,4)/100.0)
#scpiCmd getC? txrx? GETD
:readmath: (substring(value,4,8)/100.0)
#scpiCmd getON? txrx? GETD
:readmath: (substring(value,8,9))
#scpiCmd outON tx SOUT0
#scpiCmd outOFF tx SOUT1
;-----------------------------
#value VSet V D2
#value VGet V D2
#value CSet A D2
#value CGet A D2

#askValues getVS?;getV?;getCS?;getC?
#readingDelay 2
;-----------------------------
#interfaceType PS
#interface setVoltage setV (value)
#interface setCurrent setC (value)
#interface setOn outON
#interface setOff outOFF
#interface getVoltage getV?
#interface getCurrent getC?
#interface readVoltage 0
#interface readCurrent 0
 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 24, 2022, 06:05:57 am
The readout Voltage is switching sometimes from 15V to 1V, see Picture attached.

I have no idea why.
You can try using debug mode, it is also possible to add delay between the commands:

#askValues getVS?;[10];getV?;[10];getCS?;[10];getC?

#scpiCmd setV tx VOLT(value)
#scpiCmd setC tx CURR(value)

Depending on your protocol you might want to format and/or scale the value.
There is a format function for that: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble)
If you need to scale the value, you can just multiply with 10 or 100.
Something like this will always return 3 digits with no decimals:
(formatDouble(value*10,3,3,0,0))


#interface setOn outON
#interface setOff outOFF

For the interface setOn must have a parameter to switch output on/off:

#interface setOn (value?"outON":"outOFF")

#interface readVoltage 0
#interface readCurrent 0

The number is the column for the data, this means you probably want:
#interface readVoltage 1
#interface readCurrent 3


I will also suggest adding a setup menu, here is a entry for voltage:

#cmdSetup number Voltage
:read: getV?
:write: setV
Volt 0 30
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 24, 2022, 05:45:32 pm
Many thx for all Tips.

1. the drop to 1V was eliminatet after i set eol\r without the "\n"
2. Interface setON was my Mistake. The last Column from GETD Command ist the CV/CC Status, not ON/OFF Status.
3. The Radio Buttons dont marked when i klick on it but the Command work ok.
4. I cant set any V or C value with the Set Button
5. I add a kbON Cmd because when Popup Readout is active i can not change V or C on the PS. So i add an AskValue Cmd for this to enable this short Time.

All is working fine i think except Point 3+4 above.
Programming is very funny and makes me happy (when it works :) ), but many formulas i dont understand so i ask many Times here, sorry for this.


Here is my Code:
Code: [Select]
#idString Manson,HCS-3404
#name HCS 3404
#handle HCS3404
#driver Ascii
#port comfixedbaud
#baudrate 9600N81
#eol \r
;-----------------------------
#scpiCmd setV tx VOLT(formatDouble(value*10,3,3,0,0))
#scpiCmd setC tx CURR(formatDouble(value*10,3,3,0,0))
#scpiCmd getVS? txrx? GETS
:readmath: (substring(value,0,3)/10.0)
#scpiCmd getCS? txrx? GETS
:readmath: (substring(value,3,6)/10.0)
#scpiCmd getV? txrx? GETD
:readmath: (substring(value,0,4)/100.0)
#scpiCmd getC? txrx? GETD
:readmath: (substring(value,4,8)/100.0)
#scpiCmd getCVCC? txrx? GETD
:readmath: (substring(value,8,9))
#scpiCmd kbON tx ENDS
#scpiCmd outON tx SOUT0
#scpiCmd outOFF tx SOUT1
;-----------------------------
#value VSet V D2
#value VGet V D2
#value CSet A D2
#value CGet A D2
#value CVCCget CVCC SI
#askValues getVS?;[10];getV?;[10];getCS?;[10];getC?;[10];getCVCC;[10];kbON
;-----------------------------
#interfaceType PS
#interface setVoltage setV (value)
#interface setCurrent setC (value)
#interface setOn outON:outOFF
#interface getVoltage getV?
#interface getCurrent getC?
#interface readVoltage 1
#interface readCurrent 3
;-----------------------------
#cmdDelayTime 50
#cmdSetup radio Voltage
:read: getV?
:write: setV (value)
:readformat: u
:tip: Setup this voltage, turn output on
16.5V 16.5
5V 5
12V 12
20V 20
30V 30
60V 60
#cmdSetup radio Current
:read: getC?
:write: setC (value)
:readFormat: u
:tip: Output will current limit at this current
2.5A 2.5
500mA 0.5
1A 1
2A 2
3A 3
10A 10
#cmdSetup buttonsOn Output
:tip: Turn output on or off
:updatealloff:
Off outOFF
On outON
#cmdSetup number Voltage
:read: getV?
:readformat: u
:write: setV (Value)
:tip: Setup this voltage, do not turn output on/off
Volt 0 60
#cmdSetup number Current
:read: getC?
:readformat: u
:write: setC (Value)
:tip: Setup this current, do not turn output on/off
Amps 001 10





 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 24, 2022, 06:39:22 pm
1. the drop to 1V was eliminatet after i set eol\r without the "\n"

If that is enough, I will suggest removing the delays: [10]

3. The Radio Buttons dont marked when i klick on it but the Command work ok.

For the radio buttons to get marked they must read back a value that matches their value.
You may get some hints what is going on by running TC in debug mode, there is a batch file for it.

4. I cant set any V or C value with the Set Button

Do not use (Value), it is (value), i.e. lower case, but you do not need anything:
1) If there is nothing after the command TC will automatic add the value at the end of the command.
2) To place the value somewhere in the command (useful when using multiple commands) use #
3) If some math is needed on the value use (value...)

...but many formulas i dont understand so i ask many Times here, sorry for this.

I do not mind answering questions.

You might want to add the
#outputOff outOff
definition, this is used by the "Outputs off" button

If you need to turn output off or reenable local control when stopping TC, you can use:
#finalCmd


Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 24, 2022, 07:16:38 pm
Hello

I have got a Ruideng DPH5005 I would like to define. It seems this module is similar to the content of RidenRD60xx.txt.
Registers addresses are different.

Question: has this module been already defined?

I have done a quick test and the following commands should get me started:

Code: [Select]
#idString Riden,Riden DPH5005
#name Riden DPH5005
#handle DPH5005
#port comfixedbaud
#baudrate 9600
#driver Modbus

#scpiCmd VSet holding 0x00 500
#scpiCmd VSet? holding? 0x00 /100

#scpiCmd ISet? holding? 0x01 /1000
#scpiCmd ISet holding 0x01 2000

#scpiCmd OUTPUTOn holding 0x09 1
#scpiCmd OUTPUTOFF holding 0x09 0

#scpiCmd model? holding? 0x0B
#scpiCmd version? holding? 0x0C

#scpiCmd SOVP? holding? 0x52 /100
#scpiCmd SOVP holding 0x52 4000

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 24, 2022, 07:37:28 pm
Question: has this module been already defined?

No.
The easiest way to check is to type the model number in the filter box on the "Load devices" page and hit TAB.

#scpiCmd VSet holding 0x00 500
#scpiCmd VSet? holding? 0x00 /100

I have no idea about the register numbers, but you need to put a * before a multiplier and I would expect value for get and set to be the same.


You will also need definitions to read current value.

Look at the file  Scheppo has posted for an idea about what has to be included, the main difference is you use different #scpiCmd definitions.
You can, of course, also look at the Riden file, but it includes some extra stuff.


Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 24, 2022, 08:37:30 pm
Wow, the debug Function is very good for Beginners :)
I found all Mistakes that i made and now it works 99%
In Grid Panel/General Device setting the On/Off and Multi On/Off dont work.
Same Result on both Buttons.
Result in Debugwindow:
------------ Click the ON Button--------------
;; HCS3404: Tx <outON>
;; HCS3404: Tx <tx SOUT0>
;; COM4: Tx: <SOUT0.> 53 4F 55 54 30 0D
------------ Click the OFF Button--------------
;; HCS3404: Tx <outON>
;; HCS3404: Tx <tx SOUT0>
;; COM4: Tx: <SOUT0.> 53 4F 55 54 30 0D
 
And is it possible to load the Device.txt File in working TC after changes?

Thx for your fast Help everytime

Code:
Code: [Select]
#idString Manson,HCS-3404
#name HCS 3404
#handle HCS3404
#driver Ascii
#port comfixedbaud
#baudrate 9600N81
#eol \r
;-----------------------------
#scpiCmd setV tx VOLT(formatDouble(value*10,3,3,0,0))
#scpiCmd setC tx CURR(formatDouble(value*10,3,3,0,0))
#scpiCmd getVS? txrx? GETS
:readmath: (substring(value,0,3)/10.0)
#scpiCmd getCS? txrx? GETS
:readmath: (substring(value,3,6)/10.0)
#scpiCmd getV? txrx? GETD
:readmath: (substring(value,0,4)/100.0)
#scpiCmd getC? txrx? GETD
:readmath: (substring(value,4,8)/100.0)
#scpiCmd getCVCC? txrx? GETD
:readmath: (substring(value,8,9))
#scpiCmd kbON tx ENDS
#scpiCmd outON tx SOUT0
#scpiCmd outOFF tx SOUT1
#outputOff outOff
;-----------------------------
#value VSet V D2
#value VGet V D2
#value CSet A D2
#value CGet A D2
#value CVCCget CVCC SI
#askValues getVS?;[10];getV?;[10];getCS?;[10];getC?;[10];getCVCC;[10];kbON;[90]
;-----------------------------
#interfaceType PS
#interface setVoltage setV (value)
#interface setCurrent setC (value)
#interface setOn outON
#interface setOff outOFF
#interface getVoltage getV?
#interface getCurrent getC?
#interface readVoltage 1
#interface readCurrent 3
;-----------------------------
#cmdDelayTime 50
#cmdSetup radio Voltage
:read: getVS?
:write: setV (value)
:readformat: u
:tip: Setup this voltage, turn output on
16.5V 16.5
5V 5
12V 12
20V 20
30V 30
60V 60

#cmdSetup radio Current
:read: getCS?
:write: setC (value)
:readFormat: u
:tip: Output will current limit at this current
2.5A 2.5
500mA 0.5
1A 1
2A 2
3A 3
10A 10
11A 11

#cmdSetup buttonsOn Output
:tip: Turn output on or off
:updatealloff:
Off outOFF
On outON
#cmdSetup number Voltage
:read: getVS?
:readformat: u
:write: setV (value)
:tip: Setup this voltage, do not turn output on/off
Volt 0 60.5

#cmdSetup number Current
:read: getCS?
:readformat: u
:write: setC (value)
:tip: Setup this current, do not turn output on/off
Amps 001 11
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2022, 07:05:14 am
In Grid Panel/General Device setting the On/Off and Multi On/Off dont work.
...
#interface setOn outON
#interface setOff outOFF

The #interface for on/off must be setOn with a 0/1 parameter, not setOn/setOff

Try this definition and remove the setOff.
#interface setOn (value?"outON":"outOFF")

There is a popup to test the interface functions:
(http://lygte-info.dk/pic/cpf6/InterfaceTest.png)


You are missing a check if the connected device is your power supply, this can be done with: #verifyDevice
See more here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Other_commands (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Other_commands)


Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2022, 07:28:29 am
(http://lygte-info.dk/pic/cpf6/Screenshot%202022-04-24%20221528.png)

You are having some fun with the GridPanel.
Not all the readouts are useful for a power supply, some of them are more for multimeters. You also have one that is for the combination of a power supply and electronic load  with a device (Usually buck or boost converter) between (The one with 100.000%)
The control with the star works very well with a mouse wheel to adjust the parameter (i.e. output voltage).

You can press the F1 key to get a bit more information about the different readouts.

The general idea with the GridPanel is you make a setup to match your preferences with the loaded devices and then you save it as a menu entry, that can easily be reloaded:
(http://lygte-info.dk/pic/cpf6/SaveGridPanel.png)

This means you can save many different GridPanel layouts for different situations.
Title: Re: Program that can log from many multimeters.
Post by: SebiTNT on April 25, 2022, 11:26:38 am
Thank you so much @HKJ for your work!

I brought myself a East Tester ET5301 electronic load (150 V, 60 A, 400 W) and wanted to use it with your program for testing my batteries. Since this load is not supported by now, I have modified the device file for the East Tester ED5410 to fit my needs. The modified file is attached.

Unfortunately the program reads and logs a zero-value every few measurements for voltage and current (nothing more tested by now). Please see the attached chart. Is there anything that can be done to avoid this?

Thank you very much for your reply in advance!

Edit: Removed the not working file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2022, 11:51:37 am
Unfortunately the program reads and logs a zero-value every few measurements for voltage and current (nothing more tested by now). Please see the attached chart. Is there anything that can be done to avoid this?

You can probably tell TestController to ignore it by using a non-zero value for "Delay timeout by:" on the configuration page, but that is a hack and if it can be fixed another way it is better.

There can be a couple reasons, some stuff you can try is:
Adjusting the #eol character
Using timeout setting: #readingDelay 2
Adding small delays with [50]; between commands
Using a slower baudrate (If the load support it).



Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 25, 2022, 05:39:30 pm
Ok, the On / OFF with Button is now ready, thx.

I dont understand anything with the Verifycommand.
What is the holding parameter for?

I try this:
#scpiCmd Model? txrx? GMOD (GMOD give Output: HCS-3404)
#verifyDevice HCS-3404 Model

But TC dont start then.

Yes i like Gridpanel very much and i make all gridpanels for Fun yesterday so i can see what Panel is best for me.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 25, 2022, 05:46:54 pm
Hi,  i have same Problem yesterday.
For me it was a false eol command
eol\r\n  make Voltage from 15V to 1V, then i delete \n and now it works.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2022, 06:28:31 pm
I dont understand anything with the Verifycommand.
What is the holding parameter for?

I try this:
#scpiCmd Model? txrx? GMOD (GMOD give Output: HCS-3404)
#verifyDevice HCS-3404 Model

But TC dont start then.

Could it be as simple as a missing ? after Model?
Title: Re: Program that can log from many multimeters.
Post by: SebiTNT on April 25, 2022, 07:02:10 pm
There can be a couple reasons, some stuff you can try is:
Adjusting the #eol character

That did the Trick. Thank you so much! I have changed the line
Code: [Select]
#eol \n |.\nto
Code: [Select]
#eol \nand it is working fine now. Attached you can find the new file.

What does the |. even mean?

And another question:
I tried adding buttons for switching the input on an off. The buttons work fine but when requesting the status (sending CH:SW? to the device), it is returning the value ON or OFF. As far as I am understanding it, the status indicator is expecting the values 0 or 1. Is there a way for converting it? So something like
Code: [Select]
:readmath: replace(value,"ON","1");replace(value,"OFF","0"); which is not working.

Edit: Removed the not working file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2022, 06:33:23 am
That did the Trick. Thank you so much! I have changed the line
Code: [Select]
#eol \n |.\nWhat does the |. even mean?

That someone in China programmed the SCPI protocol a silly way.

And another question:
I tried adding buttons for switching the input on an off. The buttons work fine but when requesting the status (sending CH:SW? to the device), it is returning the value ON or OFF. As far as I am understanding it, the status indicator is expecting the values 0 or 1. Is there a way for converting it? So something like
Code: [Select]
:readmath: replace(value,"ON","1");replace(value,"OFF","0"); which is not working.

This is often needed and there is a special function for it:
:readmath: listIndex(value,"OFF ON");
Most functions are listed here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html (https://lygte-info.dk/project/TestControllerFunctions%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2022, 07:46:14 am
Yes i like Gridpanel very much and i make all gridpanels for Fun yesterday so i can see what Panel is best for me.

You can customize the individual panels to some extend:

(http://lygte-info.dk/pic/cpf6/GridPanel1.png)

A voltmeter and a power supply, titles are removed, instead I uses colors to identify the two devices.

Or maybe make the panel this way (The PS settings panel is not released yet):

(http://lygte-info.dk/pic/cpf6/GridPanel2.png)

Or maybe this with direct access to the PS setup panel and sliders to adjust voltage and current and also a fast way to start/stop logging:

(http://lygte-info.dk/pic/cpf6/GridPanel3.png)

I am always interested in suggestions for other types of GridPanel readouts and controls. These panels do give many ways to do the same function or view the same value, this is not an issue, the idea is that everybody can find something they are comfortable with.
Title: Re: Program that can log from many multimeters.
Post by: SebiTNT on April 26, 2022, 12:05:56 pm
This is often needed and there is a special function for it:
:readmath: listIndex(value,"OFF ON");

Thank you again. It is working now.
And a new question:
I am having difficulties with the indicator. So far the buttons are working and my code is
Code: [Select]
#cmdSetup buttonsOn Output
:read: CH:SW?;
:readmath: listIndex(value,"OFF ON");
:write: CH:SW #;[300];
:tip: Turn output on or off
:updatealloff:
Off OFF
On ON

The indicator is unfortunately not working. You wrote in the documentation: The read result is supposed to be a numeric result, use a :string: tag for a non-numeric result.
I did not find any example of how to use the :string: tag on your site. How do I use it in my case?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2022, 12:27:08 pm
The indicator is unfortunately not working. You wrote in the documentation: The read result is supposed to be a numeric result, use a :string: tag for a non-numeric result.
I did not find any example of how to use the :string: tag on your site. How do I use it in my case?

The read value must match the second parameter for the indicator to turn on, i.e. you cannot turn it into a number and must use a string tag:

Code: [Select]
#cmdSetup buttonsOn Output
:read: CH:SW?;
:string:
:write: CH:SW #;[300];
:tip: Turn output on or off
:updatealloff:
Off OFF
On ON
Title: Re: Program that can log from many multimeters.
Post by: SebiTNT on April 26, 2022, 01:57:08 pm
Well, I did not know it is this easy to use. It worked again like a charm. Thank you so much! Attached is the new file in case you might want to integrate it. I have send you a little donation.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 26, 2022, 05:30:34 pm
Attached is the new file in case you might want to integrate it. I have send you a little donation.

Thanks, it will be included in next release.
Title: Final Code Power Supply Manson HCS-3404 / Voltcraft DPPS-60-10
Post by: Scheppo on April 26, 2022, 08:00:45 pm
Here is the final code for the Manson HCS-3xxx Series and German Voltcraft DPPS Series.
Thank you HJK for your Help.

Code: [Select]
#idString Manson,HCS-3404
#name HCS 3404
#handle HCS3404
#driver Ascii
#port comfixedbaud
#baudrate 9600N81
#eol \r
#author Scheppo, with many Help from HJK thx
;-----------------------------
#scpiCmd setV tx VOLT(formatDouble(value*10,3,3,0,0))
#scpiCmd setC tx CURR(formatDouble(value*10,3,3,0,0))
#scpiCmd getVS? txrx? GETS
:readmath: (substring(value,0,3)/10.0)
#scpiCmd getCS? txrx? GETS
:readmath: (substring(value,3,6)/10.0)
#scpiCmd getV? txrx? GETD
:readmath: (substring(value,0,4)/100.0)
#scpiCmd getC? txrx? GETD
:readmath: (substring(value,4,8)/100.0)
#scpiCmd getCVCC? txrx? GETD
:readmath: (substring(value,8,9))
#scpiCmd kbON tx ENDS
#scpiCmd outON tx SOUT0
#scpiCmd outOFF tx SOUT1
#scpiCmd Model? txrx? GMOD
#outputOff outOff
#verifyDevice HCS-3404 Model?
;-----------------------------
#value VSet V D2
#value VGet V D2
#value CSet A D2
#value CGet A D2
#value CVCCget CVCC SI
#askValues getVS?;[10];getV?;[10];getCS?;[10];getC?;[10];getCVCC;[10];kbON;[90]
;-----------------------------
#interfaceType PS
#interface setVoltage setV (value)
#interface setCurrent setC (value)
#interface setOn (value?"outON":"outOFF")
#interface getVoltage getV?
#interface getCurrent getC?
#interface readVoltage 1
#interface readCurrent 3
;-----------------------------
#cmdDelayTime 50
#cmdSetup radio Voltage
:read: getVS?
:write: setV (value)
:readformat: u
:tip: Setup this voltage, turn output on
16.5V 16.5
5V 5
12V 12
20V 20
30V 30
60V 60

#cmdSetup radio Current
:read: getCS?
:write: setC (value)
:readFormat: u
:tip: Output will current limit at this current
2.5A 2.5
500mA 0.5
1A 1
2A 2
3A 3
10A 10
11A 11

#cmdSetup buttonsOn Output
:tip: Turn output on or off
:updatealloff:
Off outOFF
On outON
#cmdSetup number Voltage
:read: getVS?
:readformat: u
:write: setV (value)
:tip: Setup this voltage, do not turn output on/off
Volt 0 60.5

#cmdSetup number Current
:read: getCS?
:readformat: u
:write: setC (value)
:tip: Setup this current, do not turn output on/off
Amps 001 11
Title: Re: Final Code Power Supply Manson HCS-3404 / Voltcraft DPPS-60-10
Post by: HKJ on April 27, 2022, 07:58:19 am
Here is the final code for the Manson HCS-3xxx Series and German Voltcraft DPPS Series.
Thank you HJK for your Help.

Thanks, I will include it in the next release. I have done a few modifications to it (See attachment).

To add more models use #meta and #metadef, you can see it used in "RidenRD60xx.txt" and many other definitions.
The idea is that #meta declares the definition a model, then each #metadef can use that model and do modifications to it. This way a single definition file can be used as definition to any number of closely related devices.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 27, 2022, 04:52:38 pm
Hello

I have created a def file for the Riden DPH5005. Most of the work was about changing the register addresses.

There is another model named DPH3205. Maybe it can be added to that file if it's similar.

Thanks for your help.
Title: Re: Program that can log from many multimeters.
Post by: toddehawk on April 28, 2022, 11:55:37 am
Hi,

Is it possible to add the Riden RD6018?
I don`t understand the config file, otherwise i had added it to the RidenRD60xx config....

Thanks!
Thorsten
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 12:20:30 pm
Is it possible to add the Riden RD6018?
I don`t understand the config file, otherwise i had added it to the RidenRD60xx config....

Yes, try start TestController in debug mode (There is a batch file to do it) and load another Riden supply on the correct COM port.

You will get a line starting with: **Device do not match**
Post that line.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 12:21:03 pm
I have created a def file for the Riden DPH5005. Most of the work was about changing the register addresses.

Thanks, it will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on April 28, 2022, 01:21:38 pm
I believe there should be a correction to the Siglent SDL10xxXxx.txt file?

Change line 120 from:

Code: [Select]
#value Capacity Ah D3
To:

Code: [Select]
#value Capacity mAh D3
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 03:17:40 pm
I believe there should be a correction to the Siglent SDL10xxXxx.txt file?

Change line 120 from:

Code: [Select]
#value Capacity Ah D3
To:

Code: [Select]
#value Capacity mAh D3

If that is the case a bit more must be changed. The returned values must be in base units or there is a risk for stuff like: kmAh
Title: Re: Program that can log from many multimeters.
Post by: tubularnut on April 28, 2022, 03:35:48 pm
The only other reference to mAh is in the 'Cutoff' section, it is not defined elsewhere.

The displayed value on the actual device is in mAh.

Code: [Select]
#cmdSetup number Cutoff_Capacity Batt
:read: :SOUR:BATT:CAP?
:write: :SOUR:BATT:CAP
:buttontext: Set
mAh 0 999999

If not, it may need Defpom to have a look ( I don't fully understand the definition, only that changing line 120 fixes the display within Testcontroller correctly)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 04:07:35 pm
The only other reference to mAh is in the 'Cutoff' section, it is not defined elsewhere.

The displayed value on the actual device is in mAh.

Code: [Select]
#cmdSetup number Cutoff_Capacity Batt
:read: :SOUR:BATT:CAP?
:write: :SOUR:BATT:CAP
:buttontext: Set
mAh 0 999999

If not, it may need Defpom to have a look ( I don't fully understand the definition, only that changing line 120 fixes the display within Testcontroller correctly)

The easy way to fix it is to switch the definitions to "SCPIx" type

#driver SCPIx

and the define a #scpiCmd to read the capacity and convert to Ah:

#scpiCmd getCapacity? txrx? :SOUR:BATT:DISCHA:CAP?
:readmath: value/1000.0

and then use getCapacity? instead of :SOUR:BATT:DISCHA:CAP? in the #askValues line.

The setup could also be modified:
#cmdSetup number Cutoff_Capacity Batt
:read: getCapacity?
:write: :SOUR:BATT:CAP (value*1000.0)
:buttontext: Set
Ah 0 999.999

I do have have the load and cannot test it, making it difficult for me to do.

Title: Re: Program that can log from many multimeters.
Post by: tubularnut on April 28, 2022, 04:16:56 pm
Thank you, I’ll give it a go, will help me to understand device definitions a bit more.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on April 28, 2022, 07:17:58 pm
I have created a def file for the Riden DPH5005. Most of the work was about changing the register addresses.

Thanks, it will be included in the next release.

Thanks to you. It's a pretty versatile tool.

Another topic: I wonder if a device like the Hyperion 1420i would be of interest. It's a charger/discharger battery analyzer and it works through a USB serial interface or bluetooth if
you are ready to make a mod. Mine is about 10 years old.

There are different types on the market (EOS 0720i, etc).
Title: Re: Program that can log from many multimeters.
Post by: toddehawk on April 28, 2022, 07:31:47 pm
Is it possible to add the Riden RD6018?
I don`t understand the config file, otherwise i had added it to the RidenRD60xx config....

Yes, try start TestController in debug mode (There is a batch file to do it) and load another Riden supply on the correct COM port.

You will get a line starting with: **Device do not match**
Post that line.

Hi HKJ,

COM6: **Device do not match** <60181>
; USB Serial (COM6) Device Riden,Riden RD6012 do not match: **Device do not match** <60181>

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 07:38:41 pm
COM6: **Device do not match** <60181>
; USB Serial (COM6) Device Riden,Riden RD6012 do not match: **Device do not match** <60181>

Try placing these lines in the top of the "RidenRD60xx.txt" text file, this will give you the 6018
Please test if it works correctly.

Code: [Select]
#metadef
#idString Riden,Riden RD6018
#name Riden RD6018
#handle RD6018

#replacetext RD60xx 60181
#replaceText MaxCurrent 18.100
#replaceText MaxOCP 18.200
#replaceText CurrentScaleFactor 1000
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 07:42:32 pm
Another topic: I wonder if a device like the Hyperion 1420i would be of interest. It's a charger/discharger battery analyzer and it works through a USB serial interface or bluetooth if
you are ready to make a mod. Mine is about 10 years old.

There are different types on the market (EOS 0720i, etc).

I do not personally have any use for that, but if there is a lot of them around it might be useful and I have no problem including a definition for it.
Title: Re: Program that can log from many multimeters.
Post by: toddehawk on April 28, 2022, 07:49:35 pm
COM6: **Device do not match** <60181>
; USB Serial (COM6) Device Riden,Riden RD6012 do not match: **Device do not match** <60181>

Try placing these lines in the top of the "RidenRD60xx.txt" text file, this will give you the 6018
Please test if it works correctly.

Code: [Select]
#metadef
#idString Riden,Riden RD6018
#name Riden RD6018
#handle RD6018

#replacetext RD60xx 60181
#replaceText MaxCurrent 18.100
#replaceText MaxOCP 18.200
#replaceText CurrentScaleFactor 1000

You are the best ! :-)
It works

Found Riden RD6018 on USB Serial (COM6) sn......

Thanks so much !
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 28, 2022, 08:08:41 pm
You are the best ! :-)
It works

Found Riden RD6018 on USB Serial (COM6) sn......

Thanks so much !

Check if the current readout is correct and is the maximums correct?
Title: Re: Program that can log from many multimeters.
Post by: toddehawk on April 28, 2022, 09:02:18 pm
You are the best ! :-)
It works

Found Riden RD6018 on USB Serial (COM6) sn......

Thanks so much !

Check if the current readout is correct and is the maximums correct?

You are right, current max set to 13A shown --> 1.3A
actual current 0,9A , in reality it is 9,9A

so at the moment it is divided by 10, I tried set CurrentScaleFactor to 100 but changed nothing ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 29, 2022, 07:26:07 am
You are right, current max set to 13A shown --> 1.3A
actual current 0,9A , in reality it is 9,9A

so at the moment it is divided by 10, I tried set CurrentScaleFactor to 100 but changed nothing ...

The CurrentScaleFactor was not used everywhere, I have changed that in the attached file. Use it to replace the same file in the devices directory.
And please report back if it works correctly now.
Title: Re: Program that can log from many multimeters.
Post by: toddehawk on April 30, 2022, 09:49:14 am
You are right, current max set to 13A shown --> 1.3A
actual current 0,9A , in reality it is 9,9A

so at the moment it is divided by 10, I tried set CurrentScaleFactor to 100 but changed nothing ...

The CurrentScaleFactor was not used everywhere, I have changed that in the attached file. Use it to replace the same file in the devices directory.
And please report back if it works correctly now.

Sorry for the late response...

Now it works 100%
Thanks!
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 30, 2022, 04:19:20 pm
Hello again :)

i need Help about to read the Status from HM7044.
The Result from internal READ Command is: 05.00V 05.00V 30.00V 30.00V ;1.000A 1.758A 1.968A 3.000A ;OFF -1 OFF -2 OFF -3 OFF -4
The Status from the 4 Channels are: OFF -1 OFF -2 OFF -3 OFF -4

The following Combinations for Channel 1 are possible:
OFF -1
OFF F1
CV -1
CV F1
CC -1
CC F1
-------------------------------------------------------------
CV=Constant Voltage, CC=Constant Current, OFF=Channel off, F=Fuse on, 1=Channel Number

I need all 6 Status in a readmath, but i dont know how can i make it.
Maybe:
#scpiCmd status? txrx? READ
:readmath: ?????????????????

thx for any Tip.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2022, 04:52:37 pm
The Result from internal READ Command is: 05.00V 05.00V 30.00V 30.00V ;1.000A 1.758A 1.968A 3.000A ;OFF -1 OFF -2 OFF -3 OFF -4
The Status from the 4 Channels are: OFF -1 OFF -2 OFF -3 OFF -4

The following Combinations for Channel 1 are possible:
OFF -1
OFF F1
CV -1
CV F1
CC -1
CC F1
-------------------------------------------------------------
CV=Constant Voltage, CC=Constant Current, OFF=Channel off, F=Fuse on, 1=Channel Number

I need all 6 Status in a readmath, but i dont know how can i make it.
Maybe:
#scpiCmd status? txrx? READ
:readmath: ?????????????????

With #scpiCmd you can use multiple :readmath: statements. Splitting the decoding over multiple lines may be easier. You can do it in one line if you really want.
First:
Do a getElement(value,2,";"), this will isolate the status part

Next do a getElement(value,0)+getElement(value,1) to get the first status value (Add a space (" ") between the two getElement if you want)

To test stuff do a:
=var value="05.00V 05.00V 30.00V 30.00V ;1.000A 1.758A 1.968A 3.000A ;OFF -1 OFF -2 OFF -3 OFF -4"
on the command line, then you can use
=getElement(value,2,";")
to test the first part.
You must adjust value to test the second part, except if you go for a one-liner.

If you want the result as a numeric value, look at: listIndex()
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2022, 04:53:30 pm
Now it works 100%

It will be included in the next release and thanks for the information.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on April 30, 2022, 08:13:44 pm
Ok, i got it:

;; HAMEG7044: Tx <status? 1>
;; HAMEG7044: Tx <txrx? READ
:readmath: getElement(value,2,";")
:readmath: getElement(value,0)>
;; COM3: Tx: <READ.> 52 45 41 44 0D
;; COM3: Rx: <12.00V 05.00V 30.00V 30.00V ;1.000A 1.758A 1.968A 3.000A ;OFF F1 OFF F2 OFF F3 OFF F4 > 31 32 2E 30 30 56 20 30 35 2E 30 30 56 20 33 30 2E 30 30 56 20 33 30 2E 30 30 56 20 3B 31 2E 30 30 30 41 20 31 2E 37 35 38 41 20 31 2E 39 36 38 41 20 33 2E 30 30 30 41 20 3B 4F 46 46 20 46 31 20 4F 46 46 20 46 32 20 4F 46 46 20 46 33 20 4F 46 46 20 46 34 20
;; HAMEG7044: Rx <OFF>
;; HAMEG7044: Rx as number <NaN>
;; HAMEG7044: Cache Tx: <getV? 1> Rx: <12.00>
;; HAMEG7044: Rx as number <12.0>
;; HAMEG7044: Cache Tx: <getC? 1> Rx: <1.000>
;; HAMEG7044: Rx as number <1.0>

The result can be: OFF, CC or CV
I think i must change it to 0, 1 and 2
Iwill use these values for LED or Light Buttons to Show the status in Setup or Gridpanel (my Favorit).
The Fuse and Channel i will do next Time, this is not so important.

Next Problem:
#cmdSetup buttonsOn CH-1
:read:
:updatealloff:
Off off
On on

This Buttons works ok, but i dont know which :read: Command i must use for the Red/Green Light?

For better understanding in TC i have convertet all 35 Help Pages in one PDF File.
So i can search for every Command or whatever.
But my Problem is understanding of the most Commands, because i need a little Example for better understanding.
For Example: replace(string,from,to)
Maybe i can replace string with value but what for is from,to?
I do never programming but iam lucky to ask Question here in Forum :)

Thx for your Help again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 07:05:43 am
;; HAMEG7044: Rx <OFF>
;; HAMEG7044: Rx as number <NaN>

To avoid the NaN you can use a :string: tag, then the control will handle text
Note: The :string: tag can be used on controls, not on #askValues, there all values must be numeric.

Iwill use these values for LED or Light Buttons to Show the status in Setup or Gridpanel (my Favorit).

You cannot use values in GridPanel, except if they are included in the #askValues and then they must be numeric.
TestController support digital channels and it is possible to make a definition that will show CC or CV instead of a number:
#value Status - Digital(CV,CC)
Will show CV for 1 and CC for 2

Next Problem:
#cmdSetup buttonsOn CH-1
:read:
:updatealloff:
Off off
On on

This Buttons works ok, but i dont know which :read: Command i must use for the Red/Green Light?

The result from :read: must match the "on" value, then the indicator will turn on.


But my Problem is understanding of the most Commands, because i need a little Example for better understanding.
For Example: replace(string,from,to)
Maybe i can replace string with value but what for is from,to?

replace("hello world","world","to you") will give "hello to you"

You can use the command line to test stuff, you just need to put a = before the expression.
I.e. putting the line below on the command line will show the result in the log window.
=replace("hello world","world","to you")

Note: You can avoid the = by typing the command #calc, then the command line is in permanent calculator mode, until next # command.

I do never programming but iam lucky to ask Question here in Forum :)

You are welcome to ask questions.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on May 01, 2022, 09:56:21 am
Another topic: I wonder if a device like the Hyperion 1420i would be of interest. It's a charger/discharger battery analyzer and it works through a USB serial interface or bluetooth if
you are ready to make a mod. Mine is about 10 years old.

There are different types on the market (EOS 0720i, etc).

I do not personally have any use for that, but if there is a lot of them around it might be useful and I have no problem including a definition for it.

I investigated a little bit but did not find any info about the protocol being used in that model. It could be MODBUS but I may be wrong as well.

I found some info at https://hyperion-world.com/en/firmware_for_eos_chargers
This is related to the firmware needed to make it work with the Hyperion EOS Suite. I am still running an old firmware. So I first need to upgrade to make it
work with the Suite.

Anyway, I have the following questions:
Suppose I have that Suite working with my device. How would that help to find out what protocol is in use and more importantly I think, which registers
to address to get for example the device ID, software version and the likes?

Is TC able to help right now?

Thanks

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 12:07:06 pm
Anyway, I have the following questions:
Suppose I have that Suite working with my device. How would that help to find out what protocol is in use and more importantly I think, which registers
to address to get for example the device ID, software version and the likes?

You basically have to add a spy on the communication and then manually decode the protocol.

I often uses this terminal program for it: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm) it has a pass-through  mode that can be used.
It requires 3 serial ports on the computer to do this: One for the original program and two for the terminal program (one in and one out). All can be done with usb adapters.

Is TC able to help right now?

No.
Title: Re: Program that can log from many multimeters.
Post by: coromonadalix on May 01, 2022, 02:59:14 pm
Can the Agilent L4411A  be added, but i think its the same command set as the 34401a ??

May get my hand on one at my job   finger crossed
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 03:19:00 pm
Can the Agilent L4411A  be added, but i think its the same command set as the 34401a ??

May get my hand on one at my job   finger crossed

Of course it can be added, but it requires someone that has it want to do the job.
Title: Re: Program that can log from many multimeters.
Post by: mawyatt on May 01, 2022, 03:45:55 pm
First off, thank you HKJ for creating such a widespread useful program with such a large instrument data base  :-+

We have a Tonghui TH2830 and Hioki IM3536 LRC meters. Could someone with very limited computer/software skills such as myself be able to create an interface with these instruments to plot impedance, capacitance, inductance vs. frequency that use your programs "built-in" plotting features? These instruments have RS232, USB and/or LAN interfaces, so believe the hardware interface is acceptable to remotely communicate with them.

Anyway, just trying to get an idea of the expected level of effort if possible to interface these instruments and create the mentioned plots.

Best,
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 04:29:52 pm
First off, thank you HKJ for creating such a widespread useful program with such a large instrument data base  :-+

We have a Tonghui TH2830 and Hioki IM3536 LRC meters. Could someone with very limited computer/software skills such as myself be able to create an interface with these instruments to plot impedance, capacitance, inductance vs. frequency that use your programs "built-in" plotting features? These instruments have RS232, USB and/or LAN interfaces, so believe the hardware interface is acceptable to remotely communicate with them.

Anyway, just trying to get an idea of the expected level of effort if possible to interface these instruments and create the mentioned plots.

TestController already support some LCR meters, you can look in these definitions and see how much they include.

I do also provide help and support in this thread as you can see.

Title: Re: Program that can log from many multimeters.
Post by: Scheppo on May 01, 2022, 05:28:24 pm
I use now:
Code: [Select]
#value V1 V D2
#value V2 V D2
#value V3 V D2
#value V4 V D2
#value A1 A D3
#value A2 A D3
#value A3 A D3
#value A4 A D3
#value Status - DIGITAL(OFF,CV,CC)

#askValues getV? 1;getV? 2;getV? 3;getv? 4;getC? 1;getC? 2;getC? 3;getC? 4;[50];status? 1;[50];status? 2;[50];status? 3;[50];status? 4
#readingdelay 1

The Result (cut):
Code: [Select]
;; HAMEG7044: Delay: 50ms
;; HAMEG7044: Tx <status? 4>
;; HAMEG7044: Tx <txrx? READ
:readmath: getElement(value,2,";")
:readmath: getElement(value,0)
:string:>
;; COM3: Tx: <READ.> 52 45 41 44 0D
;; COM3: Rx: <12.00V 05.00V 30.00V 30.00V ;1.000A 1.758A 1.968A 3.000A ;OFF F1 OFF F2 OFF F3 OFF F4 > 31 32 2E 30 30 56 20 30 35 2E 30 30 56 20 33 30 2E 30 30 56 20 33 30 2E 30 30 56 20 3B 31 2E 30 30 30 41 20 31 2E 37 35 38 41 20 31 2E 39 36 38 41 20 33 2E 30 30 30 41 20 3B 4F 46 46 20 46 31 20 4F 46 46 20 46 32 20 4F 46 46 20 46 33 20 4F 46 46 20 46 34 20
;; HAMEG7044: Rx <OFF>
;; HAMEG7044: Rx as numbers <12.0 5.0 30.0 30.0 1.0 1.758 1.968 3.0 NaN NaN NaN NaN>

For using the last Output string the NaN must be a 0,1 or 2 (OFF, CV or CC)
So how can i change the OFF, CV and CC in 0,1 and 2?
I hoped the DIGITAL Parameter do this.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 05:33:32 pm
For using the last Output string the NaN must be a 0,1 or 2 (OFF, CV or CC)
So how can i change the OFF, CV and CC in 0,1 and 2?
I hoped the DIGITAL Parameter do this.

No the digital format show bits as text, but it need a numeric input.
Use:
:readmath: listIndex(value,"OFF CV CC")
To do the conversion from string to number
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on May 01, 2022, 05:52:08 pm
Next Problem:
#cmdSetup buttonsOn CH-1
:read:
:updatealloff:
Off off
On on

This Buttons works ok, but i dont know which :read: Command i must use for the Red/Green Light?
Quote
The result from :read: must match the "on" value, then the indicator will turn on.

The ON value is only for switch the Output on/off:
#scpiCmd on tx ENABLE
#scpiCmd off tx DISABLE
I can not read this parameter in the PS.

The only way is to read out the status?
When Answer is "OFF" then output is off.
When Answer is "CC" or "CV" then Output is on.
But i am not able to make a Command for this :(
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2022, 05:58:28 pm
The only way is to read out the status?
When Answer is "OFF" then output is off.
When Answer is "CC" or "CV" then Output is on.
But i am not able to make a Command for this :(

:readmath: value=="CC" || value=="CV"?"on":"off"

And if you change the status? to numeric output you can use:

:readmath: value>0?"on":"off"
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on May 01, 2022, 06:10:18 pm
The only way is to read out the status?
When Answer is "OFF" then output is off.
When Answer is "CC" or "CV" then Output is on.
But i am not able to make a Command for this :(

:readmath: value=="CC" || value=="CV"?"on":"off"

And if you change the status? to numeric output you can use:

:readmath: value>0?"on":"off"

Wow, you must be a Doctor or better.....
Thank you very much.

Title: Re: Program that can log from many multimeters.
Post by: rachdatu on May 02, 2022, 08:22:36 am
Quote
You basically have to add a spy on the communication and then manually decode the protocol.

I often uses this terminal program for it: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm) it has a pass-through  mode that can be used.
It requires 3 serial ports on the computer to do this: One for the original program and two for the terminal program (one in and one out). All can be done with usb adapters.

Thanks for the info. I will have a look in a few weeks.
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on May 02, 2022, 08:51:42 pm
Hello again :)

is it possible to put more than one replace in one line?
Original value = OFF -1 CV  -2 CC  -3 CV  -4
Code:
#scpiCmd getStat? txrx? READ
:readmath: getElement(value,2,";")
:readmath: replace(value,"OFF","0")
:readmath: replace(value," -1","")
:readmath: replace(value," -2","")
:readmath: replace(value," -3","")
:readmath: replace(value," -4","")
Result = 0 CV CC CV
Is it possible to make replace(value," -*","") and all channel from 1-4 replaced by ""?

Same question for "getElement"
:readmath: getElement(value,2,";")
:readmath: getElement(value,0)
:readmath: listIndex(value,"OFF CV CC")
Is this possible in one Line? and is this then faster or same speed?


Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2022, 06:38:00 am
is it possible to put more than one replace in one line?
Original value = OFF -1 CV  -2 CC  -3 CV  -4
Code:
#scpiCmd getStat? txrx? READ
:readmath: getElement(value,2,";")
:readmath: replace(value,"OFF","0")
:readmath: replace(value," -1","")
:readmath: replace(value," -2","")
:readmath: replace(value," -3","")
:readmath: replace(value," -4","")
Result = 0 CV CC CV
Is it possible to make replace(value," -*","") and all channel from 1-4 replaced by ""?

There is no replace with wildcards, but it is a good idea and I will include it in the next release (replaceRX where the from can be regEx, i.e. replaceRX("OFF -1 CV  -2 CC  -3 CV  -4"," -[1234]","") -> OFF CV  CC  CV
)
You can put stuff on one line, you basically have to replace value with the expression from the line above:

replace(replace(replace(replace(replace(getElement(value,2,";"),"OFF","0")," -1","")," -2","")," -3","")" -4","")

It gets a bit messy if you do it too much.

Same question for "getElement"
:readmath: getElement(value,2,";")
:readmath: getElement(value,0)
:readmath: listIndex(value,"OFF CV CC")
Is this possible in one Line? and is this then faster or same speed?

Same way:

listIndex(getElement(getElement(value,2,";"),0),"OFF CV CC")

And it will be faster, because the calculator only need to be invoked once.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 03, 2022, 08:45:08 am
V2.06 is up
It is a mixed bag of devices and a new popup that gives a visual interface to some chart based commands.
   Added: replaceRX() that is a RegEx version of the replace() function
   Fixed: Riden RD6012 power supply.
   Added: Riden RD6018 power supply (Thanks toddehawk)
   Added: Riden DPH5005 power supply (Thanks rachdatu)
   Added: Manson HCS-3404 power supply (Thanks Scheppo)
   Added: East Tester ET5301 electronic load (Thanks SebiTNT)
   Fixed: GridPanel color selection remembers last selected colors
   Fixed: Table column width can be adjusted.
   Changed: Keysight DS0X2214A to DS0X2024A, the 2214 do not exist according to WS.
   Added: Keysight U1242C DMM (Thanks WS)
   Added: Keysight U1211A, Keysight U1212A, Keysight U1213A Clamp meters (Thanks WS)
   Changed: HP/Agilent 34401A uses handshake for more reliable RS232 communication (Thanks WS).
   Added: Script generation with all settings from layout popup and a bit more to restore a chart layout.
   Changed: Increased maximum number of scale from 6 to 8 due to the easy way to combine scales.
   Added: Layout popup to chart, this can change colors and names, add annotations and reduce number of scales.
   Added: HP E3632A, HP E3633A, HP E3634A Power supplies (Thanks WS)
   Added: Support for RS232 flow control (Only fully supported on Windows)
   Added: HP 6631B, HP 6632B, HP 6633B, HP 6634B Power supplies (Thanks WS)

(https://lygte-info.dk/pic/Projects/TestController/DocChartLayout/ChartLayout1a.png)

Colors can easily be changed on different elements on a chart.

(https://lygte-info.dk/pic/Projects/TestController/DocChartLayout/ChartLayout2a.png)

Names of the curves can be changed on the chart (these changes will only affect the chart, not anywhere else)

(https://lygte-info.dk/pic/Projects/TestController/DocChartLayout/ChartLayout3a.png)

Combine similar scales to get more chart area, due to this I have also increased the maximum from 6 to 8 simultaneous curves.

(https://lygte-info.dk/pic/Projects/TestController/DocChartLayout/ChartLayout4c.png)

Annotations can be added here.

(https://lygte-info.dk/pic/Projects/TestController/DocChartLayout/ScriptGenerantion.png)

When this popup is open it is possible to generate a script with all chart settings
Title: Re: Program that can log from many multimeters.
Post by: Scheppo on May 03, 2022, 06:25:17 pm
is it possible to put more than one replace in one line?
Original value = OFF -1 CV  -2 CC  -3 CV  -4
Code:
#scpiCmd getStat? txrx? READ
:readmath: getElement(value,2,";")
:readmath: replace(value,"OFF","0")
:readmath: replace(value," -1","")
:readmath: replace(value," -2","")
:readmath: replace(value," -3","")
:readmath: replace(value," -4","")
Result = 0 CV CC CV
Is it possible to make replace(value," -*","") and all channel from 1-4 replaced by ""?

There is no replace with wildcards, but it is a good idea and I will include it in the next release (replaceRX where the from can be regEx, i.e. replaceRX("OFF -1 CV  -2 CC  -3 CV  -4"," -[1234]","") -> OFF CV  CC  CV
)
You can put stuff on one line, you basically have to replace value with the expression from the line above:

replace(replace(replace(replace(replace(getElement(value,2,";"),"OFF","0")," -1","")," -2","")," -3","")" -4","")

It gets a bit messy if you do it too much.

 :-+ :-+ ReplaceRX is very good

All what i want is now in one Line, and i have learned how this works.

#scpiCmd getStat? txrx? READ
:readmath: listIndex(getElement(replaceRX(getElement(value,2,";")," -[1234]",""),inputValue-1),"OFF CV CC")

I get now for every Channel 0,1 or 2
           
When the electronic Fuse in PS is active, then the value string changes from
"OFF -1 CV  -2 CC  -3 CV  -4" to "OFF F1 CV  F2 CC  F3 CV  F4"
So i change the Part " -[1234]" to " [-F][1234]"
And this works  :-+

                                                                 
thx HKJ
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on May 12, 2022, 04:27:56 pm
Quote
You basically have to add a spy on the communication and then manually decode the protocol.

I often uses this terminal program for it: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm) it has a pass-through  mode that can be used.
It requires 3 serial ports on the computer to do this: One for the original program and two for the terminal program (one in and one out). All can be done with usb adapters.

Thanks for the info. I will have a look in a few weeks.


I have installed Termite and com0com (pass-through). It works pretty well with most of my devices ...except with the Hyperion EOS Suite.
The Suite does work with my device. I can change any parameters. However, as soon as I put the sniffer in between, the Suite doesn't recognized the device  :-//

I am kind of stuck. Do you have any suggestions?
Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2022, 05:44:31 pm
I have installed Termite and com0com (pass-through). It works pretty well with most of my devices ...except with the Hyperion EOS Suite.
The Suite does work with my device. I can change any parameters. However, as soon as I put the sniffer in between, the Suite doesn't recognized the device  :-//

I am kind of stuck. Do you have any suggestions?

Baudrate or handshake. Termite must be set to same baudrate as the program uses.
I am not sure if it will echo the handshake signals or use some standard setting.
Title: Re: Program that can log from many multimeters.
Post by: Kean on May 12, 2022, 06:21:39 pm
Quote
You basically have to add a spy on the communication and then manually decode the protocol.

I often uses this terminal program for it: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm) it has a pass-through  mode that can be used.
It requires 3 serial ports on the computer to do this: One for the original program and two for the terminal program (one in and one out). All can be done with usb adapters.

Thanks for the info. I will have a look in a few weeks.


I have installed Termite and com0com (pass-through). It works pretty well with most of my devices ...except with the Hyperion EOS Suite.
The Suite does work with my device. I can change any parameters. However, as soon as I put the sniffer in between, the Suite doesn't recognized the device  :-//

I am kind of stuck. Do you have any suggestions?
Thanks

Instead of using the com0com software make up a passive spy/tap cable
https://www.compuphase.com/electronics/rs232split.htm (https://www.compuphase.com/electronics/rs232split.htm)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 12, 2022, 07:12:20 pm
Instead of using the com0com software make up a passive spy/tap cable
https://www.compuphase.com/electronics/rs232split.htm (https://www.compuphase.com/electronics/rs232split.htm)

That is a better solution, but with Termite having two COM ports you can ditch the diodes and resistors and simply directly use the two RX inputs.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on May 14, 2022, 01:49:06 pm
From the screenshot, I have been able to decode the "button sound" (ON and OFF) as an example.

Code: [Select]
.000A8A0000020A
.0186CA0000003B000800004BD900000000000000000000F154000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C3..000A8A0000020A
.0186CA0000003B000800004BDA00000000000000000000F144000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049CA..000A8A0000020A
.0186CA0000003B000800004BD900000000000000000000F134000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C1..000A8A0000020A
.0186CA0000003B000800004BD900000000000000000000F13C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049D0..000A8A0000020A
.0186CA0000003B000800004BD900000000000000000000F148000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C6..000A8A0000020A
.0186CA0000003B000800004BD900000000000000000000F136000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C3..000A8A0000020A
.0186CA0000003B000800004BC200000000000000000000F148000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0036030000000000010006000100010001000201180190000927100A5F
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049BE...000A8A0000020A
.0186CA0000003B000800004BD500000000000000000000F140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049BA..000A8A0000020A
.0186CA0000003B000800004BD800000000000000000000F148000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C5..000A8A0000020A
.0186CA0000003B000800004BA200000000000000000000F14E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C9..000A8A0000020A
.0186CA0000003B000800004B8F00000000000000000000F14E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0036030000000000010006000000010001000201180190000927100A5E
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049D4...000A8A0000020A
.0186CA0000003B000800004B8F00000000000000000000F144000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049C3..000A8A0000020A
.0186CA0000003B000800004BAD00000000000000000000F14A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049D7..000A8A0000020A
.0186CA0000003B000800004BD800000000000000000000F13C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049CF..000A8A0000020A
.0186CA0000003B000800004B8A00000000000000000000F13C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049CC.



Here is a simplified view:

Code: [Select]
5333 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM23) - 60 bytes of 60
    STATUS_SUCCESS
            0c 30 30 33 36 30 33 30 30 30 30 30 30 30 30 30   .003603000000000
            30 30 31 30 30 30 36 30 30 30 31 30 30 30 31 30   0010006000100010
            30 30 31 30 30 30 32 30 31 31 38 30 31 39 30 30   0010002011801900
            30 30 39 32 37 31 30 30 41 35 46 0d               00927100A5F.     


5567 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM23) - 16 bytes of 16
    STATUS_SUCCESS
            0c 30 30 30 41 38 41 30 30 30 30 30 32 30 41 0d   .000A8A0000020A.



8507 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM23) - 60 bytes of 60
    STATUS_SUCCESS
            0c 30 30 33 36 30 33 30 30 30 30 30 30 30 30 30   .003603000000000
            30 30 31 30 30 30 36 30 30 30 30 30 30 30 31 30   0010006000000010
            30 30 31 30 30 30 32 30 31 31 38 30 31 39 30 30   0010002011801900
            30 30 39 32 37 31 30 30 41 35 45 0d               00927100A5E.     


10333 IRP_MJ_WRITE - Request transfers data from a client to a COM port (COM23) - 16 bytes of 16
    STATUS_SUCCESS
            0c 30 30 30 41 38 41 30 30 30 30 30 32 30 41 0d   .000A8A0000020A.



We can identify a few things:

The button change status, the "End sound melody" value, the Power values 28.0 and 40.0. These ones multiplied by 10 and convert to hex give
118 and 190). The input voltage value (10.000) multiplied by 1000 and converted to hex give 2710.

Before we go further, is that possible with this info to make a test with TC, create a dialog box and enable/disable the Button sound?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2022, 02:27:26 pm

Before we go further, is that possible with this info to make a test with TC, create a dialog box and enable/disable the Button sound?

Yes, you will want to use the block driver: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block))

And you will want to run TC in debug mode (use testControllerDebug.bat) to see exactly what is going on.
Title: Re: Program that can log from many multimeters.
Post by: danielg on May 14, 2022, 05:36:10 pm
Hello HKJ and thanks for your effort and change for us to use your sw
I can see that you have support for UNIT UT61E (serial connection old type)
I have UNIT UT61E+ for USB connection and I cant find that it uses usb2serial.
Do you support this new type and if not do you think you will ?
I cant tell you verison of your sw because I cant find it (files since july of 2020)
Thanks alot
br Daniel  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2022, 06:02:56 pm
Hello HKJ and thanks for your effort and change for us to use your sw
I can see that you have support for UNIT UT61E (serial connection old type)
I have UNIT UT61E+ for USB connection and I cant find that it uses usb2serial.
Do you support this new type and if not do you think you will ?
I cant tell you verison of your sw because I cant find it (files since july of 2020)

The version can be seen if you select the Configuration page and press About. If you are using TestController with your computer online it will tell you if TestController has been updated.
I will generally recommend to update TestController every few months, i.e. at least 3 to 4 times a year and, of course, more often if you see a interesting feature or device in the update list.

I have not got any code that can handle the serial HID connections that UNI-T uses, I hope to fix that one day. Straight serial connections and socket connections are handled without any problems, it is only the HID connection that is a problem. The reason some DMM's uses HID interface is because it works without a driver, but it requires some special coding to access and that is not covered by standard Java or by the serial library I use.
You can see some of the (good) DMM's I support here: https://lygte-info.dk/info/DMMFrequencyResponse%20UK.html (https://lygte-info.dk/info/DMMFrequencyResponse%20UK.html).
Title: Re: Program that can log from many multimeters.
Post by: Chernobyl on May 16, 2022, 03:21:01 am
Thanks, HKJ, for an amazingly comprehensive program! Very handy for logging from my Keithley 2000 using the GPIB interface (works perfect).

I've crafted a basic configuration for an HP 6624A (four channel power supply) which is attached. I feel like there should be some way that I can simplify things so I don't need SCPI commands for each channel, but I haven't been able to figure out how to pass the channel as a parameter. Any suggestions?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 16, 2022, 06:23:37 am
I've crafted a basic configuration for an HP 6624A (four channel power supply) which is attached.

Thanks, it will be included in the next release.
It is missing the #interface definitions, they are used for some functions in TestController.

I feel like there should be some way that I can simplify things so I don't need SCPI commands for each channel, but I haven't been able to figure out how to pass the channel as a parameter. Any suggestions?

The #scpiCmd only accept one parameter string, but this string contains all parameters. This means you can use a parameter with both channel and value and then split it up in the actual #scpiCmd definition (Using getElement()).
I.e. something like:
#scpiCmd setV tx VSET(getElement(value,0)),(getElement(value,1))
Would probably (I have not tested it) work with "setV 1 5"

Title: Re: Program that can log from many multimeters.
Post by: Chernobyl on May 17, 2022, 07:21:16 pm
Thanks, it will be included in the next release.
It is missing the #interface definitions, they are used for some functions in TestController.

Thanks. I've attached a newer version that includes the #interface definitions. I had them in there originally, but took them out as removing them didn't seem to affect anything (to be honest I'm not sure what Test Controller uses them for).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 17, 2022, 07:37:45 pm
Thanks. I've attached a newer version that includes the #interface definitions. I had them in there originally, but took them out as removing them didn't seem to affect anything (to be honest I'm not sure what Test Controller uses them for).

The #interface is used in scripts, in LogEvent popup and in some panels on GridPanel. They are not required, but it adds some functionality.
In a script this:
=var ps=getDevice("ps");
=setVoltage(ps,5);
=setCurrent(ps,1);
=setOn(ps,1);
Will work with any power supply that as a working interface. Without the interface you would have to use the SCPI commands and they are not the same for all supplies.

You can use the popup "Test interface for current selected device" to test that the functions are working correctly
I doubt they are with this definition:
#scpiCmd setV tx VSET(channel),(value)

Try this one instead:
#scpiCmd setV tx VSET(getElement(value,0)),(getElement(value,1))

Title: Re: Program that can log from many multimeters.
Post by: Totoro on May 26, 2022, 11:00:47 am
Hi,
I recently purchased a Gossen Metrahit Energy with the USB IR interface cable and was excited to run across this software. Unfortunately, the cable doesn't seem to work with my MacBook running 10.15 Catalina or MacMini running Monterey. Normally, a device shows up in the /dev folder with the names cu.usbserial-xxxxx and tty.usbserial-xxxxx. I assume that is the address that the Test Controller program wants. At first I thought it was a FTDI driver problem but other FTDI devices I have do work. I did install the FTDI beta VCP driver 1.4.7 for MacOS 10.15 from their website but no luck.

Has anyone got the Metrahit USB X-Tra cable working with their Mac? I'm looking forward to trying out Test Controller. It looks pretty impressive. Thank you.

Edit:
I am beginning to think that the Gossen cable only works with the supplied driver in Windows. That would be a shame. I have asked Gossen about this and will let you know what they say.

Michael
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on May 26, 2022, 10:13:29 pm
Attached is a updated version of the Siglent SDL10xxXxx definition to fix the mAh vs Ah display and logging table, and incorrect label of the CR mode resistance setting.

Thanks for pointing out the error.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 27, 2022, 04:12:15 pm
I recently purchased a Gossen Metrahit Energy with the USB IR interface cable and was excited to run across this software. Unfortunately, the cable doesn't seem to work with my MacBook running 10.15 Catalina or MacMini running Monterey. Normally, a device shows up in the /dev folder with the names cu.usbserial-xxxxx and tty.usbserial-xxxxx. I assume that is the address that the Test Controller program wants. At first I thought it was a FTDI driver problem but other FTDI devices I have do work. I did install the FTDI beta VCP driver 1.4.7 for MacOS 10.15 from their website but no luck.

Has anyone got the Metrahit USB X-Tra cable working with their Mac? I'm looking forward to trying out Test Controller. It looks pretty impressive. Thank you.

Edit:
I am beginning to think that the Gossen cable only works with the supplied driver in Windows. That would be a shame. I have asked Gossen about this and will let you know what they say.

I do not know what chip Gossen uses, but I believe I have seen a user made interface for the Metrahit (Somewhere around here) that uses a standard chip.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 27, 2022, 04:12:46 pm
Attached is a updated version of the Siglent SDL10xxXxx definition to fix the mAh vs Ah display and logging table, and incorrect label of the CR mode resistance setting.

Thanks, the update will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: RichardM on May 28, 2022, 09:33:56 am
I don't suppose there is a chance of getting an old Fluke 8502a with AR488 working with this excellent software ?

Regards

Richard
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 28, 2022, 09:52:07 am
I don't suppose there is a chance of getting an old Fluke 8502a with AR488 working with this excellent software ?

There is, but you may have to do the work.
The program depends on user contributions for equipment support (I try to help as much as I can).

Definitions for different devices are made with ascii files and you can view all included definitions in the "devices" directory.
Title: Re: Program that can log from many multimeters.
Post by: PushUp on May 30, 2022, 12:27:15 am
Hi,
I recently purchased a Gossen Metrahit Energy with the USB IR interface cable and was excited to run across this software. Unfortunately, the cable doesn't seem to work with my MacBook running 10.15 Catalina or MacMini running Monterey. Normally, a device shows up in the /dev folder with the names cu.usbserial-xxxxx and tty.usbserial-xxxxx. I assume that is the address that the Test Controller program wants. At first I thought it was a FTDI driver problem but other FTDI devices I have do work. I did install the FTDI beta VCP driver 1.4.7 for MacOS 10.15 from their website but no luck.

Has anyone got the Metrahit USB X-Tra cable working with their Mac? I'm looking forward to trying out Test Controller. It looks pretty impressive. Thank you.

Edit:
I am beginning to think that the Gossen cable only works with the supplied driver in Windows. That would be a shame. I have asked Gossen about this and will let you know what they say.

Michael


You can save the money for the Gossen Metrawatt "Z216C USB X-TRA" and do 10 selfmade for one IR-USB-Interface by Gossen Metrawatt; you only need their software to read out the internal data logging, which is clearly the best of all handheld DMMs!

As I had the same issues with their "Z216C USB X-TRA" under linux, I am quite sure, that you will also have success in solving the problem:

"The USB-IR-thingie is probably old and anyone knows it, but just to sum it up for later use:"

https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4015216/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg4015216 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4015216/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg4015216)

The selfmade - and only this - works without a problem from the beginning under linux:

https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4096519/#msg4096519 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4096519/#msg4096519)

Cheers!  ;)
Title: Re: Program that can log from many multimeters.
Post by: Totoro on May 30, 2022, 07:57:01 am
Hey, thank you PushUp!
That self-made interface looks like my next project. I even already have a couple of FTDI to USB boards. Bummer that the Gossen cable seems to only work with their Windows driver. Haven't yet heard back from them BTW.
Thanks again!
Michael
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on May 30, 2022, 04:04:35 pm
Tonghui TH2830 LRC meter was mentionened before in this thread,
did anyone solve a driver ?

is it connected to a pc by USB ? or by the DB9 Serial connector ?

what i want to achieve is to perform frequency versus the two measured values, it displays in any selected mode combination
Title: Re: Program that can log from many multimeters.
Post by: gby on May 30, 2022, 04:23:10 pm
Hi HKJ,

Attached is a driver file supporting the GW Instek AC supply for you to include in the next release.  It is fully tested with ASR-2100 over LAN but supports ASR-2000 and ASR-3000 families.

Couple of issues supporting this supply:
1. It has a RANGE setting the is either base voltage/twice voltage and correspondingly base current/half current.  How would you suggest handling that in the Setup popup #cmdSetup entries for legal numeric range?  Right now this file is fixed at twice voltage range values for the #metadef #replaceText values.
2.  This device outputs either ac to simulate ac line, or dc with a symmetric negative to positive range, or the sum of both.  It also includes a rudimentary arbitrary function generator.  So, I don't think it really fits in the
   #interfaceType PS
dc power supply instrument category.  What do you think of using "ACPS" as the category/instrument type when/if I get around to adding #interface commands to this instrument driver file?
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on May 31, 2022, 08:24:23 am
test controller is mentioned in my latest video:
https://youtu.be/UpAvgAQBId4

here it is used to reveal temperature regulation loop, by creating a curve of power usage via a power supply

Super smart and easy to use, this test controller sw.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2022, 08:26:19 am
Tonghui TH2830 LRC meter was mentionened before in this thread,
did anyone solve a driver ?

None is included or scheduled to be included at the current time.

what i want to achieve is to perform frequency versus the two measured values, it displays in any selected mode combination

This can be done with TestController, but because frequency is not defined as output parameter for a typical LCR meter, it can be a bit tricky to setup.
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on May 31, 2022, 08:32:04 am
>This can be done with TestController, but because frequency is not defined as output parameter for a typical LCR meter, it can be a bit tricky to setup.

oh.. did not know it was so special :-)
yes the TH2830 do support user input of test frequency, even to the last Hz
so this means if this can be used for a sweep, we can make very sexy curves with this instrument
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2022, 08:34:45 am
Attached is a driver file supporting the GW Instek AC supply for you to include in the next release.  It is fully tested with ASR-2100 over LAN but supports ASR-2000 and ASR-3000 families.

Thanks, it will be included.

1. It has a RANGE setting the is either base voltage/twice voltage and correspondingly base current/half current.  How would you suggest handling that in the Setup popup #cmdSetup entries for legal numeric range?  Right now this file is fixed at twice voltage range values for the #metadef #replaceText values.

The easiest way is to use the high values, but another solution is to double up on the settings and select with "#cmdSetup selector"


2.  This device outputs either ac to simulate ac line, or dc with a symmetric negative to positive range, or the sum of both.  It also includes a rudimentary arbitrary function generator.  So, I don't think it really fits in the
   #interfaceType PS
dc power supply instrument category.  What do you think of using "ACPS" as the category/instrument type when/if I get around to adding #interface commands to this instrument driver file?

You can use #interfaceType ACPS PS
But it might be best to only rate it as ACPS
It is probably best to use the set/get/read voltage to handle the AC values and add another set with voltageDC for the DC values.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2022, 08:42:38 am
>This can be done with TestController, but because frequency is not defined as output parameter for a typical LCR meter, it can be a bit tricky to setup.

oh.. did not know it was so special :-)
yes the TH2830 do support user input of test frequency, even to the last Hz
so this means if this can be used for a sweep, we can make very sexy curves with this instrument

For now it can be done two ways:
1) Modify definition of LCR meter to include frequency
2) Use a generator that can sweep (External AVG or Soundcard output) and a script to sync the LCR meter to it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2022, 08:56:48 am
test controller is mentioned in my latest video:
https://youtu.be/UpAvgAQBId4

here it is used to reveal temperature regulation loop, by creating a curve of power usage via a power supply

Super smart and easy to use, this test controller sw.

I will add that video to my list of videos on the intro page.
Title: Re: Program that can log from many multimeters.
Post by: RichardM on May 31, 2022, 10:03:23 am
I am having difficulty getting TC working with my Fluke 8502a and AR488.

At a serial terminal (baud 115200) all I need to do is type the following with a linefeed to get the voltage returned
++addr 5
++auto 1
V?

and I get the voltage returned

-009.4110E-3

I have setup a GPIB controller in TC with baud 115200, port 7, Id A, and I add ++auto 1 into the Settings box.

I then try the following device file, my attempt anyway :)

----------------------------------------------
#idString FLUKE8502A
#name Fluke-8502a
#handle FLUKE8502A
#port GPIB
;#port comfixedbaud
#baudrate 115200N82
; using a AR488 so the DTR has to be set correctly:
#driver ascii
#eol \n

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V D6 VDC

; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues V?

;++read_tmo_ms is controlled with #readingDelay
#readingDelay 1

;++read eoi is controlled with #gpibReadEol
#gpibReadEol 10

; Switch meter to this mode during start, leave empty to avoid any switching
#initialMode

; Strings to configure device in different modes
; First parameter must match a #value (4 parameter) and second parameter must match what #askMode returns
; First parameter is also used in shortcut menu
;#cmdMode VDC V?
;#cmdMode VAC VA?

; Initial commands to meter when establishing connection
; syst:rwl locks keypad during remote operation
#initCmd

; Final command to meter before breaking connection
#finalCmd
---------------------------------------------------

and the debug window shows

Starting
;; jSerialComm version: 2.9.1
;; COM7: Set params: 115200
;; Start thread for: AR488 A:5 - Fluke-8502a
;; Start thread for: COM4
;; Start thread for: COM9
;; COM7: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; COM7: Tx: <++auto 1.> 2B 2B 61 75 74 6F 20 31 0A
;; COM9: Set params: 9600
;; COM4: Set params: 9600
;; Found Fluke-8502a on AR488 A:5
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM9: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Rx: timeout
;; COM9: Rx: timeout
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM9: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Rx: timeout
;; COM9: Rx: timeout
;; Stopping thread for: COM9
;; Stopping thread for: COM4
;; COM4: Close
;; COM9: Close


If I then try to enter a command line input like V? I get

;; FLUKE8502A: Tx <V?>
;; FLUKE8502A: Rx Timeout

Any help appreciated. I am just trying to get a minimal device setup file going at the moment or even get the device responding to the command line. I am not sure I am even entering the commands into the command line correctly. I would benefit from a similar GPIB device that accepts simple commands like V?, I? etc

Cheers Richard
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 31, 2022, 11:14:15 am
I am having difficulty getting TC working with my Fluke 8502a and AR488

You are not supposed to use ++auto, TC will use the ++read command
When using a ascii device there is no free answer, you have to use txrx? or similar commands to get an answer.

And remove the checkmark in "Scan serial ports", this will remove the scan of all the serial ports from the log (This function is only useful if you have a couple of serial devices that responds to the *idn? command, I typically uses it with my homemade Arduino devices).

You have to load the 8502 into the device list and specify it uses port A:5

The "#port GPIB" do not use a baudrate setting, but you can use: "#port GPIB com" and then it will be possible to select serial port.

A fairly similar device would probably be the "HP3478A.txt"
Title: Re: Program that can log from many multimeters.
Post by: RichardM on June 01, 2022, 09:58:40 am
I am having difficulty getting TC working with my Fluke 8502a and AR488

You are not supposed to use ++auto, TC will use the ++read command
When using a ascii device there is no free answer, you have to use txrx? or similar commands to get an answer.

And remove the checkmark in "Scan serial ports", this will remove the scan of all the serial ports from the log (This function is only useful if you have a couple of serial devices that responds to the *idn? command, I typically uses it with my homemade Arduino devices).

You have to load the 8502 into the device list and specify it uses port A:5

The "#port GPIB" do not use a baudrate setting, but you can use: "#port GPIB com" and then it will be possible to select serial port.

A fairly similar device would probably be the "HP3478A.txt"

Thanks but unfortunately none of those suggestions seem to make a difference. I only used ++auto 1 as one other user indicated that is what he needed to to to get his device working. Seem to always get no data timeout?

Regards

Richard
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2022, 10:09:00 am
Thanks but unfortunately none of those suggestions seem to make a difference. I only used ++auto 1 as one other user indicated that is what he needed to to to get his device working. Seem to always get no data timeout?

In debug mode using:

txrx? V?

on the command line (You can test commands from the command line), ought to show both the command going out and the "++read" command in the log.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 01, 2022, 10:19:59 am
Did you try the commands for my Philips counter?
It works for me but your device may not have the same commands.
For example ++auto 1 is a command described in my Philips Manual. I looked quickly at yours and don't see that command.

Don't try *IDN? It's probably not  going to work. This device is too old and at that time, the GPIB standard did not exist!

Anyway, follow HKJ instructions. He knows what he is talking about  :)
Title: Re: Program that can log from many multimeters.
Post by: RichardM on June 01, 2022, 11:05:44 am
Thank for the replies.

I went and made a cup of tea and came back with a clear head. I trimmed the device file to a minimum and have it working in a basic sense. Now I just need to understand all the rest of the commands etc. Iassume I define all the device commands using #scpiCmd ? If I uncomment the #initCmd below I get the timeout error ?

#idString Fluke,Fluke 8502a
#name Fluke 8502a
#handle myFluke8502a
#driver Ascii
#port GPIB com
#eol \n\r

; There must be a line for each of the original device commands that will be used, converting it to a similar SCPI command
;#scpiCmd init tx command to init
#scpiCmd values? txrx? ?

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value Voltage V SI
 
; This is a single line command
#askValues txrx? ?

;Accept this delay when reading values (seconds)
#readingDelay 5

; Prepare the meter to response to #askValues
;#prepareSample

; Initial commands to meter when establishing connection
;#initCmd tx V?

Thanks for developing this software :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 01, 2022, 11:20:09 am
#scpiCmd values? txrx? ?

#askValues txrx? ?


This is not the way to do it, when you have defined a command with #scpiCmd you use it for the other definitions:

#askValues values?

; Initial commands to meter when establishing connection
;#initCmd tx V?

I cannot see this command can give a timeout, because "tx" do not expect any answer. But it may affect the next command because you will get a answer to the V? and that answer may affect the next command.

It is very important to handle answer/no answer correctly. Any command with a ? is supposed to give an answer, this is valid for defined #scpiCmd and for the txrx type commands, but not for the command listed after the txrx command.

I.e.
#scpiCmd mycmd? txrx? xxxxx  is valid if xxxxx returns an answer
#scpiCmd mycmd txrx? xxxxx  is invalid
#scpiCmd mycmd? txrx xxxxx  is invalid and will give a timeout
#scpiCmd mycmd txrx xxxxx  is valid if xxxxx returns an answer that must be ignored
#scpiCmd mycmd tx xxxxx  is valid if xxxxx do not return an answer
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2022, 10:41:26 am
>This can be done with TestController, but because frequency is not defined as output parameter for a typical LCR meter, it can be a bit tricky to setup.

oh.. did not know it was so special :-)
yes the TH2830 do support user input of test frequency, even to the last Hz
so this means if this can be used for a sweep, we can make very sexy curves with this instrument

For now it can be done two ways:
1) Modify definition of LCR meter to include frequency
2) Use a generator that can sweep (External AVG or Soundcard output) and a script to sync the LCR meter to it.

I did not like my answer here and have been modifying TestController. From next version the ParamSweeper popup can include the parameters it sweeps by using a check mark. This makes it easy to do the above curves/tables.

Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on June 02, 2022, 10:47:40 am
wow thanks a lot :-) now i just need to get that darn serial connection working
still no use full hints from china support, not even pinout, signals that needs to be this or that,,
it is all a dark secret
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 03, 2022, 06:32:34 am
Recently discovered Test Controller (name needs changed so it's easier to Google!) and love it.
Really made my Atorch capacity tester actually useful.

I unfortunately discovered that the external temperature sensor data is not sent out by the device, so there's no way to log it on the computer along with all the other data. I use it for battery temperature monitoring so I'd love to be able to get this into Test Controller along with the rest of the logs.

Actual question: Is there a cheap temperature sensor that works over USB that Test controller can read so I can add it to the logs with the rest of the data from the Atorch?

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 03, 2022, 06:39:43 am
Actual question: Is there a cheap temperature sensor that works over USB that Test controller can read so I can all it to the logs?

You can use many DMM's to measure temperature, but there you will usually have issues with batteries (i.e. they need to be replaced often).

A better solution is a DIY temperature sensor, it is easy and cheap:
https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DS1820_temperature_device (https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DS1820_temperature_device)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 03, 2022, 07:02:04 am
Oh you actually have a solution on your site, and I have all those parts here beside me, excellent :D
Title: Re: Program that can log from many multimeters.
Post by: oz2cpu on June 03, 2022, 07:12:53 am
you can also see here :

http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm (http://webx.dk/oz2cpu/TemperatureSensorTC/TempLogger.htm)

using another temperature sensor, TMP275
but you get the point quite fast, anything that can read temperature, can be used, simply modify the arduino code
NTC for example, if you dont need it to be super accurate
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 04, 2022, 12:03:27 pm
Yeah, the issue with the DS1820 is that it's far too big in the TO-92 package to place in suitable locations. When I have some time on my hands, I'm going to write it to use the Arduino ADC. I've some wonderfully tiny 10k B3950 NTCs here that would be far better suited to the job.

Using the DS1820 for now though as I've already spent way too much time on this project!

I'll pass on the NTC version to OP when I get it done so others can use it as well.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 04, 2022, 01:42:09 pm
I've some wonderfully tiny 10k B3950 NTCs here that would be far better suited to the job.

TestController has the math for NTC's buildin, at least when you have the actual resistance of it:
https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Temperature_sensors_thermistor/NTC (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Temperature_sensors_thermistor/NTC)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 05, 2022, 10:44:01 pm
Thanks for this.

I'm just about to start this project, is there a reason I'd try and calculate resistance and pass it back instead of making ardunio code that simply lets you define the sensor there?

I still think passing the temperature back so it can work with the same DS1820 project makes the most sense to me?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2022, 05:14:48 am
I'm just about to start this project, is there a reason I'd try and calculate resistance and pass it back instead of making ardunio code that simply lets you define the sensor there?

I still think passing the temperature back so it can work with the same DS1820 project makes the most sense to me?

To get the most precise temperature from a NTC you need to measure/calculate the resistance and then use the NTC math to get the temperature.

It is best to have everything in the Arduino, but as a temporary solution the NTC math in TestController can be used and it can also be used to verify the Arduino calculations.

The reason I have put the different temperature sensor calculations in TestController is multimeters, i.e. you can basically use any standard temperature sensor with a multimeter and TestController can convert from ohms or volts to the actual temperature.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 06, 2022, 11:08:38 pm
Quote
The reason I have put the different temperature sensor calculations in TestController is multimeters, i.e. you can basically use any standard temperature sensor with a multimeter and TestController can convert from ohms or volts to the actual temperature.

Ah of course!

I have an Arduino program ready along with the Test controller device file for using an NTC with the Nano. Did some calibration tests on it and it's very accurate. To give an idea of why I wanted to use a small NTC instead of a DS1820 for temperature measurement, here's what temperatures you get from both when attached to a 3W resistor where I slowly ramped up the load and then let it sit at around 100°C

(https://i.ibb.co/DLfv6Vb/image.png)

Bead NTC reading just over 100 Degrees and the ds1820 was only reading around 70!

Once I have this code cleaned up a bit I'll upload both the Arduino ino and test controller device file.

I left the DS1820 code in, so you can request both temperatures from the unit, this is as I want to use a DS1820 to track ambient temperature as well :)

I also added the code for a screen to display the measurements, but of course connecting that is optional, you can just use it for NTC measurement and nothing else (which was the original goal).

https://streamable.com/ibg2kx
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 06, 2022, 11:18:53 pm
Posting this as a separate comment as to not muddy the waters.

Anyone here an expert on Test controller and want to earn €10 via revolout/PayPal :-DD

The Mastech 6514 is a dual channel thermocouple device that spits out temperature measurements over USB (serial to USB converter). I tried for over an hour today, but I just can't get my head around writing the device file for it. It just fires out a series of bytes about every 30 seconds with a bunch of information, but all we really want is the two temperature measurements.

https://sigrok.org/wiki/MASTECH_MS6514

Should be handy enough for someone who knows what they're doing.

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 07, 2022, 06:50:40 am
Had an old NI1000 temperature sensor lying
around unused due to a mispurchase :palm:.
Got it going again thanks to Test Controller with its
built-in math for such sensors. :-+
Something even my 34465A does not have.
Title: Re: Program that can log from many multimeters.
Post by: HighVoltage on June 07, 2022, 07:48:55 am
Had an old NI1000 temperature sensor lying
around unused due to a mispurchase :palm:.
Got it going again thanks to Test Controller with its
built-in math for such sensors. :-+
Something even my 34465A does not have.

What is a NI1000 sensor?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 07, 2022, 09:22:16 am
The Ni1000 is a resistive temperature sensor based
on nickel material for the resistve element having
in this case a resistance of 1000 Ohms at Zero Deg. C.
More commonly used are Pt100 or Pt1000
with platinum as the resistive material.

Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 10, 2022, 12:04:04 pm
Made an (simple) script for testing several
type of power-supplies. So I can test for example
an wall-adapter if it does work according the specification.
You can specify the nominal voltage, min. en max. current,
number of test steps, maximum voltage drop in percents
The minimum voltage (start Voltage - max. Voltage drop)
is controlled by the Load.
For example, an adapter with transformer, rectifier en caps
has much more drop than an SMPS.
In my case I'm using DL24 or PX100 electronic load.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 10, 2022, 02:43:40 pm
Hello

I have decoded a sentence that contains 20 variables in HEX format:

Code: [Select]
Rx <4B94 1E99 0012 0000 0000 0000 0000 0000 0000 1E9B 0000 0000 0000 0000 0000 019E 0000 0000 0000 0000>
#askValues values? returns the following:
Code: [Select]
Rx as numbers <NaN Infinity 12.0 0.0 0.0 0.0 0.0 0.0 0.0 NaN 0.0 0.0 0.0 0.0 0.0 1.9E19 0.0 0.0 0.0 0.0>

Question: how do I convert each of these variables to decimal values?

Another question: I need to send different commands to a device in ASCII format with a CRC/Checksum.
How do I calculate that CRC?

As an example, this command generates the following CRC: (0A5F)
Code: [Select]
.0036030000000000010006000100010001000201180190000927100A5F.
Same command, in ASCII:
Code: [Select]
0x0c 0x30 0x30 0x33 0x36 0x30 0x33 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x36 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x32 0x30 0x31 0x31 0x38 0x30 0x31 0x39 0x30 0x30 0x30 0x30 0x39 0x32 0x37 0x31 0x30 0x30 0x41 0x35 0x46 0x0d
Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2022, 03:43:20 pm
Made an (simple) script for testing several
type of power-supplies.

Interesting, I have a few comments:
1) End the filename with "Script" and save it in ..\TestController\ScriptLibrary , then it will be accessible in the right click menu.
2) Add a #autorun after the #scriptMenu line, then it will auto start.
3) Add #scriptInterface Load setCurrent SetVoltage setOn then the menu entry will only show if a load is loaded and has the listen functions in the interface
4) Clean it up, there is some unused code and lines in it.

When using SetVoltage on a load it will switch to constant voltage mode and may ignore the setCurrent value.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 10, 2022, 03:49:54 pm
Hello

I have decoded a sentence that contains 20 variables in HEX format:

Code: [Select]
Rx <4B94 1E99 0012 0000 0000 0000 0000 0000 0000 1E9B 0000 0000 0000 0000 0000 019E 0000 0000 0000 0000>
#askValues values? returns the following:
Code: [Select]
Rx as numbers <NaN Infinity 12.0 0.0 0.0 0.0 0.0 0.0 0.0 NaN 0.0 0.0 0.0 0.0 0.0 1.9E19 0.0 0.0 0.0 0.0>

Question: how do I convert each of these variables to decimal values?

You will have to return integers, not hex. In math expressions 0xaaaa is a valid integer, but not in the #askValues

Another question: I need to send different commands to a device in ASCII format with a CRC/Checksum.
How do I calculate that CRC?

As an example, this command generates the following CRC: (0A5F)
Code: [Select]
.0036030000000000010006000100010001000201180190000927100A5F.
Same command, in ASCII:
Code: [Select]
0x0c 0x30 0x30 0x33 0x36 0x30 0x33 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x36 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x31 0x30 0x30 0x30 0x32 0x30 0x31 0x31 0x38 0x30 0x31 0x39 0x30 0x30 0x30 0x30 0x39 0x32 0x37 0x31 0x30 0x30 0x41 0x35 0x46 0x0d

There is no easy way to make a CRC. What driver do you use? Maybe I can add it to the driver, another option is a function to calculate crc.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 10, 2022, 08:35:46 pm
Quote
There is no easy way to make a CRC. What driver do you use? Maybe I can add it to the driver, another option is a function to calculate crc.
This is the block driver.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 12:11:38 pm
Quote
There is no easy way to make a CRC. What driver do you use? Maybe I can add it to the driver, another option is a function to calculate crc.
This is the block driver.

In next version you can change you "s" specified to "h" and get the hex converted to integers.
There will also be a optional crc/checksum calculation you can activate.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 11, 2022, 06:21:06 pm
I bought an electronic load Atorch DL24M-H. After the first start, I connected to your program without any problems. Everything worked, only there were occasional drops in the recorded voltage. The program offered me an upgrade, so I implemented it. Everything works when controlled from the display. Even when installing the original application from Atorch, the load is connected and everything works. However, this is unsatisfactory for me. I want to use your program for recording and it can no longer connect.
I also have a 150W version of the Atorch DL24P, this one works very well for me with your program. I don't know what happened to the DL24M-H upgrade, but it can't connect to TestController (ver.2.6). Don't have any idea how to liven it up?
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 11, 2022, 06:27:11 pm
Made an (simple) script for testing several
type of power-supplies.

Interesting, I have a few comments:
1) End the filename with "Script" and save it in ..\TestController\ScriptLibrary , then it will be accessible in the right click menu.
2) Add a #autorun after the #scriptMenu line, then it will auto start.
3) Add #scriptInterface Load setCurrent SetVoltage setOn then the menu entry will only show if a load is loaded and has the listen functions in the interface
4) Clean it up, there is some unused code and lines in it.

When using SetVoltage on a load it will switch to constant voltage mode and may ignore the setCurrent value.
Thanks HKJ,

1 Done
2 Done
3 When I do that, script is not listed  in the right click menu. In List and Manage Scripts it is marked with an IF.
even when load is ready and connected.?
4 Done (as far as possible for an programmer with low programming skills. (Trial and Error programmer)

"When using SetVoltage on a load it will switch to constant voltage mode and may ignore the setCurrent value."
I use DL24 or PX100 and it doesn't happen to me. Stays in CC mode. Don't know how to bypass
both settings when I want to tell the load to shutdown by low voltage.

Did also some rework, made minimum voltage setting selectable by setting in absolute voltage drop of percents of starting voltage.

Added shutdown load when Testcontroller detects under minimum voltage, for the case the Load doesn't.
(overload protection for the powersupply.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 11, 2022, 06:34:26 pm
I bought an electronic load Atorch DL24M-H.

DL24M-H is not listed in the "ATorchPX100Devices.txt" device file.
Maybe you can ad the DL24M-H metadef?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 06:47:26 pm
I bought an electronic load Atorch DL24M-H. After the first start, I connected to your program without any problems. Everything worked, only there were occasional drops in the recorded voltage. The program offered me an upgrade, so I implemented it. Everything works when controlled from the display. Even when installing the original application from Atorch, the load is connected and everything works. However, this is unsatisfactory for me. I want to use your program for recording and it can no longer connect.
I also have a 150W version of the Atorch DL24P, this one works very well for me with your program. I don't know what happened to the DL24M-H upgrade, but it can't connect to TestController (ver.2.6). Don't have any idea how to liven it up?

I have no idea why it has problems now.
TestController requires a serial port (or a couple of other types of connection) to work.
A definition includes a protocol/driver for the actual device, if a software/firmware update changes the communication this may not work anymore.

I try to help with different devices, but I do seldom buy them, i.e. the only way to make TestController work with then is when users make the definition and tell me about the problems. Then I can try to improve TestController to handle it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 06:48:01 pm
DL24M-H is not listed in the "ATorchPX100Devices.txt" device file.
Maybe you can ad the DL24M-H metadef?

I do usually not change definition files for stuff I do not own, but instead look for people posting updated definitions in this thread
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 11, 2022, 06:53:16 pm
I watched the file, but I dare not modify it.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 11, 2022, 07:00:06 pm
I watched the file, but I dare not modify it.

If you add an section like this, and make name and handle according your device,
no serious problems can happen.

#metadef
; 180Watt discharge power
#idString ATorch,ATorch DL24P,
#name ATorch DL24P
#handle ATDL24P
#replaceText MinCurrent 0.2
#replaceText MinVoltage 0
#replaceText MaxCurrent 10
#replaceText MaxVoltage 200

If the values are wrong only wrong measurement can happen.
But when you can make connection, you know what to do.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 07:06:16 pm
3 When I do that, script is not listed  in the right click menu. In List and Manage Scripts it is marked with an IF.
even when load is ready and connected.?

Silly mistake, setVoltage must be with a lower case s
Note: I do not say you are silly, only that the mistake is silly (I do that kind of upper/lower case errors frequently)

4 Done (as far as possible for an programmer with low programming skills. (Trial and Error programmer)

It is not bad, but check these lines:

#popupNumber "Max. Temperature load(°C)" maxTempSave...
You do not use maxTempSave anywhere else in the script and the stuff after the = would work better on a separate line.

#if Percents then {
The script language do not know anything about {

I try to make the script language forgiven, i.e. it will not crash a script on a lot of minor mistakes, just ignore them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 07:11:18 pm
I watched the file, but I dare not modify it.

If you add an section like this, and make name and handle according your device,
no serious problems can happen.

#metadef
; 180Watt discharge power
#idString ATorch,ATorch DL24P,
#name ATorch DL24P
#handle ATDL24P
#replaceText MinCurrent 0.2
#replaceText MinVoltage 0
#replaceText MaxCurrent 10
#replaceText MaxVoltage 200

If the values are wrong only wrong measurement can happen.
But when you can make connection, you know what to do.

Don't worry that much about adding a #metadef, it will only affect stuff when you select the #name defined.
With the DL24M it may be necessary to define a couple devices depending on how many you run in parallel.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 11, 2022, 07:14:49 pm
I bought an electronic load Atorch DL24M-H.

DL24M-H is not listed in the "ATorchPX100Devices.txt" device file.
Maybe you can ad the DL24M-H metadef?

If you could advise me where to assign a new device name, I would be very grateful. I will make the change at my own risk. Well thank you.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2022, 07:22:11 pm
I bought an electronic load Atorch DL24M-H.

DL24M-H is not listed in the "ATorchPX100Devices.txt" device file.
Maybe you can ad the DL24M-H metadef?

If you could advise me where to assign a new device name, I would be very grateful. I will make the change at my own risk. Well thank you.

You add a new #metadef statement, usually you will copy a already existing one and then modify the parameters to match you new device.
When you have tested that it works, you can attach it to a post in this thread and I will update the definition file. Posting only the #meatadef and the name of the file it goes into or the full file is up to your, I can use either.

The most important parameter in a #metadef is the #name statement, it is the name you can find on the "Load devices" page. Of course the other definitions are supposed to match the name!
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 11, 2022, 10:14:46 pm
I added blue colored text to the file "ATorchPX100Devices", the device appeared in the menu, but the connection does not work ...
I guess it's beyond my power. Thank you for all the help
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 06:18:20 am
I paired the new DL24M-H device on COM7 and the old DL24 on COM8. Only the old device was connected via DL24, DL24P and PX100. I also tried to connect with the program "Battery Tester PX100" and the results were the same.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 06:35:02 am
I paired the new DL24M-H device on COM7 and the old DL24 on COM8. Only the old device was connected via DL24, DL24P and PX100. I also tried to connect with the program "Battery Tester PX100" and the results were the same.

It looks like it may have changed protocol. You can try running TestController in debug mode and see if there are any data.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 06:59:29 am
V2.07 is up
There are many improvements to the Block driver, math support for PTC and a few new devices.
   Added: Function makeDouble() for assembling a number from multiple elements, mostly for Block driver.
   Added: Block driver support for CRC or checksum
   Added: Block driver support for streaming data
   Added: Function vdivLowR(Vin,highR,vout) as a easy way to measure in-circuit sensors with a pullup resistor.
   Added: PTC sensor math for Vishay TFPT sensors: ptc(type,resistance) ptcT(type,temperature)
   Added: PTC sensor math for NXP and Infineon KTY sensors: ptc(type,resistance) ptcT(type,temperature)
   Added: GW Instek ASR-2050, GW Instek ASR-2100, GW Instek ASR-3200, GW Instek ASR-3300, GW Instek ASR-3400 Mains supplies (Thanks gby)
   Added: ParamSweeper can include the sweeping parameters in the logging.
   Added: HP 6624A quad power supply (Thanks Chernobyl)
   Added: ascii and hex number format to Block driver.
   Added: In math fields using INS or right-click will give a list of channel variables.
   Fixed: Annotations did not work on sync'ed scales.

I got requests for improvements from two different sources and they both involved the Block driver.

Some functions have been added to support some precision PTC resistors httpe:///lygte-info.dk/project/TestControllerFunctions%20UK.html#Temperature_sensors_PTC (http://httpe:///lygte-info.dk/project/TestControllerFunctions%20UK.html#Temperature_sensors_PTC)

When writing math formulas a shortcut for the connected device values has been added (INS key or right click). It works most places where expressions can be used.

ParamSweeper can sweep any adjustable parameter for a device, but not all of them are included in logging, now they can be by checking a box.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 07:37:06 am
I paired the new DL24M-H device on COM7 and the old DL24 on COM8. Only the old device was connected via DL24, DL24P and PX100. I also tried to connect with the program "Battery Tester PX100" and the results were the same.

It looks like it may have changed protocol. You can try running TestController in debug mode and see if there are any data.

First I have to study how TC starts in debug mode ... When I can do that I will publish the results. Well thank you. :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 07:43:02 am
First I have to study how TC starts in debug mode ... When I can do that I will publish the results. Well thank you. :)

You start it with the "testControllerDebug.bat" file (At least on Windows).
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 08:15:17 am
I moved to a desktop PC. I connected to COM5 and ran the debug.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 08:31:06 am
I moved to a desktop PC. I connected to COM5 and ran the debug.

Try downloading http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) and replace your current .jar file with it.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 09:15:59 am
Great! I have connected, but I do not have voltage, current values ​​... But it is possible to switch the load on and off, set the end voltage, set the test time and reset the values. The current setting does not work properly. Sets about 4x smaller value. I set 5A, the fact is 1,280A. You are very handy.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 09:19:26 am
Sorry my Google Translator English
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 10:16:07 am
Great! I have connected, but I do not have voltage, current values ​​... But it is possible to switch the load on and off, set the end voltage, set the test time and reset the values. The current setting does not work properly. Sets about 4x smaller value. I set 5A, the fact is 1,280A. You are very handy.

You can fix the current by adjusting this line:
#scpiCmd setCurrent tx 2 (value) *dd
I.e. use (value*4) instead of (value)

For current & voltage check the logged values. You can use "voltage?" and "current?" on the command line to only check that value and isolate the log for that.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 10:40:56 am
"For current & voltage check the logged values. You can use "voltage?" and "current?" on the command line to only check that value and isolate the log for that."
I'm not a programmer. I don't understand what to do ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 11:59:32 am
"For current & voltage check the logged values. You can use "voltage?" and "current?" on the command line to only check that value and isolate the log for that."
I'm not a programmer. I don't understand what to do ...

Start in debug mode as before, then type the command and press enter:

(http://lygte-info.dk/pic/cpf6/Command.png)

Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 12:17:18 pm
OK
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 12:23:54 pm
Next
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 12:44:27 pm
Next

Update .jar file with http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) and try again.
Note: It may take up to an hour before you can download the new version (V2.10), please check About on the configuration page to be sure you have the updated version.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 01:49:38 pm
It's not working yet.

I have a Li-Ion battery connected to the load, so it should show about 4.1V
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 02:27:31 pm
Even if I start the load and the current starts to flow, V, A, Ah and Wh in the TestController have zero values.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 12, 2022, 02:41:05 pm
Quote
There is no easy way to make a CRC. What driver do you use? Maybe I can add it to the driver, another option is a function to calculate crc.
This is the block driver.

In next version you can change you "s" specified to "h" and get the hex converted to integers.
There will also be a optional crc/checksum calculation you can activate.


"s" to "h" works. Now I get decimals. Fantastic  :-+

CRC: Thanks for adding that function.  I have tried to get a CRC using the linked website (https://crccalc.com/)
Could not get my expected value (020A) .

Code: [Select]
000A8A0000020A
Do I have to enter the control chars ? (start with 0x0c and end with 0x0d)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 02:52:51 pm
Next

Update .jar file with http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) and try again.
Note: It may take up to an hour before you can download the new version (V2.10), please check About on the configuration page to be sure you have the updated version.

I am attaching a .csv record in TC before the upgrade. I tested a 36V (540Wh) e-bike battery in CC 10A mode.
There were two strange voltage drops, and the current record was very often lost chaotically. The minutes of Ah and Wh looked fine. Therefore, I upgraded the firmware in good faith and since then I have exchanged minor problems for larger ... |O

https://drive.google.com/file/d/1KjilKsELQXsZtNIhEvNf60o9-PBMVZmY/view?usp=sharing
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 03:27:22 pm
It's not working yet.

I have a Li-Ion battery connected to the load, so it should show about 4.1V

Please post a log with the "voltage?" command and that 4.1V battery.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 03:29:12 pm
The minutes of Ah and Wh looked fine. Therefore, I upgraded the firmware in good faith and since then I have exchanged minor problems for larger ... |O

Sort of, the protocol has changed. I hope we can fix it together, i.e. I make modifications and you test.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 12, 2022, 03:40:45 pm
CRC: Thanks for adding that function.  I have tried to get a CRC using the linked website (https://crccalc.com/)
Could not get my expected value (020A) .

Code: [Select]
000A8A0000020A
Do I have to enter the control chars ? (start with 0x0c and end with 0x0d)

I cannot say what exactly you need to do. The idea is you put a original message without  the CRC into the crccalc website and then find the needed CRC parameters (poly, init, ref, xor). This will be the line where the shown CRC matches the CRC from the original message, note that high/low byte in the CRC can be swapped.
It may be a good idea to checkmark "Show processed data (HEX)", then you know exactly what the calculated CRC covers.
You can then add a #checksum statement to your definition with the parameters.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 12, 2022, 03:44:26 pm
The minutes of Ah and Wh looked fine. Therefore, I upgraded the firmware in good faith and since then I have exchanged minor problems for larger ... |O

Sort of, the protocol has changed. I hope we can fix it together, i.e. I make modifications and you test.

Thank you for your efforts so far, I am very grateful to you.
Title: Re: Program that can log from many multimeters.
Post by: Chernobyl on June 13, 2022, 04:24:49 am
Good day, and thank you again for developing and supporting this program!

My issue occurs when I try to communicate with more than one GPIB instrument at a time (using the AR488-type adapter). For example, if I configure just one device (HP 6624A power supply), I get this response (as expected) when I reconnect:
;; 20:47:37.328 jSerialComm version: 2.9.1
;; 20:47:37.331 COM7: Set params: 38400
;; 20:47:37.331 Start thread for: AR488 GPIB:25 - HP 6624A
;; 20:47:37.745 COM7: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; 20:47:37.951 : Tx <txrx? ID?>
;; 20:47:37.953 COM7: Tx: <ID?.> 49 44 3F 0A
;; 20:47:37.955 COM7: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; 20:47:37.979 COM7: Rx: <HP6624A> 48 50 36 36 32 34 41
;; 20:47:37.980 : Tx <txrx? ROM?>
;; 20:47:37.981 COM7: Tx: <ROM?.> 52 4F 4D 3F 0A
;; 20:47:37.983 COM7: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; 20:47:37.995 COM7: Rx: <3833> 33 38 33 33
;; 20:47:37.995 AR488 GPIB:25: Tx <tx CLR>
;; 20:47:37.997 COM7: Tx: <CLR.> 43 4C 52 0A
;; 20:47:37.997 AR488 GPIB:25: Tx <tx SRQ 3>
;; 20:47:38.005 COM7: Tx: <SRQ 3.> 53 52 51 20 33 0A
;; Found HP 6624A on AR488 GPIB:25


If I try adding another GPIB device (in this case my Keithley 2000 DMM at GPIB address 15) and hit Reconnect, I get the following. TC then sort of hangs with the command window greyed out (I am able to switch to other tabs though - including the Load devices tab - so it's not totally locked up). I get the same result if I add the device, don't reconnect, and then close and restart TC.
;; 21:01:39.318 jSerialComm version: 2.9.1
;; 21:01:39.353 COM7: Set params: 38400
;; 21:01:39.358 Start thread for: AR488 GPIB:25 - HP 6624A
;; 21:01:39.989 : Tx <txrx? ID?>
;; 21:01:39.990 AR488 GPIB:25: **Device do not match** <null>
;; AR488 GPIB:25 Device HEWLETT-PACKARD,HP6624A, do not match: **Device do not match** <null>
;; 21:01:39.990 Stopping thread for: AR488 GPIB:25 - HP 6624A


Out of curiousity, I tried changing to the Prologix-USB interface (not expecting it to work) and I get a very similar result:
;; 21:17:58.031 jSerialComm version: 2.9.1
;; 21:17:58.108 Start thread for: PrologixUSB GPIB:25 - HP 6624A
;; 21:17:58.109 Start thread for: PrologixUSB GPIB:15 - Keithley 2000
;; 21:17:58.732 : Tx <txrx? ID?>
;; 21:17:58.733 PrologixUSB GPIB:25: **Device do not match** <null>
;; PrologixUSB GPIB:25 Device HEWLETT-PACKARD,HP6624A, do not match: **Device do not match** <null>
;; 21:17:58.733 Stopping thread for: PrologixUSB GPIB:25 - HP 6624A
;; 21:17:59.236 Stopping thread for: PrologixUSB GPIB:15 - Keithley 2000


It seems like the program isn't closing/opening the serial port and/or switching between devices (using the ++addr command) properly. Is this a known limitation of TestController or something that can be fixed?

For reference, here's a screencap of my Load devices and GPIB settings. Thanks!

Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 05:27:50 am
It's not working yet.

I have a Li-Ion battery connected to the load, so it should show about 4.1V

Please post a log with the "voltage?" command and that 4.1V battery.

I don't understand what to do. Even with the battery connected, when I have a 4.1V electronic load on the display, the TestController shows zero values.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 05:49:41 am
Is this a known limitation of TestController or something that can be fixed?

It is a known bug and I will fix it when I get a couple of GPIB devices connected to TC.
For now you will have to use a AR488 for each device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 05:51:31 am
It's not working yet.

I have a Li-Ion battery connected to the load, so it should show about 4.1V

Please post a log with the "voltage?" command and that 4.1V battery.

I don't understand what to do. Even with the battery connected, when I have a 4.1V electronic load on the display, the TestController shows zero values.

Same as you did in post #2515
When working with protocols the output from the debug mode is essential.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 06:55:33 am
I don't understand what to do. Even with the battery connected, when I have a 4.1V electronic load on the display, the TestController shows zero values.

I made a bug, please use the corrected version: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Replace .jar file, check version is V2.11 and do the test.

If it works this time, it is time to fix the definition. For that I need:
Your new load software version (I need to include that in the name).
Errors for all commands, i.e. how much do I need to divide or multiply each value with.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 07:52:26 am
Jupíí. This is the right way! All values ​​seem correct to me except current. I set the current in the setup window to 1A, the load is actually 0.256A. I will test it for a while and then I will provide all the necessary data. :-+
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 07:59:04 am
Specifying current setting error: The set current 4A is actually 1.024A. And it writes 10.24A in the setup window.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 09:12:38 am
Specifying current setting error: The set current 4A is actually 1.024A. And it writes 10.24A in the setup window.

Try replacing the attached file. You will have to select DL24M-H to get the adjusted values.

The scale factor is controlled with these two lines in the file:
#scpiCmd setCurrent tx 2 (value/0.256) *dd
#scpiCmd setCurrent? rx? 0x17 /1000

You did not have any software version for the new software you programmed the load with?

Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 09:27:41 am
Hi all.

I noticed my MASTECH 6514 thermometer will connect under one of the profiles that are listed in devices. Mastech 8218!!

The IDN command returns "Mastech,MS8218".

I cannot find this in the device folder! Can someone tell me why? Since it must be using the same/similar setup to the 8218 multi-meter , I'm hoping I can use it to modify and make a profile to show the temperatures.

VALUE? - Returns nothing.
MODE? - This is returning either VAC or VDC. I'm guessing it's checking a bit that's related to temperature on the thermometer.
RATE? - Returns 1214

Since I know the bytes of the protocol, presumably if I knew where the device profile was, I could copy and edit it to create a new file that reads the temperature from the correct place.

Where is the device profile?!
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 13, 2022, 09:53:25 am
My last version of the Powersupply test script.

Added shutdown load when Testcontroller detects under minimum voltage, for the case the Load doesn't.
(overload protection for the powersupply).

Added shutdown load when Testcontroller detects Load overheating, for the case the Load doesn't.

Note about the PX100 and DL24 Loads.
In general I like the Dl24 / PX100 electronic load units, but they can easily get damaged.
I don't like to use it at full specs. (150W, 200V, 20A). 20A over single coppertraces is not done.
The FET a IRFP260N is of an dubious origin,  reclaimed, so unknown type, replaced with an original one,
and added an 16 Volt zener over gate and source.
I have checked the FET from the load with an original one.
The RDS-on of the FET which is used in the load, is 10 times
higher than an origninal one from International Rectifier.

Discussion about DL24 here:
https://www.eevblog.com/forum/testgear/cheezeball-dc-load-dl24p-pump-or-dump/ (https://www.eevblog.com/forum/testgear/cheezeball-dc-load-dl24p-pump-or-dump/)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 09:57:34 am
This is off topic, but this is what I done to mine :D

(https://i.ibb.co/ncXjYKz/1655114106146.jpg)

All cooled by a quad fan AIO PC water cooler.

While on the topic, I have to say I'm really surprised at how accurate the device is with final totals.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 09:58:27 am
I noticed my MASTECH 6514 thermometer will connect under one of the profiles that are listed in devices. Mastech 8218!!

The IDN command returns "Mastech,MS8218".

I cannot find this in the device folder! Can someone tell me why? Since it must be using the same/similar setup to the 8218 multi-meter , I'm hoping I can use it to modify and make a profile to show the temperatures.

VALUE? - Returns nothing.
MODE? - This is returning either VAC or VDC. I'm guessing it's checking a bit that's related to temperature on the thermometer.
RATE? - Returns 1214

Since I know the bytes of the protocol, presumably if I knew where the device profile was, I could copy and edit it to create a new file that reads the temperature from the correct place.

Where is the device profile?!

In SimpleDMM.txt, but you cannot really use it because it uses a build-in driver.

Depending on the protocol you might be able to define it with either Block, SingleValue or DMM2, Definition (Binary DMM protocol)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 10:05:52 am
Specifying current setting error: The set current 4A is actually 1.024A. And it writes 10.24A in the setup window.

Try replacing the attached file. You will have to select DL24M-H to get the adjusted values.

The scale factor is controlled with these two lines in the file:
#scpiCmd setCurrent tx 2 (value/0.256) *dd
#scpiCmd setCurrent? rx? 0x17 /1000

You did not have any software version for the new software you programmed the load with?

My wife and I went shopping so I couldn't work. :)

Now I'm going to test it properly and write the results.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 10:07:50 am
Knew I wouldn't be so lucky!!

This built in driver, is there another meter that has a device protocol that's similar that I could try that might work on it since we know some basics about it now?

It's so irritating I find this so hard to get my head around, especially since I already know the protocol. I could write code in python to decrypt it in a few minutes...

(https://i.ibb.co/cgWtQXk/image.png)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 10:50:31 am
This built in driver, is there another meter that has a device protocol that's similar that I could try that might work on it since we know some basics about it now?

It's so irritating I find this so hard to get my head around, especially since I already know the protocol. I could write code in python to decrypt it in a few minutes...

The Block driver could handle this.

Something like this (You will probably have to adjust it a bit):

#idString MASTECH,6514
#name MASTECH 6514
#handle M6514
#port comfixedbaud
#baudrate 9600
#driver block

#rxStart \x65\x14
#rxLength 18
#rxFormat 3u2 11b7 11b6 11b3 3u2 12b7 12b6 12b3

#value Main_Temp. °C D1
#value Aux_Temp. °C D1

#askValues values?
#askValuesMathFormat makeDouble(0,1,3,2,value)+" "+makeDouble(4,5,7,6,value)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 11:09:29 am
This is off topic, but this is what I done to mine :D

(https://i.ibb.co/ncXjYKz/1655114106146.jpg)

All cooled by a quad fan AIO PC water cooler.

While on the topic, I have to say I'm really surprised at how accurate the device is with final totals.

Nice. :)
What performance can it cool?
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 03:57:32 pm
Specifying current setting error: The set current 4A is actually 1.024A. And it writes 10.24A in the setup window.

Try replacing the attached file. You will have to select DL24M-H to get the adjusted values.

The scale factor is controlled with these two lines in the file:
#scpiCmd setCurrent tx 2 (value/0.256) *dd
#scpiCmd setCurrent? rx? 0x17 /1000

You did not have any software version for the new software you programmed the load with?

Everything works except setting the current through the setup window. Attached is a link to a video where I tried to show it.
When entering the current 1A, 2.56A will appear in the setup window, but the load display of 0.256A and 0.256A also flows with the load.
When entering the current 10A, 25.6A will appear in the setup window, but the load display 2.56A and 2.56A also flows with the load.
When the current 4A is entered, 10.24A will appear in the setup window, but the load display 1.024A and 1.024A will also flow through the load.
Always the same multiples of the entered value.

I think it's a program bug I can't fix. (If this cannot be corrected by changing the program, I can work with it, because the required current can be set with the buttons on the load display). Everything else can be set up correctly in the Setup window. The load goes through the Setup window on and off, as well as reset all measured values.

I bought the load through Bangood,
https://www.banggood.com/DL24M-H-2-200V-600W-3mA-40A-Electronic-Load-Voltage-Indicator-Power-Bank-Battery-Tester-18650-Pack-Capacity-Monitor-Checker-Tool-p-1934895.html?cur_warehouse=CN&ID=6292512&rmmds=search (https://www.banggood.com/DL24M-H-2-200V-600W-3mA-40A-Electronic-Load-Voltage-Indicator-Power-Bank-Battery-Tester-18650-Pack-Capacity-Monitor-Checker-Tool-p-1934895.html?cur_warehouse=CN&ID=6292512&rmmds=search)

I downloaded the original Chinese PC software from the site
https://www.mediafire.com/file/9doutmib3epm2a1/01-DL24M_DL24_electronic_load_software_V1.0.2_version.zip/file (https://www.mediafire.com/file/9doutmib3epm2a1/01-DL24M_DL24_electronic_load_software_V1.0.2_version.zip/file)

The load works with it, but it's unsatisfactory for me.

I tried to use the load with TC ver.2,6, but I had big outages in the current record. I didn't know where the problem was, so I decided to upgrade the firmware using a Chinese upgrade file
"03-DL24_M (0-600W) firmware upgrade V1.4.bin", which is part of the supplied Chinese program. Since then, the burden has only worked with the Chinese program (which does not suit me). You already know ...

I do not dare to change your program and make mistakes in it that would spread further, so I would ask you to change your program. I would recommend writing a new device "Atorch DL24M-H 600W upgrade" in the device offer and implementing the necessary changes into the program under this name.
I will continue to test.

Before upgrading the load, I have one measurement: picture DL24M-H-16. It was recorded with TC ver 2.06 using a program for DL24P.
We see that at the set constant current CC 10A, the current record constantly drops out (blue curve). There are two random dips on the voltage record (red curve).

After the upgrade, I also have one measurement so far: picture DL24M-H-17. Recorded in TC ver. 2.11. using the program for DL24P. (we will then fix it on "Atorch DL24M-H 600W upgrade")
In the hourly record of discharging the Li-Ion battery (21700, 5000mAh) in the CC mode with a current of 4.963A, there was only one outage on the capacity recording curve (black curve) at 9:00 min. The other curves are flawless. I estimate the measurement error (this is not a TC problem, of course) at 1-2%, which is excellent for me.

Great, great! I'm excited. :-+

https://drive.google.com/file/d/1_aAY73KxDro_nJ3oADfc6ILxnqmRY563/view?usp=sharing (https://drive.google.com/file/d/1_aAY73KxDro_nJ3oADfc6ILxnqmRY563/view?usp=sharing)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 04:52:09 pm
I think it's a program bug I can't fix. (If this cannot be corrected by changing the program, I can work with it, because the required current can be set with the buttons on the load display). Everything else can be set up correctly in the Setup window. The load goes through the Setup window on and off, as well as reset all measured values.

It is a definition issue and I hope it is fixed if you use the new definition file I posted above and select DL24M-H, it also contains the DL24P and it will show the same result as before.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 05:03:51 pm
I'm sorry, I'm not a programmer, I don't know how to do it ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 05:08:47 pm
I'm sorry, I'm not a programmer, I don't know how to do it ...

You click on the filename and save it on top of the similar named file in ...\TestController\devices\  Basically the same as you did with the .jar file
Restart TestController and add the P24M-H
(http://lygte-info.dk/pic/cpf6/Add24M.png)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 05:55:10 pm
We probably don't understand. I don't have the "ATorchDevices.txt" and / or "ATorchPX100Devices.txt" file modified. I dare not. TC 2.11 (which you sent me) therefore does not offer me a connection to the Atorch DL24M-H. I connect via DL24P and that's how it works for me. I can't do the current recalculation either.
I don't understand these things ... :-//
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 06:17:54 pm
We probably don't understand. I don't have the "ATorchDevices.txt" and / or "ATorchPX100Devices.txt" file modified. I dare not. TC 2.11 (which you sent me) therefore does not offer me a connection to the Atorch DL24M-H. I connect via DL24P and that's how it works for me. I can't do the current recalculation either.
I don't understand these things ... :-//

Do not be that nervous about TestController, you can make a copy of your current TestController directory and use that to test in. TestController can run from any directory (as long as it have the Devices subdirectory) and you can have as many as you wish installed on your computer.
Configuration settings are stored in your document directory and all versions of TestController can use the configuration. But the DL24M-H will only work on the version with the new device file (DL24P will work on either).

For more advanced users it is possible to make a .bat file that will start a version of TestController with another configuration directory.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 07:08:26 pm
I'm retired. I don't have a programmer in my area. I would need to work with someone who understands this for a while. I would definitely learn at least the basic things quickly.
But I'll try to experiment. So far, thanks a lot. :)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 07:32:13 pm
I only discharged a few 18650s through it at 15Amps, temperatures where really good, MOSFETs barely heating up. I was making some alterations to the serial comms on the board and blew the main processor, so didn't get a chance to do the high power test before I fried it :< .I have ordered another and it will be here next week. The swap over shouldn't be too hard, so I'll find out then!

I haven't got the calculations here with me, but I think I worked out electrically it could easily do 1.5KW under the right conditions.

Obviously my water cooler would never dump that heat, I am hoping it can sustain 500W though. I have a few 20A 24V PSUs I'd love to stress test with it :)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 07:35:15 pm
I found the debug mode and here's what my current issue seems to be:

Quote
;; MS6514B: Tx <values?>
;; MS6514B: Rx Timeout
Thread for MS6514B
dk.hkj.script.ProgramExceptions$UnknownException: Function not found makeDouble
makeDouble(0,1,3,2,value)+____<----____" "+makeDouble(4,5,7,6,value)
        at dk.hkj.script.Script.getFunc(Script.java:93)
        at dk.hkj.script.Script.parseValue(Script.java:268)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.expression(Script.java:1220)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:283)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:299)
        at dk.hkj.main.SCPICommand.readNumbers(SCPICommand.java:404)
        at dk.hkj.main.DeviceInterface.getValuesFromDevices(DeviceInterface.java:399)
        at dk.hkj.devices.DeviceSCPI.getValuesFromDevices(DeviceSCPI.java:44)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1523)

I clicked on the link for makeDouble on your site and it 404s, so I'm lost now....
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 07:55:13 pm
I found the debug mode and here's what my current issue seems to be:

I clicked on the link for makeDouble on your site and it 404s, so I'm lost now....

You need TestController V2.07 or never, it is a new function mostly for use with the Block driver.

You might have a old version of the webpage in a cache, try pressing refresh.
http://lygte-info.dk/project/TestControllerFunctions%20UK.html#makeDouble (http://lygte-info.dk/project/TestControllerFunctions%20UK.html#makeDouble)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 13, 2022, 08:01:55 pm
Excellent! I wouldn't have thought to update it since I only downloaded it less than a week ago!


New error though unfortunately:

 "sd" is null
        at dk.hkj.devices.DeviceDMM2.getCommInterface(DeviceDMM2.java:272)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:1362)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSerial(InterfaceThreads.java:611)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:740)
;; jSerialComm version: 2.9.1
Exception in thread "Scan ports" java.lang.NullPointerException: Cannot invoke "String.equalsIgnoreCase(String)" because "sd" is null
        at dk.hkj.devices.DeviceDMM2.getCommInterface(DeviceDMM2.java:272)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:1362)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSerial(InterfaceThreads.java:611)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:740)
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 13, 2022, 08:11:36 pm
Hello

Is it possible to send these 3 parameters with one "Set" button?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 08:12:55 pm
Excellent! I wouldn't have thought to update it since I only downloaded it less than a week ago!

I have to publish a new version some data and obvious it was just after your downloaded it.

New error though unfortunately:

It is a DMM2 driver without a #subdriver specification
A null pointer exception is often ignored, if it happens during initialization of a driver TestController will simple not load the driver.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 13, 2022, 08:14:32 pm
Is it possible to send these 3 parameters with one "Set" button?

No, but check the multi control: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 13, 2022, 08:43:36 pm
I only discharged a few 18650s through it at 15Amps, temperatures where really good, MOSFETs barely heating up. I was making some alterations to the serial comms on the board and blew the main processor, so didn't get a chance to do the high power test before I fried it :< .I have ordered another and it will be here next week. The swap over shouldn't be too hard, so I'll find out then!

I haven't got the calculations here with me, but I think I worked out electrically it could easily do 1.5KW under the right conditions.

Obviously my water cooler would never dump that heat, I am hoping it can sustain 500W though. I have a few 20A 24V PSUs I'd love to stress test with it :)

I want to test e-bike batteries. To do this, I need a load capable of cooling up to 450W. So I bought the DL24M-H 600W. The power is divided into 16 Mosfets with 4 fans, so I hope it lasts me a while. I plan to buy better Mosfets and protection diodes in reserve. I can make the exchange myself. For 70 € it is probably an unbeatable offer. And with the testController software from HKJ, it is a pleasure to work with it. :-+
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 04:53:34 am
I can't believe I'm still at this....

Code: [Select]
makeDouble(value,minus,pointAdjust)
makeDouble(value,minus,pointAdjust,overload)
makeDouble(valueIndex,minusIndex,pointAdjustIndex,overloadIndex,valueString)

makeDouble(123,0,1);
makeDouble(123,0,1,0);
makeDouble(0,1,2,3,"123 0 1 0");

Yes, so these examples all work. How the hell do I get the values sfter RX format into it....

for example #askValuesMathFormat makeDouble(123,0,0) will work fine as 123 as the value and displays something like 1.23°C as the value, however I need to get the output from RX into this, which I can see from the debug tab is working fine: Rx <214 0 0 1> (21.4 degrees)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 05:04:14 am
Quote
So I bought the DL24M-H 600W.

Can you link to this? I can't find it.

EDIT: Found it. This to me seems like the modular system I've seen before. The great idea behind this would be that you can add modules as you realise you need more thermal headroom (which is the real issue with these boards). However I haven't seen the modules for sale without the controller, so it seems like a waste.


Quote
The power is divided into 16 Mosfets with 4 fans


Do you have a link to a teardown? It certainly just looks like the standard load,just with the addition of being able to modularly add more MOSFETS, which would be mean one MOSFET under each of those fans. You can check up YouTube and the like (probably here as well) for long term load tests on it. **My memory is very hazy on this as I bought this ages (like over a year) ago, but only started working on it last week**, but I think it realistically tops out around 50-80W, which would give you around 200W-320W of power with 4 modules.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 05:33:03 am
I can't believe I'm still at this....

Code: [Select]
makeDouble(value,minus,pointAdjust)
makeDouble(value,minus,pointAdjust,overload)
makeDouble(valueIndex,minusIndex,pointAdjustIndex,overloadIndex,valueString)

makeDouble(123,0,1);
makeDouble(123,0,1,0);
makeDouble(0,1,2,3,"123 0 1 0");

Yes, so these examples all work. How the hell do I get the values sfter RX format into it....

for example #askValuesMathFormat makeDouble(123,0,0) will work fine as 123 as the value and displays something like 1.23°C as the value, however I need to get the output from RX into this, which I can see from the debug tab is working fine: Rx <214 0 0 1> (21.4 degrees)


The result from #rxFormat is read by #askValues and your can use #askValuesMathFormat for expressions on #askValues
You could say that #rxFormat when used implements a "values?" command on the device.

#rxFormat #rxFormat 3u2 11b7 11b6 11b3
I.e. this format will generate something like: 123 0 1 0

#askValues values?
#askValuesMathFormat makeDouble(0,1,3,2,value)
To combine the 4 parameters you use makeDouble() on #askValues.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 05:44:16 am
Quote from: HKJ
makeDouble(0,1,3,2,value)

This completely contradicts the documentation for makedouble....

Quote
makeDouble(value,minus,pointAdjust,overload)

value: Any numeric value, will usually be a unsigned integer.
minus: When non-zero the sign on the value will be changed.
pointAdjust: A integer specifying how many places to move the decimal point, positive value is to the right (i.e. 2==/100)
overload: Return a overload value, 1=Infinite, -1:NaN
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 05:53:00 am
Quote from: HKJ
makeDouble(0,1,3,2,value)

This completely contradicts the documentation for makedouble....

Sorry, I do understand what you mean.

With the 5 parameter version of makeDouble() the first 4 parameters are index into the values of the 5 parameter string. I added this version to avoid having to use a couple of getElement() with each makeDouble(), this way makeDouble() will do its own optimized version of it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 05:58:20 am
With async devices TestController has one problem: It is using its own timebase and need to synchronize any incoming values to that.
To do this async messages are stored, but not directly used. Instead the last incoming value is read with #askValues values? when needed.

This also means they will work with very fast log rates, but the value will only be updated when a new value is received.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 06:32:47 am
OHHH

You need to put a note that they last part only refers to the five variable command. From the way it is in the documentation, you'd assume it's the same for them all.....


OK. We're on the home stretch :D

Three questions for you (sorry for taking up so much of your time).

1. Is there an initialisation command option, like one that only sends when it detects the device?
2. Is it possible to read the values without the askvalue command being transmittedt? This device sends them as a stream, so the ask values command does nothing except clog up the logs. (I see you answered this already and it appears the answer is no?)
3. For "65 14 00 00 00 00 D6 00 D1 07 81 08 08 09 21 0F 0D 0A" I am able to read 'D6' with '6u1'. This is now giving me the correct temperature with the changes we just made to math format. This is great, but limits us to 0-255 (so over 25 degrees, it basically rolls around). I cannot get the other bytes in to allow me to read the full range...


EDIT: Additional on question three, for the byte position is 65 14 ignored as we defined it earlier as rxStart, and so I'd actually reading D1 in the above example?

EDIT2: OK, So I need "ur" as apposed to just "u" due to the order of the bytes, and yes I am reading the aux temperature sensor, but now I know how to read the main one too :)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 06:46:52 am
You need to put a note that they last part only refers to the five variable command. From the way it is in the documentation, you'd assume it's the same for them all.....

I have already updated the documentation.

1. Is there an initialisation command option, like one that only sends when it detects the device?

Yes: #initCmd
Remember you must use a "Tx" command, i.e. something like:
#initCmd tx 0x12 0x13
to send hex 12 13

2. Is it possible to read the values without the askvalue command being transmittedt? This device sends them as a stream, so the ask values command does nothing except clog up the logs. (I see you answered this already and it appears the answer is no?)

The #askValues is not being transmitted when using a async device, it is processed internally in the driver.

3. For "65 14 00 00 00 00 D6 00 D1 07 81 08 08 09 21 0F 0D 0A" I am able to read 'D6' with '6u1'. This is now giving me the correct temperature with the changes we just made to math format. This is great, but limits us to 0-255 (so over 25 degrees, it basically rolls around). I cannot get the other bytes in to allow me to read the full range...

Use 6u2 to read two bytes, 6u3 to read 3 bytes, etc. up to 6u8, you can use 6ur2 to swap endianness

EDIT: Additional on question three, for the byte position is 65 14 ignored as we defined it earlier as rxStart, and so I'd actually reading D1 in the above example?

No, it is present as byte 0 and 1.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 06:50:51 am
OK, I think we're nearly done, I just hit a bug when I tried to log the data to test:

Quote
: Tx <Values?>
;; M6514F: Rx <204 0 0 1 207 0 0 1>
;; M6514F: Rx after :readmath: makeDouble(0,1,3,2,value) +" "+makeDouble(4,5,7,6,value) <20.4 20.7>
;; M6514F: Rx as numbers <20.4 20.7>
Exception in thread "LoggerSample" java.lang.NullPointerException: Cannot read field "format" because the return value of "dk.hkj.database.Format.get(int)" is null
        at dk.hkj.database.Format.formatFile(Format.java:46)
        at dk.hkj.database.DataRow.getDataRowLine(DataRow.java:53)
        at dk.hkj.main.InterfaceThreads$LoggingSample.run(InterfaceThreads.java:1251)

Quote
The #askValues is not being transmitted when using a async device, it is processed internally in the driver.

Great!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 07:06:47 am
OK, I think we're nearly done, I just hit a bug when I tried to log the data to test:

Quote
: Tx <Values?>
;; M6514F: Rx <204 0 0 1 207 0 0 1>
;; M6514F: Rx after :readmath: makeDouble(0,1,3,2,value) +" "+makeDouble(4,5,7,6,value) <20.4 20.7>
;; M6514F: Rx as numbers <20.4 20.7>
Exception in thread "LoggerSample" java.lang.NullPointerException: Cannot read field "format" because the return value of "dk.hkj.database.Format.get(int)" is null
        at dk.hkj.database.Format.formatFile(Format.java:46)
        at dk.hkj.database.DataRow.getDataRowLine(DataRow.java:53)
        at dk.hkj.main.InterfaceThreads$LoggingSample.run(InterfaceThreads.java:1251)

You are logging to disk and for some reason TestController has not assigned a format to a column.
I will have to look at bit more on this and see if I can find the reason. I can easily prevent the error by returning the default format, but it is not supposed to happen.

Can you help me to recreate this error?
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 07:12:46 am
What would you like me to do?
You can see above what is happening.

You've been a fantastic help to me so far, so I have no issue returning the favour :)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 07:15:48 am
Here's the current setup file if it is of any use.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 07:41:21 am
What would you like me to do?
You can see above what is happening.

You've been a fantastic help to me so far, so I have no issue returning the favour :)

You already done it.
Your definition and a data string from your device you posted above made it possible for me to recreate the bug and fix it.
Note: I can program hex strings into a Arduino to simulate a serial device.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 07:49:32 am
Fantastic! When do we get to see the updated version?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 07:59:24 am
V2.12 is up
Mainly a bug fix.
   Fixed: A bug that could prevent direct logging to disk.
   Changed: Ni & PTC sensors will return NaN (?) when value is outside range.
   Changed: New algorithm for Ni sensor
   Added: ATorch  DL24M-H, it is not completely tested
   Added: New ATorch PX100 protocol, used in DL24M-H with updated software

I had not planned on a new release this fast, but due to the bug reported by SpottedDick I decide to do a full release.

Note: I may take up to an hour from this post until it can be download. To be sure you got the correct version look at the About info on the configuration page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 08:01:54 am
Here's the current setup file if it is of any use.

Please post it again when you are finished with it.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 08:03:20 am
I'm going to test the temperatures with the hot air gun and also put it in the freezer to make sure the negative sign is working. Assuming that's all good, please include this with your devices in you next release so no one has to go through the torture I did :D

Thanks for your help!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 08:05:52 am
I'm going to test the temperatures with the hot air gun and also put it in the freezer to make sure the negative sign is working. Assuming that's all good, please include this with your devices in you next release so no one has to go through the torture I did :D

Of course I will include it, I just need to be sure you are finished with it.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 08:38:20 am
Is it possible to include a tip/help line that shows up when the device connects? I've notes in the device file, but their's two important things a user might miss if they don't check the device file.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 08:48:15 am
Is it possible to include a tip/help line that shows up when the device connects? I've notes in the device file, but their's two important things a user might miss if they don't check the device file.

There is nothing that pops up, that would be annoying, but you can use a #notes to get a icon in the Notes column. It is possible to use multiple lines after a single #notes, anything until the next # command is included.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 09:06:20 am
This is what I was looking for, I knew I seen something like that earlier, but couldn't remember, thanks.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 14, 2022, 12:50:44 pm
Is it possible to send these 3 parameters with one "Set" button?

No, but check the multi control: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi)

So far so good. Thanks  :-+

[attach=1]

I am adding more parameters. Is there a way to put the other values on a second line in the same tab?

Now for the write function: I need to "build" this function based on the values entered in the different fields before sending it to the device in ASCII, together with the CRC/checksum (still don't know how to get the right value).
Which function(s) should I use ?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 14, 2022, 01:16:30 pm
MS6514 testing done.

Readings matched what the meter said and had no issues going negative.

Put the oven to 100°C, put a probe in the oven and one in the Freezer  :)

(https://i.ibb.co/1rTMz7s/image.png)

All looks good.

Device profile attached, feel free to edit it before adding to devices if you're not happy with how I did this. Hopefully other people find this useful.

The device itself can operate as a standalone data recorder, has high accuracy and can be got for around €40, so it's a good buy, I can't be the only person with one of these that would like to log in Test Controller!

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: Totoro on June 14, 2022, 01:47:44 pm
Hello all,
I have a MetraHit Energy and am having trouble getting it to work with Test Controller. I am using a Mac running Monterey and Test Controller seems to be running just fine. I built the IrDA interface described by PushUp (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4015216/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg4015216 (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4015216/?PHPSESSID=e8ja7i0ragru6auspt39agp3m1#msg4015216)). I also have the IR interface for a Keysight U1733C LCR meter and, using the screen program, I can get it to loop-back at 38400 baud by holding a mirror up to it. Using a mirror does not work with the IrDA2 click device called out by PushUp. So, I don't know for sure if that is actually sending a signal. Holding a camera up to either doesn't seem to show anything.
I can load the meter in Test Controller and in the device address space I am using the device name from the /dev directory, in this case, /dev/tty.usbserial-14340. This is the address I would use with the screen program. Maybe the Test Controller program expects a different address form?
I have tried both IR interfaces with Test Controller and when I hit the Reconnect button I get this:
 
;; Dummy Device GMC,METRAHIT ENERGY, do not match: null,,,

The meter is displaying the IR indicator in the upper-right corner. I'm quite new to this instrument, though. Do I have to set it up to tell it to send something?
Please excuse the rather rambling nature of this post but if anyone could help it would be really appreciated.
Thanks
Michael (aka Totoro)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 01:48:08 pm
So far so good. Thanks  :-+

I am adding more parameters. Is there a way to put the other values on a second line in the same tab?

Each message can only contain values from one line, I have not seen a need for many parameters in one command before.

Now for the write function: I need to "build" this function based on the values entered in the different fields before sending it to the device in ASCII, together with the CRC/checksum (still don't know how to get the right value).
Which function(s) should I use ?

You get a "value" variable that contains each value in ascii format and you can get a single one with getElement() function.
But converting that to a couple of hex values can be a bit hard.
You can use hex(getElement(value,4)) to convert a single number to hex, but for it to work you need to use () around it and "\"" for the driver to accept it as a text string, i.e. ("\""+hex(getElement(value,4))+"\""), except you need many more conversions inside the ()


Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 01:48:44 pm
All looks good.

It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 14, 2022, 01:50:49 pm
I can load the meter in Test Controller and in the device address space I am using the device name from the /dev directory, in this case, /dev/tty.usbserial-14340. This is the address I would use with the screen program. Maybe the Test Controller program expects a different address form?

Enter the address field with F2 and try right clicking the mouse, then TestController will list all serial ports in a popup.
Title: Re: Program that can log from many multimeters.
Post by: Totoro on June 14, 2022, 02:46:07 pm
Thank you HKJ!
Basically, it didn't want the /dev/ part. I'm now connected.
Thanks again, too, to PushUp for the interface writeup.
Now the Test Controller learning curve begins!
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 14, 2022, 04:28:07 pm
Hi! I've tested the new version with the ATorch DL24M-H and I have a few observations regarding the setup commands behaviour.

The voltage setting works just fine.
The current setting is a different story. It is always off by a fixed value multiplier, an example: in TC I set it to 1000m, the load beeps and sets itself to 3.9A while in the setting field TC shows 390m. So there is a factor of 10 error in the feedback part but also there is a factor of 2.56something when you command the load. I hope its clear enough...
The time setting works but it rounds DOWN to the nearest minute. An example: setting to 119 yields in 00:01 on the display, 185 becomes 00:03 and so on. The load itself only has one minute resolution anyway so its not a big deal.. It is also different a bit from the cutoff voltage setting because you manually have to turn on this feature on the load to any number before it actually works. The cutoff voltage works fine even if its in "off" mode when you set up the voltage.

The value readings are good, they don't have this weird multiplier problem, they all come in with correct decimals and stuff.., however the current reading is very glitchy and drops to close to zero quite often. See the attached picture, it is a constant 1A load and even after I've turned off the load there was a glitch.

Hope this helps and thank you very much for all this massive effort to make this software. Let me know if I can do some more tests with this specific load.






Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 14, 2022, 07:44:30 pm
@aszasza,

Reading Dropouts is an known problem with DL24***
In post 1568 discussed about that.
HKJ helped me with making some mathfunctions to reduce the errors.
Better said is to filter them out.
Strange you have them only in Current reading, that is i.m.o. not always the case,
other DL24 readings have also dropouts when you log for a long time.
As Example: Dropouts are very bad when you need to check Cut-off voltage.
This is used in my Battery Test script which HKJ has published here:

https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html

Maybe you can use parts from code from that.
Succes.

BTW. I have not as much dropouts as you have.
When logging for a short time I have almost no dropouts.
See attached picture form the Powersupply test.

Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 15, 2022, 01:54:04 am
@HKJ

The "USBTMC" Protocol has come up in the past. I've an OWON SDS1192 which uses the "PC" setting to log to its own propreiety software. However, it does support "USBTMC" mode as well.

Any chance of this being updated? I know very little about it at the moment, but it appears it would allow Test Controller to nearly immediately add a bunch of equipment to its list of supported devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2022, 07:56:58 am
Hi! I've tested the new version with the ATorch DL24M-H and I have a few observations regarding the setup commands behaviour.

Try this version and see if it fixes dropout: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Maybe your load is the old software version, try running it as a DL24P

Please report back on both results.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2022, 08:01:13 am
The "USBTMC" Protocol has come up in the past. I've an OWON SDS1192 which uses the "PC" setting to log to its own propreiety software. However, it does support "USBTMC" mode as well.

Any chance of this being updated? I know very little about it at the moment, but it appears it would allow Test Controller to nearly immediately add a bunch of equipment to its list of supported devices.

The problem is that USBTMC requires native code and cannot be done in Java and native code requires separate code for each OS and cpu architecture.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 15, 2022, 02:30:03 pm
So far so good. Thanks  :-+

I am adding more parameters. Is there a way to put the other values on a second line in the same tab?

Each message can only contain values from one line, I have not seen a need for many parameters in one command before.

Now for the write function: I need to "build" this function based on the values entered in the different fields before sending it to the device in ASCII, together with the CRC/checksum (still don't know how to get the right value).
Which function(s) should I use ?

You get a "value" variable that contains each value in ascii format and you can get a single one with getElement() function.
But converting that to a couple of hex values can be a bit hard.
You can use hex(getElement(value,4)) to convert a single number to hex, but for it to work you need to use () around it and "\"" for the driver to accept it as a text string, i.e. ("\""+hex(getElement(value,4))+"\""), except you need many more conversions inside the ()

Yes, it seems hard. This is my multi box (simplified for this test)
Code: [Select]
#cmdSetup multi Battery Parameters
:read: BatteryType?;
:write: mytest ("\""+hex(getElement(value,4))+"\"")
;:write: mytest ("\""+ hex(0x0c,1) +hex(0,4)+hex(1,4)+hex(2,4)+hex(3,4)+hex(4,4)+hex(5,4)+"\"")
; cannot get the control char 0c right!
:tip: Enter battery parameters
combobox NiCd 0 NiMh 1 LiIo 2 LiPo 3 LiFe 4 Pb 5

Where should I put the function to read the different battery types based on my selection how can I parse the different values??

Thanks
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 15, 2022, 04:25:03 pm
Hi! I've tested the new version with the ATorch DL24M-H and I have a few observations regarding the setup commands behaviour.

The voltage setting works just fine.
The current setting is a different story. It is always off by a fixed value multiplier, an example: in TC I set it to 1000m, the load beeps and sets itself to 3.9A while in the setting field TC shows 390m. So there is a factor of 10 error in the feedback part but also there is a factor of 2.56something when you command the load. I hope its clear enough...
The time setting works but it rounds DOWN to the nearest minute. An example: setting to 119 yields in 00:01 on the display, 185 becomes 00:03 and so on. The load itself only has one minute resolution anyway so its not a big deal.. It is also different a bit from the cutoff voltage setting because you manually have to turn on this feature on the load to any number before it actually works. The cutoff voltage works fine even if its in "off" mode when you set up the voltage.

The value readings are good, they don't have this weird multiplier problem, they all come in with correct decimals and stuff.., however the current reading is very glitchy and drops to close to zero quite often. See the attached picture, it is a constant 1A load and even after I've turned off the load there was a glitch.

Hope this helps and thank you very much for all this massive effort to make this software. Let me know if I can do some more tests with this specific load.

Update your device using the Chinese firmware upgrade as I wrote in my post # 2542. Outages almost disappear.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2022, 06:21:07 pm
Yes, it seems hard. This is my multi box (simplified for this test)
Code: [Select]
#cmdSetup multi Battery Parameters
:read: BatteryType?;
:write: mytest ("\""+hex(getElement(value,4))+"\"")
;:write: mytest ("\""+ hex(0x0c,1) +hex(0,4)+hex(1,4)+hex(2,4)+hex(3,4)+hex(4,4)+hex(5,4)+"\"")
; cannot get the control char 0c right!
:tip: Enter battery parameters
combobox NiCd 0 NiMh 1 LiIo 2 LiPo 3 LiFe 4 Pb 5

Where should I put the function to read the different battery types based on my selection how can I parse the different values??

I am not exactly sure what you are asking about.
You can use :readmath: to process read values. They can be used both in the #cmdSetup and the #scpiCmd tags.
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 15, 2022, 06:29:33 pm
Hi! I've tested the new version with the ATorch DL24M-H and I have a few observations regarding the setup commands behaviour.

Try this version and see if it fixes dropout: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Maybe your load is the old software version, try running it as a DL24P

Please report back on both results.


I've tried it with booth DL24P and DL24M-H, both have the same issue with the dropouts. If I'm using the DL24P the current setting works properly though, no weird multiplier problems as with the M-H one...

vladobac: I don't want to update the firmware unless we know it works for sure, this way at least we can provide info for HKJ, you with the new fw and I with the original one.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 15, 2022, 06:57:08 pm
I've tried it with booth DL24P and DL24M-H, both have the same issue with the dropouts. If I'm using the DL24P the current setting works properly though, no weird multiplier problems as with the M-H one...

Try running TestController in logging mode, I would like a log segment that includes a dropout.
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 15, 2022, 07:06:16 pm
@aszasza,

Reading Dropouts is an known problem with DL24***
In post 1568 discussed about that.
HKJ helped me with making some mathfunctions to reduce the errors.
Better said is to filter them out.
Strange you have them only in Current reading, that is i.m.o. not always the case,
other DL24 readings have also dropouts when you log for a long time.
As Example: Dropouts are very bad when you need to check Cut-off voltage.
This is used in my Battery Test script which HKJ has published here:

https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html

Maybe you can use parts from code from that.
Succes.

BTW. I have not as much dropouts as you have.
When logging for a short time I have almost no dropouts.
See attached picture form the Powersupply test.

I've tried your script but it stops for me after like 5-6 seconds I don't know why, I'm very new with TC I don't understand how it works yet. This is what I get:
Code: [Select]
#scriptMenu Discharge
;; Battery discharging with DL24 / PX100
;; Loaddevice = ATDL24P
;; Max. Discharge time = 120.0 Seconds
;; Discharge with 1.0A to 7.0V
;; Start Voltage = 9.997 Volt
;; Discharge Current = 0.987 Ampere
;; #wait (tableCalcMax((load+".Voltage"),tableRows()-6)>endVoltage) and (tableCalcMax((load+".Current"),tableRows()-6)>(0.5*testCurrent)) and timeendVoltage) and (tableCalcMax((load+".Current"),tableRows()-6)>(0.5*testCurrent)) failed due to Variable not found timeendVoltage 
e"),tableRows()-6)>endVoltage) and (tableCalcMax((load+".Current"),tableRows()-6)>(0.5*testCurrent)) and timeendVoltage)____<----____ and (tableCalcMax((load+".Current"),tableRows()-6)>(0.5*testCurrent))
;; Discharge stopped by TestController
;; End Voltage = 9.984 Volt
;; Discharged with Current = 1.0 Ampere
;; Capacity = 0.001Ah
;; Energy = 0.015Wh

For me only the current is glitchy, even when doing long tests, see the attached picture. There are some very minor glitches with the voltage but that is it.
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 15, 2022, 07:12:38 pm
I've tried it with booth DL24P and DL24M-H, both have the same issue with the dropouts. If I'm using the DL24P the current setting works properly though, no weird multiplier problems as with the M-H one...

Try running TestController in logging mode, I would like a log segment that includes a dropout.

Here you go, this is the log:
https://pastebin.com/LmD2BSPB (https://pastebin.com/LmD2BSPB)
and this is the table:
https://pastebin.com/fZmGe6hY (https://pastebin.com/fZmGe6hY)

Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 15, 2022, 07:49:31 pm
Hi! I've tested the new version with the ATorch DL24M-H and I have a few observations regarding the setup commands behaviour.

Try this version and see if it fixes dropout: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Maybe your load is the old software version, try running it as a DL24P

Please report back on both results.


I've tried it with booth DL24P and DL24M-H, both have the same issue with the dropouts. If I'm using the DL24P the current setting works properly though, no weird multiplier problems as with the M-H one...

vladobac: I don't want to update the firmware unless we know it works for sure, this way at least we can provide info for HKJ, you with the new fw and I with the original one.

Before and after the upgrade
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 15, 2022, 08:03:36 pm

I am testing an electronic load Atorch DL24M-H 600W - upgraded by Chinese firmware (due to record failures - described in my post # 2542) with this version TC 2.12. Everything works perfectly. I made some about 2 hours of battery discharge records and there were no problems with the program. Thanks to the author of the program for adding my type of load to the TC menu (I wouldn't be able to do that).

A minor problem is only when entering the discharge current via the keypad via the setup menu TC 2.12. It only accepts divisible values ​​or multiples of 1024. (anything with the format of the entered data?).
These discharge current values ​​can be set via the setup menu:
128m
256m
512m
768m
1,024
1,280
1,536
1,792
2,048
2,304
2,560
3,072
4,096
5,120
5,376
6,144
6,400
6,912
7,168
7,680
8,192
8,960
9,216
10,240
 and others...
However, most of the values ​​are reduced, and this reduced value is actually set. Larger currents around 10A go set quite well, but below 1A it's unusable. For example, the set 1A changes to 858mA ... I recommend entering the value of the discharge current using the buttons on the display.
I can't use all the features of TC, but I tried to import and export a few graphs (to compare the discharge curves), to trim and save the truncated records, I changed the number of records per second. Everything worked. So great program. If I come across a problem, I'll let you know.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 06:44:16 am
Try running TestController in logging mode, I would like a log segment that includes a dropout.

Here you go, this is the log:
https://pastebin.com/LmD2BSPB (https://pastebin.com/LmD2BSPB)
and this is the table:
https://pastebin.com/fZmGe6hY (https://pastebin.com/fZmGe6hY)

That explains it. There is no dropout, but the load sends wrong values once in a while.

A correct current report look like this:
;; COM3: Rx: CA CB 00 03 E7 CE CF
But sometimes I get:
;; COM3: Rx: CA CB 00 00 3E CE CF
As answer to a current? request.

I can fix it by always requesting a extra reading after huge changes in value, I will take a look at that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 07:03:46 am
A minor problem is only when entering the discharge current via the keypad via the setup menu TC 2.12. It only accepts divisible values ​​or multiples of 1024. (anything with the format of the entered data?).

I wonder if the format of the data is changed.
Try attached device definition.

You can see what I have changed just below: #metaSection Protocol2
If it do not work correctly you are welcome to experiment with the next few lines, they are the ones used to set and read current (Anything starting with ; is ignored)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 08:56:16 am
Before and after the upgrade

I am a bit sorry you upgraded, now you cannot test the new TestController where I try to filter a bit (By reading a extra time when value changes).
The filter works on both new and old protocol but the filter is only active on the current (I can add other values if needed).

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 16, 2022, 11:20:06 am
Before and after the upgrade

I am a bit sorry you upgraded, now you cannot test the new TestController where I try to filter a bit (By reading a extra time when value changes).
The filter works on both new and old protocol but the filter is only active on the current (I can add other values if needed).

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Don't worry, that is why I did not do the upgrade yet so we can test it all out before I do it. I can only do tests after work though, I only have the load at home...

Other: I've tried my Ridden DPS5005 PSU with TC (I just horribly bodged one of the other definitions because I still don't quite understand how it all works) and it worked just fine, so please, if you can add that to the list would be awesome. Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 12:04:34 pm
Don't worry, that is why I did not do the upgrade yet so we can test it all out before I do it. I can only do tests after work though, I only have the load at home...

Ok, I mixed up, I am not that used to have two people testing at the same time.

Other: I've tried my Ridden DPS5005 PSU with TC (I just horribly bodged one of the other definitions because I still don't quite understand how it all works) and it worked just fine, so please, if you can add that to the list would be awesome. Thanks!

I need to know what definition and what you did to it.
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 16, 2022, 12:23:08 pm
I need to know what definition and what you did to it.

I've changed the Riden DPH5005 file, and there is this line where I think it checks for the correct model number: "#verifyDevice 5205 Model?" I just replaced the 5205 to 5005 and it worked :D
They have a whole range of PSU-s they all look the same and more than likely they are all using the same comm. protocol so it would be nice just to add them all and mark the untested ones. I only have the DPS5005 but I'm pretty sure that here in the forum we can cover pretty much the whole range of them, they are very common PSUs.
By the way it is confusing that the filename is DPH5005 and the device that is listed in the file is 5205, is this a mistake or why this is so?

The DPH is buck-boost the DPS is buck only.

I can try to collect all the model numbers with communication option (not all have this feature enabled) for you from this range of PSUs, so you can add them.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 12:45:13 pm
I've changed the Riden DPH5005 file, and there is this line where I think it checks for the correct model number: "#verifyDevice 5205 Model?" I just replaced the 5205 to 5005 and it worked :D
They have a whole range of PSU-s they all look the same and more than likely they are all using the same comm. protocol so it would be nice just to add them all and mark the untested ones. I only have the DPS5005 but I'm pretty sure that here in the forum we can cover pretty much the whole range of them, they are very common PSUs.
By the way it is confusing that the filename is DPH5005 and the device that is listed in the file is 5205, is this a mistake or why this is so?

The DPH is buck-boost the DPS is buck only.

I can try to collect all the model numbers with communication option (not all have this feature enabled) for you from this range of PSUs, so you can add them.

In the attached file I have moved the model definitions to #metadef.
To add a new copy one of the #metadef sections and change the values according, test it and if it works, post the #metadef section here and I will include it.

Note: Remove the RidenDPH5005.txt file, it will interfere with this definition.



Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 16, 2022, 03:39:39 pm
Yes, it seems hard. This is my multi box (simplified for this test)
Code: [Select]
#cmdSetup multi Battery Parameters
:read: BatteryType?;
:write: mytest ("\""+hex(getElement(value,4))+"\"")
;:write: mytest ("\""+ hex(0x0c,1) +hex(0,4)+hex(1,4)+hex(2,4)+hex(3,4)+hex(4,4)+hex(5,4)+"\"")
; cannot get the control char 0c right!
:tip: Enter battery parameters
combobox NiCd 0 NiMh 1 LiIo 2 LiPo 3 LiFe 4 Pb 5


Where should I put the function to read the different battery types based on my selection how can I parse the different values??

I am not exactly sure what you are asking about.
You can use :readmath: to process read values. They can be used both in the #cmdSetup and the #scpiCmd tags.

Sometimes I don't know myself  :)

A few more tests, no success:

Code: [Select]
#cmdSetup multi Battery Parameters
;:write: mytest ("\""+hex(getElement(#,4))+hex(getElement(#,4))+"\"")
:write: mytest ("\""+hex(getElement(value,4))+hex(getElement(value,4))+"\"")
combobox NiCd 0 NiMh 1 LiIo 2 LiPo 3 LiFe 4 Pb 5
combobox 1Cell 1 2cell 2 3cell 3 4cell 4 5cell 5 6cell 6 7cell 7


Getting this with the first write. The values are read correctly. However, everything is sent in ASCII.
Code: [Select]
Tx <tx ("\""+hex(getElement(1,4))+hex(getElement(7,4))+"\"")>

With the second write, it's crashing:
Code: [Select]
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownEx
ception: No digits in number <>
"\""+hex(getElement(value,4))+____<----____hex(getElement(value,4))+"\""
        at dk.hkj.script.Script.expression(Script.java:1232)
        at dk.hkj.main.Support.processScriptInBrackets(Support.java:1173)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:346)
        at dk.hkj.main.SCPICommand.write(SCPICommand.java:366)
        at dk.hkj.devices.SetupFormats$MultiField.actionPerformed(SetupFormats.j
ava:4066)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: dk.hkj.vars.VarExceptions$ConversionException: No digits in number <>

        at dk.hkj.vars.Support.stringToLong(Support.java:54)
        at dk.hkj.vars.VarValueString.asLong(VarValueString.java:86)
        at dk.hkj.vars.Var.asLong(Var.java:214)
        at dk.hkj.script.FunctionsString$35.execute(FunctionsString.java:614)
        at dk.hkj.script.Script.parseValue(Script.java:269)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:475)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.expression(Script.java:1220)
        ... 41 more



Thanks again

Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 16, 2022, 06:44:49 pm

In the attached file I have moved the model definitions to #metadef.
To add a new copy one of the #metadef sections and change the values according, test it and if it works, post the #metadef section here and I will include it.

Note: Remove the RidenDPH5005.txt file, it will interfere with this definition.

Code: [Select]
#metadef
#idString Riden,Riden DPS5005
#name Riden DPS5005
#handle DPS5005
#author aszasza + rachdatu
#replacetext ModelId 5005
#removeline 12A
#replaceText MaxCurrent 5.0
#replaceText MaxVoltage 50.00
#replaceText MaxOPP 265
#replaceText MaxOCP 5.2
#replaceText MaxOCV 51

It works like this, all settings and voltage, current ect values are okay.

For the DL24M-H:
With your new version the current glitches are gone, it works pretty well but the current lags by like 1-2 seconds, this is expected because of the filtering you do. I think this is a win! BUT, If I use the DL24M-H definition, setting the current still isn't working properly , but if I use the DL24P definition its all good. So my theory is that they have changed the protocol with the new firmvare, we need someone to confirm this. I'm looking at you vladobac :D
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 07:08:38 pm
With the second write, it's crashing:

You can get multiple "tx" for a single message, they are from different stages of the processing, the latest stage is from the COM port.

When using getElement() the input must be a string with a couple of values like: "34 45 67" then you select what number you need with getElement().
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 07:13:50 pm
For the DL24M-H:
With your new version the current glitches are gone, it works pretty well but the current lags by like 1-2 seconds, this is expected because of the filtering you do. I think this is a win! BUT, If I use the DL24M-H definition, setting the current still isn't working properly , but if I use the DL24P definition its all good. So my theory is that they have changed the protocol with the new firmvare, we need someone to confirm this. I'm looking at you vladobac :D

There is not supposed to be any lag, the retry is much less than a second.

The current DL24M-H definition only works with the upgraded software, I may change names in next release to something like:
"DL24M-H" for old/current software
"DL24M-H V2" for updated software
If you look in the definition file you can easily see how it works.

The protocol is changed with the firmware and I know most of it, except I am not sure if I have the current setting correct yet.
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 16, 2022, 07:37:54 pm
There is not supposed to be any lag, the retry is much less than a second.

The protocol is changed with the firmware and I know most of it, except I am not sure if I have the current setting correct yet.

I'm not sure about others but mine is certainly quite slow to respond. Also, and this is interesting, if I run TC in debug mode the lag seems to be much less :-// not that this is a problem its just interesting...
I don't want to update mine unless you ask me to, so I can't comment on the protocol...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2022, 07:48:18 pm
I'm not sure about others but mine is certainly quite slow to respond. Also, and this is interesting, if I run TC in debug mode the lag seems to be much less :-// not that this is a problem its just interesting...
I don't want to update mine unless you ask me to, so I can't comment on the protocol...

Try logging at fast speed (0.01s) and then check the end of the table after a few minutes: What is the actual logging speed?
Title: Re: Program that can log from many multimeters.
Post by: aszasza on June 16, 2022, 08:59:37 pm
Try logging at fast speed (0.01s) and then check the end of the table after a few minutes: What is the actual logging speed?

My bad, sorry. So, it turned out that the DPS5005 can only do 1 respond/2 seconds or so, while the DL24M-H (with DL24P config) does like 3-4 replies every second. I had both of them connected so the DPS slowed down TC.
The lag is just there when I have both of them running and reporting current values, on the chart the DPS values are coming in quicker for some reason that is why I thought that there is a lag...

Other:
Is there some kind of documentation how scripting works because I really like the battery test user script by Pukker (altough its not working for me for some reason), but I'd like to extend it so it can do n full cycle tests together with the DPS PSU and the DL24 load.
I mean, charge the battery fully with the PSU properly, full CC/CV cycle, wait some time, discharge the battery fully with the load, wait some time and charge it again and so on. All configurable of course. What do you think?
I think a LOT of people would find this very useful but I'm just too noob to be able to pull this off yet, but willing to learn. :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2022, 06:48:43 am
My bad, sorry. So, it turned out that the DPS5005 can only do 1 respond/2 seconds or so, while the DL24M-H (with DL24P config) does like 3-4 replies every second. I had both of them connected so the DPS slowed down TC.
The lag is just there when I have both of them running and reporting current values, on the chart the DPS values are coming in quicker for some reason that is why I thought that there is a lag...

You can get more detailed information about communication speed by using "#COMMANDTIME?" on the command line.

Is there some kind of documentation how scripting works because I really like the battery test user script by Pukker (altough its not working for me for some reason), but I'd like to extend it so it can do n full cycle tests together with the DPS PSU and the DL24 load.
I mean, charge the battery fully with the PSU properly, full CC/CV cycle, wait some time, discharge the battery fully with the load, wait some time and charge it again and so on. All configurable of course. What do you think?
I think a LOT of people would find this very useful but I'm just too noob to be able to pull this off yet, but willing to learn. :)

TestController has two languages, one for expressions and other calculating stuff, it is partially documented here: http://lygte-info.dk/project/TestControllerFunctions%20UK.html (http://lygte-info.dk/project/TestControllerFunctions%20UK.html)

The other language is the scripting language, this is all commands starting with # and it is documented in the help window. Type # and a list will be shown, type or use the INS key to insert a command. The help and INS will adjust as you type the command.
These commands do not support any math for their arguments, i.e. a command may require a numeric parameter, it has to be a number and cannot be something like 4*5 or a variable name, BUT you can switch to the calculator format by using parentheses, i.e. (4*5) is legal and will work.
In a few cases the parentheses are not needed, like in #IF that always expects a expression.

A easy way to start on scripting is to let TestController create the scripts for you. In the log window right click and select "Generate scripts". The list shown will vary depending on what popups are open. The "Log event" popup can generate a script to open itself or a script to do the same as "Log event". The last can be used to generate a charge and a discharge script and then manually combine them.

Not all power supplies are safe to use when charging batteries, some will discharge the batteries when output is turned off and it may even damage the power supply. In my testing I have a relay between the power supply and the battery and only turn on the relay when I am charging.


Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 17, 2022, 12:21:49 pm
A minor problem is only when entering the discharge current via the keypad via the setup menu TC 2.12. It only accepts divisible values ​​or multiples of 1024. (anything with the format of the entered data?).

I wonder if the format of the data is changed.
Try attached device definition.

You can see what I have changed just below: #metaSection Protocol2
If it do not work correctly you are welcome to experiment with the next few lines, they are the ones used to set and read current (Anything starting with ; is ignored)

I tried it.

After switching on the TC and clicking on the "Setup" button, the Is value is read from the DL24M-H or DL24P, which is currently lit on the load display.

The DL24M-H (updated) has the correct command to read the setpoint from the display: #scpiCmd setCurrent? rx? 0x17 /1000

The DL24P has the correct command to read the setpoint from the display: #scpiCmd setCurrent? rx? 0x17 /100

It is not advisable to change it, because the TC Setup window will have an incorrect value.


Second command:
#scpiCmd setCurrent tx 2 (value) *dd

sends the required value Is to the electronic load.
It works correctly with the DL25P, but the DL24M-H (updated) does not.
No adjustment can be made by adjusting this value (by dividing or multiplying by any coefficient). It is a nonlinear dependence. The problem is on the Chinese software. Only the creator of the Chinese program would be able to help.
But for me, this is a negligible problem. Most often I use one value of the discharge current, which I can easily set with the buttons on the display.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2022, 12:52:30 pm
It works correctly with the DL25P, but the DL24M-H (updated) does not.
No adjustment can be made by adjusting this value (by dividing or multiplying by any coefficient). It is a nonlinear dependence. The problem is on the Chinese software. Only the creator of the Chinese program would be able to help.
But for me, this is a negligible problem. Most often I use one value of the discharge current, which I can easily set with the buttons on the display.

The DL24M-H uses the line with "#scpiCmd setCurrent tx 2 (value) *1000" to transmit the setting, the one above has a ; first on the line and is ignored.
The factor can be *dd, *10, *100 or *1000 nothing else and *dd is some special decimal encoding that is used on the DL25P and maybe or maybe not used on the DL24M-H
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 17, 2022, 01:10:40 pm
Before and after the upgrade

I am a bit sorry you upgraded, now you cannot test the new TestController where I try to filter a bit (By reading a extra time when value changes).
The filter works on both new and old protocol but the filter is only active on the current (I can add other values if needed).

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

With the updated DL24M-H, I have so few outages that it's irrelevant to me.
And does it also filter voltage, capacity and energy?
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 17, 2022, 01:24:04 pm
Try logging at fast speed (0.01s) and then check the end of the table after a few minutes: What is the actual logging speed?

My bad, sorry. So, it turned out that the DPS5005 can only do 1 respond/2 seconds or so, while the DL24M-H (with DL24P config) does like 3-4 replies every second. I had both of them connected so the DPS slowed down TC.
The lag is just there when I have both of them running and reporting current values, on the chart the DPS values are coming in quicker for some reason that is why I thought that there is a lag...

Other:
Is there some kind of documentation how scripting works because I really like the battery test user script by Pukker (altough its not working for me for some reason), but I'd like to extend it so it can do n full cycle tests together with the DPS PSU and the DL24 load.
I mean, charge the battery fully with the PSU properly, full CC/CV cycle, wait some time, discharge the battery fully with the load, wait some time and charge it again and so on. All configurable of course. What do you think?
I think a LOT of people would find this very useful but I'm just too noob to be able to pull this off yet, but willing to learn. :)

I also want to produce a fully automated battery capacity measurement, but I have one big problem. Modern e-bike batteries do not have an output voltage at the terminals unless you connect all the components of the bike: the motor, the display and the speed sensor pulses. For now, I'm bypassing all this by connecting all this to the battery and at the same time connecting the electronic load. It's very non-technical, but I don't know how to fool it yet (I have no experience with programming). The battery has Tx and Rx pins, but I don't know how to communicate with it to connect to my load without it being like a real bike.

If I do not have a motor, display and speed sensor connected to the battery and I press the button on the battery to display the remaining capacity, voltage will appear at the battery output for a while, but if it does not get the correct answer (via pins Rx and Tx) from the motor and speed sensor, the battery disconnects.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 17, 2022, 02:26:17 pm

In the attached file I have moved the model definitions to #metadef.
To add a new copy one of the #metadef sections and change the values according, test it and if it works, post the #metadef section here and I will include it.

Note: Remove the RidenDPH5005.txt file, it will interfere with this definition.

Code: [Select]
#metadef
#idString Riden,Riden DPS5005
#name Riden DPS5005
#handle DPS5005
#author aszasza + rachdatu
#replacetext ModelId 5005
#removeline 12A
#replaceText MaxCurrent 5.0
#replaceText MaxVoltage 50.00
#replaceText MaxOPP 265
#replaceText MaxOCP 5.2
#replaceText MaxOCV 51

It works like this, all settings and voltage, current ect values are okay.

For the DL24M-H:
With your new version the current glitches are gone, it works pretty well but the current lags by like 1-2 seconds, this is expected because of the filtering you do. I think this is a win! BUT, If I use the DL24M-H definition, setting the current still isn't working properly , but if I use the DL24P definition its all good. So my theory is that they have changed the protocol with the new firmvare, we need someone to confirm this. I'm looking at you vladobac :D

I confirm that the discharge current cannot be set correctly on the M-H. Just like you. I also have a single-channel DL24P at home and it works correctly there.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 17, 2022, 03:12:04 pm
With the second write, it's crashing:

You can get multiple "tx" for a single message, they are from different stages of the processing, the latest stage is from the COM port.

When using getElement() the input must be a string with a couple of values like: "34 45 67" then you select what number you need with getElement().

Ok, no crash anymore...Still a problem to read the second combobox line:

Code: [Select]
#cmdSetup multi Battery Parameters
:write: mytest ("\""+hex(getElement("0 1 2 3 4 5 6 7 8 9 10 11 12",value," "),4)+"\"")
combobox NiCd 0 NiMh 1 LiIo 2 LiPo 3 LiFe 4 Pb 5
combobox 1Cell 6 2cell 7 3cell 8 4cell 9 5cell 10 6cell 11 7cell 12

How do I read the second value of the multi combo with one (value) parameter?
Is there a second implicite value like value1 or something similar?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2022, 03:28:28 pm
How do I read the second value of the multi combo with one (value) parameter?
Is there a second implicite value like value1 or something similar?

There is multiple values in the value variable, that is the reason you need the getElement()
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2022, 03:29:35 pm
With the updated DL24M-H, I have so few outages that it's irrelevant to me.
And does it also filter voltage, capacity and energy?

No, I could add voltage, but capacity and energy would probably be a bad idea, because they change all the time.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on June 17, 2022, 04:32:18 pm
Netráp sa tým, je to pre mňa irelevantné. Toto ma trápi:

Chcem vyrobiť aj plne automatizované meranie kapacity batérie, no mám jeden veľký problém. Moderné batérie pre e-bike nemajú výstupné napätie na svorkách, pokiaľ nepripojíte všetky komponenty bicykla: motor, displej a impulzy snímača rýchlosti. Toto všetko zatiaľ obchádzam pripojením tohto všetkého k batérii a zároveň pripojením elektronickej záťaže. Je to veľmi netechnické, ale oklamať to zatiaľ neviem (nemám skúsenosti s programovaním). Batéria má piny Tx a Rx, ale neviem, ako s ňou komunikovať, aby som sa pripojil k mojej záťaži bez toho, aby bola ako skutočný bicykel.

Ak nemám k batérii pripojený motor, displej a snímač rýchlosti a stlačím tlačidlo na batérii pre zobrazenie zostávajúcej kapacity, na výstupe batérie sa na chvíľu objaví napätie, ale ak nedostane správnu odpoveď (cez piny Rx a Tx) od motora a snímača rýchlosti sa batéria odpojí.
Ak by mi niekto poradil ako na to alebo ma nasmeroval na nejaký správny web.
Title: Re: Program that can log from many multimeters.
Post by: iMo on June 17, 2022, 06:33:28 pm
Hi, do you plan to include the Owon BT35/41 handhelds?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 17, 2022, 06:41:17 pm
Hi, do you plan to include the Owon BT35/41 handhelds?

No, but check my notes here: http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html (http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html)
Somebody else has made it possible to use the Owen meters in TestController.
Title: Re: Program that can log from many multimeters.
Post by: iMo on June 18, 2022, 07:46:43 am
Hi, do you plan to include the Owon BT35/41 handhelds?

No, but check my notes here: http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html (http://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html)
Somebody else has made it possible to use the Owen meters in TestController.

I've found this Win10 based for any BLE controller, as they claim: https://github.com/jtcash/OwonB41T

PS: the question is whether those support several multimeters connected..
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2022, 07:56:05 am
I've found this Win10 based for any BLE controller, as they claim: https://github.com/jtcash/OwonB41T

PS: the question is whether those support several multimeters connected..

Using the "Single value" driver you can easily configure TestController for that.
https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Single_value (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Single_value)
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 18, 2022, 01:09:50 pm
I can't believe the amount of stuff that goes wrong with this 2/3 day simple project that has turned into weeks (not related to test controller, just everything else has gone wrong with it).

I fried the original DL24P board I have (my fault, shorted a serial line to 5V). I had to order a new one. The new one has a different arrangement for the bluetooth module (which I don't use anyway) but apart from that according to ATorch they should be identical.

Test Controller won't connect to it.

I can see from RealTerm the device is constantly sending:

> FF55010200000000000000000000000000000000000000000018000000003C0000000013

However no matter what I select in test controller, test controller doesn't attempt to ID it or respond to this signal. This seems to be another internal driver so I can't figure out what's happening?

Yes, I did try the new "DL24M-H" driver to see if it would connect. No dice.

Any idea what's going on? I assume they've slightly changed the ID or something and Test controller just can't see it

Attached is a picture of the old and new board side by side.

(New board on left, old board is mangled from me playing with it after it broke).

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2022, 01:28:51 pm
I fried the original DL24P board I have (my fault, shorted a serial line to 5V). I had to order a new one. The new one has a different arrangement for the bluetooth module (which I don't use anyway) but apart from that according to ATorch they should be identical.

Test Controller won't connect to it.

I can see from RealTerm the device is constantly sending:

> FF55010200000000000000000000000000000000000000000018000000003C0000000013

However no matter what I select in test controller, test controller doesn't attempt to ID it or respond to this signal. This seems to be another internal driver so I can't figure out what's happening?

You can probably get it working with that protocol:
Open the ATorchDevices.txt file
Remote the semicolons from:

;#metadef
;#idString ATorch,ATorch DL24P,
;#name ATorch DL24P
;#handle ATDL24
;#sections DCLOAD_DEVICE

Change the name:

#metadef
#idString ATorch,ATorch DL24PX,
#name ATorch DL24PX
#handle ATDL24
#sections DCLOAD_DEVICE

Restart TestController and try loading this device you have just created.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 18, 2022, 01:40:55 pm
Thanks HKJ,

Leave this with me though. I think it may have been more a user error problem.

Thanks though for your prompt response.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 18, 2022, 04:14:41 pm
Leave this with me though. I think it may have been more a user error problem.

Thanks though for your prompt response.

The protocol with  FF55 is a ATorch protocol that they uses on a lot of stuff, but it is more limited than the PX100 protocol. The loads usually support both.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 18, 2022, 10:09:12 pm
Earlier, I hadn't slept or eaten and probably made a balls of the setup which is why it didn't work with the standard DLP24 setup, it's working now.

Is there a complete list to all the functions supported?

With my fucking around, I've somehow managed to disable the bluetooth chip on the device! I don't really plan on using bluetooth to be honest, so not that worried, but I'd love to turn it back on just to have it.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 19, 2022, 09:09:31 am
@ HKJ and others writing device file for DPS and DPH supplies.
Thanks for that.

Added metadef for the DPS5015. Working.

#metadef
#idString Riden,Riden DPS5015
#name Riden DPS5015
#handle DPS5015
#author aszasza + rachdatu
#replacetext ModelId 5015
;#removeline 12A
#replaceText MaxCurrent 15.0
#replaceText MaxVoltage 50.00
#replaceText MaxOPP 600
#replaceText MaxOCP 15.1
#replaceText MaxOVP 51
#replaceText CurrentScaleFactor 100 (thought this would solve the current setting problem, but NO)

Removeline 12A can here be removed.

Had wrong current setting (10 times to low)
Tried "#replaceText CurrentScaleFactor 100"
Doesn't fix.

so:
Had to change:

; Current setting R/W
#scpiCmd ISet? holding? 0x01 /1000
#scpiCmd ISet holding 0x01 (value) *1000

to

; Current setting R/W
#scpiCmd ISet? holding? 0x01 /100
#scpiCmd ISet holding 0x01 (value) *100

for correct current settings.
Also had to change the 1000 factor to 100 in further settings.

I know/think for 5005 and other units this will be wrong.
How to make that changing according the actual unit, I don't know.

edit: I found it: no change to 1000 or 100, but to currenscalefactor. Works

About settings:
at #cmdSetup combobox Memory Main:
When selecting Mem no. reading out settings is OK,
but voltage settings then also changing to an undefinied setting.
Writing settings is OK.

Selecting en setting memory from Main tab works OK.

Sorry writing and talking according my IQ.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2022, 11:14:54 am
Added metadef for the DPS5015. Working.

Had wrong current setting (10 times to low)

I included your definition and I have added CurrentScaleFactor to all current settings. That is reading the actual values, ISET, SCPICmd ISet & MI.

Please check the modified definition
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 19, 2022, 12:10:18 pm
Added metadef for the DPS5015. Working.

Had wrong current setting (10 times to low)

I included your definition and I have added CurrentScaleFactor to all current settings. That is reading the actual values, ISET, SCPICmd ISet & MI.

Please check the modified definition

Checked as you ordered sir.  ;D
I also added CurrentScaleFactor to some settings left behind like OCP setting etc.
i.m.o. everything now correct.

Don't have one, but the definition for DPH5205? Should that be DPH3205? 32V / 5A
Couldn't find them on the internet, Riden official store also does not offer DPH5205

Was so crude to make that changes in the defenition file.

Made also some #removelines according the different specifications.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2022, 01:24:21 pm
Checked as you ordered sir.  ;D
I also added CurrentScaleFactor to some settings left behind like OCP setting etc.
i.m.o. everything now correct.

Don't have one, but the definition for DPH5205? Should that be DPH3205? 32V / 5A
Couldn't find them on the internet, Riden official store also does not offer DPH5205

Was so crude to make that changes in the defenition file.

Made also some #removelines according the different specifications.

I will user your definition file, but I believe that some of the CurrentScaleFactor has to 1000

You also restored the values? command to use /1000, that cannot be correct when the iset and iout command uses the scale.

I wonder about the DPH5205, maybe it is a never version of the DPH5005 (The original filename). If the original author sees our discussion here he can chime in.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on June 19, 2022, 02:04:34 pm

I will user your definition file, but I believe that some of the CurrentScaleFactor has to 1000

You also restored the values? command to use /1000, that cannot be correct when the iset and iout command uses the scale.

I wonder about the DPH5205, maybe it is a never version of the DPH5005 (The original filename). If the original author sees our discussion here he can chime in.

Yes, you are right, for lower current versions, CurrentScaleFactor must be 1000.
Have only DPS5015, so could not check others in real life.
about the values? You mean?

; VSet, ISet, VOut, IOut, Power
#scpiCmd values? holding? 0x00 /100;holding? 0x01 /CurrentScaleFactor;holding? 0x02 /100;holding? 0x03 /CurrentScaleFactor;holding? 0x04 /100

You have right.

Tested all as far I know, works fine (DPS5015) exept the tab for Memory settings.
Settings made there working fine, exept when you call an desired Memory number from drop-down menu, then the actual voltage setting on the DPS goes wrong.
Stored memory settings are fine. In the main tab you can recall them perfect.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 19, 2022, 02:32:06 pm
Tested all as far I know, works fine (DPS5015) exept the tab for Memory settings.
Settings made there working fine, exept when you call an desired Memory number from drop-down menu, then the actual voltage setting on the DPS goes wrong.
Stored memory settings are fine. In the main tab you can recall them perfect.

I cannot fix the memory stuff, I do not have this supply. Somebody with one has to do it.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 19, 2022, 04:47:15 pm
Checked as you ordered sir.  ;D
I also added CurrentScaleFactor to some settings left behind like OCP setting etc.
i.m.o. everything now correct.

Don't have one, but the definition for DPH5205? Should that be DPH3205? 32V / 5A
Couldn't find them on the internet, Riden official store also does not offer DPH5205

Was so crude to make that changes in the defenition file.

Made also some #removelines according the different specifications.

I will user your definition file, but I believe that some of the CurrentScaleFactor has to 1000

You also restored the values? command to use /1000, that cannot be correct when the iset and iout command uses the scale.

I wonder about the DPH5205, maybe it is a never version of the DPH5005 (The original filename). If the original author sees our discussion here he can chime in.

It's a DPH5005...probably I made a typo. There are so many different models.
Title: Re: Program that can log from many multimeters.
Post by: Chernobyl on June 19, 2022, 08:05:11 pm
Is this a known limitation of TestController or something that can be fixed?

It is a known bug and I will fix it when I get a couple of GPIB devices connected to TC.
For now you will have to use a AR488 for each device.

As a suggestion, to allow you to debug your code, couldn't you trick TC into thinking you have multiple GPIB instruments in your personal lab by creating duplicate device entries? This would allow you to test the AR488/GPIB communications code without actually needing to have more than one instrument connected. Basically, something like the below. TC shouldn't know the difference - from it's perspective it's just alternately polling two devices - they just happen to have the same GPIB address. And the instrument itself shouldn't care (it doesn't know where the commands are coming from).

Thoughts - would this help you out?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2022, 06:19:22 am
It's a DPH5005...probably I made a typo. There are so many different models.

Then it looks like there is two model ideas for the DPH5005, I will call one of them DPH5005-A

Looking back I saw it was a DPS5005 and DPH5005, i.e. no problems with model names.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2022, 06:21:01 am
As a suggestion, to allow you to debug your code, couldn't you trick TC into thinking you have multiple GPIB instruments in your personal lab by creating duplicate device entries? This would allow you to test the AR488/GPIB communications code without actually needing to have more than one instrument connected. Basically, something like the below. TC shouldn't know the difference - from it's perspective it's just alternately polling two devices - they just happen to have the same GPIB address. And the instrument itself shouldn't care (it doesn't know where the commands are coming from).

Thoughts - would this help you out?

Maybe, but it will depend on where the bug in the GPIB driver is. The driver contains logic to switch GPIB settings for each device.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 20, 2022, 01:17:29 pm
Hello

I have decided to put in standby the definition file for my Hyperion charger. My main issue is to decode the CRC algorithm for this device.
Without knowing the algorithm, it's difficult (at least for me) to send any command to the device.
I have created a github page https://github.com/daturach/Documentation/wiki/Hyperion-Charger-and-Test-Controller-(TC)-application (https://github.com/daturach/Documentation/wiki/Hyperion-Charger-and-Test-Controller-(TC)-application) with some explanation of different functions. There are many more... :P
The definition file is there as well. You can still use it to log data; well, is this not the main purpose of TC ?  ;)
I will update this thread if there is anything new from me.

I have installed the program (Hyperion Control & Data Suite) that goes with the charger. So, I know all its possibilities!

Thanks to HKJ for his excellent support.  :-+

See you  :)

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 20, 2022, 01:36:56 pm
I have decided to put in standby the definition file for my Hyperion charger. My main issue is to decode the CRC algorithm for this device.

Are you sure it is a CRC and not a simple checksum?
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on June 20, 2022, 04:44:20 pm
I have decided to put in standby the definition file for my Hyperion charger. My main issue is to decode the CRC algorithm for this device.

Are you sure it is a CRC and not a simple checksum?

It's probably a simple checksum because for some of the commands it's pretty easy to guess it. But I did not find it easy enough to have something right for any commands.
Maybe we can reverse engineer it...I would not know. Sorry.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 25, 2022, 10:58:50 am
Got myself a brand new spanking Peaktech 2025A.
Operating it with TCs Peaktech 2025 driver displays
the selected range but no output data.
So it basically connects.

Putty output is (for 969 Ohms):
+0969 3!H 
Repeated continuously.

CRLF is being used.

What needs to be done?

Moreover, not all function codes are the same between 2025 and 2025A.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2022, 01:41:45 pm
Got myself a brand new spanking Peaktech 2025A.
Operating it with TCs Peaktech 2025 driver displays
the selected range but no output data.
So it basically connects.

Putty output is (for 969 Ohms):
+0969 3!H 
Repeated continuously.

CRLF is being used.

What needs to be done?

It looks like I need to modify either "Single value" or "Block" driver.
Could you do a couple more measurements. I like to see reading of both high and low values to see how it sends it and both VDC and VAC would be nice.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 25, 2022, 02:22:36 pm
Here the codes for resistance:

Reading   Code

[attachimg=1]




For the weird chracater:
is seemingly decimal"1"

13 10 43 48 49 48 53 32 49 33 72 32 1 13 10

Some DC and AC voltages to follow soon
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2022, 02:38:03 pm
Here the codes for resistance:

I can see some issues in it, you might try using hex mode to see if there are more invisible characters.

The first number is obvious the display reading followed by the location of the decimal point, but where is the range value, i.e. ohm/kohm/Mohm indication.
I hope the !H contains the selected mode.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on June 25, 2022, 02:48:27 pm
More:
[attachimg=1]

Must stop for now. More tomorrow in hex mode
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2022, 02:57:55 pm
Must stop for now. More tomorrow in hex mode

It looks like the !H do not contain any information, but the control characters after may.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 25, 2022, 06:19:29 pm
@HKJ

The settings screen that allows you to set current etc, when you select a DL24, is that hard coded or is it possible to customise one for a controller?

I'm trying to build my own electronic load and want to integrate it with test controller. I'm just wondering what the best way to do that is.

It seems the simplest way would be to emulate a DL24 and just add my controller as a meta.

Thanks for all your work.
SD
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 25, 2022, 06:39:13 pm
@HKJ

The settings screen that allows you to set current etc, when you select a DL24, is that hard coded or is it possible to customise one for a controller?

I'm trying to build my own electronic load and want to integrate it with test controller. I'm just wondering what the best way to do that is.

It seems the simplest way would be to emulate a DL24 and just add my controller as a meta.

Thanks for all your work.
SD

Take a look at my Arduino projects:
https://lygte-info.dk/project/TestControllerArduino1%20UK.html (https://lygte-info.dk/project/TestControllerArduino1%20UK.html)
https://lygte-info.dk/project/TestControllerArduino2%20UK.html (https://lygte-info.dk/project/TestControllerArduino2%20UK.html)

All the device settings menus are defined in the device definition files, there are many possibilities.
See here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu)

The simplest way would not be to emulate a DL24, it is much better to do it with simple SCPI commands as shown in my Arduino examples.

One of the ideas with TestController is that it can handle high end devices and anything below including home made devices, in my work I need all of this.
Title: Re: Program that can log from many multimeters.
Post by: SpottedDick on June 25, 2022, 07:19:19 pm
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu)

Excellent, thank you!
Title: Re: Program that can log from many multimeters.
Post by: Oli.Hall on June 27, 2022, 12:55:51 pm
Earlier, I hadn't slept or eaten and probably made a balls of the setup which is why it didn't work with the standard DLP24 setup, it's working now.

Hi SpottedDick,

I have an ATorch DL24P (FW V5.1, purchased December 2021, w. integrated Bluetooth module) and I am also seeing the same issue as you were.
The DL24P is not detected by Testcontroller using the standard definition file, using the PX100 protocol.
I also used RealTerm to see the protocol and saw > FF55010200000000000000000000000000000000000000000018000000003C0000000013 being repeated.

Per HKJ's advice above, I edited ATorchDevices.txt and uncommented the old protocol definition and changed the device name to DL24PX.
I added a device using this new device type and it now finds the new device DL24PX, but without the functionality of the standard (PX100) protocol.

Did you get your DL24P to work using the standard (PX100) protocol? How did you do it please?

Thanks,
Oli.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 27, 2022, 01:08:30 pm
Did you get your DL24P to work using the standard (PX100) protocol? How did you do it please?

The DL24 series has 3 protocols:
The simple one (FF55....) that I is removed from the standard TC configuration
Protocol1 that has worked with DL24 until know
Protocol2 that is a modified version of Protocol1, either 1 or 2 will be supported, not both.

If you open the ATorchPX100Devices.txt file for the newest version of TestController you will see that each device has a Protocol1 or Protocol2 definition, changing the name will switch the protocol.

Protocol2 may not work correctly with current settings, I need verification on that.

If I get a report that Protocol2 works on the current DL24P units, I will add a extra entry for that.
Title: Re: Program that can log from many multimeters.
Post by: aronake on July 06, 2022, 05:57:32 pm
Hi HKJ

How to make #AskValues mode dependent?

This is for a frequency counter (Fluke PM6685). When I am in FREQ1 (frequency mode) or PER1 (period mode) I need to use Read? But when in TOT1 (count mode) need to use  FETC:ARR? –1.

I tried below, but did not work.

#askValues [mode:FREQ1]Read?;[mode:TOT1]FETC:ARR?–1;

This is the last thing I want to get to work, and will then have a device definition to share. The PM6685 is a subset of PM6681 and PM6680 so should work with them too.

Thanks for awesome software!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 06, 2022, 06:07:26 pm
This is for a frequency counter (Fluke PM6685). When I am in FREQ1 (frequency mode) or PER1 (period mode) I need to use Read? But when in TOT1 (count mode) need to use  FETC:ARR? –1.

I tried below, but did not work.

#askValues [mode:FREQ1]Read?;[mode:TOT1]FETC:ARR?–1;

It looks mostly correct, I believe you are missing a space before -1
Try checking you mode using:
=deviceMode(handle_in_quotes)

You can also use debug mode to see if the correct inquiry is sent to the device.
Title: Re: Program that can log from many multimeters.
Post by: Oli.Hall on July 07, 2022, 09:04:44 am
If you open the ATorchPX100Devices.txt file for the newest version of TestController you will see that each device has a Protocol1 or Protocol2 definition, changing the name will switch the protocol.

Thank you HKJ,

I had a chance to test today my Atorch DL24P with the Protocol1 and Protocol2 from the ATorchPX100Device.txt file. Unfortunately my DL24P does not seem to work with either Protocol1 or Protocol2. It only works with the old FF55... protocol by enabling this in ATorchDevices.txt.

ATorch makes two PC programs which I downloaded and tried in a virtual machine:
"01-DL24M DL24 electronic load software V1.0.2 version.zip" and "E-Tester PC soft -V2.0.1.exe"

V1.0.2 This software is more advanced and it appears to allow the program to remotely set the device parameters such as current, cut of voltage, time etc. It also supports choosing the device type, and choosing protocol1/2. Using protocol1 reads data from the device but it does not control of the device. Using protocol2 does not read any data from the device or control the device. Reading the release notes of this software, it says: "This software is suitable for all DL24 DL24P DL24M series electronic load products before December 2021.", maybe after December 2021 they removed the more fully featured protocol1/protocol2 from the DL24 series of devices?

V2.0.1 This software is more basic and only allows sending remote button presses to the "+" "-" "Setup" "Start/Stop" buttons similar to the mobile app. This app displays the device data such as voltage/current, but it does not appear to correclty send button presses to the device.

Around December 2021 ATorch made a revision to the DL24 which incorporated the Bluetooth into the main PCB, instead of a soldered on module. Maybe when they did this, they removed all the older (more featured) protocols from the firmware to make space in the MCU for the Bluetooth stack?

Can anyone else tell us if they have a DL24P with integrated bluetooth module which they have found can be controlled from TestController?

thanks,
Oli.
Title: Re: Program that can log from many multimeters.
Post by: aronake on July 07, 2022, 12:43:20 pm
This is for a frequency counter (Fluke PM6685). When I am in FREQ1 (frequency mode) or PER1 (period mode) I need to use Read? But when in TOT1 (count mode) need to use  FETC:ARR? –1.

I tried below, but did not work.

#askValues [mode:FREQ1]Read?;[mode:TOT1]FETC:ARR?–1;

It looks mostly correct, I believe you are missing a space before -1
Try checking you mode using:
=deviceMode(handle_in_quotes)

You can also use debug mode to see if the correct inquiry is sent to the device.

Hi,

Thanks for this. Still don't get it to work.

When the meter is asked for mode with FUNC?, it returns FREQ 1 for frequency and TOT 1 for counting. I then use #askModeMathFormat replace(value," ","") to remove the space so I can make it match with modes for #cmdMode.

Debug window then respond:
;; Found Fluke PM6685 on USB Serial Device (COM3) (COM3)
;; PM6685: Tx <FUNC?>
;; PM6685: Rx <"FREQ 1">
;; PM6685: Rx after :readmath: replace(value," ","") <"FREQ1">

So all good.

And everything works before i tired to add a different way of getting data for counting including pulse width and duty cycle. All are read with READ? except for count which I now want to add.

When switching to current values tab to start read from the meter i now get:

;; Cannot read from device PM6685, #askValues is not defined
;; PM6685: Rx as numbers <>

I suspect the problem is some colon, semicolon or parenthesis or something missing. But have been trying lots.

Also a related questions, if 3 modes use READ? to get the data and 1 mode use FETC:ARR? –1 to fetch data, how is this best written? Can more than one mode be covered by one Mode= statement or use one mode= for each mode?

If you be ok to look at the definition file it is here.

https://www.dropbox.com/s/pt1sk8lxf2md1hy/0%20Fluke%20PM6685.txt?dl=0 (https://www.dropbox.com/s/pt1sk8lxf2md1hy/0%20Fluke%20PM6685.txt?dl=0)

Thanks a lot!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2022, 01:00:42 pm
When the meter is asked for mode with FUNC?, it returns FREQ 1 for frequency and TOT 1 for counting. I then use #askModeMathFormat replace(value," ","") to remove the space so I can make it match with modes for #cmdMode.

Debug window then respond:
;; Found Fluke PM6685 on USB Serial Device (COM3) (COM3)
;; PM6685: Tx <FUNC?>
;; PM6685: Rx <"FREQ 1">
;; PM6685: Rx after :readmath: replace(value," ","") <"FREQ1">

So all good.

Still try the
=deviceMode("PM6685")
command to check the internal TC value is correct.


Also a related questions, if 3 modes use READ? to get the data and 1 mode use FETC:ARR? –1 to fetch data, how is this best written? Can more than one mode be covered by one Mode= statement or use one mode= for each mode?

You can list more modes with a comma between.
From Gossen Energy definition: #askValues VAL:L?[mode:Energy,Power];VAL:E?[mode:Power_Quality];mains:num?
Title: Re: Program that can log from many multimeters.
Post by: aronake on July 07, 2022, 01:37:32 pm
Here is my modification of the RIGOL DP811A definition to work with DP832A

https://www.dropbox.com/s/lktkfkbu5hnicyo/Rigol%20DP832A.txt?dl=0 (https://www.dropbox.com/s/lktkfkbu5hnicyo/Rigol%20DP832A.txt?dl=0)

DP832A should have same interface as DP832, so by modifying the ID string, should work for that too.

HKJ feel free to add to future releases.
Title: Re: Program that can log from many multimeters.
Post by: aronake on July 07, 2022, 02:15:39 pm

Still try the
=deviceMode("PM6685")
command to check the internal TC value is correct.

You can list more modes with a comma between.
From Gossen Energy definition: #askValues VAL:L?[mode:Energy,Power];VAL:E?[mode:Power_Quality];mains:num?

Hi HKJ

Great and thanks! I managed to figure it out (by using your suggestion with devicemode, that i previously did not get to work, probably because I did something wrong) and realized that the name of the mode is not what is coming out from the meter modified with #askmodemathformant, but what is mapped in the #cmdMode part.

Here is the definition:

https://www.dropbox.com/s/3hskie3dsnjfvqo/2022-07-07%20Fluke%20PM6685.txt?dl=0 (https://www.dropbox.com/s/3hskie3dsnjfvqo/2022-07-07%20Fluke%20PM6685.txt?dl=0)

Feel free to include in future releases. Happy I can contribute somehow to your excellent work!

Should work with PM6681 and PM6680B as PM6685 is a subset of features they have (1 vs 2 inputs).

As I do now, I measure frequency, period, pulse width, duty factor and count as different multimeter modes. Is there any way to do two or more modes at one time, so the meter swap between modes? Reading the Goosen Energy meter defintion I got some hint about this. Any more suggestions on where I can see more examples?

Title: Re: Program that can log from many multimeters.
Post by: aronake on July 07, 2022, 02:17:55 pm
Here a Fluke 8845A definition

https://www.dropbox.com/s/3qne20be5tbckqk/Fluke8845A.txt?dl=0 (https://www.dropbox.com/s/3qne20be5tbckqk/Fluke8845A.txt?dl=0)

Its basically a copy of 8846A with temperature and capacitance removed. There is this more elegant way of doing by covering multiple devices in one file, but I did not figure that out, so just made a new file. Anyway one more device covered.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2022, 03:18:12 pm
As I do now, I measure frequency, period, pulse width, duty factor and count as different multimeter modes. Is there any way to do two or more modes at one time, so the meter swap between modes? Reading the Goosen Energy meter defintion I got some hint about this. Any more suggestions on where I can see more examples?

TestController cannot dynamically change mode in a device, you can do that with scripting, but I doubt it would be very useful.
The mode system in TestController can handle multiple modes at a time, there is two ways to set it:
1) Device returns multiple mode values, either on the same command or multiple commands with ; between
2) A special definition in the mode popup.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2022, 03:25:13 pm
There is this more elegant way of doing by covering multiple devices in one file, but I did not figure that out, so just made a new file. Anyway one more device covered.

The more elegant way is placing a #meta tag before the definition, this will put the definition in a special #meta buffer and not include it.
Then you can place #metadef lines before the #meta tag, each #metadef will include a copy of the #meta buffer.
By itself this may not be useful, but because you can add editing commands after each #metadef you can do modifications to the basic definition.
See here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Creating_multiple_devices_from_one_configuration_file (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Creating_multiple_devices_from_one_configuration_file) for a list of editing commands.
The advantage of using this is a easy way to add multiple devices that uses the same or nearly the same commands and it also makes maintaining the definition easier.
There is no advantage to using #meta when TestController has loaded the devices, the only advantage is creating the devices and possible faster loading.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2022, 03:26:35 pm
And a big thanks for the definitions, they will all be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 07, 2022, 05:16:58 pm
V1.0.2 This software is more advanced and it appears to allow the program to remotely set the device parameters such as current, cut of voltage, time etc. It also supports choosing the device type, and choosing protocol1/2. Using protocol1 reads data from the device but it does not control of the device. Using protocol2 does not read any data from the device or control the device. Reading the release notes of this software, it says: "This software is suitable for all DL24 DL24P DL24M series electronic load products before December 2021.", maybe after December 2021 they removed the more fully featured protocol1/protocol2 from the DL24 series of devices?

This most be the software that supports my Protocol1 and maybe Protocol2

V2.0.1 This software is more basic and only allows sending remote button presses to the "+" "-" "Setup" "Start/Stop" buttons similar to the mobile app. This app displays the device data such as voltage/current, but it does not appear to correclty send button presses to the device.

This will be support for the FF55... protocol

Around December 2021 ATorch made a revision to the DL24 which incorporated the Bluetooth into the main PCB, instead of a soldered on module. Maybe when they did this, they removed all the older (more featured) protocols from the firmware to make space in the MCU for the Bluetooth stack?

Can anyone else tell us if they have a DL24P with integrated bluetooth module which they have found can be controlled from TestController?

Even a Bluetooth device must support a protocol behind the Bluetooth. If somebody finds the protocol I can work with them to implement it in TestController.
Title: Re: Program that can log from many multimeters.
Post by: Oli.Hall on July 08, 2022, 08:07:28 am
Even a Bluetooth device must support a protocol behind the Bluetooth. If somebody finds the protocol I can work with them to implement it in TestController.

The Bluetooth app is very basic. It only supports sending button presses to the device like the "+", "-", "Setup", "Start", "Stop" buttons. The Bluetooth app does not appear to be able to set parameters numerically. It only sends button presses and reads the displayed variables voltage / current / power / resistance.

I messaged ATorch to ask about what protocols this newer DL24P supports, and if it can have a firmware upgrade to restore the PX100 protocol1/protocol2. They replied:

From ATorch: "Hello, the DL24P protocol is an old firmware. Yes, the protocol is not so complete. At present, only the DL24M protocol is relatively complete. The DL24P cannot support all the DL24M protocols."

I messaged them again to ask if they had removed the PX100 protocol from newer DL24P models, and can I install a different firmware to put back the PX100 protocol. I will update here when they reply.

thanks,
Oli.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 09, 2022, 12:05:12 am
Hi HKJ,

I am working to create a driver file for the Owon TAO3000 series of tablet oscilloscopes.  Basically be able to log the measurements the scope does such as cycle rms, frequency, etc.  This instrument supports SCPI so I though it would be simple.  But, when returning values this instrument puts a characters before, after the number and includes units with no space after the number.  Using Test Controller in Debug mode the below is a query, result showing the query returned format:
   ;; TAO3104: Tx <:measurement:ch4:squaresum?>
   ;; TAO3104: Rx <Vr : 959.3mA->>

CH4 on this scope is configured for a current probe hence the "mA" units for milliamps.  Just putting the query in #askValues like
   #askValues :measurement:ch4:squaresum?

Gives NaN NaN NaN Java errors.  I then tried #askValueReadFormat
   #askValuesReadFormat xu
and that got rid of all the Java Errors but always returns 0 for the value.

Can you suggest an #askValuesReadFormat that could work with this query returned format?

Also, how to handle the "m" as in milli to get the power of 10 correct?  Would that be something in #value other than "D4"?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 09, 2022, 06:43:47 am
I am working to create a driver file for the Owon TAO3000 series of tablet oscilloscopes.  Basically be able to log the measurements the scope does such as cycle rms, frequency, etc.  This instrument supports SCPI so I though it would be simple.  But, when returning values this instrument puts a characters before, after the number and includes units with no space after the number.  Using Test Controller in Debug mode the below is a query, result showing the query returned format:
   ;; TAO3104: Tx <:measurement:ch4:squaresum?>
   ;; TAO3104: Rx <Vr : 959.3mA->>

CH4 on this scope is configured for a current probe hence the "mA" units for milliamps.  Just putting the query in #askValues like
   #askValues :measurement:ch4:squaresum?

Gives NaN NaN NaN Java errors.  I then tried #askValueReadFormat
   #askValuesReadFormat xu
and that got rid of all the Java Errors but always returns 0 for the value.

Can you suggest an #askValuesReadFormat that could work with this query returned format?

It looks like you get 3 values in the answer: "Vr"  ":"  "959.3mA->"
And the 3 NaN confirms it.

#askValuesReadFormat xxs

This means you have to suppress the two first values and use the "s" to handle the SI prefix.

Also, how to handle the "m" as in milli to get the power of 10 correct?  Would that be something in #value other than "D4"?

You must not send anything but basic unit into TestController, sending millis, micros, kilos it not allowed. This must be adjusted during the reading.
The #askValuesReadFormat with a "s" format handles this.
Title: Re: Program that can log from many multimeters.
Post by: Oli.Hall on July 09, 2022, 01:08:34 pm
I'm working on the Keysight 34970A datalogger (via serial) as we speak :)

Hi Bobby,

How far did you get with your device file for the HP/Agilent 34970A datalogger?
Would you be willing to share your device file and any relevant knowledge you discovered about using this device with TestController please?

thanks,
Oli.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 09, 2022, 03:10:17 pm
HKJ,

#askValuesReadFormat xxs works like a charm.   :-+

I did try variations last night but I guess it was too late on a Friday to think clearly.
Title: Re: Program that can log from many multimeters.
Post by: robint on July 15, 2022, 10:36:43 pm
Hi HJK

Looks like a great work for test labs

Asking a stupid question.  I have installed your app but it seems it only wants to work with old school COM ports.  I have Agilent 34461a which has usb2 out and goes to my pc usb2 in.  I can read the port its a Keysight USB - Test and Measurement thing.  It shows the DMM internal memory DATA1.csv and thats all.  OBTW the note on your app says I need a FW update to 3.0 or more.  (I am on 2.17 and I havent done this yet being wary of FW updates)
But some posts refer to a VCP virtual com port + s/w - these offerings look expensive $100

Can your app work with usb instruments - if so how?

If I can get this to work I will gladly donate and contribute to your cause :-DMM

Ive gpt an old XP laptop Acer still going strong after 20 years btw.  it has a com printer port, would a physical USB to RS232 Serial Port 9 Pin DB9 Cable Serial COM Port Adapter Convertor £2.39 work?  assuming your app is ok with XP (life was so much simpler back then)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 16, 2022, 04:44:41 am
Asking a stupid question.  I have installed your app but it seems it only wants to work with old school COM ports.  I have Agilent 34461a which has usb2 out and goes to my pc usb2 in.  I can read the port its a Keysight USB - Test and Measurement thing.  It shows the DMM internal memory DATA1.csv and thats all.  OBTW the note on your app says I need a FW update to 3.0 or more.  (I am on 2.17 and I havent done this yet being wary of FW updates)
But some posts refer to a VCP virtual com port + s/w - these offerings look expensive $100

Use network, i.e. Socket or LXI connection. It will probably work with the old FW, but some selection in the "setup popup" will not.

(http://lygte-info.dk/pic/cpf6/Devices1.png)

I have a couple of Keysight meters connected, if you meter report itself as Agilent you will have to modify the definition file. It is these two lines that needs modification:
#idString Keysight Technologies,34461A,
#name Keysight 34461A
In the file "Keysight344xxA.txt"

When you have everything working, please post the modification and I will include it in the next release.


Can your app work with usb instruments - if so how?

Mostly I only support serial ports (I support HID on Windows for Brymen). Java do not have any native support for USB, i.e. I have to use an external library and there is a very good one for serial that works on Windows, Linux, Mac and a few more (Because the program is in Java it works on many systems).

Ive gpt an old XP laptop Acer still going strong after 20 years btw.  it has a com printer port, would a physical USB to RS232 Serial Port 9 Pin DB9 Cable Serial COM Port Adapter Convertor £2.39 work?  assuming your app is ok with XP (life was so much simpler back then)

If Java works on the computer then TestController also works. As interface to devices it can use serial (Both old style and USB based) and network.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 16, 2022, 11:31:00 am
V2.19 is up
It is mostly new devices, but there is also a few minor changes to the software.
   Added: Device "Search socket" will connect to unknown SCPI devices (They must return a answer to *idn?)
   Added: Increased digit support in formats from 9 to 15.
   Added: AIM-TTI TGF4042, AIM-TTI TGF4082, AIM-TTI TGF4162, AIM-TTI TGF4242 function generator (Thanks PL)
   Added: ATorch DL24-old, this definition was already present, but disabled.
   Added: parseSI() & parseHMS() functions.
   Added: ET5410A+ Electronic Load (Thanks PL)
   Added: R&S RTC1002, HMO1202 Oscilloscopes (Thanks PL)
   Added: Fluke 8845A DMM (Thanks aronake)
   Added: Fluke PM6685 Frequency counter (Thanks aronake)
   Added: Rigol DP832A power supply (Thanks aronake)
   Added: Peaktech 2025A DMM (Thanks Messtechniker)
   Added: Riden DPS5015 power supply and changed to #metadef format making it easy to add other Riden supplies (Thanks Pukker)
   Fixed: ATorch  DL24xxx no more dropouts
   Added: Mastech MS6514 thermometer (Thanks SpottedDick)

The "Search socket" got a extra function, it will now open a connection to any devices that answer a *idn? request on a known socket, even if the device is not known in TestController.
For the unknown devices it is possible to send (SCPI) commands and read the answers.

For the formats I have increased the number of possible digits, this is mostly for frequency counters.
Title: Re: Program that can log from many multimeters.
Post by: Cavhat on July 17, 2022, 01:34:19 am
When I download the latest from your website, I get v.2.12 instead of 2.19--you may want to update your download link.
Title: Re: Program that can log from many multimeters.
Post by: robint on July 17, 2022, 01:58:57 am
Hi HJK
followed your info
connected LAN from 34461a (switched on LAN etc) to my modem router 192.168.0.1  Virgin hub 3
I find my dmm at 192.168.0.25 - and DMM reports link ok.

but your app doesnt seem to talk to my router? |O
nothing is listed as connected?

have I set up your app properly?

btw THIS IS WHAT DEBUG.BAT SAID

;; jSerialComm version: 2.9.1
;; Start thread for: COM3
;; Stopping thread for: COM3
;; COM3: Close
;; Start thread for:  - Keysight 34461A
;; Start thread for: 192.168.0.25 - Keysight 34461A
;; Start thread for: 192.168.1.41 - Keysight 34461A
;; Stopping thread for: 192.168.1.41 - Keysight 34461A

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
;; Stopping thread for: 192.168.0.25 - Keysight 34461A
;; Stopping thread for:  - Keysight 34461A
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 17, 2022, 04:34:15 am
When I download the latest from your website, I get v.2.12 instead of 2.19--you may want to update your download link.

There must be a cache somewhere that delays the update. In my experience caches are usually updated within a hour, but here it is obvious much slower.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 17, 2022, 04:44:26 am
Hi HJK
followed your info
connected LAN from 34461a (switched on LAN etc) to my modem router 192.168.0.1  Virgin hub 3
I find my dmm at 192.168.0.25 - and DMM reports link ok.

Try typing the command:
#DISCOVER?
On the command line in the "Commands" window.

have I set up your app properly?

btw THIS IS WHAT DEBUG.BAT SAID

;; jSerialComm version: 2.9.1
;; Start thread for: COM3
;; Stopping thread for: COM3
;; COM3: Close
;; Start thread for:  - Keysight 34461A
;; Start thread for: 192.168.0.25 - Keysight 34461A
;; Start thread for: 192.168.1.41 - Keysight 34461A
;; Stopping thread for: 192.168.1.41 - Keysight 34461A

;; Use "Load devices" page for selecting devices to load. Most devices will only load if they are connected and ready.
;; Stopping thread for: 192.168.0.25 - Keysight 34461A
;; Stopping thread for:  - Keysight 34461A

It looks like you have defined two meters on two different addresses (This is perfectly legal).

How is the network on your PC configured?
Open a DOS command line and type:
IPCONFIG

In this line you will probably want the 3 first groups to match the ones used in your meter and the last to be different*.
  IPv4 Address. . . . . . . . . . . : 10.0.0.190
If that is not the case, adjust the IP address on the meter.


*This depends on the line:
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
In the above case it is correct, but  if the last group is non-zero it is even more restricted.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on July 17, 2022, 01:05:37 pm
@HKJ:
Some notes to add to the Peaktech 2025A definition file "Peaktech2025A.txt"
Should fit nicely in the Notes window :):

-----------------------------------------------------------------------
Ensure that "RS232" on the Peaktech 2025A is off when "Test
Controller" is trying to detect the meter for the first time.

Remember to disable Auto Power Off (APO) for long term
logging: press and hold SELECT while switching the meter on.
Meter will beep after 15 minutes and several times thereafter
indicating that APO is off.
-----------------------------------------------------------------------
Title: Re: Program that can log from many multimeters.
Post by: robint on July 17, 2022, 01:51:29 pm
Well thnx for trying and i followed your tips.  I tried a direct lan link to my laptop no luck then I concluded that the lan on my dmm is not responding to dhcp from ny laptop and it wont accept manual IP setting.  So this is too nerdy for me and would need a skilled it wizard who could check it properly.  Sadly I cant go any further with this and will live with dl the internal mem csv via my usb and just squirt that inti an excel sheet.  Bit clumsy and prone to blunders but I can live with it for now.  Maybe an Arduino nerd will have dabbled here. I was surprised what you could do on a breadboard.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 17, 2022, 05:27:38 pm
Some notes to add to the Peaktech 2025A definition file "Peaktech2025A.txt"
Should fit nicely in the Notes window :):

They will be included in next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 17, 2022, 05:28:35 pm
Well thnx for trying and i followed your tips.  I tried a direct lan link to my laptop no luck then I concluded that the lan on my dmm is not responding to dhcp from ny laptop and it wont accept manual IP setting.  So this is too nerdy for me and would need a skilled it wizard who could check it properly.  Sadly I cant go any further with this and will live with dl the internal mem csv via my usb and just squirt that inti an excel sheet.  Bit clumsy and prone to blunders but I can live with it for now.  Maybe an Arduino nerd will have dabbled here. I was surprised what you could do on a breadboard.

I would suggest getting some help and manually program a IP address on the meter.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 27, 2022, 04:09:11 pm
Hi HKJ,

I am doing an update to the GW Instek ASR2000 driver file.  Depending on operating mode some Setup functions don't apply and the instrument throws a "SCPI Error" box up on the screen.  The method to clear this error box per GW Instek factory is to do:
   :SYST:ERR?
which retrieves the error at the top of the error stack/list and decrements the stack.  Once the list is empty the error box goes away and you can see things on the instrument screen again.

I tried to add a control to the Setup to send that command and display the error text for each button push.  Specifically, I tried:

#cmdSetup text SCPI_Error
:read: :SYST:ERR?
:write: :SYST:ERR?

As written above the second time you click the button you get :SYST:ERR? followed by the text box contents which then confuses the instrument throwing yet another error. 
Unfortunately, this command does not work without the "?".  Sending just :SYST:ERR also sets a SCPI Error.

Is there a control in TC that would allow
   Does nothing until you push the button
   When you push the button it sends just :SYST:ERR?
   After sending the query it displays the returned text string
   Next time you hit the button it sends just :SYST:ERR? with no other text including not the previous text string

If there is no standardized way to do this we can work around it.

Thanks.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 28, 2022, 06:44:12 am
Is there a control in TC that would allow
   Does nothing until you push the button
   When you push the button it sends just :SYST:ERR?
   After sending the query it displays the returned text string
   Next time you hit the button it sends just :SYST:ERR? with no other text including not the previous text string

If there is no standardized way to do this we can work around it.

There is no control to inquire a value on demand, maybe that could be a useful addition.

But it is easy to get around your problem, there are 3 formats for commands:
:write: xxx
:write: xxx #
:write: xxx (value)
The first will add the value after the command, the second will replace # with the value, the 3. will use the calculator and the variable value will be replace with the value, but there is not requirement that you specify "value" in the parentheses, i.e. :write: xxx ( ) is valid and will not include any value.



Title: Re: Program that can log from many multimeters.
Post by: gby on July 28, 2022, 12:27:21 pm
HKJ,

Per your suggestions I tried the following control in TC Ver 2.19:

#cmdSetup text Clear_SCPI_Err
:read: :SYST:ERR?
:write: :SYST:ERR? ()

When I click the Set button no message seems to be sent.  When I run in debug mode the log does not show a message being sent and only a long list of Java errors right after clicking the Set button:
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$ExpectedException: Value
____<----____
        at dk.hkj.script.Script.parseValue(Script.java:284)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
plus many more error lines

Seems like the empty ()'s cause issues and you do need to have something in the ()'s.  So, I changed it to have an empty string:
#cmdSetup text Clear_SCPI_Err
:read: :SYST:ERR?
:write: :SYST:ERR? ("")
and that got rid of the Java errors.  But, the text box no longer shows any returned text even though there is returned text.  Below is from debug log:
;; ASR2100: Tx <:SYST:ERR?>
;; ASR2100: Rx <+0,"No error">
showing the returned text.  I would expect the text "+0,No error" would show in the text box but the text box remains blank/empty after every Set button click.

Removing the ("") from the above does work to display the returned text in the text box.  But,  you have to manually delete the existing text before clicking the set button.

So, any suggestions on how to get TestController to send no argument on the write from the Set button click and still display the returned text?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 28, 2022, 12:56:21 pm
So, any suggestions on how to get TestController to send no argument on the write from the Set button click and still display the returned text?

I forgot the calculator don't like a empty expression.
Maybe the problem is that you send the command twice, once in the :write: and second in the :read:
Maybe you need to use some sort of dummy command in the :write:
Title: Re: Program that can log from many multimeters.
Post by: gby on July 28, 2022, 01:27:33 pm
Good suggestion.  Really only want to do the read when clicking the button so the :write: really should be a no operation.  I changed the write to

:write: *IDN? ("")

and all seems working now.  I chose *IDN? since I did not know of a no opearation command to send and this one should have no side effects.

Not sure why the instrument did not like it before since sending

:SYST:ERR?;:SYST:ERR?

in TC's command line seems to work.

Thanks for your help.

Attached is the updated GW Instek ASR2000 device file to include in the next Test Controller release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 28, 2022, 01:57:26 pm
Good suggestion.  Really only want to do the read when clicking the button so the :write: really should be a no operation.  I changed the write to

:write: *IDN? ("")

and all seems working now.  I chose *IDN? since I did not know of a no opearation command to send and this one should have no side effects.

Not sure why the instrument did not like it before since sending

:SYST:ERR?;:SYST:ERR?

in TC's command line seems to work.

Thanks for your help.

Attached is the updated GW Instek ASR2000 device file to include in the next Test Controller release.

It will be included in the next release.

Did :SYST:ERR?;:SYST:ERR? return one or two copies of the message? My guess is one.
Title: Re: Program that can log from many multimeters.
Post by: gby on July 28, 2022, 02:30:46 pm
Fresh starting TC and doing :SYST:ERR?;:SYST:ERR? got two valid replies.  See below debug output.

:SYST:ERR?
;; ASR2100: Tx <:SYST:ERR?>
;; ASR2100: Rx <+0,"No error">
;; +0,"No error"
:SYST:ERR?
;; ASR2100: Tx <:SYST:ERR?>
;; ASR2100: Rx <+0,"No error">
;; +0,"No error"

I have sometimes seen odd behavior before with TC when a write returns a value.  Normally a write does not return a value but this instrument does not recognize :SYST:ERR without the "?"
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 28, 2022, 04:08:05 pm
I have sometimes seen odd behavior before with TC when a write returns a value.  Normally a write does not return a value but this instrument does not recognize :SYST:ERR without the "?"

Generally using a ? command with :write: is not supposed to give any problems, the return value is supposed to be discarded.
For more tricky situations using the SCPIx driver with its commands (tx, txrx, txrx?...) is a solution.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 01, 2022, 02:04:07 am
Just want to provide some more praise for your work on this software - I am gradually amalgamating a lot of the test equipment at my work into an automated testing system to save time and remove human error - entirely based around TestController due to its flexbility.

I have a query:
One of our devices is an Itech IT8514C+ electronic load. While the included driver and definition file for this are reasonably comprehensive, there are a couple of functions I have found missing (specifically, set/read Von).
While I can implement this from SCPI, it would require me to write a whole new definition for the device, as the existing IT85xx driver uses frame/block communication. As far as I can understand, this is an "internal" driver - built into the .jar file - is that correct?
Is there any way for such drivers to be branched out into a separate directory structure or similar in future releases, so that they may be modified by end users? Or perhaps you could add these functions when you have the time?


The following is from the BK 8500 frame programming information:
[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 01, 2022, 05:32:42 am
I have a query:
One of our devices is an Itech IT8514C+ electronic load. While the included driver and definition file for this are reasonably comprehensive, there are a couple of functions I have found missing (specifically, set/read Von).
While I can implement this from SCPI, it would require me to write a whole new definition for the device, as the existing IT85xx driver uses frame/block communication. As far as I can understand, this is an "internal" driver - built into the .jar file - is that correct?
Is there any way for such drivers to be branched out into a separate directory structure or similar in future releases, so that they may be modified by end users? Or perhaps you could add these functions when you have the time?

That command is not documented in the Itech frame communication documentation and due to differences in protocol it do not use the same internal driver as BK. It is fairly trivial (for me) to add other commands to the implemented protocol, but I only want to add supported commands.
My ITech loads to not response to any SCPI commands, only to the frame communication. It makes me suspect the SCPI is implemented in the driver on the PC.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 01, 2022, 06:49:52 am
I didn't have a copy of the ITech frame protocol handy, but have just downloaded it from their website (after registering etc).

I have attached page 31 which lists the Von frame codes for the IT8500 series. They appear to match the frame commands for the BK.
[attachimg=1]

Our ITech load also didn't respond to SCPI commands, until I changed it in the System menu: System > Protocol > FRAME | SCPI
[attach=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 01, 2022, 08:37:15 am
I didn't have a copy of the ITech frame protocol handy, but have just downloaded it from their website (after registering etc).

I have attached page 31 which lists the Von frame codes for the IT8500 series. They appear to match the frame commands for the BK.

My Itech loads do not have a configuration setting for "Protocol", i.e. they must be frame protocol only.

You can download a new version of TestController (jar file only) here: http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar) use it to replace the old .jar file. Remember to check version (Configuration About), it must be v2.22 (Due to caching updates may not be immediately available)
It supports Von and I have added settings for it in the attached definition (They are on the "Mode limit" page).

The documentation is wrong, it list Von as a single byte setting!
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 04, 2022, 07:47:12 am
I have this 10 Channel 12 bit "ADC_10_F103C".

[attachimg=1]

It outputs the following:

[attachimg=2]

Baud 115200/8/1/None


Maybe you want to include this item in TC.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2022, 08:22:54 am
I have this 10 Channel 12 bit "ADC_10_F103C".

...

Maybe you want to include this item in TC.

It looks like it is easy to add with the block driver (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)))

If you make a definition I will include it, but I am not sure it belongs in the main list, it is probably better on one of the DIY pages.

Where did you get it from?
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 04, 2022, 12:40:47 pm
Simply search "10 channel 12bit DAC USB". This item is carried by
amazon.de
de.aliexpress.com
joom.com
arduino-tech.com
chinaltech.com
ebay.de
and others when conducting a Germany-centric search.

It is available with many different names:
Dollatek USB
STM USB
Denash 10Kanal
STM32 UART ADC
and many others.

When things cool down a bit, I will try to make a definition
based on the block driver.

Which definition might be a useful starting point for a modification?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2022, 01:23:23 pm
When things cool down a bit, I will try to make a definition
based on the block driver.

Which definition might be a useful starting point for a modification?

The driver is fairly new and not many devices uses it.
One is: Mastech MS6514

The idea is to start on "CH0:" and then collect all 10 channels in one data block. Then you just need a line that parses the 10 values.
But I can see I am missing a parser for ascii floating point, I will add that and if you get started before I release a new version, you can ask for a .jar file with it. If the number between the channel and the volt is the ADC reading, you can use the ascii int parser and scale it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 06, 2022, 09:41:42 am
After having successfully integrated this ADC within Profilab - see fig. ,

[attachimg=1]

TC integration is next.

With this rudimentary definition file

[attachimg=2]

the ADC is found and the channels 0 to 9 are listed. Yay!

Next I'll  probably need your ascii floating point parser
(together with a few hints on how to configure it).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 06, 2022, 09:57:22 am
Next I'll  probably need your ascii floating point parser
(together with a few hints on how to configure it).

http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
It is version 2.23 and it may be some time (Usually not more than an hour) before you can download it, please check you got the correct version.

The floating point format uses the letter e, this means you will need 10 of 111e5 on the #rxFormat line where the 111 is replaced with the actual position in the message of the number.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 06, 2022, 01:18:50 pm
OK. Now running V2.23. But still in trouble  :)

#rxStart 1                                                                                                     Reading should start with char 1
#rxLength 170                                                                                              Reading should end with char 170
#rxFormat 10e5 20e5 30e5 40e5 50e5 60e5 70e5 80e5 90e5 100e5         Reading extracts char 10 to14 20 to24 etc.

#askValues Values?                                                                                     
Should insert the measured values the 10 bins of "Current values"

What is wrong? All I ever get is the response :
 ;; ADC10: Rx as numbers <No data (timeout?)>
 in the Commands window

In the debug windows I can see this data coming in:

;; COM8: Rx: 31 32 33 39 09 31 2E 30 30 31 56 0D 0A 43 48 31 3A 31 32 33 38 09 30 2E 39 39 36 56 0D 0A 43 48 32 3A 31 32 33 39 09 30 2E 39 38 32 56 0D 0A 43 48 33 3A 31 32 33 33 09 30 2E 39 39 33 56 0D 0A 43 48 34 3A 31 32 34 30 09 30 2E 39 39 39 56 0D 0A 43 48 35 3A 31 32 33 32 09 31 2E 30 30 30 56 0D 0A 43 48 36 3A 31 32 32 33 09 30 2E 39 38 36 56 0D 0A 43 48 37 3A 31 32 33 37 09 31 2E 30 30 31 56 0D 0A 43 48 38 3A 31 32 33 37 09 30 2E 39 39 36 56 0D 0A 43 48 39 3A 31 32 33 38 09 31 2E 30 30 33 56 0D 0A 0D 0A 43 48

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 06, 2022, 01:33:33 pm
OK. Now running V2.23. But still in trouble  :)

#rxStart 1                                                                                                     Reading should start with char 1

Reading start at CH0 text:

#rxStart CH0

According to the table you posted first number is a character 10, next number 17 characters later.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on August 07, 2022, 12:09:09 am
I found a small bug in the Siglent SDM3065X device profile, one of the resistance ranges were not correctly specified, it was setup as a 2MOhm range, when it is actually a 1MOhm, I have corrected the issue in the definition file, the updated file is attached.

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 07, 2022, 07:34:17 am
Got it! ADC10F103C now works with TC.



Definition file enclosed

@HKJ:Thanks formaking this happen.
You may either include this definition file in the mainstream definition file folder
or on your DIY page.

 [attachurl=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 07, 2022, 08:16:40 am
Got it! ADC10F103C now works with TC.

Definition file enclosed

@HKJ:Thanks formaking this happen.
You may either include this definition file in the mainstream definition file folder
or on your DIY page.

I will include it.

One note about the chart:
Right click and select layout.
The select "Sync" page

Here you can combine all scales, to avoid using all the space on scales. Only caveat is that it messes up auto scaling (auto scaling works only on the master curve), use manual scaling to get around that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 07, 2022, 08:21:19 am
I found a small bug in the Siglent SDM3065X device profile, one of the resistance ranges were not correctly specified, it was setup as a 2MOhm range, when it is actually a 1MOhm, I have corrected the issue in the definition file, the updated file is attached.

Thanks, I will update the definition in next release.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 07, 2022, 09:55:14 am
Got it! ADC10F103C now works with TC.

Definition file enclosed

@HKJ:Thanks formaking this happen.
You may either include this definition file in the mainstream definition file folder
or on your DIY page.

I will include it.

One note about the chart:
Right click and select layout.
The select "Sync" page

Here you can combine all scales, to avoid using all the space on scales. Only caveat is that it messes up auto scaling (auto scaling works only on the master curve), use manual scaling to get around that.

Thanks for the hint. So many channels...

Since this worked quite well, I have a BME 280 sensor (temp., rel. humi and atm. pressure) waiting.
TC integration should be similar. Wait and see....
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 07, 2022, 02:39:09 pm
[attach=1]Now to TC integration of the processor output for the BME 280 sensor:

Here the output:



Why does TC stop at this

;; COM5: Rx: <Ut:524288 Up:524288 Uh:32768> 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38
;; (COM5) Did not find any match for: Ut:524288 Up:524288 Uh:32768
;; COM5: Close

before it can go on reading?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 07, 2022, 02:53:40 pm
(Attachment Link) Now to TC integration of the processor output for the BME 280 sensor:

Here the output:

Why does TC stop at this

;; COM5: Rx: <Ut:524288 Up:524288 Uh:32768> 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38
;; (COM5) Did not find any match for: Ut:524288 Up:524288 Uh:32768
;; COM5: Close

before it can go on reading?

Probably because it is looking to an answer from a *idn? command, that is default behavior.
It do not look like a fixed length output, i.e. the Block driver cannot be used.
If it had required a command to get the output the Ascii driver would have worked.
I do not have a good driver for streaming variable length ascii output, but I can make one in a couple of days.


If it is fixed length, i.e. it add spaces to keep the length constant, it can be done with the Block driver.

Can you post a hexdump of the full output (Not as a image).
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 07, 2022, 04:30:08 pm
Here a hex dump of the BME 280 output:

D A D A is at the end before a new run starts.

55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 D A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 D A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 D A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 D A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 D A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D D A D A 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 D A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 D A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 D A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 D A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 D A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D D A D A 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 D A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 D A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 D A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 D A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 D A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D D A D A 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 D A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 D A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 D A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 D A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 D A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D D A D A
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 08, 2022, 06:47:21 am
Definition file Ver 0.2 for ADC10F103C.
Added in "Notes" alternative designations for the ADC10F103C pcb.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2022, 07:11:07 am
Here a hex dump of the BME 280 output:

Thanks, I will make a new driver, it will take a few days.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2022, 07:19:52 am
Definition file Ver 0.2 for ADC10F103C.
Added in "Notes" alternative designations for the ADC10F103C pcb.

I will update the definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2022, 09:59:30 am
Here a hex dump of the BME 280 output:

I got something working, but it is not finished:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

Code: [Select]
#idString BME280
#name BME280
#handle BME280
#port comfixedbaud
#baudrate 9600
#driver asciiblock

#rxStart Ut:
#rxEnd \r\n\r\n
#rxFormat .*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+).*?([0-9.E+-]+)

#askValues Values?
#askValuesReadFormat xxxfxfxxfx

#value Temperature °C D2
#value Pressure hPa D3
#value Humidity % D3

The #rxFormat  is a regular expression that returns all numbers, the #askValuesReadFormat then removes most of the numbers.

I will do some more to this driver, but the above definition will work as is (or with minor modifications) in the final version of the driver. You might need to adjust the baudrate, I programmed the hex you posted into a Arduino ProMicro to test with it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 08, 2022, 12:41:24 pm
Thanks for looking into this. However in debug (Test Controller V2.23) I still get:

[attachurl=1]

The errors for ports other than COM3 and COM5 to which one each BME 280 sensor is connected are OK,
since these are  not connected at the moment.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 08, 2022, 01:03:51 pm
Thanks for looking into this. However in debug (Test Controller V2.23) I still get:

The errors for ports other than COM3 and COM5 to which one each BME 280 sensor is connected are OK,
since these are  not connected at the moment.

Be sure not to checkmark "Scan serial ports" on "Load devices" page, it is confusing when looking in the log. It is best to only have one device enabled when debugging.

It do not look like you have loaded and selected the driver I posted.

My log look this way:
Code: [Select]
;; 676.97ms jSerialComm version: 2.9.1
;; 779.97ms Start thread for: COM3 - HKJ Test
;; 1389.23ms COM3: Set params: 9600
;; 1985.27ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A
;; 5096.99ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A
;; 5097.27ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A
;; 5097.49ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A
;; Found HKJ Test on Arduino Leonardo (COM3)
;; 5997.19ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A
;; 7001.15ms COM3: Rx: 55 74 3A 35 32 34 32 38 38 20 55 70 3A 35 32 34 32 38 38 20 55 68 3A 33 32 37 36 38 0D 0A 54 65 6D 70 65 72 61 74 75 72 3A 20 20 20 20 20 20 20 20 32 30 2E 37 34 B0 43 0D 0A 4C 75 66 74 64 72 75 63 6B 20 36 34 62 69 74 3A 20 20 20 36 37 34 2E 39 38 36 68 50 61 0D 0A 4C 75 66 74 64 72 75 63 6B 20 33 32 62 69 74 3A 20 20 20 36 37 35 2E 32 34 68 50 61 0D 0A 4C 75 66 74 66 65 75 63 68 74 69 67 6B 65 69 74 3A 20 20 32 35 2E 39 35 31 25 0D 0A 48 F6 68 65 20 FC 62 65 72 20 4D 65 65 72 3A 20 20 33 32 39 37 2E 37 38 6D 0D 0A 0D 0A

Note: My Arduino (definition) always identifies as "HKJ Test", the Ardiuino sends the data I have programmed into it.
The reason I have a time stamp on my debug lines is because I uses "debugtime=2" instead of just "debug" as command line parameter (See inside .bat file)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 09, 2022, 05:35:48 am
I now get in debug:

;; jSerialComm version: 2.9.1
;; Start thread for: COM4 - BME280
;; COM4: Set params: 9600
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Rx: <Ut:1048575 Up:1048575 Uh:65535> 55 74 3A 31 30 34 38 35 37 35 20 55 70 3A 31 30 34 38 35 37 35 20 55 68 3A 36 35 35 33 35
;; ELTIMA_Virtual_Serial_Port_04 (COM4) Device BME280 do not match: Ut:1048575 Up:1048575 Uh:65535
;; COM4: Close
;; Stopping thread for: COM4 - BME280
;; COM4: Close

The problem in my case seems to be the unasked for IDN? request. I causes the BME 280 to
respond in a way TC cannot handle. Thus TC closes the COM port down. I suspect this automatic IDN?
query needs to be prevented in some way.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 09, 2022, 06:11:55 am
I now get in debug:

The problem in my case seems to be the unasked for IDN? request. I causes the BME 280 to
respond in a way TC cannot handle. Thus TC closes the COM port down. I suspect this automatic IDN?
query needs to be prevented in some way.

Did you update the .jar file?
If you check "Configuration" and "About" it must show V2.24, any previous version do not have the new driver.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 09, 2022, 07:03:46 am
Yep. TC with BME 280 nicely logging away now.

[attachimg=1]

Dunno where this A preceding the C comes from.

Anyway. In the next few days I will send you by mail info on the 
BME 280 sensor processing hardware schematic for your DIY page.

Thanks for your effort.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 09, 2022, 07:22:19 am
Dunno where this A preceding the C comes from.

The definition file must be in unicode with a BOM or TestController cannot select the correct character set for it. If you remind me when you send the stuff I can add it.

Anyway. In the next few days I will send you by mail info on the 
BME 280 sensor processing hardware schematic for your DIY page.

I look forward to it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 09, 2022, 09:55:31 am
Two final questions:

#rxFormat .*?([0-9.E+-]+)
Some documentation of this please.


#askValuesReadFormat xxxfxfxxfx
Some documentation of this please.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 09, 2022, 10:24:19 am
#rxFormat .*?([0-9.E+-]+)
Some documentation of this please.

The above pattern is a simple way to extract a number from a string. I am not going to document regular expression, you can see something about it here: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html).
There is also a lot of places on the inet where you can test regular expressions https://regex101.com/ (https://regex101.com/) https://regexr.com/ (https://regexr.com/)

The driver as such will be documented when I release the new version, I am working on it now.
The driver will contain a lot more functionality in the release version, this will not affect your definition, but make it more usable in many other cases. The idea is to make it the driver for multiline answers and for variable length ascii blocks.

#askValuesReadFormat xxxfxfxxfx
Some documentation of this please.

This is not a new function and is documented here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Fixing_format_and_other_issues (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Fixing_format_and_other_issues)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 12, 2022, 10:47:26 am
V2.25 is up
A new driver, new devices, a new popup and some small improvements to TC
   Added: Support for #poll in Block driver.
   Added: AsciiBlock driver, it can handle variable length block and multiline answer.
   Added: ADC10F103C a 12 bit 10 channel cheap usb connected ADC module (Thanks WA).
   Fixed: Minor bug in Siglent SDM3065X definition (Thanks TheDefpom)
   Added: Floating point format to Block driver
   Added: Control infoAsk mostly for showing SCPI error messages.
   Added: BK & Itech load support for Von mode (Thanks jmurray)
   Added: deviceWriteBytes() function to send binary data to a SCPI device.
   Changed/added: R&S NGE102, R&S NGE102B, R&S NGE103, R&S NGE103B power supply (Thanks PL)
   Changed: R&S HMC8012 (Thanks PL)
   Changed: Aim TTi TGF4042, Aim TTi TGF4082, Aim TTi TGF4162, Aim TTi TGF4242 (Thanks PL)
   Changed: Definition of R&S HMO1022 now uses same definition as some other R&S scopes (Thanks WA)
   Added: Auto Adjust popup to find or adjust a output until a input reach a specific value.

The drivers from PL is very advanced, they use the "Other" menu to add a couple of uploads/downloads.

The popup AutoAdjust can be used to search for a setting.
(https://lygte-info.dk/pic/Projects/TestController/DocAutoAdjust/AA2.png)

It uses a binary search and it is about as fast as doing it manually when you have a analog control to adjust.
(https://lygte-info.dk/pic/Projects/TestController/DocAutoAdjust/FindValue.png)
In the above example TC is adjusting current to find a specific voltage.


The AsciiBlock driver is for answers where length and placement of values may vary a bit, it uses regular expressions to find the values.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on August 14, 2022, 01:19:25 pm
Dunno where this A preceding the C comes from.

The definition file must be in unicode with a BOM or TestController cannot select the correct character set for it. If you remind me when you send the stuff I can add it.

Anyway. In the next few days I will send you by mail info on the 
BME 280 sensor processing hardware schematic for your DIY page.

I look forward to it.

Sent files today (Aug. 14, 2022) via PM :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 15, 2022, 07:38:34 am
Sent files today (Aug. 14, 2022) via PM :)

It is added to the User Project page: http://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (http://lygte-info.dk/project/TestControllerUserProjects1%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: jord4231 on August 17, 2022, 12:07:43 pm
Any chance of a dark theme? or the ability to customise GUI colours (other than the graph) my eyes don't do well with bright things :(
Fantastic program by the way. Especially now I've got a DMM6500 thank you for all your hard work!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2022, 08:56:29 am
Any chance of a dark theme? or the ability to customise GUI colours (other than the graph) my eyes don't do well with bright things :(
Fantastic program by the way. Especially now I've got a DMM6500 thank you for all your hard work!

I do not have any current plans on added themes to TestController, this do not mean I will not do it at a later date.
Title: Re: Program that can log from many multimeters.
Post by: gby on August 23, 2022, 04:10:49 pm
Hi HKJ,

I am trying to support a Vitrek V71 HiPot tester in TestController.  This device has RS232 and USB interfaces.  The RS232 interface is working but I am having trouble with the USB interface.  This USB interface is Windows "driver-less" in that the standard Windows HID device driver is used ofr this device.  Using Vitrek's utility communications over USB works.  For TestController I put the following in the device driver file:

#port usbhid
;  Per manual VID is 4292 and PID is 34869 in decimal.
#usbVendor 0x10C4
#usbProduct 0x8835

Running TestController in Debug mode I got the following

;; HIDv10C4p8835: Found HID: 10C4 8835  32 33 30 39 35
;; HIDv10C4p8835-59460199: Found usb device: \\?\hid#vid_10c4&pid_8835#9&1e6994ec&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
;; Stopping thread for: HIDv10C4p8835-59460199 - Vitrek V7x

From the above it seems that TestController found the device but closed the thread and did not stay connected.  I say it found the device since it found the right VID, PID number and retrieved the serial number....at least when I convert
   32 33 30 39 35
from hex to characters I get 23095 which is the serial number reported from *IDN? when I had RS232 interface working:
   VITREK,V71,23095,v1.27

I tried looking for documentation on TestController web pages with Google search "site:lygte-info.dk usbhid" but that only finds the one page and there is not much there.

Do I need to set a specific #driver value to talk to this device? Or, is there something else I am missing in the device driver file?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2022, 04:18:51 pm
Do I need to set a specific #driver value to talk to this device? Or, is there something else I am missing in the device driver file?

You must use a driver that uses binary interface: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Device_drivers_overview (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Device_drivers_overview)

But the possibility it will work is fairly low, many driver less solutions uses a chip that need a baudrate setting transmitted from the PC (This has nothing to do with normal com ports) and I do not support that.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on August 26, 2022, 07:35:54 am
Hi, this is a follow up from message #2644.

I have spent some time with this Hyperion device. I have now the process to generate the checksum. This is what we suspected.
It is a SUM of the ASCII chars and the result is converted to HEX and appended to the data stream. You then have to add a leading 0x0c and a trailing 0x0d.

I have an idea about a dialog box; will start with something easy and short.
All the parameters must be sent in one command, even those that are not being modified. We just send default values.
That means we have to convert and concatenate the variables and calculate the checksum on the fly. I don't know if we have a function for that.

We have in some cases to apply multiplication/division factors but I know which parameters need a special process.

That's it for the moment. I have attached 2 screenshots for explanation. Hope that helps.

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 26, 2022, 03:10:29 pm
Hi, this is a follow up from message #2644.

I have spent some time with this Hyperion device. I have now the process to generate the checksum. This is what we suspected.
It is a SUM of the ASCII chars and the result is converted to HEX and appended to the data stream. You then have to add a leading 0x0c and a trailing 0x0d.

I have an idea about a dialog box; will start with something easy and short.
All the parameters must be sent in one command, even those that are not being modified. We just send default values.
That means we have to convert and concatenate the variables and calculate the checksum on the fly. I don't know if we have a function for that.

We have in some cases to apply multiplication/division factors but I know which parameters need a special process.

That's it for the moment. I have attached 2 screenshots for explanation. Hope that helps.

I hope the sum16 method works for checksum.

I am working on a function to send multiple setting lines in one string, but it is not ready yet.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2022, 10:29:47 am

(https://lygte-info.dk/pic/Projects/TestController/Controls/set.png)

The idea is the new control collects writes from other controls and combine them. It will support all controls with a "Set" button (including multi).
This is very similar to the multi control, but can handle many more parameters.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on August 29, 2022, 03:42:17 pm
Thanks for the quick update.

Question: I understand that the unique Set button will send and update the different values to the device.
Will that be possible to add 2 or more buttons with different type of values (from the same dialog box) being sent to the device? See image.

Thanks

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2022, 03:55:51 pm
Thanks for the quick update.

Question: I understand that the unique Set button will send and update the different values to the device.
Will that be possible to add 2 or more buttons with different type of values (from the same dialog box) being sent to the device? See image.

The set control has a list of other controls it must control (They can be on multiple pages, but do not support anything with selector), i.e. you can have multiple set controls on a page that can use different controls or even share some controls.
Title: Re: Program that can log from many multimeters.
Post by: DiplIngenieur on September 04, 2022, 12:04:36 pm
I tried to setup my devices with TC most of them worked out of the box but I had a few issues with my Rigol DM3058E. This device has only serial connection and with my old firmware 02.03.01 you need to add the #eol \r\n to the Rigol DM30xx.txt then it worked. It seems to be accepted only in the global context not just for the 3058E.
Changing modes took very long (like 7 seconds)  I could fix that by using a delay e.g. FUNC:VOLT:DC;[50] instead of [opc*].
Changing speeds although took very long and the read back does not work. I could fix this by changing the read rate e.g :read: [50];RATE:VOLT:DC?
Now everything works. Can you somehow include this to the generic Rigol DM30xx.txt file or should I make a seperate one and you delete  metadef in the generic one?

I also added my Owon power supply P4603 and Owon Multimeter XDM3051 I used an existing file and created a new one. The files are attached.

Is there a reason why the #help tag loads files from the internet in your user directory, would it be a better to include the help in the device file directly?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 05, 2022, 07:28:27 am
I tried to setup my devices with TC most of them worked out of the box but I had a few issues with my Rigol DM3058E. This device has only serial connection and with my old firmware 02.03.01 you need to add the #eol \r\n to the Rigol DM30xx.txt then it worked. It seems to be accepted only in the global context not just for the 3058E.
Changing modes took very long (like 7 seconds)  I could fix that by using a delay e.g. FUNC:VOLT:DC;[50] instead of [opc*].
Changing speeds although took very long and the read back does not work. I could fix this by changing the read rate e.g :read: [50];RATE:VOLT:DC?
Now everything works. Can you somehow include this to the generic Rigol DM30xx.txt file or should I make a seperate one and you delete  metadef in the generic one?

You say "old firmware" and that may be the issue, if you make another Rigol definition and call it "Rigol 3058E V2" it can coexist with the current definition. Adding a #notes in the file explaining what version you tested with would be a nice touch.


I also added my Owon power supply P4603 and Owon Multimeter XDM3051 I used an existing file and created a new one. The files are attached.

I will include them in the next release.

Is there a reason why the #help tag loads files from the internet in your user directory, would it be a better to include the help in the device file directly?

Mostly to allow updates "on the fly", you can still make and test it locally, you just have to do it in the "...\Documents\TestController\Settings" directory and then send it to me when you are finished, then I will put it on the server. When it is on the server you cannot edit it locally anymore (Except if you rename it while doing it)
Title: Re: Program that can log from many multimeters.
Post by: Curious on September 13, 2022, 01:39:32 am
Hi, Trouble getting started.  Installation guide https://lygte-info.dk/project/TestControllerInstalling%20UK.html (https://lygte-info.dk/project/TestControllerInstalling%20UK.html)  for Java (version 8.1 or higher) has links for the Java Development Kit (presently at version 18).  Is Java the same as Java Development Kit (JDK)?????

I started down the path of Open JDK, download a large .zip file, extract it, but find no obvious installer like setup.exe, or install. bat.  Gave up on Open JDK and went to Oracle Java (windows) and get some possibilities to download some files that include the name JDK https://www.oracle.com/java/technologies/downloads/#jdk18-windows (https://www.oracle.com/java/technologies/downloads/#jdk18-windows).  The x64 Installer looks promising, but not wanting to install JDK, if it's different from Java and not what TestController requires.

If Java = JDK, and that's what TestController requires, then any reason to use OPEN JDK vs. Oracle Java?

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 13, 2022, 04:55:14 am
If Java = JDK, and that's what TestController requires, then any reason to use OPEN JDK vs. Oracle Java?

Java exist in a couple of different versions and TestController works with all.
JDK stands for Java Developer Kit and contains stuff for developing Java programs. It will use more disk space than Java SE, but works just as well.

In some cases Oracle requires a paid license, the Open version do not.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on September 19, 2022, 03:26:36 pm
Hello

I have a test equipment where its units change according to their values. For example, mV becomes V above 300 mV, same for Hz becoming kHz, etc.

Code: [Select]
;; jSerialComm version: 2.9.1
;; COM5: Set params: 115200
;; Start thread for: AR488 B:2 - Test 007
;; COM5: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; Found Test 007 on AR488 B:2
;; JB007: Tx <txrx? RD1>
;; COM5: Tx: <++addr 2.> 2B 2B 61 64 64 72 20 32 0A
;; COM5: Tx: <RD1.> 52 44 31 0A
;; COM5: Tx: <++read_tmo_ms 950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 39 35 30 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <NULL> 4E 55 4C 4C
;; JB007: Rx <NULL>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD2>
;; COM5: Tx: <RD2.> 52 44 32 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <NULL> 4E 55 4C 4C
;; JB007: Rx <NULL>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD3>
;; COM5: Tx: <RD3.> 52 44 33 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <19.888kHz> 31 39 2E 38 38 38 6B 48 7A
;; JB007: Rx <19.888kHz>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD4>
;; COM5: Tx: <RD4.> 52 44 34 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <NULL> 4E 55 4C 4C
;; JB007: Rx <NULL>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD5>
;; COM5: Tx: <RD5.> 52 44 35 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <19.889kHz> 31 39 2E 38 38 39 6B 48 7A
;; JB007: Rx <19.889kHz>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD6>
;; COM5: Tx: <RD6.> 52 44 36 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <219mV> 32 31 39 6D 56
;; JB007: Rx <219mV>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD7>
;; COM5: Tx: <RD7.> 52 44 37 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <NULL> 4E 55 4C 4C
;; JB007: Rx <NULL>
;; JB007: Delay: 500ms
;; JB007: Tx <txrx? RD8>
;; COM5: Tx: <RD8.> 52 44 38 0A
;; COM5: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM5: Rx: <NULL> 4E 55 4C 4C
;; JB007: Rx <NULL>
;; JB007: Delay: 500ms
;; JB007: Rx after :readmath: value=="whatever"?whatever:value <NULL NULL 19.888kHz NULL 19.889kHz 219mV NULL NULL>
;; JB007: Rx as numbers <0.0 0.0 19.888 0.0 19.889 219.0 0.0 0.0>


I need to apply a factor (1000 in this particular case) to be able to work with kHz and V before the values are displayed on the same line.

How can I solve this?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 19, 2022, 03:46:46 pm
I have a test equipment where its units change according to their values. For example, mV becomes V above 300 mV, same for Hz becoming kHz, etc.

I need to apply a factor (1000 in this particular case) to be able to work with kHz and V before the values are displayed on the same line.

How can I solve this?

There are two ways.
Quote
#askValuesReadFormat a list of what value to use and what value to remove
#askValuesMathFormat  expression, input is called value

For ReadFormat see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#readFormat (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#readFormat)

MathFormat is the same as :readMath: for #scpiCmds, i.e. you can use any expression including parseSI() see here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#parseSI (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#parseSI)

For performance reason (Mostly relevant if you are logging fast with many devices) it is best to use ReadFormat when it can do it.
Title: Re: Program that can log from many multimeters.
Post by: NaxFM on September 20, 2022, 07:55:01 am
I know it may be too much to ask given what the program does already, but does it have some sort of scan feature for external scan cards?
I'm designing a scan card which will work with rs232 scpi and simple up-down-reset signals, is there any way to control this scan scard and ask the dmm for a measurement?
Even a simple "send a command on COM port before next measurement" would be extremely handy for me. Is there any way to do it?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 20, 2022, 08:15:03 am
I know it may be too much to ask given what the program does already, but does it have some sort of scan feature for external scan cards?
I'm designing a scan card which will work with rs232 scpi and simple up-down-reset signals, is there any way to control this scan scard and ask the dmm for a measurement?
Even a simple "send a command on COM port before next measurement" would be extremely handy for me. Is there any way to do it?

Not at the current time, but it is, more or less, on my ToDo list.
There is a couple of issue (or challenges) with it:
How to handle logging when only 1 of N values are available
It must be able to work with any device at least of the DMM type.
It must be able to send a send a one or more command to the device after each input change (To change range or mode).
What about devices with multiple logging values?

If you just want to switch manually, it is easy to create a device for your mux with buttons to select each input.
Title: Re: Program that can log from many multimeters.
Post by: NaxFM on September 20, 2022, 09:45:54 am
Thank you for the reply.
I understand it must be very hard to implement, and of course i'm not asking you to do it, scan cards are a very niche thing.
I guess that for my particular case I'll write a simple python script to switch, measure and log everything in an excel file.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on September 21, 2022, 04:40:06 pm
I have a test equipment where its units change according to their values. For example, mV becomes V above 300 mV, same for Hz becoming kHz, etc.

I need to apply a factor (1000 in this particular case) to be able to work with kHz and V before the values are displayed on the same line.

How can I solve this?

There are two ways.
Quote
#askValuesReadFormat a list of what value to use and what value to remove
#askValuesMathFormat  expression, input is called value

For ReadFormat see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#readFormat (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#readFormat)

MathFormat is the same as :readMath: for #scpiCmds, i.e. you can use any expression including parseSI() see here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#parseSI (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#parseSI)

For performance reason (Mostly relevant if you are logging fast with many devices) it is best to use ReadFormat when it can do it.

Thanks for your help.
However, I haven't found any "decent" RegEX to deal with data coming on a single line.

I have uploaded a def. file for the Marconi 2955 radio communications test set. Some features have not been implemented.
You can look at the file for more info.

To make it work, you need some kind of hardware between TC and the device. I am using an AR488 GPIB controller.

The interface is quite slow. You need patience. It takes around one minute to load the first time.
The interface is done in a way that not all data are loaded every time.

I have probably exaggerated the different delays. You can tune them down if you like.

At the beginning, you should start TC in Debug mode, so you can see the data in the console.

I do not have any transceiver, so very few tests have been done (only Audio Test in fact).

Maybe there is a way to improve the speed or the interface and fix some bugs!. Let me know.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 25, 2022, 11:55:51 am
I have uploaded a def. file for the Marconi 2955 radio communications test set. Some features have not been implemented.
You can look at the file for more info.

Thanks, it will be included in next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 05, 2022, 10:28:32 am
V2.26 is up
It includes some additions to TestController and a few new devices.
   Added: Grid Panel item to control a power supply with a couple of fixed settings.
   Added: Grid Panel item to control a two power supplies with a couple of fixed settings.
   Added: Grid Panel item to control one or more loads with a couple of fixed settings. This will automatic distribute the load between them.
   Added: Marconi 2955 Radio Communications Test Set (Thanks rachdatu)
   Added: Owon XDM3051 DMM (Thanks DiplIngenieur)
   Added: Owon P4603, Owon P4305 power supplies (Thanks DiplIngenieur)
   Added: Support for #scpiCmd that uses calculator scripts
   Added: control set, like multi, but can handle more parameters
   Added: :labelformat: Some text formatting on the "Setup" popups.
   Changed: RTC1002, HMC8012, NGE100 (Thanks PL)


Some of the addition makes more advanced device definitions possible:
The control set is similar to control multi, but instead combines regular controls (Including multi):
(https://lygte-info.dk/pic/Projects/TestController/Controls/set.png)

If is possible in #scpiCmd to use regular scripts, this is only for very special cases.

Some of the text on the setup popup can be adjusted with colors, font and style, again something that is recommended to use sparingly.

For the grid panel it is now possible to create simple controls to set a preset power supply:
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/SetPSVoltCurrentWithOff.png) (https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/SetDualPSVoltCurrentWithOff.png)

This is also possible for a load or a couple of loads:
(https://lygte-info.dk/pic/Projects/TestController/DocGridPanel/SetMultiLoadsWithOff.png)
This makes it easy to use a couple of loads together for higher current/power.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 05, 2022, 07:17:19 pm
Hello

Thanks for the update. The concatenation of parameters works nicely. I have an issue with the format of the strings being sent and that crashes the application:

Code: [Select]
#scpiCmd SetParameterTest tx (value)

#cmdSetup combobox Battery_type Memory_Editor
:read:
:write: (hex(value))
NiCd 0
NiMh 1
LiIo 2
LiPo,LiMn 3
LiFe 4
Pb 5

#cmdSetup combobox Number_Cells Memory_Editor
:read:
:write: (hex(value))
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14

#cmdSetup numberInt Capacity Memory_Editor
:read:
:write: (hex(((round(value/100))*100)))
mAh 0.1 5000

#cmdSetup set Update Memory_Editor
:write: SetParameterTest
Memory_Editor.Battery_type Memory_Editor.Number_Cells  Memory_Editor.Capacity
;\x20

;; Hyperion: Tx <SetParameterTest 0000000B01F4>
java.lang.NumberFormatException: For input string: "0000000B01F4"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at dk.hkj.util.StringUtil.parseInt(StringUtil.java:584)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.parseWriteString(
DeviceBlock.java:209)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.writeRead(DeviceB
lock.java:471)
        at dk.hkj.devices.DeviceBlock$TranslatingCommInterface.write(DeviceBlock
.java:554)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:316)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:365)
        at dk.hkj.main.SCPICommand.write(SCPICommand.java:413)
        at dk.hkj.devices.SetupFormats$SetField.localWrite(SetupFormats.java:511
3)
        at dk.hkj.devices.SetupFormats$SetField.actionPerformed(SetupFormats.jav
a:5130)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
        at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)



How to convert these strings (0000000B01F4) to something like this:

0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x42 0x30 0x31 0x46 0x34

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2022, 07:40:01 am
How to convert these strings (0000000B01F4) to something like this:

0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x42 0x30 0x31 0x46 0x34

You need to do it for each item, but it is a bit hard.

To make it easier I have added this function:
bytesAsHex(item);
bytesAsHex(item,digits);
bytesAsHex(item,digits,reverse);
item: is any variable that is cast to bytes and then converted to 0xnn items in a string result.
digits: is number of bytes to show in the final string, when not present it will show the actual number of bytes.
reverse: reverse the byte sequence in the output string.

bytesAsHex(formatInt(a,8,8)); -> 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31
bytesAsHex(a); -> 0x01
bytesAsHex(a,8); -> 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
bytesAsHex(a,8,1); 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01

You can get a new .jar file from here (It is version 2.27):
http://lygte-info.dk/customers/5/d/1/lygte-info.dk/httpd.www/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/customers/5/d/1/lygte-info.dk/httpd.www/pic/Projects/TestController/TestController.jar)

You will need to use the delimiter option in the "Set" control.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 06, 2022, 09:03:22 am
How to convert these strings (0000000B01F4) to something like this:

0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x42 0x30 0x31 0x46 0x34

You need to do it for each item, but it is a bit hard.

To make it easier I have added this function:
bytesAsHex(item);
bytesAsHex(item,digits);
bytesAsHex(item,digits,reverse);
item: is any variable that is cast to bytes and then converted to 0xnn items in a string result.
digits: is number of bytes to show in the final string, when not present it will show the actual number of bytes.
reverse: reverse the byte sequence in the output string.

bytesAsHex(formatInt(a,8,8)); -> 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x31
bytesAsHex(a); -> 0x01
bytesAsHex(a,8); -> 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00
bytesAsHex(a,8,1); 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01

You can get a new .jar file from here (It is version 2.27):
http://lygte-info.dk/customers/5/d/1/lygte-info.dk/httpd.www/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/customers/5/d/1/lygte-info.dk/httpd.www/pic/Projects/TestController/TestController.jar)

You will need to use the delimiter option in the "Set" control.

Thanks, was quick.
Is it the usual location for downloading the new binaries because link seems to be broken.

thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2022, 09:45:49 am

Is it the usual location for downloading the new binaries because link seems to be broken.

Yes, it is the usual location, I have edited the link here:

 (http://lygte-info.dk/pic/Projects/TestController/TestController.jar[/url)
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 06, 2022, 12:12:23 pm
It looks like the "cache is back"  :)

Still getting the previous version, no matter if I clean my cache. By the way, if you own your web site, there are options to set the cache but that depends on your traffic...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2022, 01:55:06 pm
It looks like the "cache is back"  :)

Still getting the previous version, no matter if I clean my cache. By the way, if you own your web site, there are options to set the cache but that depends on your traffic...

I hope you have gotten the right version now, I just checked the download at it is V1.27 (I have not reuploaded it).
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 06, 2022, 05:25:18 pm
Still version of yesterday
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2022, 05:06:01 am
Still version of yesterday

I have a suspicion you are downloading the .zip file, not the .jar file. The .zip file is not updated, it contains the general release.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 07, 2022, 07:26:30 am
Oh, right. Now I finally got that file...had to go through all the security warnings.  :box:

Now about the #checksum parameter. Do you have an example how I should use it?
Thanks again
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2022, 07:48:39 am
Now about the #checksum parameter. Do you have an example how I should use it?

Check the manual: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Checksum_and_CRC (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Checksum_and_CRC)
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 07, 2022, 04:13:39 pm
Hello

Thanks for the great job. The hex conversion works like a charm and the checksum as well.

There is now a functionality that doesn't work as before. Here is a working and simplified example to illustrate the problem.

Code: [Select]
#idString Test,006,
#name     Test 006
#handle   JB006
#port comfixedbaud
#baudrate 9600
#driver Block

#eol \r
#checksum sum16 hexhl 0 0
#scpiCmd updatetest tx (value)

; #### Memory_Editor tab ####

#cmdSetup combobox Store_in_Memory_# Memory_Editor
:read:
:write: ((hex(value)))
:buttontext: Store
1 1
2 2
3 3
4 4
5 5

#cmdSetup combobox Battery_type Memory_Editor
:write: ((hex(value)))
NiCd 0
NiMh 1
LiIo 2
LiPo,LiMn 3
LiFe 4
Pb 5

#cmdSetup combobox Number_Cells Memory_Editor
:write: ((hex(value)))
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14

#cmdSetup number PB_Bat_Float_Voltage Memory_Editor
:read:
:write: (hex((round((value*100.0-442.0)/2.0)*2.0+442.0)/100.0))
:enable: (Memory_Editor.Battery_type !="0000") && (Memory_Editor.Battery_type !="0001") && (Memory_Editor.Battery_type !="0002") && (Memory_Editor.Battery_type !="0003") && (Memory_Editor.Battery_type !="0004")
V 4.42 4.60

;#cmdSetup set Update Memory_Editor
;:write: updatetest ((bytesAsHex("004E01",6,0))+" "+(bytesAsHex(value)))
;Memory_Editor.Store_in_Memory_# Memory_Editor.Battery_type Memory_Editor.Number_Cells Memory_Editor.PB_Bat_Float_Voltage
;\x20 not used

The PB Bat Float Voltage field is enabled/disabled depending on the type of battery. If Pb is chosen, then PB Bat Float Voltage field is enabled. In the other cases, this field is disabled.
The issue is that with the update field enabled this logic only works if you first send a set of data to the device. And we don't want that. PB_Bat_Float_Voltage field should be disabled before we can send any data to the device.

Do you have another solution to solve this issue?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2022, 04:27:35 pm
Do you have another solution to solve this issue?

Because you do not have any :read: the values are empty at the start and that value is definitely different from all your specified values (It will probably match a empty string, i.e. "").
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 08, 2022, 05:23:12 pm
Do you have another solution to solve this issue?

Because you do not have any :read: the values are empty at the start and that value is definitely different from all your specified values (It will probably match a empty string, i.e. "").

Do you mean reading data from the device? I think this is not going to help. The device doesn't know what type of battery is connected.
Maybe I didn't get what you meant.

Another possible solution is to create a tab for each chemistry with just a few parameters differing with different batteries. A lot of work and a lot of similar entries.
What do you think?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 08, 2022, 06:41:02 pm
Do you mean reading data from the device? I think this is not going to help. The device doesn't know what type of battery is connected.
Maybe I didn't get what you meant.

Another possible solution is to create a tab for each chemistry with just a few parameters differing with different batteries. A lot of work and a lot of similar entries.
What do you think?

The missing :read: is not a problem, it just means that no initial value is obtained.
You need to include that option in your tests. Check out the displayVar function: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#displayVar (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#displayVar) it can be used in any expression and will show the current value of a variable. It will also make TestController fairly slow when using it, but that is usually acceptable when doing these test.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on October 10, 2022, 03:58:08 pm
Do you mean reading data from the device? I think this is not going to help. The device doesn't know what type of battery is connected.
Maybe I didn't get what you meant.

Another possible solution is to create a tab for each chemistry with just a few parameters differing with different batteries. A lot of work and a lot of similar entries.
What do you think?

The missing :read: is not a problem, it just means that no initial value is obtained.
You need to include that option in your tests. Check out the displayVar function: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#displayVar (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#displayVar) it can be used in any expression and will show the current value of a variable. It will also make TestController fairly slow when using it, but that is usually acceptable when doing these test.

OK thanks; I see the problem in the :enable: tag now.

Code: [Select]
#idString Test,006,
#name     Test 006
#handle   JB006
#port comfixedbaud
#baudrate 9600
#driver Block

#eol \r
#checksum sum16 hexhl 0 0
#scpiCmd updatetest tx (value)

; #### Memory_Editor tab ####

#cmdSetup combobox Store_in_Memory_# Memory_Editor
:read:
:write: ((hex(value)))
:buttontext: Store
1 1
2 2
3 3
4 4
5 5

#cmdSetup combobox Battery_type Memory_Editor
:read:
:write: (displayVar((hex(value))))
;:write: (hex(value))
NiCd 0
NiMh 1
LiIo 2
LiPo,LiMn 3
LiFe 4
Pb 5


#cmdSetup combobox Number_Cells Memory_Editor
:read:
:write: ((hex(value)))
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14

#cmdSetup number PB_Bat_Float_Voltage Memory_Editor
:read:
:write: (hex((round((value*100.0-442.0)/2.0)*2.0+442.0)/100.0))
:enable: (Memory_Editor.Battery_type !="0") && (Memory_Editor.Battery_type !="1") && (Memory_Editor.Battery_type !="2") && (Memory_Editor.Battery_type !="3") && (Memory_Editor.Battery_type !="4")
V 4.42 4.60


#cmdSetup set UPDATE Memory_Editor
:write: updatetest ((bytesAsHex("004E01",6,0))+" "+(bytesAsHex(value)))
Memory_Editor.Store_in_Memory_# Memory_Editor.Battery_type Memory_Editor.Number_Cells Memory_Editor.PB_Bat_Float_Voltage
;\x20 not used

However, I am still not getting what I have explained above: selecting "Pb" should unlock "PB_Bat_Float_Voltage" before doing anything with the "Set" button.

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 10, 2022, 05:21:17 pm

However, I am still not getting what I have explained above: selecting "Pb" should unlock "PB_Bat_Float_Voltage" before doing anything with the "Set" button.

Use the debug mode (I.e. start the program with "testControllerDebug.bat" and watch the DOS windows for any error messages.

A easy way to check for a couple of string values in to use the function inList() https://lygte-info.dk/project/TestControllerFunctions%20UK.html#inList (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#inList)  it is shorter than a bunch of equal or not equal tests and easier to read.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 14, 2022, 09:54:00 pm
Am adding GPIB support for some devices that right now only have com port support foreseen in the device files.
My question:
For devices where the device file permits multiple port types, (com and GPIB for example), is there any way to detect which port type the user has configured?


In my case, the device does not support some commands (SYS:LOC and SYST:REM in my case, HP663xB) when on GPIB, but does support them in RS232.
I cannot interrogate the device to see what port it uses, as that command does not exist.
So unless I remove the offending commands from the device file, thereby potentially breaking things for existing users, GPIB users will be stuck with loads of errors on the device.
Both options are not ideal. It would be best if I could detect the device config and adapt the commands to it.
Something like:

Code: [Select]
#port comfixedbaud GPIB
.....
if (port=="comfixedbaud")
   #initCmd *RST;SYST:REM
else
   #initCmd *RST
endif
Is something like this possible?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 15, 2022, 12:52:05 pm
Is something like this possible?

At the current time: No.

But I will take a look at it.

Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 16, 2022, 05:15:35 pm
Here is an updated file for the AgilentHP 663xB series. Additions:
* 66332A
* easier switching to low amp range
* GPIB (but I had to remove the RS232 only commands, should still work.)
* control for relay option board #760

Motivation: I just made that last board for my 66332A.
Title: Re: Program that can log from many multimeters.
Post by: adso85swe on October 17, 2022, 05:15:18 am
Hi. I’ve got some n00b questions regarding using this software with Arduino.


EDIT: Nevermind my questions, I found the Arduino documentation on the website  :) I will look into it and play around. I guess the only thing that is still unclear is if there is sub second time stamp resolution, but I will find out by trying around.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2022, 07:16:37 am
Here is an updated file for the AgilentHP 663xB series. Additions:

Thanks, this will be included in the next update.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 17, 2022, 07:27:18 am
  • Can you use the software to log data from the Arduino serial port? If so, great!   8)
  • Is it documented somewhere on which format you need to send the serial data from the Arduino?

Yes. You can use many different formats, but following these examples is the easiest:
https://lygte-info.dk/project/TestControllerArduino1%20UK.html (https://lygte-info.dk/project/TestControllerArduino1%20UK.html)
https://lygte-info.dk/project/TestControllerArduino2%20UK.html (https://lygte-info.dk/project/TestControllerArduino2%20UK.html)

  • Can the software create time stamps of the data based on when it’s received, preferably in the sub-second (millisecond) region? That would be pretty helpful as you wouldn’t need to fiddle with an RTC on your device, and those libraries usually don’t report less than second resolution.


The fastest speed you can log with is 100 times a second (200 in some conditions), timestamps are made to the millisecond, but usually not displayed with that resolution.
When logging the logging speed will be reduced if some device has problems keeping up. I.e. you may select 0.01 second logging interval. but only get 0.5 second, due to a slow device. You can use the #commandtime? command on the TestController command line to see how fast the devices answers (It only captures times when logging or some readout is active).

EDIT: Nevermind my questions, I found the Arduino documentation on the website  :) I will look into it and play around. I guess the only thing that is still unclear is if there is sub second time stamp resolution, but I will find out by trying around.

Other may have similar questions, so you got a full answer.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 21, 2022, 12:55:04 am
I have FINALLY started to mess with trying to get a GPIB setup running on some of my volt nut gear.

I have added an Agilent E5810A GPIB controller to my LAN, the E5810A is connected to 5 GPIB devices, I can talk to all the devices using the E5810A web server (on its LAN IP address)

What I can't figure out is how to setup TC to use the E5810A, so that TC can then talk to the devices.

Has anyone else done this ?

I am very new to GPIB too (yeah I am a slow starter, it's not like it has been around for 40 years or anything), so I have a big learning curve here to start with.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 21, 2022, 05:51:39 am
Multiple questions for people knowing the device description syntax.

1) is there a way to debug the what value is interpreted by a #cmdSetup selector?
I managed to feed a selector from a #cmdSetup combobox, but haven't managed to feed it from a #cmdSetup checkbox or #cmdSetup comboboxhot. But a combobox requires 2 clicks, and the two others don't.
2) is there a way to do a :write: with a fixed string? So without sending the value? I need to fire :update: from a control, which needs a write to function, but in reality I don't want to write, so a fixed string is better than "random" text which confuses the device, requiring me to do a *CLS afterwards.
3) is there a way to persist user choices between invocations  of the setup popup? Is Mode the only way?

I use the following construct:
Code: [Select]
#cmdSetup combobox Relay_Board Main
; This is used for activating the relay board option #760.
; Neither checkbox nor comboboxhot seem to work here
; Something has to be sent in order to call :update:, but it confuses the device so I do a *CLS afterwards.
: I have not found a way to persist that user choice. So you will have to select it every time you open the Setup popup.
:write: #;*CLS
:update: No_Relay_Board
:tip: Output Relay Board (#760) present?
Absent Absent
Installed Installed

#cmdSetup selector No_Relay_Board Main
Main.Relay_Board
; The name is like this because the name of this selector only shows up when disabled.
Absent
Installed Main.Output_Relay;Main.Output_Polarity_Reversed
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 21, 2022, 06:36:12 am
What I can't figure out is how to setup TC to use the E5810A, so that TC can then talk to the devices.

TC do not have build-in support for the E5810, I have not found any documentation on how it works.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 21, 2022, 06:51:45 am
1) is there a way to debug the what value is interpreted by a #cmdSetup selector?
I managed to feed a selector from a #cmdSetup combobox, but haven't managed to feed it from a #cmdSetup checkbox or #cmdSetup comboboxhot. But a combobox requires 2 clicks, and the two others don't.

The displayVar() function may do it. It can be used in any expression and will returns its argument.


2) is there a way to do a :write: with a fixed string? So without sending the value? I need to fire :update: from a control, which needs a write to function, but in reality I don't want to write, so a fixed string is better than "random" text which confuses the device, requiring me to do a *CLS afterwards.

I have not tested it, but maybe something like [000] may work (It is a request to wait 0 milliseconds).

3) is there a way to persist user choices between invocations  of the setup popup? Is Mode the only way?

Generally a definition do not store any state information, but obtain it from the connected device, but you can get around it when using #scpiCmd (Requires SCPIx or other drivers), they can create and read persistent variables.
To access variables you may want to use getVar("name"), it will not fail on a undefined variable, but return a empty value.


You can use checkboxes in the mode menu and they create local modes that can be used in the setup menu.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 21, 2022, 10:58:28 am
ok, thanks, will do some debugging. Will very probably prepare a new AgilentHP 663xB.TXT file before the end of coming weekend.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 22, 2022, 11:15:14 am
Some feedback:

[000] does not seem to work. Tried various forms.

About a cmd control driving a selector:

* one can debug the value sent to the selector but entering displayVar({page}.{control name}) instead of {page}.{control name}, on the "expression" line, the line just under the #cmdSetup.
* other functions like getExpression or match do not work there. They work in other situations, but cannot read from another control.
* :readmath: on the next line does not work

About the types of controls that drive the selector:
* combobox works as it should. Unfortunately for my use case, it is 3 clicks.
* checkbox sends "{text behind the checkbox}:{undefined number of spaces}{selected value}" to the selector, but that cannot be exploited since I do not have access to functions like match. No matter if :string: is added. The control does send the selected data via :write:
* comboboxhot sends "0" to the selector, no matter the selection. Otherwise, same as checkbox.
* radio sends "0" to the selector, no matter the selection. Otherwise, same as checkbox.
* slider sends nothing or empty string to the selector, no matter the selection Otherwise, same as checkbox.
* buttons sends nothing or empty string to the selector, no matter the selection. Otherwise, same as checkbox.

Can you look into this? It is not a blocker since combobox works, but it reeks like a (series of) bug(s) to me.

And moving it to the Mode popup would require even more clicks. So for now, I'm just keeping the device file roughly unchanged. Cleaned up slightly, and attached.


Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 23, 2022, 04:45:41 am
In regards to the E5810A.

I have been playing around with it the past couple of days, I can talk to instruments using Python making use of the vxi11 system to specify the device by GPIB address, so if you can support vxi11 (if you don't already) that might mean that it can be used for a bunch of GPIB adaptors, as it seems pretty common.

For instance in Python I am making use of code written by Marco Reps as shown below to define the vxi11 address:
Code: [Select]
vxi_ip = "192.168.5.150"

instruments["R6581T"]=R6581T(ip=vxi_ip, gpib_address=22, lock=gpiblock, title="R6581T")

Which seems to indicate all it needs to know is the IP of the GPIB controller, and the GPIB address of the instrument.
The actual code to talk to the instrument is simple, such as:
Code: [Select]
self.instr =  vxi11.Instrument(self.ip, "gpib0,"+str(self.gpib_address))
self.instr.clear()
print("*IDN? -> "+self.instr.ask("*IDN?"))
print("TEMP? -> "+str(float(self.instr.ask(":SENSe:ITEMperature?")))+"˚C")
self.close_instr_conn()
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2022, 10:39:23 am
[000] does not seem to work. Tried various forms.

Ok.

About a cmd control driving a selector:

* one can debug the value sent to the selector but entering displayVar({page}.{control name}) instead of {page}.{control name}, on the "expression" line, the line just under the #cmdSetup.
* other functions like getExpression or match do not work there. They work in other situations, but cannot read from another control.
* :readmath: on the next line does not work

The expression line is similar to :readmath:, it uses the same code to evaluate the expression.
Try using: displayVar(split(getVarList(1),"[\\n]")); on it. It will give you an error and prevent the selector from working, but will also show your all defined variables and their values.

About the types of controls that drive the selector:
* combobox works as it should. Unfortunately for my use case, it is 3 clicks.
* checkbox sends "{text behind the checkbox}:{undefined number of spaces}{selected value}" to the selector, but that cannot be exploited since I do not have access to functions like match. No matter if :string: is added. The control does send the selected data via :write:
* comboboxhot sends "0" to the selector, no matter the selection. Otherwise, same as checkbox.
* radio sends "0" to the selector, no matter the selection. Otherwise, same as checkbox.
* slider sends nothing or empty string to the selector, no matter the selection Otherwise, same as checkbox.
* buttons sends nothing or empty string to the selector, no matter the selection. Otherwise, same as checkbox.

Can you look into this? It is not a blocker since combobox works, but it reeks like a (series of) bug(s) to me.

It is not really bugs, but I will guess you are missing a :read: on the control. On most controls the variable will be updated when a value is returned from the device.

You can get around that by using #scpiCmd (Driver must be SCPIx) and a local variable:

#scpiCmd init none
:setvar: varf1=0;

#scpiCmd f1 none (value)
:setvar: varf1=inputValue;

#scpiCmd f1? none?
:readmath: varf1;

#initCmd init;

#cmdSetup checkbox check
:read: f1?
:write: f1
on 0 1
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2022, 11:28:14 am
I have been playing around with it the past couple of days, I can talk to instruments using Python making use of the vxi11 system to specify the device by GPIB address, so if you can support vxi11 (if you don't already) that might mean that it can be used for a bunch of GPIB adaptors, as it seems pretty common.

I do use vxi11 when selecting lxi as comm interface, but I do not have any port specifications to use with it.
If anybody now where it goes in the protocol I can probably add it very easy.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 23, 2022, 04:29:32 pm
It is not really bugs, but I will guess you are missing a :read: on the control. On most controls the variable will be updated when a value is returned from the device.

The displayVar(split(getVarList(1),"[\\n]")); only confirms what I already deducted.
And indeed, I think a :read: is missing on the control, but the whole idea of using a control as source was just that I would not need a :read:.
I now understand that combobox working is in fact an "undocumented feature", and that the others work as designed, and that I should move the driver to SCPIx.

It still would have been nice to have access to local variables without needing to change the driver.

Changing the driver looks like a major enterprise, when I look at the files that use SCPIx. So I'm putting improving this (be it Mode or SCPIx) on my TODO list with "nice to have" priority.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2022, 04:43:29 pm
Changing the driver looks like a major enterprise, when I look at the files that use SCPIx. So I'm putting improving this (be it Mode or SCPIx) on my TODO list with "nice to have" priority.

It is not, you just put the #driver SCPIx line in and that's it.

#scpiCmd is a option, not something you have to use for every command.

Internally an extra layer will be added in the communication, that will intercept txrx... (and some other) commands and process them locally (i.e. allow non-standard communication).
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 23, 2022, 05:21:45 pm
Aha! that makes it a lot easier, thanks.

Attached is the improved file, and I'll leave it to that for now. For me it is good to publish.

One remark: One cannot use #forceUpperCase with SCPIx, as then "none" will be translated to "NONE" and sent to the device, and then one must wait until a timeout. That looks like a bug, since #forceUpperCase is explicitly noted as something to use with SCPIx.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 23, 2022, 05:33:34 pm
Attached is the improved file, and I'll leave it to that for now. For me it is good to publish.

I am not allowed to access it (I can access you previous upload).

It works now and I will include it with the next release.

One remark: One cannot use #forceUpperCase with SCPIx, as then "none" will be translated to "NONE" and sent to the device, and then one must wait until a timeout. That looks like a bug, since #forceUpperCase is explicitly noted as something to use with SCPIx.

That will be fixed in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 25, 2022, 09:59:45 am
A test release https://lygte-info.dk/pic/Projects/TestController/TestController.jar (https://lygte-info.dk/pic/Projects/TestController/TestController.jar) it is version 2.28

It makes it possible to send commands depending on connection:

The device must use a driver that supports #scpiCmd, this can be "#driver SCPIx".
Then a command must be defined:

#scpiCmd MyInit #pgm#
if (portType!="GPIB")
  deviceWrite(handle,"SYST:REM");
endif;

This command can then be used:
 #initCmd *RST;MyInit;



And I have made a guess about how the E5810A works.
It must be configured as a normal GPIB controller:

(http://lygte-info.dk/pic/cpf6/GPIBKeysight.png)

And the the address field of the device must contains the ID letter (here E), colon and the local GPIB address (i.e. E:22)

Is I said above, this is a guess on how it works and I need somebody to test it and report back.
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 25, 2022, 06:31:33 pm
The driver dependent stuff works for me.
New file attached.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 26, 2022, 02:49:08 am
I downloaded the 2.28 version and see the E5810 option there, BUT it won't let me enter something like A:0 or A:22 in the ID field, it is not accepting the colon and stripping that out. so it ends up being A0 or A22.

I am keen to help you get this E5810A device up and running in TC.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2022, 05:13:34 am
I downloaded the 2.28 version and see the E5810 option there, BUT it won't let me enter something like A:0 or A:22 in the ID field, it is not accepting the colon and stripping that out. so it ends up being A0 or A22.

I am keen to help you get this E5810A device up and running in TC.

On the GPIB you only use the E, the E:22 is in the device address field and the type must be GPIB.

Something else: If you need ideas for videos, some about TC would be nice (Like installing it and adding the first devices, saving configuration or doing automated tests with the "Log Event" or "Param sweeper" popup).
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on October 26, 2022, 08:36:24 am
Something is working, but I cant communicate with the DMM properly, I likely dont have the definition right as I have never done a GPIB def file.

using wireshark I can see TC is sending some commands to the E5810A, but im not getting a reply from the DMM, interestingly if I send a *IDN? from the command line in TC that doesn't get sent to the DMM, but I see a result in the window which matches the def file name, if I send READ? the DMM doesn't see it but I see it sent to the E5810A in wireshark.

I tried reading the info on the site relating to GPIB but there wasn't much said about it.

Attached is the file I am working on right now, most of it is commented out until I can get the basic comms working, maybe you can take a look and tell me what stupid mistakes I am making.

UPDATE:
It just occurred to me that when sending commands from python it included the GPIB interface and Device ids in its comms, such as “gpib0,22”, I didn’t see that in the comms from TC
Title: Re: Program that can log from many multimeters.
Post by: bateau020 on October 26, 2022, 10:03:52 am
It just occurred to me that when sending commands from python it included the GPIB interface and Device ids in its comms, such as “gpib0,22”, I didn’t see that in the comms from TC

.. which looks like which is needed, when looking at https://edadocs.software.keysight.com/kkbopen/e5810a-can-i-use-the-e5810a-without-installing-the-keysight-io-libraries-suite-589739309.html
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 26, 2022, 02:41:52 pm
Something is working, but I cant communicate with the DMM properly, I likely dont have the definition right as I have never done a GPIB def file.

using wireshark I can see TC is sending some commands to the E5810A, but im not getting a reply from the DMM, interestingly if I send a *IDN? from the command line in TC that doesn't get sent to the DMM, but I see a result in the window which matches the def file name, if I send READ? the DMM doesn't see it but I see it sent to the E5810A in wireshark.

I tried reading the info on the site relating to GPIB but there wasn't much said about it.

Attached is the file I am working on right now, most of it is commented out until I can get the basic comms working, maybe you can take a look and tell me what stupid mistakes I am making.

UPDATE:
It just occurred to me that when sending commands from python it included the GPIB interface and Device ids in its comms, such as “gpib0,22”, I didn’t see that in the comms from TC

The *idn? answer is generated by TC when using the ascii driver, this can be a advantage when testing stuff. Using SCPI or SCPIx driver will transfer it to the device.

It look like it might have a protocol, try using the lxi interface instead and send the gpib0,22 manually.
Note: The current test E5810 driver uses portmapper with the specified GPIB address as port to get a lxi connection, if you specify GPIB port as 0 it will be the same as using a standard lxi comm driver. You can see this in wireshark if you study the communication.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on October 28, 2022, 02:06:52 am
Are there any known bugs with the text controls for device definitions?

I'm in the process of developing a device definition and my text fields only appear to read from the device, but not write, despite defining the write command.

Below is an example of a text field:
Code: [Select]
#cmdSetup text Voc_List SAS_List
:write: LIST:SAS:VOC
:read: LIST:SAS:VOC?
:textwidth: 18
:tip: Enter comma-separated list of up to 512 Voc values
1000

Monitoring in debug shows that pressing the set button only triggers a read, not a write.

Also, any suggestions on how best to tidy up the readback with :readFormat: or :readmath: ?
It returns each number in the comma-separated list in scientific notation, which isn't particularly human-readable. This would be straight-forward with a number field, but I'm concerned I might have to try and shoehorn some standard java into the definition file to operate on an array or something!

This is the debug output when manually setting/reading the parameters:
TestController Window (debug mode)
Code: [Select]
LIST:SAS:VOC 64,63,62,61
;; E4360A: Tx <LIST:SAS:VOC 64,63,62,61>
LIST:SAS:VOC?
;; E4360A: Tx <LIST:SAS:VOC?>
;; E4360A: Rx <+6.400000E+01,+6.300000E+01,+6.200000E+01,+6.100000E+01>
;; +6.400000E+01,+6.300000E+01,+6.200000E+01,+6.100000E+01

TestController cmd window
Code: [Select]
LIST:SAS:VOC 64,63,62,61
;; E4360A: Tx <LIST:SAS:VOC 64,63,62,61>
LIST:SAS:VOC?
;; E4360A: Tx <LIST:SAS:VOC?>
;; E4360A: Rx <+6.400000E+01,+6.300000E+01,+6.200000E+01,+6.100000E+01>
;; +6.400000E+01,+6.300000E+01,+6.200000E+01,+6.100000E+01
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2022, 07:23:45 am
Are there any known bugs with the text controls for device definitions?

Oops, I damaged it in V2.26 when I added the SET control.
You can get a new .jar file here: https://lygte-info.dk/pic/Projects/TestController/TestController.jar (https://lygte-info.dk/pic/Projects/TestController/TestController.jar) it is V2.29 where it is fixed.

Also, any suggestions on how best to tidy up the readback with :readFormat: or :readmath: ?
It returns each number in the comma-separated list in scientific notation, which isn't particularly human-readable. This would be straight-forward with a number field,

For numeric controls it is handled automatic, but for a text control try one of these:
:readmath: formatSI(getElement(value,0))+","+formatSI(getElement(value,1))+","+formatSI(getElement(value,2))+","+formatSI(getElement(value,3))

:readmath: formatDouble(getElement(value,0),0,5,0,5)+","+formatDouble(getElement(value,1),0,5,0,5)+","+formatDouble(getElement(value,2),0,5,0,5)+","+formatDouble(getElement(value,3),0,5,0,5)

The formatSI will need reformatting when transmitting data back, it will not be needed with formatDouble.
If the number of elements is variable you need to use #scpiCmd #pgm# and a script.

but I'm concerned I might have to try and shoehorn some standard java into the definition file to operate on an array or something!

The scripting language is not Java or JavaScript, but something unique to TestController.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on October 31, 2022, 08:03:47 am
That's great, thanks!

I'm getting close on this device definition, however I'm unclear on the limitations for issuing commands within a device definition.

I've managed to pull the data into the table, but is there anyway I can set the chart parameters from within the same function instead of doing it manually?
I'm trying to build all the necessary scripting/GUI so that my colleagues don't have to be fully versed in operating the software.

Below is the snippet that I'm working with - it all works except for the last two lines:
Code: [Select]
#otherList
menuItem[0] = "Pull_DAC_Table.csv";

#otherData
var samples = 0;
var cmd = "CURR:DTAB:SAS?";
var currentTable = array(deviceRead(handle,cmd));
cmd = "VOLT:DTAB:SAS?";
var tempString = deviceRead(handle,cmd);
var voltageTable = array(tempString);
samples = countMatch(tempString,",");
tableInitHeader("index,Voltage,Current,Power");
var i;
for i = 0 to samples do
var v = voltageTable[i];
var c = currentTable[i];
var p = voltageTable[i] * currentTable[i];
tableAddRow(i,v,c,p);
i=i+1;
endfor;
chartx("Voltage");
chartCurves("Current","Power");
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 31, 2022, 08:31:57 am
I'm trying to build all the necessary scripting/GUI so that my colleagues don't have to be fully versed in operating the software.

Below is the snippet that I'm working with - it all works except for the last two lines:
Code: [Select]
...
chartx("Voltage");
chartCurves("Current","Power");

Generally I will not recommend doing that from the device driver, but instead from a menu item.

You need to use #... commands, you can use the generate functions to get an idea about them (Setup it up and use the "Chart/Hist/Range script"):
(https://lygte-info.dk/pic/Projects/TestController/DocCommands/TCLayout.png)
They are also documented in the help window when you start typing the name of the command.

If you really insist on putting it in the device driver you need to use, it uses the same #... commands as above:
runScript("#cmd");
or
runScript("#cmd1\n#cmd2\n#cmd3");
Title: Re: Program that can log from many multimeters.
Post by: jmurray on November 01, 2022, 02:34:29 am
Generally I will not recommend doing that from the device driver, but instead from a menu item.
If you really insist on putting it in the device driver you need to use, it uses the same #... commands as above:
runScript("#cmd");
or
runScript("#cmd1\n#cmd2\n#cmd3");

I can understand that recommendation and 99% of the time it would be very sensible. This particular piece of equipment though generates two sets of either 256 or 4096 data points to create an I-V curve, which I wanted to be able to visualise as part of the setup process for a quick visual representation.
Ideally I'd make it a button in the #cmdSetup popup instead of being in the #otherList, but I haven't worked that out just yet.

It was the runScript syntax that I was struggling with. Works really well now.
I still haven't gotten to working on the comma separated lists I mentioned previously. Trying my best to understand the use of #scpiCmd and #pgm#.

This software is great!
Once I get this definition polished enough, I'll upload it here.
- On that note, is metadef limited to IDN? responses? *IDN returns the mainframe model number, but the module model numbers are returned by SYST:CHAN:MOD? (and then there's the option list which is another sub-set)!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 01, 2022, 07:31:25 am
It was the runScript syntax that I was struggling with. Works really well now.
I still haven't gotten to working on the comma separated lists I mentioned previously. Trying my best to understand the use of #scpiCmd and #pgm#.

The scripting is the same as you have already done, but the #scpiCmd is supposed to return a result in the form of "value1 value2 value2...", at least when it ends with ?
This result can be made by putting it on the last line of the script (As a variable/expression/function call/value) or by use a couple of print() to build it in the script.

- On that note, is metadef limited to IDN? responses? *IDN returns the mainframe model number, but the module model numbers are returned by SYST:CHAN:MOD? (and then there's the option list which is another sub-set)!

The #meta/#metadef system generates multiple definitions from one file and the *idn? is usually to verify the correct one is selected.
At the current time there is no way to dynamically modify a definition file, but you can adjust the #cmdSetup menus with the selector control.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 01, 2022, 04:25:59 pm
Hi HKJ.
I ordered a replacement Atorch DL24M-H electronic load from China. However, the Chinese sent me an upgraded version of the DL24MP, which works on its own, but does not connect to the TC. I wrote to the Chinese that it wasn't working for me, so they sent me a communication protocol full of Chinese characters that mean nothing to me as a layman. You probably know from the last time you helped me that I don't know how to program, so I'm asking for your help again. I am connecting Chinese communication protocol. Thank you, Vladimir.

I tried adding it to ATorchPX100Devices and it didn't help. And that's probably the maximum of my programming skills.

#metadef
; 600Watt discharge power
#idString ATorch,ATorch DL24MP,
#name ATorch DL24MP
#handle ATDL24MP
#sections Protocol2
#replaceText MinCurrent 0.2
#replaceText MinVoltage 0
#replaceText MaxCurrent 40
#replaceText MaxVoltage 200
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 03, 2022, 08:47:09 am
Hi HKJ.
I ordered a replacement Atorch DL24M-H electronic load from China. However, the Chinese sent me an upgraded version of the DL24MP, which works on its own, but does not connect to the TC. I wrote to the Chinese that it wasn't working for me, so they sent me a communication protocol full of Chinese characters that mean nothing to me as a layman. You probably know from the last time you helped me that I don't know how to program, so I'm asking for your help again. I am connecting Chinese communication protocol. Thank you, Vladimir.

I tried adding it to ATorchPX100Devices and it didn't help. And that's probably the maximum of my programming skills.

The PX100 protocol has been changed again, try downloading the new version:
https://lygte-info.dk/pic/Projects/TestController/TestController.jar (https://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Check it is V2.30 on the configuration/about menu

Then add the line:
#PXVersion 3
Just after the #driver line in the PX100 definition

This will prevent it from working on older versions of the load, but I will fix that when you confirm that it works with your #metadef
I am also very curious if setting of values from the computer works, they are not documented in the protocol you posted, but maybe they are still here?
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 03, 2022, 10:12:15 am
Thanks, I'll try and get back to you.
Vladimir
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 04, 2022, 08:25:45 am
I installed version 2.30, added the above line and will now connect via any Atorch load. That's great, you have a couple of big beers at my place!  :-+

However, entering values ​​from a PC is very bad. Only time input works correctly.

Setting the cut-off voltage via the PC does not work well. For example, when I require a cut-off voltage of 1V, 25.6V is set on the load. It always sets to 25.6 times the set point on the load and I can't do anything about it.

 There is a non-linear error when setting the current with Protocol1. For example, I require 200mA, the load is set to 20mA. But when 1000mA is required, 256mA is set on the load. When 10A is requested, 2.56A is set on the load. Up to 1A, 0.1 times the desired value is set on the load, and from 1A it is 0.256 times. With Protocol2, the error is 10x larger, but the nonlinearity remains.

  The load should also be able to be switched on, off and reset the measured values ​​via the PC. Reset and shutdown work (discharge of the load occurs when any On/Off button is pressed). Switching on the load via PC does not work with any button.

 I am still in contact with the Chinese store Atorch. I have something to ask them that would help us eliminate the mentioned problems. Well thank you.

Vladimir
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 04, 2022, 09:01:28 am
Setting the cut-off voltage via the PC does not work well. For example, when I require a cut-off voltage of 1V, 25.6V is set on the load. It always sets to 25.6 times the set point on the load and I can't do anything about it.

 There is a non-linear error when setting the current with Protocol1. For example, I require 200mA, the load is set to 20mA. But when 1000mA is required, 256mA is set on the load. When 10A is requested, 2.56A is set on the load. Up to 1A, 0.1 times the desired value is set on the load, and from 1A it is 0.256 times. With Protocol2, the error is 10x larger, but the nonlinearity remains.

  The load should also be able to be switched on, off and reset the measured values ​​via the PC. Reset and shutdown work (discharge of the load occurs when any On/Off button is pressed). Switching on the load via PC does not work with any button.


It will probably be necessary to make a Protocol3 definition, but I need to now what to put in it first. Also use Protocol2 is is closer to Protocol3.

In the definition you will find some *dd, *10 *100 *1000
*dd pack the value in a special format that support 2 decimal digits, the other uses a normal binary encoding. If a value jumps (i.e. is non-linear)  it is probably because the wrong one is used.
If I have to make another *dd format for this protocol I need either some documentation or hex dump from the communication (Only the actual lines) combined with what the load displays for a couple of combinations.

You can always adjust the scale factor by modifying the (value) to something like (value/10.0) etc. This is for use with *dd, the *10 *100, etc. are the scale factors.

You want to look for the lines:
#scpiCmd setVoltage tx 3 (value) *dd
#scpiCmd setCurrent tx 2 (value) *dd   This line has separate entries in Protocol1 and Protocol2


I am still in contact with the Chinese store Atorch. I have something to ask them that would help us eliminate the mentioned problems. Well thank you.

If you can get more of the protocol definition it would make it easier. What you got was only how to read the values, not how to set the values.

Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 04, 2022, 02:26:55 pm
Thanks, I'll try it.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 04, 2022, 11:13:25 pm
So, on your advice, I added a line to ATorchPX100Devices:

#PXVersion 3

This allowed me to connect.

On the seller's website, this upgraded load is called Atorch DL24MP, or DL24M. It logs in via Bluetooth as DL24M, so I put it in the menu as DL24M.

#metadef
; 600Watt discharge power
#idString ATorch,ATorch DL24M,
#name ATorch DL24M
#handle ATDL24M
#sections Protocol2
#replaceText MinCurrent 0.003
#replaceText MinVoltage 2
#replaceText MaxCurrent 40
#replaceText MaxVoltage 200


Then I fixed the voltage input.
I modified the values ​​in the third line and it goes without error:

  ; Possible factors: none, *dd, *10, *100, *1000
#scpiCmd on tx 1 (value)*dd
#scpiCmd setVoltage tx 3 (value*10)
#scpiCmd setTime tx 4 (value)
#scpiCmd reset tx 5 0

I used Protocol2 to set the stream. But it is a compromise solution. It only works when entering whole numbers. Tenths or hundredths of amperes cannot be set. This doesn't work for me even on the DL24M-H with updated software.

When I summarize it, I am 99% satisfied with this state.
Setting voltage and time works, current only in whole numbers. I will turn on the load with the button on the load. Power off and reset works.

If you have time, incorporate it into your program, because after modification with #PXVersion 3, it is not backwards compatible. I have 3 versions of Atorch loads at home, DL24P, DL24M-H with updated software and now also DL24M. I can then try it with all three.
Thank you for cooperation.
Vladimir
Title: Re: Program that can log from many multimeters.
Post by: MiroS on November 05, 2022, 07:45:57 am
Next maybe to add  FFT and THD ?
For slow multimeters - equivalent sampling may do the job
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 05, 2022, 08:05:08 am
If you have time, incorporate it into your program, because after modification with #PXVersion 3, it is not backwards compatible. I have 3 versions of Atorch loads at home, DL24P, DL24M-H with updated software and now also DL24M. I can then try it with all three.

Try attached definition file, it adds a Protocol3 definition and the DL24M you posted.

To get the current working I either need more documentation or maybe it can be done with some experimenting:
Start TC in debug mode (Use the testControllerDebug.bat file).
Open the "Setup" menu.
Clear the log window.
Set a current value with decimals.
Post the value you entered, the output in the log window and what the load shows.
Repeat for a couple of different current values.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 05, 2022, 08:09:55 am
I will experiment but it will take a while. Well thank you.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 05, 2022, 08:14:19 am
Next maybe to add  FFT and THD ?
For slow multimeters - equivalent sampling may do the job

FFT is already in TestController, you can find it in the "Popups" menus. It is mostly useful for sub 1Hz frequencies, this can be slow oscillations in a control loop or hourly/daily variations.

equivalent sampling cannot work, the logging time is not precise enough.

If you have a fast sampling bench meter and can save the samples as a CSV file, TC may be able to analyze them.
Documentation: http://lygte-info.dk/project/TestControllerPopupFFTView%20UK.html (http://lygte-info.dk/project/TestControllerPopupFFTView%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 06, 2022, 11:57:11 am
Hi HKJ.
 Using the new "ATorchPX100Devices.txt" it is possible to connect with any of my three loads. DL24P, DL24M-H V2 and the latest DL24M. It's great. My first version of DL24P also works with DL24. I think there is no difference between them. For others, the correct version must be selected so that the settings are correct.

With the help of your advice, I also managed to make the current settings for the DL24M and DL24M-H V2 functional. The attached picture shows the correct setting where it works 100%. I came up with this completely by accident because I noticed that you corrected the voltage setting line after me and corrected the multiplication from the parenthesis to the multiplication after the parenthesis. After this modification, the setting of decimal places in the voltage setting stopped working. If I requested 2.5V, the load set only 2V. She did not accept tithes. Returning the multiplication to the parentheses solved the problem.

This made me wonder if the unresolved current setting would have the same problem. Well, it was enough to write the multiplication in parentheses and the problem was over. According to the settings in the attached image, everything works 100% even with older versions.
 That is, except for one detail. The ON button does not yet work on the DL24M. The load must be turned on manually with the button on the load display. I can't solve that yet.
Please incorporate these changes into your program and I hope this helps someone. I am very satisfied with your TC so far.

Thanks for the help and see you over that beer. I pay.
Vladimir.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 06, 2022, 12:30:02 pm
That is, except for one detail. The ON button does not yet work on the DL24M. The load must be turned on manually with the button on the load display. I can't solve that yet.
Please incorporate these changes into your program and I hope this helps someone. I am very satisfied with your TC so far.

This line controls on:

#scpiCmd on tx 1 (value) *dd

Maybe you have to get rid of the *dd?

if that doesn't work you can try:
#scpiCmd on tx 1 (value?0xffffff:0)
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 06, 2022, 04:53:20 pm
Removing *dd made no change. Insert #scpiCmd on tx 1 (value?0xffffffff:0)
will cause the On button to be completely disabled. It worked before, but incorrectly, because it turned off the load instead of turning it on. We don't want that. So the change is having an impact, but we still need it to kick in.

 The Off button works normally.
Title: Re: Program that can log from many multimeters.
Post by: vladobac on November 06, 2022, 05:39:51 pm
None of the following will help you:
https://drive.google.com/file/d/1YP4RBUqehdIGoVbNp_mVlEybHPYsaNiD/view?usp=share_link
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 07, 2022, 08:33:22 am
Hi HKJ,

Firstly, thanks for writing and sharing the Test Controller.
I am trying to communicate with your program the UD24  (https://pl.aliexpress.com/item/1005001468417961.html?spm=a2g0o.store_pc_promotion.promotePruductList_2003982463021.10)device from ATORCH.
As it is not listed I selected ATORCH USB and it looks like some communication is taking place. The "Current values" tab shows the parameters I am interested in, but there is a problem reading the values.
The "Commands" tab still displays -> ATUSB: Rx as numbers <No data (timeout?)>

What should I check/change in order to be able to read the values in real time?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 09:02:32 am
I am trying to communicate with your program the UD24  (https://pl.aliexpress.com/item/1005001468417961.html?spm=a2g0o.store_pc_promotion.promotePruductList_2003982463021.10)device from ATORCH.
As it is not listed I selected ATORCH USB and it looks like some communication is taking place. The "Current values" tab shows the parameters I am interested in, but there is a problem reading the values.
The "Commands" tab still displays -> ATUSB: Rx as numbers <No data (timeout?)>

What should I check/change in order to be able to read the values in real time?

Atorch has many different protocols, most loads uses a variation of the PX100 (There are 3 in the beta of TC, 2 in older) and other devices uses another protocol with a ID of the device type.
You can find the definition in the files: "ATorchDevices.txt" and  "ATorchPX100Devices.txt"

I would recommend starting TC in debug mode using the "TestControllerDebug.bat" file and then try the different devices (Look in the files for names, the are after the #name tag) and see if any of them answers.
If you get a answer (RX lines) but nothing works, post it here and I will take a look.

The best solution is to find a document describing the protocol, but it may be possible to work it out without that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 09:13:04 am
Removing *dd made no change. Insert #scpiCmd on tx 1 (value?0xffffffff:0)
will cause the On button to be completely disabled. It worked before, but incorrectly, because it turned off the load instead of turning it on. We don't want that. So the change is having an impact, but we still need it to kick in.

I put too many ff in the message, there is only supposed to be six.
#scpiCmd on tx 1 (value?0xffffff:0)
this will send all bits as one and turn the load on if it checks on a specific bit position, but not if it checks for a specific value.

#scpiCmd on tx 1 (value?0x000001:0)
is similar to #scpiCmd on tx 1 (value)
that sends a 1

#scpiCmd on tx 1 (value?0x000100:0)
is similar to #scpiCmd on tx 1 (value)  *dd


You can try other values, using a 1-2-4-8 sequence in the different positions will try all single bit combination, but is a lot of work and do not check if it want a a specific number (That is more and 16 million combinations).
#scpiCmd on tx 1 (value?0x000002:0)
#scpiCmd on tx 1 (value?0x000004:0)
#scpiCmd on tx 1 (value?0x000008:0)
#scpiCmd on tx 1 (value?0x000010:0)
#scpiCmd on tx 1 (value?0x000020:0)
etc.
Some documentation would be much better.

Best regards
Henrik K. Jensen

None of the following will help you:

You are correct.
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 07, 2022, 09:40:26 am
I don't know if I understood correctly, in debug mode it is currently as below.
Then RX responds in the same way over and over again

Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM59 - ATorch USB
;; Start thread for: COM1
;; Start thread for: COM2
;; Start thread for: COM60
;; Stopping thread for: COM59 - ATorch USB
;; COM59: Close
;; Stopping thread for: COM60
;; COM60: Close
;; COM1: Set params: 9600
;; COM2: Set params: 9600
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM2: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
;; COM1: Rx: timeout
;; COM2: Rx: timeout
;; COM1: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM2: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 13 00 AD 09 2B 14 00 00 00 00 00 00 00 33
;; COM1: Rx: timeout
;; Stopping thread for: COM1
;; COM1: Close
;; COM2: Rx: timeout
;; Stopping thread for: COM2
;; COM2: Close
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
;; COM59: Rx: FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 09:58:13 am
I don't know if I understood correctly, in debug mode it is currently as below.
Then RX responds in the same way over and over again

That is a very useful result, but there is too much clutter. This is because you have check marked "Scan serial ports", that makes the display more complicated to read when using debug mode.

The answer from the device is:
FF 55 01 03 00 02 07 00 00 00 01 4B D1 00 00 00 45 00 00 00 00 00 14 00 AD 09 2B 14 00 00 00 00 00 00 00 3C
And that is the ATorch USB interface.

This is supposed to work, try selecting the "Current value" page shortly when debug is on.

Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 07, 2022, 10:05:09 am
Nothing appears in the mentioned page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 10:39:20 am
Nothing appears in the mentioned page.

That is not right, but I tried the log messages you posted and found out the checksum did not work.

Go into the "ATorchDevice.txt" file and find:

#driver ATorch
#readingDelay 5

#checksum SUM44

Change the last line to

#checksum none


Save file and restart.
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 07, 2022, 10:51:17 am
Bingo, it looks like the values have started to display  :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 11:06:58 am
Bingo, it looks like the values have started to display  :)

Good. In normal usage you do not want to run it in debug mode. and you can checkmark "Scan serial ports" again if you need it (It is mostly for homemade Arduino devices).
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 07, 2022, 11:40:17 am
By the way, some tabs are inactive with me (Chart, Histogram, Range). What does this depend on?
What should I do to log the change in e.g. current values over time?

I think I already see -> Log button :)

Thank you for your help so far.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 07, 2022, 12:35:50 pm
By the way, some tabs are inactive with me (Chart, Histogram, Range). What does this depend on?
What should I do to log the change in e.g. current values over time?

I think I already see -> Log button :)

You found it and that also enabled the other tabs (You either need to log some data or load a CSV file to enable these tabs).
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 09, 2022, 09:41:30 am
You found it and that also enabled the other tabs (You either need to log some data or load a CSV file to enable these tabs).
I will ask about one more aspect.

Currently, readings of voltage and current values are limited to two decimal places but UD24 displays data to 5 decimal places.
Can the accuracy of the reading be easily extended?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 09, 2022, 09:49:41 am
Currently, readings of voltage and current values are limited to two decimal places but UD24 displays data to 5 decimal places.
Can the accuracy of the reading be easily extended?

Yes, find this section in the file:
#metaSection USB_DEVICE
#subDriver USB
#value Voltage V D2
#value Current A D2
#value Capacity Ah D3
#value Energy Wh D2
#value D_Minus V D2
#value D_Plus V D2
#value Power W D3

The D2/D3 is the format, using D5 will show 5 decimal places.
Please post your final settings and I will update the original definition.

You can also directly in the window override the build-in settings by right-clicking and select format.

Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 09, 2022, 09:59:27 am
Four digits after the decimal point is sufficient for me. File attached.
Thank you.

Edit
It appears that changing the settings did not make the TC read the data more accurately.
Readings are displayed to four decimal places but the last two digits are always zeros!
Title: Re: Program that can log from many multimeters.
Post by: Arczi on November 10, 2022, 07:29:00 am
Do zero values on the last two positions mean that the TC is not getting the right data from the device?
Or is it enough to change the format of answer?

;; ATUSB: Rx as numbers <5.17 0.51 0.864 23.59 0.0 0.69 2.6367>

Code: [Select]
#metaSection USB_DEVICE
#subDriver USB
#value Voltage V D4
#value Current A D4
#value Capacity Ah D4
#value Energy Wh D4
#value D_Minus V D4
#value D_Plus V D4
#value Power W D4

#askValues values?

; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat ffffffxxf
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 10, 2022, 09:37:02 am
Do zero values on the last two positions mean that the TC is not getting the right data from the device?
Or is it enough to change the format of answer?

And now I remember the reason for the low digit count: The protocol do not send more digits.
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on November 11, 2022, 01:43:07 pm

However, I am still not getting what I have explained above: selecting "Pb" should unlock "PB_Bat_Float_Voltage" before doing anything with the "Set" button.

Use the debug mode (I.e. start the program with "testControllerDebug.bat" and watch the DOS windows for any error messages.

A easy way to check for a couple of string values in to use the function inList() https://lygte-info.dk/project/TestControllerFunctions%20UK.html#inList (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#inList)  it is shorter than a bunch of equal or not equal tests and easier to read.

Hello

Here is another test where I am sending a command that returns all the parameters from the memory #20. The first parameter is decoded correctly, the others parameters are wrong.

Code: [Select]
;; JB002: Tx <GetTest? 0x0C 0x30 0x30 0x30 0x41 0x38 0x31 0x30 0x30 0x31 0x34>
;; COM43: Tx: 0C 30 30 30 41 38 31 30 30 31 34 30 31 46 46 0D
;; COM43: Rx: 0C 30 30 34 45 43 31 30 30 31 34 30 30 30 32 30 30 30 33 30 30 44 32 30 38 33 34 30 38 33 34 30 45 37 34 30 30 30 30 30 30 33 32 30 30 36 34 30 31 32 43 30 30 30 30 30 30 30 30 30 30 30 30 30 34 36 35 30 30 30 30 30 30 30 30 30 30 33 43 30 46 37 35 0D
;; Rx 20 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
;; JB002: Rx <20 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4>

What am I doing wrong?

I need to update each field; A to R in the future; A to C in this example with the different values returned.
 
Text file attached.
Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 12, 2022, 09:17:45 am
What am I doing wrong?

Only use / once to start format specifications:

/7h4 /11h4 /15h4 /19h4 /23h4 /27h4 /31h4 /35h4 /39h4 /43h4 /47h4 /51h4 /55h4 /59h4 /63h4 /67h4 /71h4 /75h4

/ 7h4 11h4 15h4 19h4 23h4 27h4 31h4 35h4 39h4 43h4 47h4 51h4 55h4 59h4 63h4 67h4 71h4 75h4
Title: Re: Program that can log from many multimeters.
Post by: rachdatu on November 13, 2022, 04:56:46 pm
What am I doing wrong?

Only use / once to start format specifications:

/7h4 /11h4 /15h4 /19h4 /23h4 /27h4 /31h4 /35h4 /39h4 /43h4 /47h4 /51h4 /55h4 /59h4 /63h4 /67h4 /71h4 /75h4

/ 7h4 11h4 15h4 19h4 23h4 27h4 31h4 35h4 39h4 43h4 47h4 51h4 55h4 59h4 63h4 67h4 71h4 75h4

Thanks. I was away for a too long time...

I can now read and write all parameters from/to the device. However, I am getting a crash right at the start:

Code: [Select]
Starting
;; jSerialComm version: 2.9.1
;; Start thread for: COM43 - Test 003
;; COM43: Set params: 9600
;; Found Test 003 on Toshiba Bluetooth (COM43)
;; JB003: Tx <GetTestA?>
;; JB003: Rx Timeout
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownEx
ception: Variable not found CurrentValueA
(getElement(CurrentValueA,____<----____0,"[ ]"))
        at dk.hkj.script.Script.getVar(Script.java:73)
        at dk.hkj.script.Script.parseValue(Script.java:281)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.parseParamList(Script.java:123)
        at dk.hkj.script.Script.parseValue(Script.java:267)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.parseValue(Script.java:239)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.expression(Script.java:1220)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:323)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:339)
        at dk.hkj.devices.SetupFormats$ComboboxField.syncValue(SetupFormats.java
:3483)
        at dk.hkj.devices.SetupFormats.syncAll(SetupFormats.java:308)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:
124)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:
131)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:129
)
        at dk.hkj.main.PopupSetupSelection$3.actionPerformed(PopupSetupSelection
.java:88)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionP
rivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

How to get rid of it?

Another question: these parameters are read by sending the memory address (ex: 1 ; can go up to 20) together with a command (always the same).
It would be much faster to update the different fields if I could concatenate the command and the address like this:

:read: GetTestA? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /7h4
:read: GetTestB? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /11h4
:read: GetTestC? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /15h4
Etc.
Possible?

File attached

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 14, 2022, 09:20:06 am

How to get rid of it?

There are two ways:
1) Use getVar("CurrentValueA"), it will return a empty value when the var is undefined.

2) Define the variables first:
#scpiCmd init none
:setvar: CurrentValueA="";


#initCmd init;


Another question: these parameters are read by sending the memory address (ex: 1 ; can go up to 20) together with a command (always the same).
It would be much faster to update the different fields if I could concatenate the command and the address like this:

:read: GetTestA? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /7h4
:read: GetTestB? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /11h4
:read: GetTestC? ((bytesAsHex("\x0c",1,0))+" "+(bytesAsHex("000A81",6,0))+" "+ The memory address here   /15h4
Etc.
Possible?

There is nothing to prevent you from doing the conversion yourself when using fixed values, i.e.:
:read: GetTestA? ("0x0c 0 0 0 0x0a 0x81 ")+ The memory address here   /7h4
Title: Re: Program that can log from many multimeters.
Post by: jmurray on November 18, 2022, 02:28:14 am
Hi HKJ,

Are there any quirks I need to be aware of when designating custom directories in the batch testController.bat file?

I seem to be able to define a custom directory for data and charts, but have not had any success designating a supplemental directory for devices.
It seems as though some custom directories work, and some don't.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2022, 01:00:17 pm
Hi HKJ,

Are there any quirks I need to be aware of when designating custom directories in the batch testController.bat file?

I seem to be able to define a custom directory for data and charts, but have not had any success designating a supplemental directory for devices.
It seems as though some custom directories work, and some don't.

You are correct, ScriptDir and DeviceDir is faulty, they will be fixed in next release.
Note: These overrides the default directories, they do not add extra locations (DeviceDir is usually* a supplemental location in addition to the build in definitions).
*On Linux it is possible to install TC so they are the same (If TC is in a folder called TestController in home).
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on December 05, 2022, 12:39:00 am
Hello.

I built Sairus cable for my BM869S and it works well with his software.
Is there any way to make this TestController software work with that cable? It Works only with RX through a USB-Serial adaptor. Includes a 12F683 pic that implements the protocol inside of it. Was checking the TestController software but for BM869S it uses USBHID per default.

Thanks,
Jorge
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 06, 2022, 01:57:15 am
I can no longer reach GPIB devices connected to a Prologix Ethernet interface with Test Controller. The debug window shows ";; jSerialComm version: 2.9.1" but nothing else.

Since I recently moved to a new computer, I am wondering if something is missing from the new set up. TestController works as expected on the new computer when talking to LXI and Socket connected devices; the problem is only with the Prologix Ethernet connected devices.

FWIW, I can telnet into the Prologix controller and verify that it is responding at the expected IP address, and also that it can talk to my 3 GPIB instruments. So things look OK at a hardware level.

What am I missing?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 06, 2022, 09:36:57 am
I built Sairus cable for my BM869S and it works well with his software.
Is there any way to make this TestController software work with that cable? It Works only with RX through a USB-Serial adaptor. Includes a 12F683 pic that implements the protocol inside of it. Was checking the TestController software but for BM869S it uses USBHID per default.

The build-in definition cannot handle a serial connection, but you can make a definition with: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol (https://lygte-info.dk/project/TestControllerConfigDevice2 UK.html#Binary_DMM_protocol)

Another solution is if you can post the hex (hex in ascii format, bot a binary hex dump) output for a couple of readings and list the actual range and values. Then I will see if I can adapt the existing driver to handle it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 06, 2022, 09:40:40 am
I can no longer reach GPIB devices connected to a Prologix Ethernet interface with Test Controller. The debug window shows ";; jSerialComm version: 2.9.1" but nothing else.

Since I recently moved to a new computer, I am wondering if something is missing from the new set up. TestController works as expected on the new computer when talking to LXI and Socket connected devices; the problem is only with the Prologix Ethernet connected devices.

FWIW, I can telnet into the Prologix controller and verify that it is responding at the expected IP address, and also that it can talk to my 3 GPIB instruments. So things look OK at a hardware level.

What am I missing?
Have you listen the correct serial port in the address column, try pressing F2 to enter edit mode of the address column, then right click the mouse, it will list available serial ports.

If it is on Linux the issue may also be access to the serial port.
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on December 06, 2022, 02:33:54 pm

Another solution is if you can post the hex (hex in ascii format, bot a binary hex dump) output for a couple of readings and list the actual range and values. Then I will see if I can adapt the existing driver to handle it.
Hello,

I am adding the Serial Port monitor from interface connection, read voltage mode for 2.9995V and disconnect, in auto mode. Used the Serial Port monitor software. Not sure if anything better.
This is HTML but had to rename extension to TXT.
I can provide other readings if this is the right methode.

Added what seems to be the first reading. It is sending the displayed digit bytes as per BM869s protocol. Bytes 1,2 and 10 from protocol seems not to be sent. 

Cheers,
Jorge
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 06, 2022, 05:23:20 pm
I can no longer reach GPIB devices connected to a Prologix Ethernet interface with Test Controller. The debug window shows ";; jSerialComm version: 2.9.1" but nothing else.

Since I recently moved to a new computer, I am wondering if something is missing from the new set up. TestController works as expected on the new computer when talking to LXI and Socket connected devices; the problem is only with the Prologix Ethernet connected devices.

FWIW, I can telnet into the Prologix controller and verify that it is responding at the expected IP address, and also that it can talk to my 3 GPIB instruments. So things look OK at a hardware level.

What am I missing?
Have you listen the correct serial port in the address column, try pressing F2 to enter edit mode of the address column, then right click the mouse, it will list available serial ports.

If it is on Linux the issue may also be access to the serial port.
I deleted the Prologix GPIB controller in the Load Devices page and re-installed it. Now it works as expected.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 07, 2022, 08:49:16 am
This is HTML but had to rename extension to TXT.
I can provide other readings if this is the right methode.

It is nice to view, but not that easy to test. I wonder why byte 10 is missing?
Can you post a list of hex bytes, like: "33 44 55 66"
I can put that directly into a Arduino and use it for testing.
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on December 07, 2022, 11:53:48 am
It is nice to view, but not that easy to test. I wonder why byte 10 is missing?
Can you post a list of hex bytes, like: "33 44 55 66"
I can put that directly into a Arduino and use it for testing.

Hello,

I managed to use the driver from BM357S with TestControllerDebug, but then the software doesn't knows how to interpret this.
Since is using unilateral flow (Rx only) then some windows are sending TX which the interface cannot interpret.

Below the Hex captures from the debug, and captured screens from the App from Sairus.
This interface cable is handy as with few euros one can implement the cable. I spent around 3 euros in Aliexpress plus programing pic plus soldering time. All done fits on well compacted form, even with through-holes. :)
From the other thread I believe multiple people implemented the same.
It would be great if it could work in your software as well.

Sairus didn't shared the code for the pic (only the hex for programing it) but shared code for alternative arduino implementation, so most probably using the same concept he implemented in the pic which is way cheaper. We just need on top USB-UART cheap board. Adding the ino code in attachment "Brymen_RS - .ino.txt" as well in case is useful to understand what the code PIC is doing.

Driver: BM357S
Case1: AC voltage
;; COM3: Rx: 01 11 BE E5 FC BE 7C 01 00 A0 BE BE BF 04 00 86 86 86 86 80

Case2: DC Voltage plus AC
;; COM3: Rx: 11 00 BE E5 FC F8 DA 01 20 BE E5 FC A0 08 00 86 86 86 86 80

Case3: DC Voltage + extra digit (500000 counts)
;; COM3: Rx: 11 10 DA FD FC FC E4 F9 00 00 00 00 00 00 00 86 86 86 86 80

Case4: Resistance 400 ohms
;; COM3: Rx: 01 10 E4 BE BE A9 7E 00 00 00 00 00 00 00 10 86 86 86 86 80
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2022, 12:42:56 pm
Below the Hex captures from the debug, and captured screens from the App from Sairus.
This interface cable is handy as with few euros one can implement the cable. I spent around 3 euros in Aliexpress plus programing pic plus soldering time. All done fits on well compacted form, even with through-holes. :)
From the other thread I believe multiple people implemented the same.
It would be great if it could work in your software as well.

It is working now, but before posting it I will ask if there is any interest for it to be implemented in BM525 && BM829.

Besides being a cheaper solution that the original cable, it will also work on Linux and Mac systems with TC.

There is a link to his Arduino sketch here: https://www.eevblog.com/forum/testgear/brymen-bm869(867)-alternative-software/ (https://www.eevblog.com/forum/testgear/brymen-bm869(867)-alternative-software/)
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 10, 2022, 05:11:24 pm
HKJ -
Is it possible to modify the "indicator" control so that its state can be queried by other controls?
I am working on a new device file and this would be very useful for enabling some of the downstream controls.
Thanks.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 10, 2022, 05:45:49 pm
Is it possible to modify the "indicator" control so that its state can be queried by other controls?
I am working on a new device file and this would be very useful for enabling some of the downstream controls.

I believe it is and I will look at it tomorrow.
It will probably get two values: name.on and name.color See documentation
You can easily make color values by using color("yellow") or color(255,0,0) in the script when checking. In fact the color parameter to the indicator is exactly the same as the "..." parameter to the color function.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 11, 2022, 03:53:54 pm
V2.31 is up.
Fix of a some bugs and some additions.
   Added: Variable for control indicator & indicatorInt
   Added: Support for Brymen BM869 with user made serial interface
   Fixed: Definition of scriptDir & deviceDir as command line parameter did not work.
   Added: DL24M load (Thanks vladobac)
   Added: Atorch PX100 V3 protocol, missing on function (Thanks vladobac)
   Fixed: Removed checksum on ATorhc USB to make it work (Thanks Arczi).
   Fixed: Text controller writing to device did not work (From V2.26).
   Fixed: SCPIx #forceUpperCase blocked for some commands (Thanks bateau020 for reporting it).
   Changed: AgilentHP 663xB definition to include 66332A, support GPIB and opt #760 (Thanks bateau020)
   Added: Variable portType is available in #pgm# scripts
   Added: Functions bytesToHex that convert the argument to a string of 0xnn items.

This will probably be the last release in 2022.

Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 11, 2022, 09:00:54 pm
V2.31 is up.

There are some unexpected things on the debug screen:

Title: Re: Program that can log from many multimeters.
Post by: jorgemef on December 11, 2022, 10:07:33 pm
V2.31 is up.
...
   Added: Support for Brymen BM869 with user made serial interface
...

This will probably be the last release in 2022.

Now it works. Many thanks. :).
Now need to understand how to add secondary measurements. Seems only presenting primary ones.

Also need to understand how do display the scale with full resolution. :) As example I can only see 11 on the chart, but I am sure can be somehow changed to something related to the range of the values. -> (found it. Is just change the decimals in the scales).

BR,
Jorge
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 12, 2022, 09:49:56 am
There are some unexpected things on the debug screen:
  • Even with all devices deselected, the Brymen info shows up.
  • The five error lines at the bottom show up if I click "About" in the configuration page.

That is due to the definitions, I have uploaded a zip file with fixed definition, but TC is still V2.31
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 12, 2022, 09:56:09 am
Now need to understand how to add secondary measurements. Seems only presenting primary ones.

I generally do not decode secondary displays on multimeters, there are a couple of reasons for that.

Also need to understand how do display the scale with full resolution. :) As example I can only see 11 on the chart, but I am sure can be somehow changed to something related to the range of the values. -> (found it. Is just change the decimals in the scales).

I addition you can click on the chart and get a readout will full values for a specific point on the curve.
Title: Re: Program that can log from many multimeters.
Post by: xchg.ca on December 12, 2022, 03:53:42 pm
I wondering if this software supports data from chinese RC lipo chargers like Turnigy Accucell etc, there many clones with different names but seems like they have same or very similar over serial protocol
Here is the example of some attempt to decode the protocol
https://2007.blog.dest-unreach.be/2012/01/29/imax-b6-charger-protocol-reverse-engineered/
and
https://github.com/LateralGs/accucell_6_logger
If Not :
How easy I can be added, I know Java so I can participate in this if needed

Merci
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 13, 2022, 08:28:10 am
If Not :
How easy I can be added, I know Java so I can participate in this if needed

TC do not directly support RC chargers or their protocol, but has a lot of customizable drivers that can be adapted without any Java programming.

This one looks usable for the device:
https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block))
You will have to use the configuration for streaming data

Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 14, 2022, 12:38:39 am
V2.31 is up.
Fix of a some bugs and some additions.
   Added: Variable for control indicator & indicatorInt

I'm not having much luck with the indicator state variable.
A code snippet is below. While the indicator itself turns on and off as expected, the radio control below the indicator -- which should be enabled only when the indicator is off -- does not track the state of the indicator variable.
What am I missing?

Code: [Select]
#cmdSetup indicator Trigger Ch2Setup
:read: :FUNC?
:string:
Coupled_to_Channel_1 match(unQuote(value),"TINT") green
:updatemodechange:

#cmdSetup radio Trigger_Level Ch2Setup
:read: :EVEN2:LEV:ABS?
:write: :EVEN2:LEV:ABS #
Auto 1
Manual 0
:enable: Ch2Setup.Trigger!=1
:updatemodechange:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 14, 2022, 12:05:58 pm
I'm not having much luck with the indicator state variable.
A code snippet is below. While the indicator itself turns on and off as expected, the radio control below the indicator -- which should be enabled only when the indicator is off -- does not track the state of the indicator variable.
What am I missing?

Two points:
All :...: must be place before other parameters.
Use :enable: displayVar(split(getVarList(1),"\n"));" to see the actual value of the variables, it is not 1
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 14, 2022, 04:34:55 pm
Two points:
All :...: must be place before other parameters.
Use :enable: displayVar(split(getVarList(1),"\n"));" to see the actual value of the variables, it is not 1
Thanks for the tip about the "::" statement placement. I fixed that.
But still no luck with the :enable: logic.
First, I added the displayVar snippet. That produced the list shown in the attachment.
Next, I tried using that exact sequence in the enable section, like this:
Code: [Select]
:enable: Ch2Setup.Trigger!={string}match(unQuote(value),\x22TINT\x22)But that triggered an error from Java, that looked like this:
Code: [Select]
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$InvalidException: <{> is not a valid token
Ch2Setup.Trigger!={____<----____string}match(unQuote(value),\x22TINT\x22)
        at dk.hkj.script.Program.nextTokenWhiteSpace(Program.java:646)
        at dk.hkj.script.Program.nextToken(Program.java:673)
        at dk.hkj.script.Script.next(Script.java:102)
        at dk.hkj.script.Script.parseCompare(Script.java:531)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.expression(Script.java:1220)
        at dk.hkj.devices.SetupFormats.calcEnable(SetupFormats.java:344)
        at dk.hkj.devices.SetupFormats.enableItems(SetupFormats.java:332)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:125)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:131)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:129)
        at dk.hkj.main.PopupSetupSelection$3.actionPerformed(PopupSetupSelection.java:88)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

So I removed the offending "{string}" token, changing the line to this:
Code: [Select]
:enable: Ch2Setup.Trigger!=match(unQuote(value),\x22TINT\x22)
That generated a new error:
Code: [Select]
Exception in thread "AWT-EventQueue-0" dk.hkj.script.ProgramExceptions$UnknownException: Variable not found value
Ch2Setup.Trigger!=match(unQuote(value)____<----____,\x22TINT\x22)
        at dk.hkj.script.Script.getVar(Script.java:73)
        at dk.hkj.script.Script.parseValue(Script.java:281)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.parseParamList(Script.java:123)
        at dk.hkj.script.Script.parseValue(Script.java:267)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:525)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.parseParamList(Script.java:123)
        at dk.hkj.script.Script.parseValue(Script.java:267)
        at dk.hkj.script.Script.parseBitOp(Script.java:316)
        at dk.hkj.script.Script.parseProduct(Script.java:388)
        at dk.hkj.script.Script.parseSum(Script.java:470)
        at dk.hkj.script.Script.parseCompare(Script.java:532)
        at dk.hkj.script.Script.parseLogical(Script.java:561)
        at dk.hkj.script.Script.parseQuestionMark(Script.java:587)
        at dk.hkj.script.Script.parseExpression(Script.java:612)
        at dk.hkj.script.Script.expression(Script.java:1220)
        at dk.hkj.devices.SetupFormats.calcEnable(SetupFormats.java:344)
        at dk.hkj.devices.SetupFormats.enableItems(SetupFormats.java:332)
        at dk.hkj.main.PopupSetupSelection.initialSync(PopupSetupSelection.java:125)
        at dk.hkj.main.PopupSetupSelection.timerUpdate(PopupSetupSelection.java:131)
        at dk.hkj.main.PopupSetupSelection.access$3(PopupSetupSelection.java:129)
        at dk.hkj.main.PopupSetupSelection$3.actionPerformed(PopupSetupSelection.java:88)
        at javax.swing.Timer.fireActionPerformed(Unknown Source)
        at javax.swing.Timer$DoPostEvent.run(Unknown Source)
        at java.awt.event.InvocationEvent.dispatch(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Any thoughts?

[Edit: I should also mention that I tried:
Code: [Select]
:enable: Ch2Setup.Trigger!="TINT"That gave no Java error, but the :enable: does not change states.]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 15, 2022, 09:24:06 am
But still no luck with the :enable: logic.

I looked at bit more on it and that indicator is a bit tricky to handle, because there is no well defined field with its current value.

To get around that I went back to multiple fields for the variable in this new .jar file:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)

There are four vars present:
.on for color turned on.
.color for actual color, see my initial post about format.
.value actual value, this is the same as now and is not exactly the best to match on in this case.
.name the name at the start of the line

name, value and color will contain the first line when no match is found and on will be 0
In all other cases they will contain the matching line and on will be 1.

In the var list "{string}" is the actual type of the variable, the rest of the line is the contents. For strings you must put quotes around the contents to match.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 15, 2022, 05:03:01 pm
.on for color turned on.

That works perfectly, thanks HKJ.

Except for one side issue with :enable: -- it does not seem to be responding when its associated control is updated by another control.

The code below shows that the indicator control sends an update to the radio button control. The radio control is enabled/disabled according to the state of the indicator, using your new ".on" variable in an "enable" statement. So this code should cause the radio button's enablement to track the state of the indicator.

What I see is slightly different. (1) The radio button's enable logic works when the Setup window is initially loaded. At that point the radio button is enabled or disabled according to the state of the indicator, as expected.

But (2) if the mode is then changed. the indicator responds correctly but the radio button stays in its initial state. It seems that its "enable" statement is not firing or something. It is necessary to close and re-open the setup window to get the radio button's "enable" logic to work.

Any suggestions to try?

Code: [Select]
#cmdSetup indicator Trigger Ch2Setup
:read: :FUNC?
:string:
:updatemodechange:
:update: Ch2Setup.Trigger_Level
Coupled_to_Channel_1 match(unQuote(value),"TINT") green

#cmdSetup radio Trigger_Level Ch2Setup
:read: :EVEN2:LEV:ABS?
:write: :EVEN2:LEV:ABS #
:enable: Ch2Setup.Trigger.on!=1
Auto 1
Manual 0
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 15, 2022, 06:15:47 pm
Any suggestions to try?

Updates are done when a control writes a setting to a device and because the indicator newer writes a setting, it never calls update.

Maybe I need to change that for the indicator, i.e. it will send a update if the state changes and a :update: tag is present (This will also include itself, reading its own state again).
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 15, 2022, 06:25:54 pm
Thanks, HKJ.Sounds like a good solution.
No hurry, so I'll just wait until you resume updating TC after the New Year.
Happy Holidays.
Hexley
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 16, 2022, 02:51:09 pm
Thanks, HKJ.Sounds like a good solution.
No hurry, so I'll just wait until you resume updating TC after the New Year.

I will not make official releases, but test updates will still be made when needed.

I hope this updated jar file fixes your problem (It is V2.33):
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: Hexley on December 16, 2022, 04:31:16 pm
I hope this updated jar file fixes your problem (It is V2.33):

That works perfectly. Thanks, HKJ.

One last question about the indicator control: is it possible to suppress the display of either the control label or the parameter text field?

Right now, it displays two text fields before the actual indicator, as shown in Pic 1.

Is there a work-around to make it show only one field before the indicator? Either the control parameter (Pic 2) or the control name (Pic 3) would be fine.

This is a "nice-to-have" not a "have-to-have" feature, of course. But I thought it could not hurt to ask...
     
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 16, 2022, 04:49:50 pm
One last question about the indicator control: is it possible to suppress the display of either the control label or the parameter text field?

You can always define the label (second name) as _ (Underscore), it many places it will be replace with a space.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on December 19, 2022, 07:15:26 pm
May I recommend for the "Current values" display, user definable background colours.
Might help readability in the case shown below where it would be of advantage to highlight every third line.

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 19, 2022, 11:28:35 pm
Hello everyone, first time posting here. This thread looks like it's the end-all-be-all reference for the Test Controller app.
I just purchased an East Tester ET5410A+ 400W Electronic Load to do some detailed capacity tests on custom built 12V lithium battery packs. The idea is to accelerate capacity testing (currently done at 150W) and chart the discharge so I can set better state of charge (SOC) estimate value within the battery's battery management system (BMS). Currently I can enter voltage values for every 10% of SOC from 0% to 100%. The tedious way to do this is by estimating how long the test would be, divide that by 10 and measure voltage at each time segment. That'd be a royal today as my battery test takes around 26hrs at 150W. Doing the same would be easier with the ET5410 though still a 10hr process, checking every hour.
That's when I learned about the Test Controller app. I'm working on a Mac platform. I've downloaded the app and Java. The app seems to open properly though I can't load any test device. I've also connected the ET5410 to the Mac using a USB cable but am failing at adding a device. I see that there is a folder full of devices in the Test Controller app folder, but I'm unsure what to do with these. I tried loading the ET5410A.txt file in the first page but that doesn't do much. In the "Load Devices" section, I tried following the instructions on the App's website but I can't seem to find out how to load the device. The Load Device page stay blank/empty and the little pull-down menu in the lower left corner never shows any option.
I've tried 2 different Macs, both with JAVA (a Mac mini M1 and a 2013 MacBook Pro), and I tried all the USB ports to no avail.
I've searched this thread for keywords relating to "Mac," "East Tester," "ET54**" and "Load Device" but can't find any information that I can utilize.
I'm obviously no expert in this field but I figured adding some simple automation and graph charting of discharge wouldn't be too difficult. Hopefully I'm just missing something simple and stupid as is often the case.
Any input would be appreciated!
Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 20, 2022, 11:09:46 am
May I recommend for the "Current values" display, user definable background colours.
Might help readability in the case shown below where it would be of advantage to highlight every third line.

I do not really understand you. Every fourth line is a different color to make it easier when many lines are shown, I use that on most table displays.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 20, 2022, 11:16:37 am
I'm working on a Mac platform. I've downloaded the app and Java. The app seems to open properly though I can't load any test device. I've also connected the ET5410 to the Mac using a USB cable but am failing at adding a device. I see that there is a folder full of devices in the Test Controller app folder, but I'm unsure what to do with these. I tried loading the ET5410A.txt file in the first page but that doesn't do much. In the "Load Devices" section, I tried following the instructions on the App's website but I can't seem to find out how to load the device. The Load Device page stay blank/empty and the little pull-down menu in the lower left corner never shows any option.

The device folder is the definitions used by TestController, they are loaded each time test controller is started and is supposed to be accessible on the pull-down menu on the "Load Devices" page.
As long as they are not, there is something wrong with your installation, I cannot help your with that (I do not have a Mac), but I hope some of the Mac users can.

To load devices you must find them in the pull-down menu and add them to the "Load Devices" page, set the correct serial port or ip-address and then checkmark them, pressing "Reconnect" or restarting TestController will then load them and connect to the device if it is connected and turned on.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on December 20, 2022, 02:19:47 pm
May I recommend for the "Current values" display, user definable background colours.
Might help readability in the case shown below where it would be of advantage to highlight every third line.

I do not really understand you. Every fourth line is a different color to make it easier when many lines are shown, I use that on most table displays.

To clarify: I mean in this case highlighting each line beginning with "Temperature".
That would be every third line in this particular case.
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 21, 2022, 12:58:17 am
Ok! made some progress, thanks!
Looks like the .JAR file I was using just wasn't fishing the .TXT files from the right folder. I copied the .TXT file for the ET5410A+ device in the device folder and it showed up in the pull down menu!
However, now I'm stuck at the serial port or IP address. I've done some research on pulling such info using Terminal (on Mac) and the closest I got to getting serial port information is something that resembles this:
Code: [Select]
tty.usbserial-1410When I connect the device to the other USB port, the terminal command returns
Code: [Select]
tty.usbserial-1420. So I imagine my USB serial port numbers are either 1410 or 1420 depending on the USB port I chose. Neither seem to work on the Test Controller App and I keep getting this message when trying to reconnect the device:
Code: [Select]
;; USB Serial (Dial-In) (tty.usbserial-1410) Device ET5420 do not match: ET5410A+,V1.00.2213.016,09702232111,V1.00.2213.016
;; Dummy Device ET5420 do not match: null,,,
I'm going to keep digging and see if I can find out more on USB serial number or device IP addresses on Mac. Thanks again for the help!
Title: Re: Program that can log from many multimeters.
Post by: modz786 on December 21, 2022, 08:51:59 am
Hi I was curious how you amassed so many supported meters?
Is there a central repository of specs that you scanned but not physically tested each one?

Thanks
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 09:18:32 am
To clarify: I mean in this case highlighting each line beginning with "Temperature".
That would be every third line in this particular case.

When I made TC I played with highlighting every 2-3-4-5 line and I liked every fourth line best, every third is also a good option, but I do not believe it is significant enough for a configuration option.
I can see in your case it would be nice to have first line of every device highlighted and that is another proposal and I may thing about that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 09:25:58 am
Ok! made some progress, thanks!
Looks like the .JAR file I was using just wasn't fishing the .TXT files from the right folder. I copied the .TXT file for the ET5410A+ device in the device folder and it showed up in the pull down menu!

TC looks for the device files in two locations:
1) A subfolder to Jave working directory (This is supposed to be the directory where the .jar file is placed), called "Devices"
2) A subfolder to your home folder called TestController/Devices

When you are finished with troubleshooting I would be thankful if you can write a short text I can add to my install page:
lygte-info.dk/project/TestControllerInstalling UK.html (http://lygte-info.dk/project/TestControllerInstalling UK.html)


However, now I'm stuck at the serial port or IP address. I've done some research on pulling such info using Terminal (on Mac) and the closest I got to getting serial port information is something that resembles this:
Code: [Select]
tty.usbserial-1410When I connect the device to the other USB port, the terminal command returns
Code: [Select]
tty.usbserial-1420. So I imagine my USB serial port numbers are either 1410 or 1420 depending on the USB port I chose. Neither seem to work on the Test Controller App and I keep getting this message when trying to reconnect the device:
Code: [Select]
;; USB Serial (Dial-In) (tty.usbserial-1410) Device ET5420 do not match: ET5410A+,V1.00.2213.016,09702232111,V1.00.2213.016
;; Dummy Device ET5420 do not match: null,,,
I'm going to keep digging and see if I can find out more on USB serial number or device IP addresses on Mac. Thanks again for the help!

Try right clicking the mouse when you are editing the address field (You must be in edit mode, just selecting the field is not enough), this is supposed to show a list of serial ports.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 09:34:58 am
Hi I was curious how you amassed so many supported meters?
Is there a central repository of specs that you scanned but not physically tested each one?

A couple of ways.
I have many multimeter:
https://lygte-info.dk/info/DMMReviews.html (https://lygte-info.dk/info/DMMReviews.html)
https://lygte-info.dk/info/DMMHigh-end%20UK.html (https://lygte-info.dk/info/DMMHigh-end%20UK.html)

Users have made definitions and done testing, sometimes with help/programming from my end. If I get a couple of ascii hexdump of a protocol and what the display shows, I can often make the protocol and then the user checks it against the meter to verify it is working (This may go back and forth a couple of times to get all ranges/modes to work).

Meters that is supposed to use same protocol as a already supported meter is often listed. That is how I made the Keysight DMM's, I have the top models and the lesser models in each series generally use same protocol.
This also means there a some meters (and other devices) in the list that may not work, but hopeful not many.
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 21, 2022, 05:15:44 pm
TC looks for the device files in two locations:
1) A subfolder to Jave working directory (This is supposed to be the directory where the .jar file is placed), called "Devices"
2) A subfolder to your home folder called TestController/Devices

When you are finished with troubleshooting I would be thankful if you can write a short text I can add to my install page:
lygte-info.dk/project/TestControllerInstalling UK.html (http://lygte-info.dk/project/TestControllerInstalling UK.html)

Will do! This helps

Try right clicking the mouse when you are editing the address field (You must be in edit mode, just selecting the field is not enough), this is supposed to show a list of serial ports.

This is also helpful and allowed for a little more progress! Sorry if I missed this trick somewhere in the information shared by the way. Anyhow, when in edit mode, the right-click indeed brings up different ports. It gave me 2 options for the USB port (Dial-in and non Dial-in). I would select one of the USB option, disable and re-enable the device and click reconnect. It still tells me it did not find a match.

I tried both USB options on both USB ports, I also checked and unchecked the "Scan serial port" just for the heck of it. Same issue...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 06:30:31 pm
I tried both USB options on both USB ports, I also checked and unchecked the "Scan serial port" just for the heck of it. Same issue...

Looks like both ports work, but you have selected the wrong device. Select a "ET5410A+" and try again.
The "Scan serial ports" is mostly for Arduino stuff, it will only work for devices at 9600 baud or without baud (Like ATMega32U4).
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 21, 2022, 06:51:26 pm
Looks like both ports work, but you have selected the wrong device. Select a "ET5410A+" and try again.
The "Scan serial ports" is mostly for Arduino stuff, it will only work for devices at 9600 baud or without baud (Like ATMega32U4).

The ET5410A+ is the only .TXT file I copied into the device folder... There is a "note" about it that mentions the ET5410A+ identifies itself as an ET5420 (see attached screenshot).

In any case, I copied the "East Tester ET5420.txt" and "East Tester ET5410.txt" files into the device folder and they now show up in the pull-down list (thanks again for that tip by the way). I tried the same approach with the 2 additional devices and am getting the same messages.

I don't know why it says ";; Dummy Device ET5420 do not match: null,,,"
I have never been able to load a virtual device either by the way.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 07:40:12 pm
The ET5410A+ is the only .TXT file I copied into the device folder... There is a "note" about it that mentions the ET5410A+ identifies itself as an ET5420 (see attached screenshot).

In any case, I copied the "East Tester ET5420.txt" and "East Tester ET5410.txt" files into the device folder and they now show up in the pull-down list (thanks again for that tip by the way). I tried the same approach with the 2 additional devices and am getting the same messages.

I don't know why it says ";; Dummy Device ET5420 do not match: null,,,"
I have never been able to load a virtual device either by the way.

Now I remember, I got the ET5410A file from somebody where the ET5410A+ identified itself as ET5420. This bug has obvious been fixed in yours.

Try editing the ET5410A file and change:
#idString ET5420
to
#idString ET5410A+
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 21, 2022, 09:18:58 pm
Now I remember, I got the ET5410A file from somebody where the ET5410A+ identified itself as ET5420. This bug has obvious been fixed in yours.

Try editing the ET5410A file and change:
#idString ET5420
to
#idString ET5410A+

Heck yeah! That was it! The device is found. Now I just have to learn how to create a load test of continuous 300W or so and have it plot the voltage graph.
Thanks for all the help.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 21, 2022, 09:36:46 pm
Now I just have to learn how to create a load test of continuous 300W or so and have it plot the voltage graph.
Thanks for all the help.

The get anything on the chart you have to use the "Log" button.
You can use the "Setup" button to control the load.
For automatic tests (i.e. vary a parameter or stop on some condition) there are two entries in the "Popups" list.
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 22, 2022, 07:26:30 am
The get anything on the chart you have to use the "Log" button.
You can use the "Setup" button to control the load.
For automatic tests (i.e. vary a parameter or stop on some condition) there are two entries in the "Popups" list.

Ok, I've played with many of the options within the "Setup" field, as well as "Popups" and I see things change on the screen of the load (including measuring the 14.142V on the battery), but I'm not able to make it start...
So far I've only clicked buttons and haven't done any sort of code/script.
The only thing I'm trying to do is to set a constant power load, start it and log a voltage/amperage chart until the battery is dead. I can get the logging to start, but the load doesn't seem to want to start pulling amps from the connected battery.

Any more tips?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 22, 2022, 07:51:47 am
Ok, I've played with many of the options within the "Setup" field, as well as "Popups" and I see things change on the screen of the load (including measuring the 14.142V on the battery), but I'm not able to make it start...
So far I've only clicked buttons and haven't done any sort of code/script.
The only thing I'm trying to do is to set a constant power load, start it and log a voltage/amperage chart until the battery is dead. I can get the logging to start, but the load doesn't seem to want to start pulling amps from the connected battery.

Press the "Input on" button at the bottom of the form is supposed to do it.
When doing it manually you setup the load to the desired power/current, start logging and then press the on button.
You might also be able to control the load directly on it, but in most devices this is disabled when using remote control.
The popup "Log Event" can do it automatic and stop at a specified voltage.

I have no idea if this specific device works correctly for all functions, the definition (That is the .txt file) is made and tested by another user, I do not have the load. And there may be other changes to the protocol than just the *idn? string.

If a command is changed you can type the new command to the load on the command line in TestController and later on modify the definition .txt file.
Title: Re: Program that can log from many multimeters.
Post by: T3TRIS on December 22, 2022, 08:45:11 am
Press the "Input on" button at the bottom of the form is supposed to do it.
When doing it manually you setup the load to the desired power/current, start logging and then press the on button.
You might also be able to control the load directly on it, but in most devices this is disabled when using remote control.
The popup "Log Event" can do it automatic and stop at a specified voltage.

I have no idea if this specific device works correctly for all functions, the definition (That is the .txt file) is made and tested by another user, I do not have the load. And there may be other changes to the protocol than just the *idn? string.

If a command is changed you can type the new command to the load on the command line in TestController and later on modify the definition .txt file.

Well, never mind, the issue was my own fault! As you can see in the screenshot, I had the Vmax value set to 14V and my battery was at 14.142V triggering the Over Voltage mode on the load. The button from the setup page works just fine once I set the Vmax value to 16V. Now it's chugging along nicely at 350W and charting every 10 seconds!

Now I have to figure out how to add voltage sense wires to the load... Thanks again for all the help with this project!
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on December 23, 2022, 11:00:50 am
Guide me please how to add such device support - Tasi TA612C  (4 channels K/J Thermometer)
http://www.china-tasi.com/m/view.php?aid=97 (http://www.china-tasi.com/m/view.php?aid=97)

What I've already figured out as for its protocol. The devise uses CH340 USB-to-serial interface so we basically have a /dev/ttyUSB0 when connected to my Linux box. It operated on a speed 9600.

We should send a fixed 5 bytes request:
aa 55 01 03 03
and the device responds with 13 bytes (fixed length) response:
55 aa 01 0b f4 00 16 01 16 01 de 00 0b

Where first 4 bytes are always identical and probably can be discarded.
Next 8 bytes are 4 temperature readings:
f4 00 16 01 16 01 de 00
which stand for each channels temperature in Celsius:
24.4   27.8   27.8   22.2

Each 2 bytes pairs have Little-endian order, so first pair "f4 00" stands for 244 and at the end (244/10) to decimal 24.4 Celsius.

Last single byte - probably some checksum, but I'm not able to figure out what method is used, so we could ignore it.

Let me add a few examples of response for different readings, including when some or all probes are disconnected, which are read as NULL on  original crappy software:

Code: [Select]
55 aa 01 0b f7 00 4c 01 11 01 ec 00 4d
24.7 33.2 27.3 23.6

55 aa 01 0b ef 00 e0 00 02 01 eb 00 c8
23.9 22.4 25.8 23.5

55 aa 01 0b 60 6d dd 00 ff 00 ee 00 a2
null 22.1 25.5 23.8

55 aa 01 0b 62 03 60 6d 60 6d 60 6d d7
86.6 null null null

55 aa 01 0b 2d 06 60 6d 60 6d 60 6d a5
158.1 null null null
p.s.  so, "60 6d" -> 28000 -> 2800.0 C. Kind of max/impossible temperature and should be classified as NULL.


If you could suggest me an example of an existing supported similar device for Test Controller, it would help me to develop/replicate support for my Tasi device.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 23, 2022, 11:35:57 am
If you could suggest me an example of an existing supported similar device for Test Controller, it would help me to develop/replicate support for my Tasi device.

The Block https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)) driver is perfect for this.

This driver is used for: "Devices\Mastech 6514.txt" and "Devices\ADC10F103C.txt"
But in both cases it is in is in streaming mode and you need to use polled mode, this means the configuration is slightly different.
Title: Re: Program that can log from many multimeters.
Post by: Maximus Panin on January 11, 2023, 10:57:12 am
Can this program be connected to SkyRC MC3000 ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 12, 2023, 08:54:20 am
Can this program be connected to SkyRC MC3000 ?

Probably, but it need a definition file to do it.
TC includes a couple of basic protocols, a definition selects one of them and how to use it for communicating with the device.
The definitions is a text file, usually without any programming.
Title: Re: Program that can log from many multimeters.
Post by: iMo on January 15, 2023, 11:18:18 am
Hi, I wired the serial to my usb as per 34401A user manual (hopefully) and ran the latest downloaded today.
Using Prolific/rs232 dongle with y2008 drivers under win10 (it shows driver is ok), driver in win set 9k6 8N2 hardware handshake.
After the start of the app I get (debug mode):
Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM4 - Agilent 34401A
;; COM4: Set params: 9600
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Rx: <HEWLETT-PACKARD,34401A,0,10-5-2> 48 45 57 4C 45 54 54 2D 50 41 43 4B 41 52 44 2C 33 34 34 30 31 41 2C 30 2C 31 30 2D 35 2D 32
;; COM4: Tx <SYST:REM>
;; COM4: Tx: <SYST:REM.> 53 59 53 54 3A 52 45 4D 0A
;; COM4: Delay: 500ms
;; Found Agilent 34401A on USB-Serial Controller (COM4)
;; HP34401A: Tx <FUNC?>
;; HP34401A: Rx <"VOLT">
;; HP34401A: Tx <READ?>
;; HP34401A: Rx Timeout
;; HP34401A: Rx as numbers <No data (timeout?)>
;;+9.99999900E+00
;; HP34401A: Tx <READ?>
;; HP34401A: Rx Timeout
;; HP34401A: Rx as numbers <No data (timeout?)>
It does not read the data into Current values, it stops with Trig and Error, looks like something is wrongly set, any hint, plz?
When messing with Auto/Man/Trig on the meter it returns the correct voltage once in the debug window but with timeout/error and beep.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2023, 12:09:18 pm
It does not read the data into Current values, it stops with Trig and Error, looks like something is wrongly set, any hint, plz?
When messing with Auto/Man/Trig on the meter it returns the correct voltage once in the debug window but with timeout/error and beep.

If you have specified a very slow sample rate (NPLC), you might get a timeout. I am not sure about trigger mode, TC do not select any, but expect the READ? command to return a value within 10 seconds (#readingDelay 10).

When TC is connected to the meter you can write commands to the meter on the command line in TC, i.e. it is possible to manually try the READ?
Title: Re: Program that can log from many multimeters.
Post by: iMo on January 15, 2023, 12:14:37 pm
My meter is set for 100PLC, it means it sends the value back in 4secs.
When I issue READ? in the TC command line I see response in the debug window with
Code: [Select]
;; HP34401A: Rx Timeout
READ?
;; HP34401A: Tx <READ?>
;; HP34401A: Rx Timeout
READ?
;; HP34401A: Tx <READ?>
;; HP34401A: Rx Timeout
READ?
;; HP34401A: Tx <READ?>
;; HP34401A: Rx Timeout

When I power on the meter it is set to default 100PLC and 10V range and sends the voltage automatically (repeatedly) out with 4secs period.
When I start TC in that default situation it returns:
Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM4 - Agilent 34401A
;; COM4: Set params: 9600
;; COM4: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM4: Rx: <+1.00000280E+01> 2B 31 2E 30 30 30 30 30 32 38 30 45 2B 30 31
;; USB-Serial Controller (COM4) Device HEWLETT-PACKARD,34401A, do not match: +1.00000280E+01
;; COM4: Close
;; Stopping thread for: COM4 - Agilent 34401A
;; COM4: Close

It seems the meter has to be put in some specific state before the TC starts communication.. Or something like that..

I get the correct identification when I manually stop the meter with AUTO/MAN button on front panel (it lights Man Trig on the display), and then the TC init goes ok, but with subsequent voltage reading issues as described above.
With READ? I get Rx Timeout in about 10secs..

PS: it looks to me the DTR/DSR does not work here properly.. I know from past the DTR/DSR must be set to a value in order to send the data repeatedly.. My Prolific dongle supports all rs232 signals afaik (there is the MAX211 rs232 sigs converter inside).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2023, 12:56:38 pm
My meter is set for 100PLC, it means it sends the value back in 4secs.
When I power on the meter it is set to default 100PLC and 10V range and sends the voltage automatically (repeatedly) out with 4secs period.
It seems the meter has to be put in some specific state before the TC starts communication.. Or something like that..

I get the correct identification when I manually stop the meter with AUTO/MAN button on front panel (it lights Man Trig on the display), and then the TC init goes ok, but with subsequent voltage reading issues as described above.
With READ? I get Rx Timeout in about 10secs..

PS: it looks to me the DTR/DSR does not work here properly.. I know from past the DTR must be set to a value in order to send the data repeatedly..

I do not know about any modes, it is not me that have made the definition and I do not have the meter. But the configuration is not made to handle streaming data.

Try specifying baudrate as 9600N82H in TC, the H will enable handshake. There is a couple of letters that can be used after the baudrate to control the handshake signals: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes)
Title: Re: Program that can log from many multimeters.
Post by: iMo on January 15, 2023, 04:13:58 pm
There is the 9600N82H in the setup file..

My findings so far:
a) the serial works
b) the first issue I've found - I had the meter's HP-IB set to address 31 "Talk only", which inhibits the remote setting with RS232 as well  ::)
c) I tried with a different control program and it mostly starts fine, sets "Rmt" on the display and the logging works fine on the first glance
d) when I then go to your TC with the meter in the above setting it starts fine always and it reads voltage in the current value tab without the timeouts
e) when I power-on the meter, it sends data automatically out and the TC has problem to identify it, so several tries are needed..
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2023, 05:06:22 pm
e) when I power-on the meter, it sends data automatically out and the TC has problem to identify it, so several tries are needed..

I do not know why this has not been brought up before, do you have a dipswitch setting to enable/disable it?
If you know what command to send to disable it, it is easy to add to the definition.
Title: Re: Program that can log from many multimeters.
Post by: iMo on January 15, 2023, 05:25:40 pm
What would help is to add some more retries during the initial phase or longer timeouts, such it gets the right answer.
I changed the default power-on setting to 100PLC (standard is 10PLC), it could be the longer measurement period timeouts the initial processes.
Then it sets "remote" and the meter is accessible.
No idea how to switch off the sending data via default set rs232 i/o in the meter, I have to investigate..
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2023, 05:45:17 pm
What would help is to add some more retries during the initial phase or longer timeouts, such it gets the right answer.

TC will try two times, but a wrong answer will stop that process.
I want the initial phase to be fairly fast, to avoid TC hanging for a long time if some selected devices are offline.

No idea how to switch off the sending data via default set rs232 i/o in the meter, I have to investigate..

Maybe some of the people that uses TC with 34401A see this and can chime in.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on January 16, 2023, 12:43:35 pm
If it is related to the 100NPLC setting then other users may not have seen it often (you'd have to set the meter to 100NPLC before trying to connect, though that is a totally valid setting with a stock meter!).

Note that TestController also gets confused when it asks a 34401A what mode it's in and gets "TEMP" as a reply :P
Might need to make some additions to the definition for the "enhanced" 34401A, maybe call it 34401A+ or something?
(for those who didn't see the thread, later 34401A FW revisions support a few hidden features such as settings-recall on boot and temperature measurement, with razvan784 finally finding the magic incantations for closed-case unlock here: https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242 (https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242) - ONLY try these on FW 07-xx-yy and later though, at least until you have an EEPROM backup or read the rest of the thread!)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 18, 2023, 09:15:30 am
If it is related to the 100NPLC setting then other users may not have seen it often (you'd have to set the meter to 100NPLC before trying to connect, though that is a totally valid setting with a stock meter!).

Note that TestController also gets confused when it asks a 34401A what mode it's in and gets "TEMP" as a reply :P
Might need to make some additions to the definition for the "enhanced" 34401A, maybe call it 34401A+ or something?
(for those who didn't see the thread, later 34401A FW revisions support a few hidden features such as settings-recall on boot and temperature measurement, with razvan784 finally finding the magic incantations for closed-case unlock here: https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242 (https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242) - ONLY try these on FW 07-xx-yy and later though, at least until you have an EEPROM backup or read the rest of the thread!)

You are welcome to extend the definition and add a enhanced meter to it, please post the result here.

To add temperature you need to add these two lines to the definition:

#value Temperature C d1 Temperature
#cmdMode Temperature TEMP
CONF:TEMP;[500]

And
#remove #cmdMode Temperature
to the two existing #metadef sections, to avoid a temperature selection in the current meters.

and make a copy if one of the current #metadef section and change the name to the enhanced model.


I do not know if CONF:TEMP; if correct.


Note: Two people has worked on this definition and neither has said anything about connect problems due to meter outputting data.


Title: Re: Program that can log from many multimeters.
Post by: iMo on January 18, 2023, 10:47:23 am
..
No idea how to switch off the sending data via default set rs232 i/o in the meter, I have to investigate..
Maybe some of the people that uses TC with 34401A see this and can chime in.
After power-on the meter does 100NPLC here (I changed that from 10NPLC via hidden menu), and when the HP-IB address is set to 31 "Talk only" it sends results via RS232 continuously out (i/o set to rs232). This "talk only mode" I've been using with my stm32 interface.
With a different HP-IB address set in the rs232 mode it does not send results out without requesting the data via a command.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 18, 2023, 11:23:21 am
After power-on the meter does 100NPLC here (I changed that from 10NPLC via hidden menu), and when the HP-IB address is set to 31 "Talk only" it sends results via RS232 continuously out (i/o set to rs232). This "talk only mode" I've been using with my stm32 interface.
With a different HP-IB address set in the rs232 mode it does not send results out without requesting the data via a command.

That makes sense, so the only "issue" you have is the lack fo "TEMP" mode and this can be added to the definition.

If you are confused by my description on how I can add it and post a new definition file in this thread, that you have to check.
Title: How to start with East Tester ET5410A+
Post by: evat on January 19, 2023, 07:50:48 pm
Hello, I introduce myself.

Very good application, do you know how I can activate or initialize a test, I cannot initialize from the application and the electric load machine is blocked (it only beeps) when pressing the buttons, but nothing can be done, I think I have to put some command in the application, but I did not find the information.

However, I can use the program, I do it like this:
1. (the application is closed) I set the parameters manually in the electric load machine (not through the application)
2. I initialize the discharge or consumption process, manually, right at this moment I open the application and log the data, in this way I capture the data.

The bad thing is that in this way I lose about 1-3 seconds of data, while the application is open.
With the application I can configure the parameters of the discharge, but I don't know how to initialize the test, since the machine is blocked.

My electric load machine East Tester ET5410A+

I'd be very gratefull. Thank you very much
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on January 19, 2023, 07:51:40 pm
HKJ, I'm amazed at your patience for answering question after question : )

If I too can impose on your time : I'm working on adding support for Xitron 2000 calibrators (output V or I; measure V/thermocouple). Protocol is ascii; basic manual commands in a serial terminal work well.

I pasted my current device file here : https://bpa.st/UPAG6

The only thing that works is the Mode popup (V/I/T selector). Starting a log records empty readings (missing column), probably because my #askValuesReadFormat is broken.


Code: [Select]
#askValues value?
#askValuesReadFormat sxx

Testing the 'value' command manually does get a response from the unit :

Code: [Select]
;; +.0000000 V STBY

Returned string has sometimes leading whitespace, sometims a m/u prefix, sometimes 'STBY'. Not sure how to handle all that. Examples (inside double-quotes)
Code: [Select]
; " -2.00000mV STBY"
; "-2.000000 V STBY"
; "   +0.00 C KSTBY"
; "   -1.00 C JSTBY"
; " +829.40 C J    "


Next, I will need to send commands like "K00-12.1mVS" , where a float value is concatenated without spaces or separators between 2 strings.

Thanks !
Title: Re: How to start with East Tester ET5410A+
Post by: HKJ on January 19, 2023, 08:13:57 pm
However, I can use the program, I do it like this:
1. (the application is closed) I set the parameters manually in the electric load machine (not through the application)
2. I initialize the discharge or consumption process, manually, right at this moment I open the application and log the data, in this way I capture the data.

The bad thing is that in this way I lose about 1-3 seconds of data, while the application is open.
With the application I can configure the parameters of the discharge, but I don't know how to initialize the test, since the machine is blocked.

My electric load machine East Tester ET5410A+

To setup the load you use the "Setup" button, then you get a full setup menu, including a on button.
To run a full test you first do the setup (Excluding on), then you open the popup "Log Event" and use it to start the load and logging.
You can read about the Log Event here: https://lygte-info.dk/project/TestControllerPopupLogEvent%20UK.html (https://lygte-info.dk/project/TestControllerPopupLogEvent%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 19, 2023, 08:40:23 pm
HKJ, I'm amazed at your patience for answering question after question : )

If I too can impose on your time : I'm working on adding support for Xitron 2000 calibrators (output V or I; measure V/thermocouple). Protocol is ascii; basic manual commands in a serial terminal work well.

I pasted my current device file here : https://bpa.st/UPAG6

The only thing that works is the Mode popup (V/I/T selector). Starting a log records empty readings (missing column), probably because my #askValuesReadFormat is broken.


Code: [Select]
#askValues value?
#askValuesReadFormat sxx

Testing the 'value' command manually does get a response from the unit :

Code: [Select]
;; +.0000000 V STBY

Returned string has sometimes leading whitespace, sometims a m/u prefix, sometimes 'STBY'. Not sure how to handle all that. Examples (inside double-quotes)
Code: [Select]
; " -2.00000mV STBY"
; "-2.000000 V STBY"
; "   +0.00 C KSTBY"
; "   -1.00 C JSTBY"
; " +829.40 C J    "

To get columns you need something like:
#value VoltageDC V D6

If you add a parameter more it will only be shown when TC knows the device is in that mode and for that the #askMode command must work and return a string with the mode name.

Defining all command with #scpiCmd will usually give the easiest implementation. One advantage is you can check commands from the command line, before doing the #cmdSetup definitions.

I will recommend that you start TC in debug mode, it makes it much easier to see what is going on (Only enable the actual device when debugging, with more devices it will soon be be very confusing).

Next, I will need to send commands like "K00-12.1mVS" , where a float value is concatenated without spaces or separators between 2 strings.

The simple method is to use a # for the value, but to get SI prefix you need to use scripting:
("command"+formatSI(value)+"unit")
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on January 20, 2023, 04:39:15 pm
To get columns you need something like:
#value VoltageDC V D6

If you add a parameter more it will only be shown when TC knows the device is in that mode and for that the #askMode command must work and return a string with the mode name.

Understood. I already had a few lines like "#value VoltageSet V si V_generate"  , but I have no "#askMode" because there is no way to query the current mode with this instrument... Unless maybe parsing the display string and look for the units character. But it's impossible to guess if it's Measure vs Generate.

Quote
I will recommend that you start TC in debug mode

I tried, but the tc.log file only contains "Starting" and nothing else, no matter what I do. Even running without the stderr redirect ">tc.log 2>&1" , I get nothing after that "Starting" entry.

Quote
The simple method is to use a # for the value, but to get SI prefix you need to use scripting:
("command"+formatSI(value)+"unit")

Thanks, I got it working with " #scpiCmd SET:V tx ("K00"+formatSI((value))+"VS") " , for some reason it needed the double (( )) around value.

I also realized that defining a #scpiCmd needs to be in "XX:YY" format ?
Code: [Select]
; this works :
#scpiCmd SET:TCtype tx ....

; this doesn't work :
#scpiCmd set_tctype tx ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 20, 2023, 05:17:52 pm
Understood. I already had a few lines like "#value VoltageSet V si V_generate"  , but I have no "#askMode" because there is no way to query the current mode with this instrument... Unless maybe parsing the display string and look for the units character. But it's impossible to guess if it's Measure vs Generate.

You can remove the 4 parameter for test, then add it again later.
When using #scpiCmd you can store your own mode depending on the commands you send. There is something about it here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Defining_commands (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Defining_commands) (It is for another protocol, but works the same for all protocols).

Quote
I will recommend that you start TC in debug mode

I tried, but the tc.log file only contains "Starting" and nothing else, no matter what I do. Even running without the stderr redirect ">tc.log 2>&1" , I get nothing after that "Starting" entry.

Most of the debug info is shown in the log window, all debug info is output to the dos/console screen, but note that some bat files starts TC in another thread.

Quote
The simple method is to use a # for the value, but to get SI prefix you need to use scripting:
("command"+formatSI(value)+"unit")

Thanks, I got it working with " #scpiCmd SET:V tx ("K00"+formatSI((value))+"VS") " , for some reason it needed the double (( )) around value.

I wonder about the double ((, I will do some testing.

I also realized that defining a #scpiCmd needs to be in "XX:YY" format ?
Code: [Select]
; this works :
#scpiCmd SET:TCtype tx ....

; this doesn't work :
#scpiCmd set_tctype tx ...

Underscore has special meaning, it is replaced with a space.
Title: Re: Program that can log from many multimeters.
Post by: fenugrec on January 20, 2023, 08:36:21 pm
Underscore has special meaning, it is replaced with a space.

Aaah, it was mentioned somewhere in the docs but I didn't think it applied to command names too.

With your pointers I've been able to cobble up a functional implemention, published here :
https://github.com/fenugrec/xitron_tools/blob/master/hkj_testcontroller/Xitron2000.txt

Have you considered maintaining a git repo just for device files, to make it easier to track changes / contribute ?

E.g. the file I made could be included as-is in your distribution, but I will change some minor things as I begin using it... and others may want to add features I haven't needed yet, etc.

Other topic : I just learned indirectly that you can do conditionals like
Code: [Select]
:readmath: countMatch(value, "STBY")==1? "S":"O"
I had previously looked for such a thing in the docs but couldn't find anything, is it documented somewhere?

Thanks again for your assistance !

[edit : typo]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 21, 2023, 11:12:31 am
With your pointers I've been able to cobble up a functional implemention, published here :
https://github.com/fenugrec/xitron_tools/blob/master/hkj_testcontroller/Xitron2000.txt (https://github.com/fenugrec/xitron_tools/blob/master/hkj_testcontroller/Xitron2000.txt)

Have you considered maintaining a git repo just for device files, to make it easier to track changes / contribute ?

E.g. the file I made could be included as-is in your distribution, but I will change some minor things as I being using it... and others may want to add features I haven't needed yet, etc.

Attach the file to a post in this thread and I will include it in the next release and if you post an update I will update the included version.

Other topic : I just learned indirectly that you can do conditionals like
Code: [Select]
:readmath: countMatch(value, "STBY")==1? "S":"O"
I had previously looked for such a thing in the docs but couldn't find anything, is it documented somewhere?

The main document for calculations is this: https://lygte-info.dk/project/TestControllerFunctions%20UK.html (https://lygte-info.dk/project/TestControllerFunctions%20UK.html), I do not really get into details about expression syntax, but it is similar to Java and C.


The actual code used for calculation is a separate project/library, that can considerable more than included in the TC documentation, I have started on a more comprehensive documentation here: http://lygte-info.dk/project/Calculator%20UK.html (http://lygte-info.dk/project/Calculator%20UK.html)
It is made so that any project that uses it can easily add its own functions and variables, in additions to the ones included in the library.



Looking in your definition I found this comment:
Quote
we would like something like a regex [ ]?(.*)[ um][VACF].*

If you use #askValuesMathFormat you have access to functions that uses regex.
The driver AsciiBlock uses regex directly https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Ascii_variable_length_communication_blocks,_can_be_multi_line_ascii_(AsciiBlock) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Ascii_variable_length_communication_blocks,_can_be_multi_line_ascii_(AsciiBlock))

Title: Re: Program that can log from many multimeters.
Post by: Hydron on January 23, 2023, 07:35:44 pm
If it is related to the 100NPLC setting then other users may not have seen it often (you'd have to set the meter to 100NPLC before trying to connect, though that is a totally valid setting with a stock meter!).

Note that TestController also gets confused when it asks a 34401A what mode it's in and gets "TEMP" as a reply :P
Might need to make some additions to the definition for the "enhanced" 34401A, maybe call it 34401A+ or something?
(for those who didn't see the thread, later 34401A FW revisions support a few hidden features such as settings-recall on boot and temperature measurement, with razvan784 finally finding the magic incantations for closed-case unlock here: https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242 (https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4559242/#msg4559242) - ONLY try these on FW 07-xx-yy and later though, at least until you have an EEPROM backup or read the rest of the thread!)

You are welcome to extend the definition and add a enhanced meter to it, please post the result here.

To add temperature you need to add these two lines to the definition:

#value Temperature C d1 Temperature
#cmdMode Temperature TEMP
CONF:TEMP;[500]

And
#remove #cmdMode Temperature
to the two existing #metadef sections, to avoid a temperature selection in the current meters.

and make a copy if one of the current #metadef section and change the name to the enhanced model.


I do not know if CONF:TEMP; if correct.


Note: Two people has worked on this definition and neither has said anything about connect problems due to meter outputting data.
See attached updated definition, I've called it "HP/Agilent 34401A Enhanced", added some notes (for that option only) and a lot of stuff into the Temperature setup page.
Missing is the option to use custom NPLC settings via the custom aperture time option - this is doable via SCPI but a bit tricky (see note here: https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4657129/#msg4657129 (https://www.eevblog.com/forum/testgear/hp-agilent-34401a-hidden-menu/msg4657129/#msg4657129)) and would have made things pretty complicated given that custom NPLC settings don't work directly, so would have to be done via (line frequency dependant) explicit aperture time settings. I figure if someone really needs this they can add it themselves or just use the command entry box.

Finally I'm having problems with text rendering, both in general (very poor text quality on graph axes - note this is with 125% hidpi mode in windows which might not help) and specifically when using "special" characters like the Omega for Ohms and the degrees symbol for Celcius. Weirdly it seems to work for the DMM6500 device but not the 34401A, and I can't see any reason for the difference. See attached screenshot of the Chart showing both problems (the "°C" thing happens also in the current values section and popup dialogues).
Title: Re: Program that can log from many multimeters.
Post by: jmurray on January 26, 2023, 01:32:33 am
The "Out of memory error" is probably the reason for it running slow. My best guess is that you call some scripts recursively.
Try using #runscript without parameters, this is possible as long as you run your main script in background (#RUNSCRIPTASYNC).

None of my scripts are called recursively, but your suggestion did give me the idea to investigate potential variable scoping issues.  Sure enough, a couple of my "child" scripts implicitly used a parent script's iterator variable instead of defining their own locally scoped iterator variable.  It looks something like this:

Code: [Select]
#scriptScript MyParentScript

=var i = 0;
; iterate through an array using i...
#runScript MyChildScript1
; do some other things...
#runScript MyChildScript2
#return

;-------------------------------------------------------------
#scriptScript MyChildScript1
=i = 0;
; iterate through some other array using i...

; note that I failed to actually declare "i" here using "=var i = 0;" and TC doesn't complain about it,
; so MyChildScript must be using the "i" declared in MyParentScript above and, consequently,
; this script merely redefines "i" here.
#return

;-------------------------------------------------------------
#scriptScript MyChildScript2
=i = 0;
; iterate through yet another array using i...

; note the same issue with variable scoping as in MyChildScript1
#return

Once I corrected my variable scoping mistakes in a couple scripts, everything suddenly behaves properly and the whole script runs flawlessly.  Cheers!


@HKJ
Is there a way to declare and call subroutines within a script, or is saving them as external scripts the best method?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2023, 08:01:40 am
See attached updated definition, I've called it "HP/Agilent 34401A Enhanced", added some notes (for that option only) and a lot of stuff into the Temperature setup page.

Thanks, it will be included in the next release.


Finally I'm having problems with text rendering, both in general (very poor text quality on graph axes - note this is with 125% hidpi mode in windows which might not help) and specifically when using "special" characters like the Omega for Ohms and the degrees symbol for Celcius. Weirdly it seems to work for the DMM6500 device but not the 34401A, and I can't see any reason for the difference. See attached screenshot of the Chart showing both problems (the "°C" thing happens also in the current values section and popup dialogues).

TestController requires a BOM on UTF files to handle the characters correctly, I have added it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 26, 2023, 08:21:05 am
@HKJ
Is there a way to declare and call subroutines within a script, or is saving them as external scripts the best method?

The short answer is that the script do not support declaring subroutines.
But there are many other ways to do it:
In the menu scripts you can use the heading #scriptScript header to make a hidden callable script. Check ...\Documents\TestController\Settings\ScriptLibrary.dat for examples.

You can store a script in a string and use executeEmbeddedString().
Or you can create a user defined function addFuncEmbedded() or addFuncEmbeddedGlobal()
There is a little bit of documentation here: http://lygte-info.dk/project/Calculator%20UK.html#List_vars_&_functions (http://lygte-info.dk/project/Calculator%20UK.html#List_vars_&_functions)
Newest version of TC support triple quotes to make this easier, i.e. """ multiline text """;

Generally local variables from the calling script will be available, but it is more controlled to use parameters.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on February 01, 2023, 08:03:16 am
FYI I found a bug in the date() function.

When providing a date to be encoded, it adds two months to the date.

Code: [Select]
=date(2023,02,01,16,05,00)
;; 20230401160500
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 02, 2023, 08:19:34 am
FYI I found a bug in the date() function.

When providing a date to be encoded, it adds two months to the date.

Code: [Select]
=date(2023,02,01,16,05,00)
;; 20230401160500

Thanks, it will be fixed in the next version.
As a temporary solution you can subtract 2 from the month until then.
Title: Re: Program that can log from many multimeters.
Post by: Hydron on February 07, 2023, 10:35:38 pm
Quick question about the Tenma 72-13210 (aka Korad KEL103) UDP network connection option - it doesn't seem to work on my Windows 10 machine (gives up connecting immediately, says "starting thread" and then "stopping thread" in the debug console), but does on a Linux laptop I tried. I tried running wireshark and nothing seems to be sent to the device at all by TestController when I tell it to try and connect. Is there anything I need to do to get it going on Windows? Cheers!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 08, 2023, 12:48:53 pm
Quick question about the Tenma 72-13210 (aka Korad KEL103) UDP network connection option - it doesn't seem to work on my Windows 10 machine (gives up connecting immediately, says "starting thread" and then "stopping thread" in the debug console), but does on a Linux laptop I tried. I tried running wireshark and nothing seems to be sent to the device at all by TestController when I tell it to try and connect. Is there anything I need to do to get it going on Windows? Cheers!

I found the problem and it will be fixed in next release.
If you have a version from before v1.31 you can use that version until then.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 10, 2023, 09:48:28 am
V2.34 is up
Only small fixes and additions
   Fixed: Some interfaces failed due to the PortType variable added.
   Added: HP34401A enhanced mode (A crack that can be applied to some firmware versions) (Thanks Hydron)
   Fixed: Log Event could fail to open with some devices.
   Added: Marking of devices on "Current Values" and "Range" page can be configured.
   Added: control indicator & indicatorInt now support the :update: tag, this will be used when the status is changed.
   Modified: Variable for control indicator & indicatorInt to include 4 fields.
   Updated: ET5410A+ (Thanks PL)
   Modified: New definitions for East Tester LCR meter (They have Alt in their name) for never firmware versions (Thanks Steve)

There is one new configuration setting that can be interesting, it is based on a question from Messtechniker, not exactly what he asked for, but I hope it is close to what he wanted.
(http://lygte-info.dk/pic/cpf6/DeviceMarking1.png)
(http://lygte-info.dk/pic/cpf6/DeviceMarking2.png)
(http://lygte-info.dk/pic/cpf6/DeviceMarking3.png)

It works for both "Current Values" and "Range" pages.

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on February 10, 2023, 06:15:57 pm
Great! Thanks.




Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 10, 2023, 07:15:31 pm
Great! Thanks.

You may want to use a UTF BOM to mark the codepage for the definition file.

I generally try to do what people want, not what they ask for.
A rant:
This is not restricted to TC, but is generally what I do in my work. I know that in most places you have to follow a specification, but the (small) companies I have worked for I could do it my way, only issue was to kick the sales person out of the loop and talk directly with the customer and understand what they want. In some cases it means spending a day at the customer site to observe and understanding the procedures.
For TC it is fairly easy, because I try to match what I perceive as the best solution for my needs, mostly (That is my conclusion based on this thread) this align perfectly with the needs of other engineers.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on February 14, 2023, 06:53:37 pm
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
Title: Re: Program that can log from many multimeters.
Post by: Hydron on February 14, 2023, 10:49:34 pm
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
Anything worthwhile changed in the new FW? Looks like you need a login to download it >:(.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on February 15, 2023, 01:53:34 am
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
Anything worthwhile changed in the new FW? Looks like you need a login to download it >:(.
No visible difference that I could see. For some reason Instek does not provide release notes, so there is no way to know what the changes were.
Title: Re: Program that can log from many multimeters.
Post by: mvanocht on February 24, 2023, 03:24:57 pm
Do you plan to add support for the HP 82357A USB to GPIB Converter?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 07, 2023, 09:05:46 am
Do you plan to add support for the HP 82357A USB to GPIB Converter?

Sorry, I missed this question.
No, I do not plan on adding that converter, TC mostly works with serial and network connected equipment.
For a cheap GPIB converter look for the AR488, it is a small Arduino and a GPIB connector.
Title: Re: Program that can log from many multimeters.
Post by: mawyatt on March 13, 2023, 02:51:30 pm
We've finally got our Tonghui TH2830 to respond to serial RS-232 and return measurement readings (was returning all zeros) after numerous email exchanges with CS, turns out the NULL FIXTURE in the TOOLS menu needs to be OFF.

Now the task ahead is to try and include this LCR meter within so we can generate Impedance vs Frequency Plots for various components. Has anyone been successful getting the TH2830 or other Tonghui product working, or maybe other LCR meters?

Best,
Title: Re: Program that can log from many multimeters.
Post by: motato on March 13, 2023, 05:16:31 pm
First off, thank you HKJ for making TC available to the community.

I am new to the forum and to this generation of logging multimeters. Still wrapping my head around TC scripting and configuration options.

macOS 12.6, x86_64. Brymen 869s, 869-PA firmware, USB.

Anyone having success getting TC to work with this combination? TC appears to recognize the meter, but cannot seem to record data. Tried Java 1.8 (Oracle) and 11.0 (Temurin OpenJDK).

Code: [Select]
;; Found Brymen BM869s on HIDv0820p0001
;; BM869: Rx as numbers <No data (timeout?)>
;; BM869: Rx as numbers <No data (timeout?)>
;; BM869: Rx as numbers <No data (timeout?)>

Table has timestamps, but no data.

Is "Mode not found" relevant?
Code: [Select]
tom% java -jar TestController.jar
Starting
Mode not found

Browsing to certain parts the app consistently triggers SIGABRT or SIGILL, so far all from the hid4java/JNI layer. For what it's worth, sigrok-cli does return data.

Any suggestions or hints? I'm happy to help with debugging (have EE background and several years *NIX development, less so Windows and Mac).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2023, 06:08:30 pm
First off, thank you HKJ for making TC available to the community.

I am new to the forum and to this generation of logging multimeters. Still wrapping my head around TC scripting and configuration options.

macOS 12.6, x86_64. Brymen 869s, 869-PA firmware, USB.

That meter uses USB HID interface and I only have some support for that on Windows, if you run TC from a Windows emulator you might be able to connect.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 13, 2023, 06:12:47 pm
We've finally got our Tonghui TH2830 to respond to serial RS-232 and return measurement readings (was returning all zeros) after numerous email exchanges with CS, turns out the NULL FIXTURE in the TOOLS menu needs to be OFF.

Now the task ahead is to try and include this LCR meter within so we can generate Impedance vs Frequency Plots for various components. Has anyone been successful getting the TH2830 or other Tonghui product working, or maybe other LCR meters?

Check the files "Ruoshui VC409xx + East Tester ET4xxx (Alt).txt" and "East Tester ET4xxx.txt" they have definitions for LCR meters.
Title: Re: Program that can log from many multimeters.
Post by: motato on March 15, 2023, 05:10:55 pm
Thank you. Unfortunate to need the resources of an entire OS or VM for one app, but I also completely understand.

I see in the About section "Uses hid4Jave to scan for HID devices (Could not get reading to work)," so sounds like the "can't read" behavior is not entirely unexpected. If I can find/make time, maybe I can dig into why hid4java won't work, or maybe look into http://usb4java.org/ (http://usb4java.org/)

Anyone have luck attempting to run TC on Mac using Wine? I made a quick effort to run the Brymen app in Wine, but it didn't even get to the point of recognizing the device.

Thanks again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 16, 2023, 05:33:33 pm
Thank you. Unfortunate to need the resources of an entire OS or VM for one app, but I also completely understand.

Do a windows emulator use all resources, TC do not?

I see in the About section "Uses hid4Jave to scan for HID devices (Could not get reading to work)," so sounds like the "can't read" behavior is not entirely unexpected. If I can find/make time, maybe I can dig into why hid4java won't work, or maybe look into http://usb4java.org/ (http://usb4java.org/)

I would be nice.

Anyone have luck attempting to run TC on Mac using Wine? I made a quick effort to run the Brymen app in Wine, but it didn't even get to the point of recognizing the device.

I believe some people has posted, in this thread, about using windows emulator to run TC with Brymen, but I do no remeber if it was on Linux or Mac.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on March 17, 2023, 05:32:18 am
Hi HKJ,

I might be missing something: Is it possible to use the matchBitsList function as a formula on the math page? I've tried a few variations and it keeps getting disabled and highlighted in red.
I'm trying to return different short strings based on the bit specification to make it easier to write a script.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 17, 2023, 09:53:15 am
I might be missing something: Is it possible to use the matchBitsList function as a formula on the math page? I've tried a few variations and it keeps getting disabled and highlighted in red.
I'm trying to return different short strings based on the bit specification to make it easier to write a script.

It is, but all formulas must return numbers, not strings. You can do that with matchBitsList().

All regular values (i.e. values that goes into table or chart) must be numbers. You can use deviceRead() to get the string answer directly from the device. For settings you can define get/set functions and they can return strings https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#A_generic_interface (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#A_generic_interface).
Title: Re: Program that can log from many multimeters.
Post by: Curious on March 22, 2023, 02:12:41 am
Hi HKJ,

I finally got TC to work great for running battery capacity tests with East Tester 5410 Electronic Load, see https://www.eevblog.com/forum/index.php?action=post;quote=4765331;topic=228058.25 (https://www.eevblog.com/forum/index.php?action=post;quote=4765331;topic=228058.25)

So now wanting to plot I-V curves for Solar Panels.  Thought that would involve many days of understanding how to write scripts, but then saw your "Parameter Sweep" pop-up, awesome!

Practicing usage, I started with Parameter sweeping (in Constant Current mode) current set point from 0-1.0 amps in 100 steps while recording a battery voltage. I'm having a strange problem running parameter sweeps while logging..randomly TC reports Current and voltage dropping to precisely 0.00, then recovering to actual values.  Please see attached Chart image, as well as Parameter Sweep popup windows images.  The ET5410 LCD display does NOT show 0volts, 0amps but actual values.  Any idea why TC is randomly recording 0, 0?  I'm guessing there might be a USB communications collision, since log sampling interval >=10 seconds seems to mostly resolves the problem, but takes much time.

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 22, 2023, 11:57:03 am
Practicing usage, I started with Parameter sweeping (in Constant Current mode) current set point from 0-1.0 amps in 100 steps while recording a battery voltage. I'm having a strange problem running parameter sweeps while logging..randomly TC reports Current and voltage dropping to precisely 0.00, then recovering to actual values.  Please see attached Chart image, as well as Parameter Sweep popup windows images.  The ET5410 LCD display does NOT show 0volts, 0amps but actual values.  Any idea why TC is randomly recording 0, 0?  I'm guessing there might be a USB communications collision, since log sampling interval >=10 seconds seems to mostly resolves the problem, but takes much time.

You might be able to ignore the problem by using the configuration "Delay timeout by x samples" and use a value of 1 or 2 for x.

The actual problem may very well be a communication problem where the load has trouble with the intermixing of settings and readouts.
A check in the definition:
Quote
#cmdSetup number Set_I_
:read: CURR:CC?;
:readmath: trim(replace(value,"R",""))
:write: CURR:CC #;[300];
:tip: Set CC mode current value
Amps 0 40
:updatemodechange:

Shows a 300ms [300] delay after setting a new current value, you can try increase that value and see if it helps

When looking for communication issues using debug mode may help show it, but be aware that debug mode may slow down the communication and this by itself can fix the issue (The code is written so debug in itself do not slow down the code by any significant amount, but the increased workload on the computer may).
Title: Re: Program that can log from many multimeters.
Post by: Curious on March 23, 2023, 01:29:54 am
Thanks for your response.
You might be able to ignore the problem by using the configuration "Delay timeout by x samples" and use a value of 1 or 2 for x.
Looks like "delay timeout by x samples"  was defaulted to 1 samples.  Increasing to 2 samples seems to have reduced the 0.00 samples somewhat.

To see if I understand the expected behavior, does "Delay timeout by x samples" mean IF the ET5410 does not respond when values requested, then the previously received value will be recorded again?  Does this configuration setting also apply when sending current (I) setting to ET5410?

If the requested value is not received, is the index incremented anyway?  I'm asking because the 0.00 values can occur every other sample, even though Delay timeout = 3samples.  Pls see attached chart, zoomed into timeout samples.  I don't see any indication that the log skipped 3 samples (3 seconds at 1 sample/sec).

Considering the time delay after sending current I value to ET5410,
Quote
The actual problem may very well be a communication problem where the load has trouble with the intermixing of settings and readouts.
A check in the definition:
Quote
#cmdSetup number Set_I_
:read: CURR:CC?;
:readmath: trim(replace(value,"R",""))
:write: CURR:CC #;[300];
:tip: Set CC mode current value
Amps 0 40
:updatemodechange:
Shows a 300ms [300] delay after setting a new current value, you can try increase that value and see if it helps
does this mean 300ms delay until any other command is sent or received?  For example, does this mean to receive the next log sample must wait a minimum of 300ms? I've been trying to avoid learning the scripting, is there to change [300] to [400] without running a script?


Quote
When looking for communication issues using debug mode may help show it, but be aware that debug mode may slow down the communication and this by itself can fix the issue (The code is written so debug in itself do not slow down the code by any significant amount, but the increased workload on the computer may).
I'll wait on this approach for now. Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 24, 2023, 12:22:26 pm
Looks like "delay timeout by x samples"  was defaulted to 1 samples.  Increasing to 2 samples seems to have reduced the 0.00 samples somewhat.

Default is supposed to be 0 on this setting. That way it is easier to see communication problems.

To see if I understand the expected behavior, does "Delay timeout by x samples" mean IF the ET5410 does not respond when values requested, then the previously received value will be recorded again?  Does this configuration setting also apply when sending current (I) setting to ET5410?

The setting only applies when logging and will reuse the old value when recording that sample.

If the requested value is not received, is the index incremented anyway?  I'm asking because the 0.00 values can occur every other sample, even though Delay timeout = 3samples.  Pls see attached chart, zoomed into timeout samples.  I don't see any indication that the log skipped 3 samples (3 seconds at 1 sample/sec).

The index is incremented, the build-in timeout in the definition will also affect the result.

Quote
The actual problem may very well be a communication problem where the load has trouble with the intermixing of settings and readouts.
A check in the definition:
Quote
#cmdSetup number Set_I_
:read: CURR:CC?;
:readmath: trim(replace(value,"R",""))
:write: CURR:CC #;[300];
:tip: Set CC mode current value
Amps 0 40
:updatemodechange:
Shows a 300ms [300] delay after setting a new current value, you can try increase that value and see if it helps
does this mean 300ms delay until any other command is sent or received?  For example, does this mean to receive the next log sample must wait a minimum of 300ms? I've been trying to avoid learning the scripting, is there to change [300] to [400] without running a script?

The [300] will basically stop the communication to the device for 300ms exactly where it is placed in the communication stream.

Quote
When looking for communication issues using debug mode may help show it, but be aware that debug mode may slow down the communication and this by itself can fix the issue (The code is written so debug in itself do not slow down the code by any significant amount, but the increased workload on the computer may).
I'll wait on this approach for now. Thanks!

Using debug mode and posting the log may help me to see the problem.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 25, 2023, 12:08:19 am

The Block https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)) driver is perfect for this.

This driver is used for: "Devices\Mastech 6514.txt" and "Devices\ADC10F103C.txt"
But in both cases it is in is in streaming mode and you need to use polled mode, this means the configuration is slightly different.

I tried hard and probably now I should ask for a help  :'(
What I did so far and what result reached.

I use Test Controller V2.3 on Linux. I pass my serial device ttyUSB0 through a "fake network bridge" to be able see data packets exchange in Wireshark (you should know this tool I guess).
I'm sharing this technic as it may be usefull for you too. I run these 2 commands in 2 terminals:
Code: [Select]
socat PTY,link=/dev/ttyACM1,mode=777,group=dialout,unlink-close=0  TCP:localhost:23000,forever,interval=3
socat TCP-LISTEN:23000,reuseaddr,fork file:/dev/ttyUSB0,echo=0,b9600,raw

Now I'm connecting to a serial device ttyACM1 in TC.
Note - I tested this "fake network bridge" technic with TC for example with Atorch-DL24P and it worked perfectly!
And I can see all data packets exchanges in Wireshark on both directions by filtering on localhost:23000 (tcp.port == 23000 && tcp.flags.push == 1)

So, in Wireshark I can see how TC is polling data and I can see how my Tasi device is sending expected data back!
[attach 1]
The Tasi device response structure is described in my original  Reply #2880
Just in case, I also tried to communicate directly with ttyUSB0 but it does not help in any way.

Debuglog in TC, in particular, when I used ttyUSB0 directly:
Code: [Select]
$ java -jar TestController.jar debugTime=2
Starting
;; 2326.15ms jSerialComm version: 2.9.1
;; 3286.83ms Start thread for: ttyUSB0 - Tasi TA612C
;; 4008.81ms ttyUSB0: Tx: AA 55 01 03 03
;; 4008.81ms ttyUSB0: Set params: 9600
;; 5060.36ms ttyUSB0: Tx: AA 55 01 03 03
;; 7336.41ms ttyUSB0: Tx: AA 55 01 03 03
;; 11048.25ms Stopping thread for: ttyUSB0 - Tasi TA612C
;; 11363.91ms ttyUSB0: Close

Definition file I tried to use:
Code: [Select]
#idString TA612C
#name Tasi TA612C
#handle TA612C
#port comfixedbaud
#baudrate 9600
#driver block
#author Zalex
; Version 0.1   23-03-2023
#notes Other names: 4 Channels K/J Thermometer

#value Temperature  C SI
#rxStart 0x55 0xAA 0x01 0x0B
#rxLength 13
#rxFormat 3u2 5u2
#poll 0xAA 0x55 0x01 0x03 0x03
#askValues values?

Am I missing something important here or what?

I'm not sure that "block" driver is working correctly in "pool" mode.
I need to get at least some sign that it's reading data or so, to be sure that I can work further with Values definitions and numbers parsing.

I've tried to set something correct for rxFormat but I'm not sure it's mandatory to be fully specified and fully correct at this stage of troubleshooting.
Help please.

Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 26, 2023, 12:45:11 am
I'm not sure that "block" driver is working correctly in "pool" mode.
I need to get at least some sign that it's reading data or so, to be sure that I can work further with Values definitions and numbers parsing.

I've figured out that rxStart definition accepts only one byte! So this helped be to see actual RX packets in TC and TC started to detect my Tasi as connected.
Code: [Select]
#rxStart \x55If I define the value as "\x55\xAA" or "\x55 \xAA"  or "0x55 0xAA"  - neither does work.
Note: in definition files for Mastech 6514, they use 2 bytes: #rxStart \x65\x14. That's what I followed and hoped it works, but it's not!

Current working definition file:
Code: [Select]
#idString TA612C
#name Tasi TA612C
#handle Tasi
#port comfixedbaud
#baudrate 9600
#driver block
#author Zalex
; Version 0.2   26-03-2023

#notes 4 Channels K/J Thermometer

#rxStart \x55
#rxLength 13
#rxFormat 4i2/10 6i2/10 8i2/10 10i2/10
#poll 0xAA 0x55 0x01 0x03 0x03

#value CH1 C D1
#value CH2 C D1
#value CH3 C D1
#value CH4 C D1

#askValues values?

Graph:
[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 26, 2023, 01:19:48 pm
A feature request - "Adjustable pool interval for Block driver".

Well, I'm using Block driver with poll mode. Request: 5 bytes, reply: 13 bytes.
TC does ~14 pools in a seconds: 20-25ms delay of device reply, 50 ms delay before next pool.

My Tasi device updates state with 2Hz frequency, so polling it with ~75ms interval is basically ~7 times more redundant that it makes sense. Also, TC is more busy by doing unnecessary work.

I've tried to use cmdDelayTime to increase the pool, but it does not work for Block driver, as I expected. I could not fond any other related option to try.

So, having an option to adjust pool interval would be really helpful!
Debug:
Code: [Select]
;; Found Tasi TA612C on USB-Based Serial Port (ttyACM1)
;; 4228.94ms ttyACM1: Tx: AA 55 01 03 03
;; 4252.12ms ttyACM1: Rx: 55 AA 01 0B D5 00 D4 00 D4 00 D6 00 5E
;; 4302.34ms ttyACM1: Tx: AA 55 01 03 03
;; 4325.49ms ttyACM1: Rx: 55 AA 01 0B D5 00 D4 00 D4 00 D6 00 5E
;; 4375.71ms ttyACM1: Tx: AA 55 01 03 03
;; 4399.14ms ttyACM1: Rx: 55 AA 01 0B D5 00 D4 00 D4 00 D6 00 5E
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 26, 2023, 01:48:36 pm
I can see that you figured out your problems.

#rxStart do support multiple bytes, the Mastech would not work if it didn't.


A feature request - "Adjustable pool interval for Block driver".

Well, I'm using Block driver with poll mode. Request: 5 bytes, reply: 13 bytes.
TC does ~14 pools in a seconds: 20-25ms delay of device reply, 50 ms delay before next pool.

My Tasi device updates state with 2Hz frequency, so polling it with ~75ms interval is basically ~7 times more redundant that it makes sense. Also, TC is more busy by doing unnecessary work.

I might add a adjustable delay with a default of 50ms (as it is now), but I do not see it as very important and slower poll has one minor disadvantage: The logged data may be slightly older. The 50ms delay was selected as a compromise, allowing devices with slow processor to do other work than serving the data to TC, but still keep TC fairly up to date with measurements.
The TC driver works by storing the last read values and will return that value to any function (Log, readout, statistic, etc.) asking for the current value.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 26, 2023, 04:16:22 pm
#rxStart do support multiple bytes, the Mastech would not work if it didn't.

I don't know how value "\x65\x14" for rxStart works for Mastech.
I've described cleanly that I've tried value as "\x55\xAA" or "\x55 \xAA" or "\x55\xaa" - any of these does NOT work in my case.
I've tried that carefully and twice, so I'm sure than 2 (or more) bytes does not work for me, while I'm sure what second byte is - 0xAA.

Maybe Mastech is sending those bytes with delay, so they being read and processes separately or so.

Also, rxStart accepts the byte only in format \x55, and does not work if specify it as 0x55.

"poll" is opposite - it accepts bytes only if format 0xAA 0x55, which is confusing why bytes in HEX have different format requirements for different params.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 26, 2023, 04:22:04 pm
I might add a adjustable delay with a default of 50ms (as it is now), but I do not see it as very important and slower poll has one minor disadvantage: The logged data may be slightly older.

I'd appreciate if you would implement that. I have more devices where I need to use the Block driver and where I really need to slow down the polling frequency.
I fully understand that increasing the delay might be considered as the disadvantage, but that's a decision for TC users :)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 26, 2023, 05:35:16 pm
I don't know how value "\x65\x14" for rxStart works for Mastech.
I've described cleanly that I've tried value as "\x55\xAA" or "\x55 \xAA" or "\x55\xaa" - any of these does NOT work in my case.
I've tried that carefully and twice, so I'm sure than 2 (or more) bytes does not work for me, while I'm sure what second byte is - 0xAA.

Maybe Mastech is sending those bytes with delay, so they being read and processes separately or so.

I have no idea why it do not work for you. Or maybe I do, it may be a charset problem, if this is the case it will be fixed.

Also, rxStart accepts the byte only in format \x55, and does not work if specify it as 0x55.

"poll" is opposite - it accepts bytes only if format 0xAA 0x55, which is confusing why bytes in HEX have different format requirements for different params.

Generally I use string or numeric format, rxStart uses string format, this means that any character will be used, but you can use the \ to escape into numeric character specifications. Other tags may use numeric format.
I agree it would have been better if I had use the same format for both, but I will not change it now.

Title: Re: Program that can log from many multimeters.
Post by: Humulus on March 29, 2023, 10:18:45 am
Hi Is there any chance that the ET5420+ Will be added in this software? (the New model, the ET5420, does not seem to be aviable any more :-(
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 30, 2023, 11:12:32 am
Hi Is there any chance that the ET5420+ Will be added in this software? (the New model, the ET5420, does not seem to be aviable any more :-(

If somebody makes a definition it will be included.
Many of the included devices are done by readers, not by me. I help with it, by explaining stuff and by adding needed functions to TestController.
Title: Re: Program that can log from many multimeters.
Post by: Humulus on March 31, 2023, 12:17:48 pm
How hard is it to do it by myself? What skills are needed?
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on March 31, 2023, 12:22:40 pm
How hard is it to do it by myself? What skills are needed?

I see myself 3 months ago on your current state.
No one know what skills are needed. You have to just push yourself hard and try.
p.s. I've got a success at the end, but it was not easy and not fast.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 31, 2023, 01:04:26 pm
How hard is it to do it by myself? What skills are needed?

This depends very much on the protocol, at it simplest (SCPI without modes) you basically list the values you want displayed and the commands you want to send. Binary protocols are harder, first you have to find documentation of the protocol or figure it out yourself, next you have to find the best matching protocol in TestController (Or ask me for help writing a new protocol driver), then you have to extract the values and make the commands using the specifications for that protocol.
A device with modes can be fairly easy or very hard, this depends on number of modes and how they work. As an example of devices with modes see DMM's. Electronic loads also has modes, but they are usually easier, because most of the settings and return values are the same for all modes.


You can find documentation here:
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html)
https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html)

And the Devices directory is full of examples.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on April 04, 2023, 01:21:02 am
Hi HKJ,

I'm hoping to use the Block driver to write a definition for an appliance that uses RS485. However I'm looking to use an RS485 to ethernet adaptor.

From what I can see in the debug window, it looks as though SocketInterface can't be used with the Block driver - is this the case?

Code: [Select]
Exception in thread "Scan ports" java.lang.ClassCastException: class dk.hkj.comm.SocketInterface cannot be cast to class dk.hkj.comm.SerialInterface (dk.hkj.comm.SocketInterface and dk.hkj.comm.SerialInterface are in unnamed module of loader 'app')
        at dk.hkj.devices.DeviceBlock.getCommInterface(DeviceBlock.java:619)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:1391)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSocket(InterfaceThreads.java:630)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:765)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 05, 2023, 12:28:39 pm
Hi HKJ,

I'm hoping to use the Block driver to write a definition for an appliance that uses RS485. However I'm looking to use an RS485 to ethernet adaptor.

From what I can see in the debug window, it looks as though SocketInterface can't be used with the Block driver - is this the case?

For now, it will be fixed in next version.
Title: Re: Program that can log from many multimeters.
Post by: Humulus on April 06, 2023, 09:44:42 am
Hmm...I must say that did not encourage me  :-[
I think I skip the ET-4520.
Dont believe I have the skills, nor the time  :(
But thanks for your (and others) reply!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 07, 2023, 10:53:35 am
Hmm...I must say that did not encourage me  :-[
I think I skip the ET-4520.
Dont believe I have the skills, nor the time  :(
But thanks for your (and others) reply!

New models will often use same protocol as old models, maybe with a few additions. This will often make it possible to use the old definition (After copying it and changing the identifier) for initial connection and most of the functions.
Title: Re: Program that can log from many multimeters.
Post by: gby on April 08, 2023, 01:44:13 pm
Hi HKJ,

For a SCPI LXI device I need to send the ascii text
    C1:SWWV DIR,UP_DOWN
Note the underscore in the above is needed.  Sent as shown the "_" is replaced by a space as expected.

So, I added an escape "\" before it.  Unfortunately that did not work.  Working in debug mode I got the following:
   C1:SWWV DIR,UP\_DOWN
   ;; SDG2122X: Tx <C1:SWWV DIR,UPDOWN>
Note that in the actual transmitted message the sequence "\_" was reduced to no character instead of keeping the underscore.

Based on Test Controller documentation I was pretty sure \_ should work.  That sequence is used in the SiglentSDGxxxxX.txt driver for the Siglent SDG2042X device I am talking to in the line
   :write: C1:SWWV MARK\_STATE,#

So, what escape syntax do I need to use to get the underscore to actually be sent?

I am using Test Controller V2.34 taling to Siglent SDG2042X.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 08, 2023, 03:26:01 pm
For a SCPI LXI device I need to send the ascii text
    C1:SWWV DIR,UP_DOWN
Note the underscore in the above is needed.  Sent as shown the "_" is replaced by a space as expected.

So, I added an escape "\" before it.  Unfortunately that did not work.  Working in debug mode I got the following:
   C1:SWWV DIR,UP\_DOWN
   ;; SDG2122X: Tx <C1:SWWV DIR,UPDOWN>
Note that in the actual transmitted message the sequence "\_" was reduced to no character instead of keeping the underscore.

Based on Test Controller documentation I was pretty sure \_ should work.  That sequence is used in the SiglentSDGxxxxX.txt driver for the Siglent SDG2042X device I am talking to in the line
   :write: C1:SWWV MARK\_STATE,#

So, what escape syntax do I need to use to get the underscore to actually be sent?

Use hex code: \x5f
Title: Re: Program that can log from many multimeters.
Post by: gby on April 08, 2023, 04:11:50 pm
Using \x5f hex code for underscore certainly works in a script command.  But, it does not work in a setup window radio button.  The present SiglentSDGxxxX.txt device file does not support sweep UP_DOWN mode and I am working to add it.  I modified the existing driver file setup popup code by adding one line at the end for the third state:
Code: [Select]
#cmdSetup radio Sweep_Direction Channel_1
:read: C1:SWWV?
:readmath: getElement(getMatch(value,"DIR,[^,]*(,|$)"),1,",")
:readformat: u
:write: C1:SWWV DIR,#
:string:
Up UP
Down DOWN
Up_Down UP\x5fDOWN

The above does not work in two ways:
1.  When the device is actually in UP_DOWN mode the radio button does not recognize it and does not put the dot on any radio button.  If the last line has "UP_DOWN" it will put the dot on Up Down when in that mode.
2.  As written above the Setup processing sends
      ;; SDG2122X: Tx <C1:SWWV DIR,UPx5fDOWN>
    to the device.  It does not send C1:SWWV DIR,UP_DOWN like using \x5f in a command line would.

The original attempt was using
   Up_Down UP\_DOWN
which also did not work.

So, for a setup radio button how to get Test Controller to send actual text "UP_DOWN" and how to get the radio button to recognize this third state and populate the dot on the radio button properly?
Title: Re: Program that can log from many multimeters.
Post by: luudee on April 09, 2023, 06:44:48 am


Guys,

my apologies if this has been discussed somewhere, but I cant find it:

I am trying to add a driver for a R&S NGU401, but can't figure out how to make it pick up my driver. It seems to be ignoring it.

What is the procedure to add new drivers/devices?

Many Thanks,
luudee

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 09, 2023, 07:59:10 am
So, for a setup radio button how to get Test Controller to send actual text "UP_DOWN" and how to get the radio button to recognize this third state and populate the dot on the radio button properly?

I will have to look at the backslash handling in the radio button (At a quick glance I cannot see it refuses to work).
Generally you can see how the reading of an answer works by using debug mode. The answers must match the command text, you can use a function to do the conversion.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 09, 2023, 08:07:04 am
I am trying to add a driver for a R&S NGU401, but can't figure out how to make it pick up my driver. It seems to be ignoring it.

What is the procedure to add new drivers/devices?

The file must be in the Devices directory, preferable the one in home\TestController to avoid getting it mixed with the supplied drivers.
TestController will parse all files in the two Devices directory and add any recognized definition to its list (Duplicate definitions are only loaded once).
Definitions will only be loaded when TestController is started, i.e. if you change anything in a definition you must restart TestController to make it work.
To speed up testing you can temporary remove/rename the original Devices directory, then TC only needs to load your definition.

To create a skeleton definition you can right click on the filter field on the "Load devices" page and select "Create new SCPI device definition". After a few questions it will create a file that connects to your device and place it in the correct location.
Title: Re: Program that can log from many multimeters.
Post by: luudee on April 09, 2023, 04:12:31 pm
Sorry Guys, more questions, appreciate the help.

I am trying to create a sweep tool, as part of a SMU driver for the NGU401.

Several questions:

1. How do I use "emptyfield" ? I tried to use it with   cmdSetup number, but it seems java crashes every time I try to use that

2. How can I read (float) numbers from text fields in the GUI to pass them along to the SMU ? I am trying to use:
cmdSetup multi Sweep_Range
number Vmin _ -20 +20
number Vmax _ -20 +20
number Points _  0 100000000

I would like to assign default values to all those text (number)
fields (as float).

Basically, I am trying to duplicate this windows tool from R&S (attached image). Any example, suggestion?

Many Thanks,
luudee



Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 10, 2023, 10:42:49 am
1. How do I use "emptyfield" ? I tried to use it with   cmdSetup number, but it seems java crashes every time I try to use that

You add a line with:
:emptyfield: 567

And the number control will have the value 567 when it is empty. This is mostly used to set a special value out of the ordinary range, like a special value for function disabled.

2. How can I read (float) numbers from text fields in the GUI to pass them along to the SMU ? I am trying to use:
cmdSetup multi Sweep_Range
number Vmin _ -20 +20
number Vmax _ -20 +20
number Points _  0 100000000

I would like to assign default values to all those text (number)
fields (as float).

You can see the format here for number (multi do not support this): https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_number (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_number)

Multi control is different and do not have as many options. The point of multi is that all the values are send with the same command.
Documentation here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Control_multi)

Controls generally read their initial value from the device, there is no default value for them.
Title: Re: Program that can log from many multimeters.
Post by: aronake on April 11, 2023, 04:10:46 am
Has anyone had success to get GPIB to Lan gateway like Agilent E5810A to work with testcontroller?

There was some old mentions in the thread but nothing conclusive on how to get it work. Ideally I would want to add 2 multimeters and one frequency counter, which I all got to work with a Prologix GPIB to USB clone on testcontroller, but instead thought the E5810A so I can access them via lan and wifi in testcontroller.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2023, 06:01:21 am
Has anyone had success to get GPIB to Lan gateway like Agilent E5810A to work with testcontroller?

There was some old mentions in the thread but nothing conclusive on how to get it work. Ideally I would want to add 2 multimeters and one frequency counter, which I all got to work with a Prologix GPIB to USB clone on testcontroller, but instead thought the E5810A so I can access them via lan and wifi in testcontroller.

The only LAN based GPIB controller supported is the PrologixEthernet, mostly because it is the only one I have. The AR488 is a cheap supported USB based GPIB controller that can easily handle the above devices.
There is a bug in the GPIB implementation I have not fixed yet: It can only handle one device for each GPIB controller.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on April 12, 2023, 07:46:35 am
Hi HKJ,

Are there any known issues with the AsciiBlock driver at the moment? I'm able to send commands without issue, but as soon as I try to receive a response I get java exceptions.

Code: [Select]
txrx1 @0103
;; GTH225: Tx <txrx1 @0103>
;; COM10: Tx: 40 30 31 30 33 34 32 2A 0D
java.lang.NullPointerException
        at java.lang.String.<init>(Unknown Source)
        at dk.hkj.devices.DeviceAsciiBlock$TranslatingCommInterface.writeRead(DeviceAsciiBlock.java:277)
        at dk.hkj.devices.DeviceAsciiBlock$TranslatingCommInterface.write(DeviceAsciiBlock.java:377)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:316)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:339)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:83)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:3039)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1573)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1571)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:904)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)

Code: [Select]
txrxn? 28 @0103
;; GTH225: Tx <txrxn? 28 @0103>
;; COM10: Tx: 40 30 31 30 33 34 32 2A 0D
java.lang.NullPointerException
        at java.lang.String.<init>(Unknown Source)
        at dk.hkj.devices.DeviceAsciiBlock$TranslatingCommInterface.writeRead(DeviceAsciiBlock.java:277)
        at dk.hkj.devices.DeviceAsciiBlock$TranslatingCommInterface.write(DeviceAsciiBlock.java:407)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:144)
        at dk.hkj.main.SCPICommand.writeReadDelay(SCPICommand.java:182)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:293)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:339)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:83)
        at dk.hkj.main.CommandProcessor.processCommands(CommandProcessor.java:3039)
        at dk.hkj.main.PaneCommand.processCommand(PaneCommand.java:1573)
        at dk.hkj.main.PaneCommand.access$20(PaneCommand.java:1571)
        at dk.hkj.main.PaneCommand$31.keyTyped(PaneCommand.java:904)
        at java.awt.AWTEventMulticaster.keyTyped(Unknown Source)
        at java.awt.Component.processKeyEvent(Unknown Source)
        at javax.swing.JComponent.processKeyEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
        at java.awt.EventQueue.access$500(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.awt.EventQueue$3.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.awt.EventQueue$4.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
;; GTH225: Rx Timeout

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on April 12, 2023, 09:43:28 am
The ASCII blockdriver for my BME280 sensors works
as before with Test Controller V2.34
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 12, 2023, 10:07:12 am
Are there any known issues with the AsciiBlock driver at the moment? I'm able to send commands without issue, but as soon as I try to receive a response I get java exceptions.

The reason for the exception is a null answer, this probably is due to a timeout (i.e. no answer from the device).
The actual communication routine handles it, but the handling after the communication fails due to the null answer. In this instance it is the debug output that trips on the null answer, but it would have tripped a few lines later on the decoding, if you had not been in debug mode.

The reason for not seeing the answer may be a wrong end of line/packet format specification.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on April 13, 2023, 01:29:35 am
EDIT: I can't seem to get the forum to post images correctly.

The reason for the exception is a null answer, this probably is due to a timeout (i.e. no answer from the device).
The actual communication routine handles it, but the handling after the communication fails due to the null answer. In this instance it is the debug output that trips on the null answer, but it would have tripped a few lines later on the decoding, if you had not been in debug mode.

The reason for not seeing the answer may be a wrong end of line/packet format specification.


I must be missing something really obvious. Any thoughts?

Skeleton definition:
Code: [Select]
#idString GTH225
#name Giant Force GTH-225-20-CP-AR
#handle GTH225
#port comfixedbaud
#baudrate 9600
#driver AsciiBlock

#readingDelay 3

#rxEol *\r\n
#eol *\r
#checksum xor8 hexhl 0 0 0 0

#scpiCmd CLOCK? txrx1? @0103

Protocol Specifications:

[attachimg=1] Refer to attached datarequest.png
[attachimg=2] Refer to attached clockresponse.png


Comms verified on scope (excuse the poor stitching together in mspaint - these screengrabs were obtained through TestController, no less!):

[attachimg=3] Refer to attached scope_1_datarequest - Copy.png
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 13, 2023, 11:00:51 am
I must be missing something really obvious. Any thoughts?

Try adding

#rxStart @
#rxEnd *\r\n

With this protocol Block may be a better driver than AsciiBlock, because you can easily pick values at specific positions in the message.
With Block you need these 3 commands:
#rxStart
#rxLength
#rxFormat
Title: Re: Program that can log from many multimeters.
Post by: Sierra on April 13, 2023, 07:32:06 pm
Really truly appreciate this software and will be leaving a donation.

Just picked up a handful of the BM827s for our lab to use with TestController but am having difficultly getting TestController to see these meters.  Have installed the drivers that came with the BU-86X interface kits and can confirm the meters can be read by the Brymen software.  There seems to be something I'm missing for TestController.  Have done a search but not found any troubleshooting information. 

I have the type set to USBHID.

Is anyone able to lend some input?
Title: Re: Program that can log from many multimeters.
Post by: jmurray on April 14, 2023, 08:24:18 am
Try adding

#rxStart @
#rxEnd *\r\n

With this protocol Block may be a better driver than AsciiBlock, because you can easily pick values at specific positions in the message.
With Block you need these 3 commands:
#rxStart
#rxLength
#rxFormat

I originally looked at the Block driver, I might have to have another look at it.

I finally found the source of my problems. Somehow both of the RS485 converters I had sourced (completely different manufacturers etc) were unidirectional. One was transmit only and one was receive only. I've tried some quick and dirty board mods to make them bidirectional but not having any luck.

I do have a confirmed working Ethernet to RS485 converter however.

If we could get the Block/AsciiBlock drivers working with SocketInterface, that would be great!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2023, 10:06:41 am
If we could get the Block/AsciiBlock drivers working with SocketInterface, that would be great!

It will be in the next version.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2023, 11:12:45 am
Really truly appreciate this software and will be leaving a donation.

Just picked up a handful of the BM827s for our lab to use with TestController but am having difficultly getting TestController to see these meters.  Have installed the drivers that came with the BU-86X interface kits and can confirm the meters can be read by the Brymen software.  There seems to be something I'm missing for TestController.  Have done a search but not found any troubleshooting information. 

I have the type set to USBHID.

Is anyone able to lend some input?

It looks like the USBHID interface has stopped working. I have not modified any code in the HID interface. there must be some other reason.
I will be looking at it, but it might take some time. If you can find a older version of TC try using that.


Title: Re: Program that can log from many multimeters.
Post by: Sierra on April 14, 2023, 11:47:58 am
Many thanks.  Have some UT71As coming in that will hopefully get us up and running.  Donation inbound!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 14, 2023, 12:29:19 pm
Many thanks.  Have some UT71As coming in that will hopefully get us up and running.  Donation inbound!

A older version of TC will also work, I have used the USBHID interface a lot, but not recently.
Be aware that UNI-T has two kinds of  interface, one is USBHID, the other is virtual serial. Only the serial works.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 17, 2023, 07:47:25 am
Hi,
This is a copy of this thread https://www.eevblog.com/forum/testgear/why-testcontroller-software-can-not-find-my-gpp-4323-power-supply/?topicseen (https://www.eevblog.com/forum/testgear/why-testcontroller-software-can-not-find-my-gpp-4323-power-supply/?topicseen) since eevblog users suggest to post in here
My GPP-4323 has no Ethernet option, only USB and RS232, I have connected it with USB to my PC, and I can Detect it with a normal terminal program, like bray terminal, But Test Controller software can not detect and find it, what am I doing wrong?

I can detect and send commands to GPP-4323 with a normal termianl program
(https://i.ibb.co/Q6DCQNK/Terminal.png) (https://ibb.co/Bgnr3ZC)

The load devices tab of Test controller and it's config, (and yes I have disconnected the bray terminal before testing with Test controller software)
(https://i.ibb.co/VMJ2LxX/Test-controller.png) (https://ibb.co/nQ6zwBh)

If I check scan serial ports, It would only find COM3 which is another Serial port on my PC motherboard and it would not find COM4 which is the actual GPP-4323 port
(https://i.ibb.co/L9tDVKH/3.png) (https://ibb.co/Yfk4Hgw)
Title: Re: Program that can log from many multimeters.
Post by: Humulus on April 17, 2023, 06:31:27 pm
I bought an ET5410A+ instead as that was in the supported list.
Unfortunately it does not work with the program. It does not connect, instead theres a fault-message
with says that it does not math. (strangely it says that "ET5420 does not Match" even that I choosed the correct
model Et5410A+   Anybody else with a ET5410A+  with has sucess?
Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 19, 2023, 07:24:42 am
Hej,

your program is really awesome and works well with with the Metrahit "ENERGY" and Atorch "DL24P"
Did your plans progress to include the Metrahit "PM PRIME BT (ULTRA BT)"?
I do own a "PM PRIME BT" alongside with a "USB X-TRA".

If you need seomeone to test or some information, I am happy to help.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2023, 10:26:41 am
Hi,
This is a copy of this thread https://www.eevblog.com/forum/testgear/why-testcontroller-software-can-not-find-my-gpp-4323-power-supply/?topicseen (https://www.eevblog.com/forum/testgear/why-testcontroller-software-can-not-find-my-gpp-4323-power-supply/?topicseen) since eevblog users suggest to post in here
My GPP-4323 has no Ethernet option, only USB and RS232, I have connected it with USB to my PC, and I can Detect it with a normal terminal program, like bray terminal, But Test Controller software can not detect and find it, what am I doing wrong?

I can detect and send commands to GPP-4323 with a normal termianl program

I have no idea why it does not work, I use a library for serial ports (See About page in TC) it works on multiple OS's and is generally stable.

Maybe one idea: Do the device echo the commands? TC do not like that.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2023, 10:32:35 am
I bought an ET5410A+ instead as that was in the supported list.
Unfortunately it does not work with the program. It does not connect, instead theres a fault-message
with says that it does not math. (strangely it says that "ET5420 does not Match" even that I choosed the correct
model Et5410A+   Anybody else with a ET5410A+  with has sucess?

Chinese manufactures do sometimes change the protocol in their devices, this may stop it from working with TC.
If you open the definition file it start with definition of the device names, the name after #idstring must match what is returned from the device, if not you will get the "does not match". You can try duplicate the #metadef entry and adjust the #idstring. You must also change the #name, TC do not accept two devices with the same name.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 19, 2023, 10:38:51 am
Hej,

your program is really awesome and works well with with the Metrahit "ENERGY" and Atorch "DL24P"
Did your plans progress to include the Metrahit "PM PRIME BT (ULTRA BT)"?
I do own a "PM PRIME BT" alongside with a "USB X-TRA".

If you need seomeone to test or some information, I am happy to help.

I have not gotten around to include the PRIME/ULTRA, it takes some work due to the amount of modes. If you want you can work on it.

I have attached the start, i.e. the energy, but with the name changed. It is not a working Prime definition
Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 19, 2023, 12:11:11 pm
Thanks for the template!  :-+

I'll try to dig into it (if I can grasp it & find some spare time).

Title: Re: Program that can log from many multimeters.
Post by: Njk on April 19, 2023, 03:31:28 pm
It looks like the USBHID interface has stopped working. I have not modified any code in the HID interface. there must be some other reason.
I will be looking at it, but it might take some time. If you can find a older version of TC try using that.

I've some experience in HID with Windows. So i remember that the HID data exchange can be implemented in the application in the two ways. You can parse the HID report received from the device entirely by your code, or you can use the system-provided helper APIs to parse the report to extract the data from the desired fields in the report. Each the way has its pros and contras. Just curious, which way you took with the TC.
Title: Re: Program that can log from many multimeters.
Post by: Njk on April 19, 2023, 03:46:19 pm
I have attached the start, i.e. the energy, but with the name changed. It is not a working Prime definition

By the way, your app seems well suited for drawing energy profile charts using the data from utility electricity meters. There are lots of vendor-specific protocols, but they're being replaced with the common framework, which is known as DLMS/COSEM. It's not officially public, and it can be looking a bit complex initially, but an open source implementations exists. What is your vision in that regard?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2023, 04:42:37 pm
Thanks for the template!  :-+

I'll try to dig into it (if I can grasp it & find some spare time).

You can always ask questions here or on email.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2023, 04:43:46 pm
It looks like the USBHID interface has stopped working. I have not modified any code in the HID interface. there must be some other reason.
I will be looking at it, but it might take some time. If you can find a older version of TC try using that.

I've some experience in HID with Windows. So i remember that the HID data exchange can be implemented in the application in the two ways. You can parse the HID report received from the device entirely by your code, or you can use the system-provided helper APIs to parse the report to extract the data from the desired fields in the report. Each the way has its pros and contras. Just curious, which way you took with the TC.

The library I use return a some bytes that I decode. They number of bytes matches the Brymen description.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 20, 2023, 04:46:24 pm
By the way, your app seems well suited for drawing energy profile charts using the data from utility electricity meters. There are lots of vendor-specific protocols, but they're being replaced with the common framework, which is known as DLMS/COSEM. It's not officially public, and it can be looking a bit complex initially, but an open source implementations exists. What is your vision in that regard?

I have no vision for that type of meters, I have never looked at the interface for that type of meters.
It might be possible to implement it, but the open source code must be in Java to be useful for TC.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 21, 2023, 08:35:32 am
Quote
I have no idea why it does not work, I use a library for serial ports (See About page in TC) it works on multiple OS's and is generally stable.

Maybe one idea: Do the device echo the commands? TC do not like that.

Thanks HJK for the feedback, It would not echo back the commands, The device anser to *IDN? cokmmand is like this GW Instek,GPP-4323,SN:GEW895373,V1.19
So does TC search for a specific string? maybe this response has some additional charachters or info?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2023, 08:53:18 am
Thanks HJK for the feedback, It would not echo back the commands, The device anser to *IDN? cokmmand is like this GW Instek,GPP-4323,SN:GEW895373,V1.19
So does TC search for a specific string? maybe this response has some additional charachters or info?

The #idString tag must match the first part of the answer to the *idn? command, i.e. with the above answer you need:
#idString GW Instek,GPP-4323,

This string will also be shown in the "does not match" error message in the log window if you try with a non-matching SCPI device.
Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 21, 2023, 10:21:33 am
@ HKJ:

Do you also have interruptions while logging with the Metrahit Energy?

No matter how many data or period of time I choose I always have breakdowns, which are obviously not there in reality, as other meters like Brymen, Keysight or Fluke work just fine at the same usb port / setup...
 (https://postimg.cc/rdgKMZTJ)

...and also METRAwin10 does not show these unforeseen interruptions?
 (https://postimg.cc/NyTvx5Jr)

I would prefer using TestController, but I can live with METRAwin10, so that I don't have any expectancy, just asking as I have no other Metrahit DMM to compare, as it is probably more like this Brymen USBHID-thingy, because the Gossen USB-IR-Interface also does not run under linux itself in contrast to Keysight or Fluke, which are the best brands for linux users...

I have tested different setups with Win7, Win10, Linux with VirtualBox so far and always have this problem with TestController. As there is a "serial fixed baudrate" there is also no difference whether I keep the 9600 or change it to 38400 in the "settingsLoad.ini".

Does anyone else have similar issues?

[...]

ThanX & Cheers!

Interestingly I see the same dropouts (and spikes) as well - but only when I use the "USB X-Tra"
When I use the "IrDroid transceiver" (https://irdroid.eu/product/irdroid-usb-irda-transceiver-2/), I don't see any of these.

I verified this using the "MetraHit Energy" and "MetraHit PM Prime BT" and by swapping USB-Ports.
It is always the original "USB X-Tra" which creates those outliers.
Those outliers are not present in "MetraWIN 10"

MetraHit Energy + USB X-Tra:
[attach=1]

The math "DropOutFiler" makes is less pronounced
[attach=2]

MetraHit Energy + IrDroid:
[attach=3]
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 21, 2023, 03:19:33 pm
Thanks HKJ for the update, would you please share some picture on how to use TC with serial port,so I can chekc If I made something worng, as I say before, I can send commands with a simple teriman by hand and the device would responde back.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2023, 04:09:24 pm
Interestingly I see the same dropouts (and spikes) as well - but only when I use the "USB X-Tra"
When I use the "IrDroid transceiver" (https://irdroid.eu/product/irdroid-usb-irda-transceiver-2/), I don't see any of these.

I verified this using the "MetraHit Energy" and "MetraHit PM Prime BT" and by swapping USB-Ports.
It is always the original "USB X-Tra" which creates those outliers.
Those outliers are not present in "MetraWIN 10"

I have no explanation on why TC do it for that interface.

You can try adjust the "Delay timeout" setting on the configuration page, it might help:
(https://lygte-info.dk/pic/Projects/TestController/DocConfig/TimeoutHandling.png)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 21, 2023, 04:20:11 pm
Thanks HKJ for the update, would you please share some picture on how to use TC with serial port,so I can chekc If I made something worng, as I say before, I can send commands with a simple teriman by hand and the device would responde back.

I do not know what to show picture of.
There is a few tricks in the baudrate setting:

When working on getting a connection there are two ways to simplify getting a connection:
1) Let TC try settings and make a skeleton driver (Right click in the Filter field on the "Load devices" page and select "Create new SCPI device definition"
2) Use a ASCII device definition, it do not need any confirmation string on startup and this makes the command line into a serial terminal (You can switch to SCPI or SCPIx a bit later when the connection works).
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on April 22, 2023, 11:51:10 am
Hi HKJ

First I want to thank you for creating TestController, and the vast amount of your effort in the ongoing improvement and support!

I am writing a device definition file for the Racal-Dana 1998 Frequency Counter. (Almost done…)
This is a very nice counter because it is fast, easy to use, has a very clear display, and has the ability to show 10MHz with 1mHz resolution . It is popular amongst amateurs, also because it became available in large quantities as Army surplus.

(https://www.miedema.dyndns.org/co/2023/racal1998/IMG_2271__Racal-Dana_1998_controlled_by_TestController-600pix.jpg)
IMG_2271__Racal-Dana_1998_controlled_by_TestController-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/racal1998/IMG_2271__Racal-Dana_1998_controlled_by_TestController-2000pix.jpg)

All functions of the counter are supported.
I am using the counter in the single-shot mode, it takes one measurement in each logging interval.
There is more info, some tips and known issues in the header of the definition file.

As this counter is Pre-SCPI, I am using the Ascii driver. Most testing is done with the AR488 GPIB adapter.

(https://www.miedema.dyndns.org/co/2023/racal1998/TC-screenshot-Racal1998-600pix.png)
TC-screenshot-Racal1998-1000pix.png (https://www.miedema.dyndns.org/co/2023/racal1998/TC-screenshot-Racal1998-1000pix.png)

I have two questions left:

I am using mouse-over tips (using the :tip: tag ) in the menu’s. For a few tips, I would like to divide a long line of text into 2 short lines (in other words, add a CR/LF halfway the line). I searched your documentation, but could not find the solution. How can I achieve this?

The Racal-Dana 1998 has a twin model, the 1999. Only difference is that the Racal-Dana 1999 does not have the “Ratio B/A” function. And of course it returns “1999” when asked for the model name,  instead of “1998”. So I added  meta definitions, to make this configuration file also work for the Racal-Dana 1999.
But I do not have a Racal-Dana 1999 for testing, so I can not check if I did the #meta and #metadef statements right. Could you have a look if I did the meta definitions right?

Please find the preliminary final version of the device configuration file below:
Racal1998-1999 v1.0 (https://www.miedema.dyndns.org/co/2023/racal1998/Racal1998-1999.zip)

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 22, 2023, 03:02:57 pm
Interestingly I see the same dropouts (and spikes) as well - but only when I use the "USB X-Tra"
When I use the "IrDroid transceiver" (https://irdroid.eu/product/irdroid-usb-irda-transceiver-2/), I don't see any of these.

I verified this using the "MetraHit Energy" and "MetraHit PM Prime BT" and by swapping USB-Ports.
It is always the original "USB X-Tra" which creates those outliers.
Those outliers are not present in "MetraWIN 10"

I have no explanation on why TC do it for that interface.

You can try adjust the "Delay timeout" setting on the configuration page, it might help:
(https://lygte-info.dk/pic/Projects/TestController/DocConfig/TimeoutHandling.png)

I'll give it a try and report back :)

Is there a way to "pause" and "resume" logging?
When I "stop log" and then start again, the graph is cleaned - can this be avoided in some simple way?

Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 22, 2023, 03:28:46 pm
Thanks HKJ for the update, would you please share some picture on how to use TC with serial port,so I can chekc If I made something worng, as I say before, I can send commands with a simple teriman by hand and the device would responde back.

I do not know what to show picture of.
There is a few tricks in the baudrate setting:
  • The baudrate can be any baudrate, but can also contain more parameters line: 19200O71Dr
  • The D or d sets DTR high or low and R or r sets RTS high or low.
  • The last letter can be H for DTR flow control (Windows only) or h or RTS flow control.

When working on getting a connection there are two ways to simplify getting a connection:
1) Let TC try settings and make a skeleton driver (Right click in the Filter field on the "Load devices" page and select "Create new SCPI device definition"
2) Use a ASCII device definition, it do not need any confirmation string on startup and this makes the command line into a serial terminal (You can switch to SCPI or SCPIx a bit later when the connection works).
The fact that TC does not see your serial port in its scan seems suggestive.
Have you tried setting the connection to "USB" rather than "serial"?
Can you post a sketch of exactly how your PC is connected to the GPP-4323?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2023, 08:27:08 am
I am using the counter in the single-shot mode, it takes one measurement in each logging interval.

I do not believe that is a good idea, but if it is the only way, you have to use it.
Test controller can have multiple threads fetching data from a device (mostly they will coordinate the reading).

I am using mouse-over tips (using the :tip: tag ) in the menu’s. For a few tips, I would like to divide a long line of text into 2 short lines (in other words, add a CR/LF halfway the line). I searched your documentation, but could not find the solution. How can I achieve this?

I have not really done anything to support it, but Java has a trick to make multiline:
Code: [Select]
:tip: <html>Line 1<br>Line 2<br>Line 3A couple of other html tags are supported (it is a very old version of html Java supports).

The Racal-Dana 1998 has a twin model, the 1999. Only difference is that the Racal-Dana 1999 does not have the “Ratio B/A” function. And of course it returns “1999” when asked for the model name,  instead of “1998”. So I added  meta definitions, to make this configuration file also work for the Racal-Dana 1999.
But I do not have a Racal-Dana 1999 for testing, so I can not check if I did the #meta and #metadef statements right. Could you have a look if I did the meta definitions right?

At first glance it looks correct.
If you want to see the final definition you can put this line:
#metaDebug save
below the #metadef tag, this will write the processed definition to disk.

Please find the preliminary version of the device configuration file below:
Racal1998-1999BETA.zip (https://www.miedema.dyndns.org/co/2023/racal1998/Racal1998-1999BETA.zip)

I look forward to the final definition.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2023, 08:32:48 am
Is there a way to "pause" and "resume" logging?
When I "stop log" and then start again, the graph is cleaned - can this be avoided in some simple way?

Yes, you have to use advanced logging.
It will run the logging function continuous, but only add data to the log when enabled.
It support a small popup with start/stop buttons (Popup "Log Trigger") or it can log when some conditions are met or a lot of other stuff.
https://lygte-info.dk/project/TestControllerPopupLog%20UK.html (https://lygte-info.dk/project/TestControllerPopupLog%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 23, 2023, 09:24:38 am
Thanks!
With "enabled" you mean the checkbox in the "load devices" tab?

I tried to your suggestion with the "Delay timeout" setting in the configuration page to get rid of the dropouts, but it didn't do anything:
[attach=1]

Even the DropOutFilter (30 samples) was not able to completely get rid of those dropouts:
[attach=2]

Configurattion:
[attach=3]

Again, no issues with the "IrDroid Transceiver"  :-//
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 23, 2023, 10:50:26 am
With "enabled" you mean the checkbox in the "load devices" tab?

With log enabled I mean you use the popup or a command to start it.


I tried to your suggestion with the "Delay timeout" setting in the configuration page to get rid of the dropouts, but it didn't do anything:

I have no idea why you have problems with this, have you tried reinstalling the serial driver. I have no idea if it will help, but it might be worth a try.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on April 23, 2023, 12:29:54 pm
Hi HKJ,

I am using the counter in the single-shot mode, it takes one measurement in each logging interval.

I do not believe that is a good idea, but if it is the only way, you have to use it.
Test controller can have multiple threads fetching data from a device (mostly they will coordinate the reading).

The problem with these Racal-Dana's is that the buffer is cleared after a read-out. So after the first read-out, there is nothing left to fetch for the next read-out...

I am using mouse-over tips (using the :tip: tag ) in the menu’s. For a few tips, I would like to divide a long line of text into 2 short lines (in other words, add a CR/LF halfway the line). I searched your documentation, but could not find the solution. How can I achieve this?

I have not really done anything to support it, but Java has a trick to make multiline:
Code: [Select]
:tip: <html>Line 1<br>Line 2<br>Line 3A couple of other html tags are supported (it is a very old version of html Java supports).

This works like a charm. Thank you!

The Racal-Dana 1998 has a twin model, the 1999. Only difference is that the Racal-Dana 1999 does not have the “Ratio B/A” function. And of course it returns “1999” when asked for the model name,  instead of “1998”. So I added  meta definitions, to make this configuration file also work for the Racal-Dana 1999.
But I do not have a Racal-Dana 1999 for testing, so I can not check if I did the #meta and #metadef statements right. Could you have a look if I did the meta definitions right?

At first glance it looks correct.
If you want to see the final definition you can put this line:
#metaDebug save
below the #metadef tag, this will write the processed definition to disk.

I tested with "#metaDebug save", and the result looks fine.
Thank you, this make me more confident that the definition file will also work with a Racal-Dana 1999.


There is one issue remaining, a “beauty flaw”… (meaning: not essential, but would be nice to solve...)
The Racal-Dana 1998 puts the value of a finished measurement in a read-out buffer. This buffer is cleared when it is read out, or when a new measurement is started.
So, one has to first read-out the result of the previous measurement, and then trigger a new measurement. This is what the configuration file is doing with #askValues , and it works fine.

However, when something else reads out the buffer, (the “Current values” tab, or the  “Readout” popup), this readout clears the buffer, so the buffer is empty when the logging routine tries to read out the buffer. This results in missing values in the logging table….

This is especially a problem because the counter is often used with long gate-times of 1 or 20 sec. (To get high resolution). And of course the logging interval has to be a bit longer than the gate-time.
With short gate times, there is time to take an extra measurement, but with these long gate-times there is not…..

First I tried to solve this by storing the measured value in a variable, which is subsequently read out by TestController. However, the problem is that TestController uses the same read-out command (#askValues) for the logging and the other read-out functions. And for the logging it is necessary to trigger the next measurement after the read-out with this command, which of course spoils it when used for the other read-out functions….

Is there a way around this?
A solution could be to use the values in the table for the other TestController read-outs (At the moment this only works when the table is updated rather fast, not with these slow logging intervals)

For now the solution is simply not to use the current values tab, or the  Readout popup while logging...

Regards, Gertjan.


Title: Re: Program that can log from many multimeters.
Post by: thelastdodo on April 24, 2023, 08:26:20 am
With "enabled" you mean the checkbox in the "load devices" tab?

With log enabled I mean you use the popup or a command to start it.

Works perfectly! Thanks for your guidance!

I tried to your suggestion with the "Delay timeout" setting in the configuration page to get rid of the dropouts, but it didn't do anything:

I have no idea why you have problems with this, have you tried reinstalling the serial driver. I have no idea if it will help, but it might be worth a try.

I'll give it a try  :-+
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2023, 10:57:20 am
There is one issue remaining, a “beauty flaw”… (meaning: not essential, but would be nice to solve...)
The Racal-Dana 1998 puts the value of a finished measurement in a read-out buffer. This buffer is cleared when it is read out, or when a new measurement is started.
So, one has to first read-out the result of the previous measurement, and then trigger a new measurement. This is what the configuration file is doing with #askValues , and it works fine.

However, when something else reads out the buffer, (the “Current values” tab, or the  “Readout” popup), this readout clears the buffer, so the buffer is empty when the logging routine tries to read out the buffer. This results in missing values in the logging table….

This is especially a problem because the counter is often used with long gate-times of 1 or 20 sec. (To get high resolution). And of course the logging interval has to be a bit longer than the gate-time.
With short gate times, there is time to take an extra measurement, but with these long gate-times there is not…..

First I tried to solve this by storing the measured value in a variable, which is subsequently read out by TestController. However, the problem is that TestController uses the same read-out command (#askValues) for the logging and the other read-out functions. And for the logging it is necessary to trigger the next measurement after the read-out with this command, which of course spoils it when used for the other read-out functions….

Is there a way around this?
A solution could be to use the values in the table for the other TestController read-outs (At the moment this only works when the table is updated rather fast, not with these slow logging intervals)

I do not have a good solution to it.
You can sort of fix it for faster sample rates with #cmdDelayTime , but it will affect all commands.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 25, 2023, 02:26:34 pm
Hi HKJ,
I think I have found the problem with your program that does not detect my GPP-4323 Power supply over serial port, I have used Device Monitoring Studio to monitor the ongoing traffic from your TC software and the GPP-4323 and found that you first send these characters to detect the Power supply, *IDN? with a 0x0A character at the end, but you need to send 0x0A 0x0D so that the GPP-4323 would respond back, since I just do that in my terminal program and it would respond back, so How should we fix this? Does this mean you should update your TC program?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 25, 2023, 04:22:03 pm
Hi HKJ,
I think I have found the problem with your program that does not detect my GPP-4323 Power supply over serial port, I have used Device Monitoring Studio to monitor the ongoing traffic from your TC software and the GPP-4323 and found that you first send these characters to detect the Power supply, *IDN? with a 0x0A character at the end, but you need to send 0x0A 0x0D so that the GPP-4323 would respond back, since I just do that in my terminal program and it would respond back, so How should we fix this? Does this mean you should update your TC program?

Add a
#eol \r\n
to the definition
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on April 25, 2023, 04:23:24 pm
Racal-Dana 1998 and 1999 device definition file for TestController

Hi HKJ,

There is one issue remaining, a “beauty flaw”…
I do not have a good solution to it.

No problem. After all, it is mostly a beauty flaw  :)
There is no real need to look at the “Current values” tab, or have  readout popups while logging....

Please find the final definition file below this post, for adding to TestController.

I took a Photo of the Racal-Dana 1998, for if you wish to add it to your supported equipment page:

(https://www.miedema.dyndns.org/co/2023/racal1998/IMG_2273__Racal-Dana_1998-600pix.jpg)
IMG_2273__Racal-Dana_1998-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/racal1998/IMG_2273__Racal-Dana_1998-2000pix.jpg)



Racal-Dana 1998 and 1999 device definition file for TestController: Racal1998-1999.txt v1.0 (https://www.miedema.dyndns.org/co/2023/racal1998/Racal1998-1999.zip)

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 26, 2023, 08:38:45 am
Thanks HKJ for the feedback,
Quote
Add a
#eol \r\n
to the definition

I'm new to your software, where should I add this, would you explain more?
Title: Re: Program that can log from many multimeters.
Post by: nicocorradini on April 26, 2023, 09:59:25 pm
Hi! Can anybody help me? I'm trying to connect a ProsKit MT-1820 to TestController under macOS (Ventura). System Information shows it as "CP2102 USB to UART Bridge Controller", and when I type ls -al /dev in Terminal, it shows as "cu.usbserial-0001".

Got no idea what to do!  :-//

EDIT: Finally figured out how to make it work, and now is fully functional! For those in the same situation:

1) Install CP201 drivers for Mac: https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip (https://www.silabs.com/documents/public/software/Mac_OSX_VCP_Driver.zip)
2) Restart your Mac, connect your MT-1820 and press the "RS232" button until display shows it
3) Open TestController
4) Go to Load Devices, select ProsKit MT-1820 in the bottom, click Add, and in Address write tty.SLAB_USBtoUART
5) Click Reconnect and voila!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 27, 2023, 06:24:19 pm
Thanks HKJ for the feedback,
Quote
Add a
#eol \r\n
to the definition

I'm new to your software, where should I add this, would you explain more?

Somewhere in the definition file.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 27, 2023, 08:57:59 pm
Quote
Somewhere in the definition file.
Would you please tell me exactly where in GPP4323 Definition file? thanks
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 27, 2023, 11:29:40 pm
Quote
Somewhere in the definition file.
Would you please tell me exactly where in GPP4323 Definition file? thanks
Some results from the bench on how I established a serial connection to the GPP-4323 just now:

First, configure the GPP-4323 for the desired serial parameters, using pp 99-100 of the manual for reference:
Then perform the following steps:
Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM6 - GWInstek GPP-4323
;; COM6: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM6: Rx: <GW Instek,GPP-4323,SN:GET852000,V1.19> 47 57 20 49 6E 73 74 65 6B 2C 47 50 50 2D 34 33 32 33 2C 53 4E 3A 47 45 54 38 35 32 30 30 30 2C 56 31 2E 31 39
;; Found GWInstek GPP-4323 on USB-Serial Controller D (COM6) sn: SN:GET852000

No need to add anything about #eol to the Device file; it works fine as is, as can be seen in the code listing above.

I hope this helps.
Title: Re: Program that can log from many multimeters.
Post by: mawyatt on April 28, 2023, 01:20:31 pm
Quote
Somewhere in the definition file.
Would you please tell me exactly where in GPP4323 Definition file? thanks
Some results from the bench on how I established a serial connection to the GPP-4323 just now:

First, configure the GPP-4323 for the desired serial parameters, using pp 99-100 of the manual for reference:
  • System->F1->F1->Fn. This selects the serial interface and brings you to the baud rate choice.
  • I used 9600 baud, which was "F1" for the "Fn" shown above.
  • F6-->F6->F6 to return to the home screen..
Then perform the following steps:
  • Connect an RS-232-to-USB adapter to the PC.
  • Connect a null modem between the two male 9-pin connectors.
  • Start TestController with the Scan Serial Ports box checked. (Put COM3 in the list of ports to skip, as this is an internal management interface of the PC itself.)
  • TC should discover the GPP-4323 and display something like this:
Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM6 - GWInstek GPP-4323
;; COM6: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM6: Rx: <GW Instek,GPP-4323,SN:GET852000,V1.19> 47 57 20 49 6E 73 74 65 6B 2C 47 50 50 2D 34 33 32 33 2C 53 4E 3A 47 45 54 38 35 32 30 30 30 2C 56 31 2E 31 39
;; Found GWInstek GPP-4323 on USB-Serial Controller D (COM6) sn: SN:GET852000
  • You may need to change the baud rate of the GPP-4323 to match the serial port, or vice versa.

No need to add anything about #eol to the Device file; it works fine as is, as can be seen in the code listing above.

I hope this helps.

As you've nicely detailed, we've also been able to connect to the GPP4323 thru the serial port using a cheap USB to RS232 cable/adapter with a NULL MODEM adapter, be sure to set the Baud rate, we just use the common 9600 since we aren't passing lots of data.

This was not thru this software tho, we are using our own Python routines as shown here:

https://www.eevblog.com/forum/testgear/lcr-meter-plot-software/ (https://www.eevblog.com/forum/testgear/lcr-meter-plot-software/)

Best,
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 29, 2023, 08:17:55 am
Hexley and mawyatt thanks for the feedback, If you check a few pages back,I told that I have used the USB connection of my GPP-4323 and I do not have or want to use a separate USB to RS232, also in there I was able to connect to it with a normal terminal program, the TC program just do not send \r\n for the USB connection and that's the reason it can not find it there.The TC program just needs a simple update I guess.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 29, 2023, 05:25:31 pm
No need to add anything about #eol to the Device file; it works fine as is, as can be seen in the code listing above.
I hope this helps.
Let me try to help one more time.

To connect the GPP-4323 to TestController via USB:
First, download and install the GW Instek USB driver for the GPP-4323. This is mentioned in page 100 of the manual, and may be found in the Downloads section of the GPP-4323 product page on the Instek web site. This link may work, though registration may be required: https://www.gwinstek.com/en-GB/products/downloadSeriesDownNew/14679/1742 (https://www.gwinstek.com/en-GB/products/downloadSeriesDownNew/14679/1742).

Second, configure the GPP-4323 for USB control. See pages 100-101 of the manual. In summary, it is System->F1->F2->Fn to select the USB interface, where Fn selects the baud rate. As before, I used "F1" for "Fn" in order to choose 9600 baud. When done, press F6 three times to return to the main menu.

Third, power down the GPP-4323, connect the GPP-4323 to the PC with a USB cable, then power up again.

Fourth, Start TestController with the Scan Serial Ports box checked.   (Put COM3 in the list of ports to skip, as this is an internal management interface of the PC itself.)

Now TC should discover the GPP-4323 and display something like this:

Code: [Select]
;; jSerialComm version: 2.9.1
;; Start thread for: COM7
;; COM7: Set params: 9600
;; COM7: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM7: Rx: <GW Instek,GPP-4323,SN:GET852000,V1.19> 47 57 20 49 6E 73 74 65 6B 2C 47 50 50 2D 34 33 32 33 2C 53 4E 3A 47 45 54 38 35 32 30 30 30 2C 56 31 2E 31 39
;; Found GWInstek GPP-4323 on USB2.0-Serial (COM7) sn: SN:GET852000

NOTES AND COMMENTS

The steps shown above are what I did just now to connect my GPP-4323 to TestController via USB. If you have already done them and are still having errors, perhaps it would be good to uninstall as much as possible and start over with a fresh installation.

I hope this helps.
Good luck.
Title: Re: Program that can log from many multimeters.
Post by: mawyatt on April 29, 2023, 06:08:11 pm
That special driver works for the GPP-4323 under direct USB control!!

Interestingly, that's the only special USB driver we've needed, all our other TE and USB-RS232 cable/adapters work with Windows 10, without any additional driver(s).

Thanks,

Best,
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 30, 2023, 08:46:42 am
Thanks Hexley for the update, I have changed the USB baud rate to 9600 and it works, every other baud rate it does not work, But I can still use a separate terminal program to control it with higher baud rates by inputting SCPI commands by hand, also I have to modify the GWInstek GPP-4323.txt to be able to connect to TC program :palm:

I have changed #idString GW INSTEK,GPP-4323, to  #idString GW Instek,GPP-4323,SN:GEW895373,V1.19

Can you test your USB connection with other baud rates?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2023, 09:10:27 am
Thanks Hexley for the update, I have changed the USB baud rate to 9600 and it works, every other baud rate it does not work, But I can still use a separate terminal program to control it with higher baud rates by inputting SCPI commands by hand, also I have to modify the GWInstek GPP-4323.txt to be able to connect to TC program :palm:

I have changed #idString GW INSTEK,GPP-4323, to  #idString GW Instek,GPP-4323,SN:GEW895373,V1.19

Can you test your USB connection with other baud rates?

Do not include sn and firmware in the idstring, thatwould lock the definition to that specific meter.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on April 30, 2023, 01:47:44 pm
Thanks HJK, Why it does not work with other baud rates? (maybe because it does not send \r\n) Also I have connected my Signal gen SDG2042X, But TC software only would allow to use one of the products? Is there a way to use my  GPP4323 power supply  and SDG2042X function gen both at the same time with TC software? if the answer is yes how?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on April 30, 2023, 04:18:45 pm
Thanks HJK, Why it does not work with other baud rates? (maybe because it does not send \r\n) Also I have connected my Signal gen SDG2042X, But TC software only would allow to use one of the products? Is there a way to use my  GPP4323 power supply  and SDG2042X function gen both at the same time with TC software? if the answer is yes how?

Usually there is no problems running multiple devices from TC, it is designed to do that.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on April 30, 2023, 04:50:17 pm
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
HKJ - It appears that the modified Device File for the GPP-4323 that was submitted back in February was accidentally not included in the current release of TestController. The updated file supported the change to the ID string of the GPP-4323 that Instek made with their latest firmware release.

A fresh copy of that file is attached for your convenience. Please include it in the next release of TC, thanks.

Hexley

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2023, 05:06:01 am
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
HKJ - It appears that the modified Device File for the GPP-4323 that was submitted back in February was accidentally not included in the current release of TestController. The updated file supported the change to the ID string of the GPP-4323 that Instek made with their latest firmware release.


Probably because there has not been any new releases of TC since.  :)
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on May 01, 2023, 07:52:34 am
Quote
Usually there is no problems running multiple devices from TC, it is designed to do that.
How can I do that? Because the when TC connects to more than one equipment the setup button only shows on instrument controls. also the chart and histogram panels are always disabled, Can they be used with a power supply and Function gen too?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2023, 09:07:45 am
Quote
Usually there is no problems running multiple devices from TC, it is designed to do that.
How can I do that? Because the when TC connects to more than one equipment the setup button only shows on instrument controls. also the chart and histogram panels are always disabled, Can they be used with a power supply and Function gen too?

The setup button is only for the selected device, use the button on the left to select another device.
You need to start logging for all panels to be enabled.

You can use any combination of devices you want and if you want to be advanced you can make customized control panels (GridPanel) and save them.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on May 01, 2023, 12:58:25 pm
Quote
The setup button is only for the selected device, use the button on the left to select another device.
There is no button on the left? which one do you mean?
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 01, 2023, 03:31:23 pm
A revised device file for the GW Instek GPP-4323 is available.
This is compatible with the response to "*idn?", which changed in the latest firmware for the GPP-4323 (1.19).
HKJ - It appears that the modified Device File for the GPP-4323 that was submitted back in February was accidentally not included in the current release of TestController. The updated file supported the change to the ID string of the GPP-4323 that Instek made with their latest firmware release.


Probably because there has not been any new releases of TC since.  :)
That would explain it.  :)

I imagine there must be a few other new or updated device files in the queue as well, since there has been no release of TC for a while. It looks like it would be helpful to allow updating the Device File collection independently of new releases of TC itself.

No doubt you are the best judge of this, but here are a few suggestions to consider:

Thanks for all the hard work you put into TC. It is really appreciated.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2023, 04:08:00 pm
Quote
The setup button is only for the selected device, use the button on the left to select another device.
There is no button on the left? which one do you mean?

Ok, it is not really a buttun: Right click on the short device name to the left of the command line.
You can also type the short device name followed by a colon on the command line and press enter.
In the popups there is a shortcut to open all setup menus.

Pressing the F1 key will show some help to most pages/popups in TC. It is using a browser and opening the documentation on my webserver for that page/popup.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 01, 2023, 04:10:57 pm

I imagine there must be a few other new or updated device files in the queue as well, since there has been no release of TC for a while. It looks like it would be helpful to allow updating the Device File collection independently of new releases of TC itself.

There is very few updates or new device files and not much change to the TC software either, that is the reason for the long delay in updates.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 02, 2023, 03:33:04 am
Hi HKJ,

I am working on a device definition at present and have observed some curious behaviour.

I have created a setup dialogue box - all the parameters are part of a "#cmdSetup set" control, so updated all at once. This works fine.
Because all the parameters are read from the same defined #scpiCmd, it only issues the defined :read: command once and caches the results. This is great because it's not unnecessarily sending the same command over serial each time.

I have added Run/Pause/Stop buttons to the bottom, and they work fine as well.
I added :enable: tags to the buttons because Pause should only be available when running, Stop only available during Pause, etc.
I am also using a "#cmdSetup info" to display the current "Run/Pause/Stop/etc" state.

Because a "#cmdSetup info" control does not create a variable with its name, I have made its defined #scpiCmd save the result to a variable.
My :enable: tags for the buttons read like this:
Code: [Select]
:enable: inList(deviceRead(handle,"readOperationState?"), "STOP PAUSE")
This works, however for some reason the use of the deviceRead function in the :enable: tag means that when I update the parameters in the "#cmdSetup set", it issues the defined :read: #scpiCmd for each parameter, resulting in the same command/response occuring 11 times over serial, instead of once and caching the response. This appears to visibly slow down the debug output as the last few command/response instances occur.
It still works, but it just seems a bit clunky and would prefer to keep it fast and clean so I can share the finished definition and minimise the chances of any timing issues between instruments.

Is this an oddity in the way the deviceRead function works, or am I missing something?
It seems as though an easier solution would be if the "#cmdSetup info" controls created a variable with their name, but I presume there was a reason for them not to.

Thanks again for all the work you've put into this software. While I am still learning as I go and struggle with the syntax at times, I am definitely finding my way and am very grateful for it!

Relevant lines from the definition are below:
Code: [Select]
#scpiCmd OPER:SET txrxn 13 "@0153" (value)

#scpiCmd OPER:STAT? txrxn? 22 "@0151" / 7h2
:readmath: matchBitsList(value,"00000000","STOP","00000001","RUN","00000011","READY","00000101","WAIT","00010001","HOLD","00100000","END","10000000","PAUSE")
:setvar: Operation_State=value

#scpiCmd readOperationState? none?
:readmath: getVar("Operation_State")

#scpiCmd READ:FIX? txrxn? 37 "@0125" / 5h4 9h4 13h4 17h4 21h4 25h2 27h1 28h1 29h1 30h1 31h1
:readmath: binConv(int(getElement(value,0)),0,2,1)/10.0+" "+binConv(int(getElement(value,1)),0,2,1)/10.0+" "+binConv(int(getElement(value,2)),0,2,1)/10.0+" "+binConv(int(getElement(value,3)),0,2,1)/10.0+" "+getElement(value,4)+" "+getElement(value,5)+" "+getElement(value,6)+" "+getElement(value,7)+" "+getElement(value,8)+" "+getElement(value,9)+" "+getElement(value,10)

#scpiCmd SET:FIX? txrxn? 12 "@0115" (value) / 5h2
:setvar: response=value


#cmdSetup number Temperature
:read: READ:FIX?
:readformat: fxxxxxxxxxx
:write: (bytesAsHex(hex(value*10)))
°C -20 110

#cmdSetup number Humidity
:read: READ:FIX?
:readformat: xfxxxxxxxxx
:write: (bytesAsHex(hex(value*10)))
%RH 0 99.9

#cmdSetup number Temperature_Slope
:read: READ:FIX?
:readformat: xxfxxxxxxxx
:write: (bytesAsHex(hex(value*10)))
°C/min 0 99.9

#cmdSetup number Humidity_Slope
:read: READ:FIX?
:readformat: xxxfxxxxxxx
:write: (bytesAsHex(hex(value*10)))
%RH/min 0 99.9

#cmdSetup number Run_Hours
:read: READ:FIX?
:readformat: xxxxfxxxxxx
:write: (bytesAsHex(hex(round(value),4)))
hrs 0 9999

#cmdSetup number Run_Minutes
:read: READ:FIX?
:readformat: xxxxxfxxxxx
:write: (bytesAsHex(hex(round(value),2)))
mins 0 59

#cmdSetup combobox Time_Mode
:read: READ:FIX?
:readformat: xxxxxxfxxxx
:write: (bytesAsHex(hex(round(value),1)))
Continuous 0
Timer 1

#cmdSetup combobox Wait
:read: READ:FIX?
:readformat: xxxxxxxfxxx
:write: (bytesAsHex(hex(round(value),1)))
Off 0
On 1

#cmdSetup number Time_Signal_1
:read: READ:FIX?
:readformat: xxxxxxxxfxx
:write: (bytesAsHex(hex(round(value),1)))
_ 0 9

#cmdSetup number Time_Signal_2
:read: READ:FIX?
:readformat: xxxxxxxxxfx
:write: (bytesAsHex(hex(round(value),1)))
_ 0 9

#cmdSetup number Time_Signal_3
:read: READ:FIX?
:readformat: xxxxxxxxxxf
:write: (bytesAsHex(hex(round(value),1)))
_ 0 9

#cmdSetup set Fixed_Settings
:write: SET:FIX?
:update: Fix_Settings
Temperature Humidity Temperature_Slope Humidity_Slope Run_Hours Run_Minutes Time_Mode Wait Time_Signal_1 Time_Signal_2 Time_Signal_3
\x20


#cmdSetup info Operation_State
:read: OPER:STAT?

#cmdSetup button Run
:write: OPER:SET "011"
:update: Operation_State
:enable: inList(deviceRead(handle,"readOperationState?"), "STOP PAUSE")

#cmdSetup button Pause
:write: OPER:SET "051"
:update: Operation_State
:enable: deviceRead(handle,"readOperationState?")=="RUN"

#cmdSetup button Stop
:write: OPER:SET "021"
:update: Operation_State
:enable: inList(deviceRead(handle,"readOperationState?"), "PAUSE BREAK END")
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2023, 06:38:33 am
Because a "#cmdSetup info" control does not create a variable with its name, I have made its defined #scpiCmd save the result to a variable.
My :enable: tags for the buttons read like this:
Code: [Select]
:enable: inList(deviceRead(handle,"readOperationState?"), "STOP PAUSE")
This works, however for some reason the use of the deviceRead function in the :enable: tag means that when I update the parameters in the "#cmdSetup set", it issues the defined :read: #scpiCmd for each parameter, resulting in the same command/response occuring 11 times over serial, instead of once and caching the response. This appears to visibly slow down the debug output as the last few command/response instances occur.
It still works, but it just seems a bit clunky and would prefer to keep it fast and clean so I can share the finished definition and minimise the chances of any timing issues between instruments.

DeviceRead clears the cache, this is necessary or it could not be used to get a real time status from the device.
Have you tried if you can access the variable directly (I do not remember if that is possible)?
Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 02, 2023, 07:07:52 am
DeviceRead clears the cache, this is necessary or it could not be used to get a real time status from the device.
Have you tried if you can access the variable directly (I do not remember if that is possible)?

Ah, that makes sense.

I don't believe it's possible, but there might be a way that I'm unware of.

I've tried setting the :enable: tag as:
Code: [Select]
:enable: inList(Operation_State, "STOP PAUSE")in order to read the variable that the #scpiCmd set, but it throws an exception pointing out that the variable (Operation_State) does not exist.

Presumably variables declared in the definition are a separate local scope to variables within #cmdSetup dialogue. I'm not aware if there is a way to define it as a global variable and read it, but I did see on your Calculator page (http://lygte-info.dk/project/Calculator%20UK.html#Variables) that:
Quote
Local variable (i.e. var declared) have priority over globally declared variables. If the script is called from another script there may exist variables between global and local from the calling script.

I presume that is only relevant in the event that there is a local and global variable with the same name, the function will refer to the local one.

On a whim I tried to :setglobalvar: instead of :setvar:, but that didn't appear to make any difference.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 02, 2023, 07:47:01 am
DeviceRead clears the cache, this is necessary or it could not be used to get a real time status from the device.
Have you tried if you can access the variable directly (I do not remember if that is possible)?

Ah, that makes sense.

I don't believe it's possible, but there might be a way that I'm unware of.

I've tried setting the :enable: tag as:
Code: [Select]
:enable: inList(Operation_State, "STOP PAUSE")in order to read the variable that the #scpiCmd set, but it throws an exception pointing out that the variable (Operation_State) does not exist.

Presumably variables declared in the definition are a separate local scope to variables within #cmdSetup dialogue. I'm not aware if there is a way to define it as a global variable and read it, but I did see on your Calculator page (http://lygte-info.dk/project/Calculator%20UK.html#Variables) that:
Quote
Local variable (i.e. var declared) have priority over globally declared variables. If the script is called from another script there may exist variables between global and local from the calling script.

I presume that is only relevant in the event that there is a local and global variable with the same name, the function will refer to the local one.

On a whim I tried to :setglobalvar: instead of :setvar:, but that didn't appear to make any difference.


I checked the code and you are correct, it is not possible.
The documentation only descibes local and global vars, but there is a third option: A script can be declared (in my code, not in scripting) as a child of another script and this means it will have access to the variables. The variable names is seached with local first, then parent scripts, then global and stops on first match. This is used in TC, but not everywhere.
To create a global variable it must be declared with globalvar, that works in the same way as var.

Generally globalvar is not supposed to be used in any device definition, because then only one instance of that device can be connected at a time.
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 03, 2023, 06:12:04 pm
Here is a Device file for the HP 53131A Universal Counter. A few screen shots are attached.
Some notes:

Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 04, 2023, 08:57:15 am
I checked the code and you are correct, it is not possible.
The documentation only descibes local and global vars, but there is a third option: A script can be declared (in my code, not in scripting) as a child of another script and this means it will have access to the variables. The variable names is seached with local first, then parent scripts, then global and stops on first match. This is used in TC, but not everywhere.
To create a global variable it must be declared with globalvar, that works in the same way as var.

Generally globalvar is not supposed to be used in any device definition, because then only one instance of that device can be connected at a time.

I accepted defeat and resorted to using a selector with controls that are always enabled or always disabled. It's probably not as elegant but it solves the problem.
Code: [Select]
;----- OPERATION STATE CONTROLS (RUN/PAUSE/STOP)

#cmdSetup info Operation_State
:read: OPER:STAT?

#cmdSetup selector Operation_State
:read: OPER:STAT?
:string:
STOP Run_Allow. Pause_NAllow. Stop_NAllow.
RUN Run_NAllow. Pause_Allow. Stop_NAllow.
PAUSE Run_Allow. Pause_NAllow. Stop_Allow.

#cmdSetup button Run Run_Allow
:write: OPER:SET "011"
:update: Operation_State
:enable 1

#cmdSetup button Run Run_NAllow
:write: OPER:SET "011"
:update: Operation_State
:enable: 0

#cmdSetup button Pause Pause_Allow
:write: OPER:SET "051"
:update: Operation_State
:enable: 1

#cmdSetup button Pause Pause_NAllow
:write: OPER:SET "051"
:update: Operation_State
:enable: 0

#cmdSetup button Stop Stop_Allow
:write: OPER:SET "021"
:update: Operation_State
:enable: 1

#cmdSetup button Stop Stop_NAllow
:write: OPER:SET "021"
:update: Operation_State
:enable: 0


I'm having a separate issue with #cmdSetup combobox as well unfortunately.
I can see in the debug output that the defined combobox controls are outputting the correct values, and the correct values are being read by TC, but the combobox always displays the first option in the list after reading back, even if the value shows something else in the debug output.
Is this because I'm using them to set/read a numeric value?
If I replace the combobox with a #cmdSetup number control, that reads back correctly without issue.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 04, 2023, 09:32:49 am
I accepted defeat and resorted to using a selector with controls that are always enabled or always disabled. It's probably not as elegant but it solves the problem.

Not as elegant when you want the controls shown.
I am working on adding vars for the info control.

I'm having a separate issue with #cmdSetup combobox as well unfortunately.
I can see in the debug output that the defined combobox controls are outputting the correct values, and the correct values are being read by TC, but the combobox always displays the first option in the list after reading back, even if the value shows something else in the debug output.
Is this because I'm using them to set/read a numeric value?
If I replace the combobox with a #cmdSetup number control, that reads back correctly without issue.

A combobox will compare strings, i.e. 1 1. and 1.0 are 3 different values, a number control will see then as the same value.

Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 04, 2023, 09:42:50 am
Not as elegant when you want the controls shown.
I am working on adding vars for the info control.

The controls were defined so that they are always appear to be visible, but in fact the selector changes between pages, each page with its own version of the control that may be :enable: 0 or :enable: 1 as needed.

A combobox will compare strings, i.e. 1 1. and 1.0 are 3 different values, a number control will see then as the same value.

I suspected that was the case, but was led astray by the debug output.
The debug output was indicating they were being read in as single digit strings without a decimal. I've just swapped a :readformat: for a :readmath: that typecasts as int and that solves it. Thanks!

Just before you replied I had devised the formulas to convert from number to display as string, and then to take the displayed string and convert back to number, which was a challenging but nonetheless interesting exercise!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 04, 2023, 04:04:23 pm
Just before you replied I had devised the formulas to convert from number to display as string, and then to take the displayed string and convert back to number, which was a challenging but nonetheless interesting exercise!

There are functions to do that, they give you many more possibilities that the automatic typecase.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 05, 2023, 12:22:14 am
Another query:

I've tried to use the #cmdSetup multi as part of a #cmdSetup set. Reading values in works fine with suitable :readmath: or :readformat: tags, but when I transmit the values with the #cmdSetup set, it always transmits the :write: parameter for the multi as a literal string - my :write: tags contain formulas to convert values into suitable data packets.
I've tried wrapping it with brackets, quotes, and combinations of, but it always transmits the :write: tag as a literal string. Can this be done or am I pushing the limits?

It's not vital that it works as a multi, but would just allow me a bit more flexibility in tidying up the layout of the Setup dialogue.

Sample below:

Code: (Definition) [Select]
#scpiCmd SET:MODE? txrxn? 31 "@0122" / 5h2 7h1 8h2 10h2 12h2 14h2 16h1 17h2/10 19h2/10 21h2/10 23h2/10 25h1


#scpiCmd SET:MODE txrxn 12 "@0112" (value) / 5h2


#cmdSetup multi Start_Time Mode_Settings
:read: SET:MODE?
:readmath: getElement(value,2) + " " + getElement(value,3) + " " + getElement(value,4) + " " + getElement(value,5)
:write: ("(bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2)))")
number hrs _ 0 23
number mins _ 0 59
number Month _ 1 12
number Date _ 1 31


#cmdSetup set Update_Mode_Settings Mode_Settings
:write: SET:MODE
:update: Mode_Settings.Operation_Mode_Test
Mode_Settings.Link/Pattern_Number_Execution Mode_Settings.Operation_Mode Mode_Settings.Start_Time Mode_Settings.Power_Recovery_Mode Mode_Settings.Wait_Temperature_Neg Mode_Settings.Wait_Temperature_Pos Mode_Settings.Wait_Humidity_Neg Mode_Settings.Wait_Humidity_Pos Mode_Settings.Running_At_End
\x20

Code: (Debug Output:) [Select]
Tx <SET:MODE 0x30 0x39 0x30 ("(bytesAsHex(hex(round(9),2))) (bytesAsHex(hex(round(54),2))) (bytesAsHex(hex(round(12),2))) (bytesAsHex(hex(round(5),2)))") 0x30 0x30 0x41 0x30 0x41 0x31 0x39 0x31 0x39 0x30>
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 05, 2023, 09:32:08 am
I've tried to use the #cmdSetup multi as part of a #cmdSetup set. Reading values in works fine with suitable :readmath: or :readformat: tags, but when I transmit the values with the #cmdSetup set, it always transmits the :write: parameter for the multi as a literal string - my :write: tags contain formulas to convert values into suitable data packets.
I've tried wrapping it with brackets, quotes, and combinations of, but it always transmits the :write: tag as a literal string. Can this be done or am I pushing the limits?

:write: ("(bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2))) (bytesAsHex(hex(round(#),2)))")


I am not sure exactly what you are doing, but your write line do not make sense.

Something like this will probably work better:
:write: ((bytesAsHex(hex(round(#),2))) +bytesAsHex(hex(round(#),2))) +(bytesAsHex(hex(round(#),2))) +(bytesAsHex(hex(round(#),2))))

I have removed the quotes and made it into a real expression by adding + between the elements.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 05, 2023, 02:23:23 pm
HJK,

Here are some instrument device driver file updates and some new instrument device driver files to include in the next TestController release.

Updated Driver Files:

   Keithley 2260B Power Supplies.txt
       Tested equivalent GW Intek supply and fixed typos in GW Instek #idstrings
   GW-Instek ASR-2000.txt
       Updated file for faster logging and added interface commands

   Ametek 600-1.4.txt
      Minor updates and added interface commands

   Owon ODP6033.txt
      Minor update

   Yokogawa Power Analyzer.txt
       Yokogawa power analyzers can't be all put into one file.  So, for this file changed the file name.
       Please delete this file from from future releases.  See New Driver Files section for replacement file.

New Driver Files:

   Yokogawa WT3000 Power Analyzer.txt
      This is just a file name change on existing "Yokogawa Power Analyzer.txt" driver file.

   Yokogawa WT5000 Power Analyzer.txt
      Newer Yokogawa power analyzer.  Uses different comm, commands than WT3000 hence a different file.

   Vitrek PA900.txt
      Power analyzer

   Hioki PW6001.txt
      Power Analyzer

   Vitrek V7x.tx
      Hipot safety tester family

   Sorensen DCS DC Supply.txt
      Power supply family

   Owon TAO3104.txt
      Tablet oscilloscope
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on May 06, 2023, 01:56:44 pm
HKJ,

I was able to test the Racal-Dana 1998-1999 definition fie I submitted here, two pages back (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4831730/#msg4831730) with an original Prologix GPIB-USB adapter.
I made some minor adjustments to the definition file, so could you please re-download it?

Of coarse the definition file also worked with the Prologix. But I was surprised to find that there were differences in speed, With the Prologix I could log a bit faster.
The most surprising thing was that when I registered the AR488 in TestController as a Prologix it also worked a bit faster. (But not as much as the original Prologix.)

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 06, 2023, 04:13:20 pm
I was able to test the Racal-Dana 1998-1999 definition fie I submitted here, two pages back (https://www.eevblog.com/forum/testgear/program-that-can-log-from-many-multimeters/msg4831730/#msg4831730) with an original Prologix GPIB-USB adapter.
I made some minor adjustments to the definition file, so could you please re-download it?


When you make a updated version it is easeast for me if you just post it in a new post.


Of coarse the definition file also worked with the Prologix. But I was surprised to find that there were differences in speed, With the Prologix I could log a bit faster.
The most surprising thing was that when I registered the AR488 in TestController as a Prologix it also worked a bit faster. (But not as much as the original Prologix.)

I probably use slightly different commands to control read/write.
Each GPIB driver can also switch GPIB parameters between devices, but due to a softwaren fault multiple devices on the same GPIB controller do not work yet.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 07, 2023, 04:41:29 pm
I will add a thanks for all the new/updated drivers from all 3 people, I have added them to  TC.
Except  Vitrek V7x, it looks like it only have the connection and nothing else.
Title: Re: Program that can log from many multimeters.
Post by: gby on May 08, 2023, 12:45:45 pm
HJK,

You are correct that Vitrek Hipot tester is only communications.  I am not sure it makes sense to log data from this device???  The intent is that it would be automated via a script which only requires communications working.

However, it should have a Setup popup.  I will also re-think what data might be worth logging beyond Pass/Fail.  I will re-submit once I have that complete.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 08, 2023, 05:08:57 pm
You are correct that Vitrek Hipot tester is only communications.  I am not sure it makes sense to log data from this device???  The intent is that it would be automated via a script which only requires communications working.

However, it should have a Setup popup.  I will also re-think what data might be worth logging beyond Pass/Fail.  I will re-submit once I have that complete.

I would like voltage and leak current logged.
A setup popup will allow you to control it from popups.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 10, 2023, 02:02:24 am
Hi HKJ,

Does the Modbus driver support streaming data, in the same manner as the Block and AsciiBlock drivers?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 10, 2023, 09:36:00 am
Does the Modbus driver support streaming data, in the same manner as the Block and AsciiBlock drivers?

No, the MODBUS protocol always works with a command and a answer.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on May 11, 2023, 06:50:00 am
Hi HKJ,

Please find attached a device definition file to suit B&K Precision 9115, 9116, and 9117 DC power supplies.

I have a handful of other, much more complicated definitions in the works but would like to make sure they are a bit more polished before submitting.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 13, 2023, 09:29:12 am
Hi HKJ,

Please find attached a device definition file to suit B&K Precision 9115, 9116, and 9117 DC power supplies.

I have a handful of other, much more complicated definitions in the works but would like to make sure they are a bit more polished before submitting.

Thanks, it  will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on May 14, 2023, 07:59:23 am
HKJ is there any detention for SDS2104X plus scope, There is SiglentSDSxxxxxx.txt file, it did not support the scope, So I have just added these lines to it

Quote
#metadef
#author MikeLud
#idString Siglent Technologies,SDS2104X Plus,
#name Siglent SDS2104X
#handle SDS2104X
#replaceText AV C1:PAVA? RMS;C2:PAVA? RMS;C3:PAVA? RMS;C4:PAVA? RMS;C1:PAVA? PKPK;C2:PAVA? PKPK;C3:PAVA? PKPK;C4:PAVA? PKPK

But it seems it makes the software very lagy and also some times it freezes the software.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 14, 2023, 04:25:52 pm
HKJ is there any detention for SDS2104X plus scope, There is SiglentSDSxxxxxx.txt file, it did not support the scope, So I have just added these lines to it

Quote
#metadef
#author MikeLud
#idString Siglent Technologies,SDS2104X Plus,
#name Siglent SDS2104X
#handle SDS2104X
#replaceText AV C1:PAVA? RMS;C2:PAVA? RMS;C3:PAVA? RMS;C4:PAVA? RMS;C1:PAVA? PKPK;C2:PAVA? PKPK;C3:PAVA? PKPK;C4:PAVA? PKPK

But it seems it makes the software very lagy and also some times it freezes the software.

I have not checked it, but replacing AV with lots of AV will probabaly do a lot of damage to the generated file.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on May 15, 2023, 08:27:28 am
Thanks HKJ, Do you have a config file for SDS2104X plus scopes?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 15, 2023, 04:12:58 pm
Thanks HKJ, Do you have a config file for SDS2104X plus scopes?

The unpublished additions you can find by going back in this thread (Until last release).
For included additions you can check first post or this page: https://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html (https://lygte-info.dk/project/TestControllerSupportedEquipment%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: pivous on May 16, 2023, 01:34:57 pm
"Hello, I would also like to control the old DMM Advantest R6551. Does anyone happen to have a configuration file for it? If not, could someone at least recommend a suitable template from the existing ones? The device has only GPIB interface, and the link to its manual is provided here:

http://manuals.repeater-builder.com/te-files/ADVANTEST/ADV%20R6551,%20R6551EMC%20Operation.pdf (http://manuals.repeater-builder.com/te-files/ADVANTEST/ADV%20R6551,%20R6551EMC%20Operation.pdf)

If anybody can kick me to start to create this file, many many thaks.

Ivo
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 16, 2023, 03:21:41 pm
"Hello, I would also like to control the old DMM Advantest R6551. Does anyone happen to have a configuration file for it? If not, could someone at least recommend a suitable template from the existing ones? The device has only GPIB interface, and the link to its manual is provided here:
Ivo
The command structure of the HP3478A is roughly similar to that of the Advantest R6551, so you might find some general ideas in the Device File for the HP3478A, which uses the "ASCII" driver of TestController.
Title: Re: Program that can log from many multimeters.
Post by: pivous on May 17, 2023, 08:33:31 am
Thank you! I am planning to connect the Advantest with AR488 interface. Do you expect any troubles?
Title: Re: Program that can log from many multimeters.
Post by: Hexley on May 17, 2023, 02:47:25 pm
Thank you! I am planning to connect the Advantest with AR488 interface. Do you expect any troubles?
The "ASCII" driver mentioned above does not refer to the connection type, but rather to the command format used by the device in question. So you can have an "ASCII" device with a GPIB connection like the AR488 or Prologix and that works fine.
Good luck.
Title: Re: Program that can log from many multimeters.
Post by: pivous on May 22, 2023, 11:12:16 am
Thank you for reply!

I have partial success in controlling my Advantest R6551 over AR488. In the manual, I found that the R6551 device can be switched to the HP3478A mode. So I hoped the Test Controller will work with HP3478A.txt setting file directly. But it does not work and I have no response.

But when I send the Test Controller startup sequence

++default<LF>++addr 6<LF>B<LF>++read_tmo_ms 950<LF>++read eoi<LF>

to R6551 directly from the terminal application, everytjing is OK and the device responds and returns the measured value correctly.  I suspect that the startup sequence is being sent by the Test Controller too early, before the serial port has a chance to initialize. That corresponds to my research on the terminal as well. Is it good idea? If yes is there some possibility to delay the startup sequence?


Title: Re: Program that can log from many multimeters.
Post by: HKJ on May 23, 2023, 10:46:06 am
Thank you for reply!

I have partial success in controlling my Advantest R6551 over AR488. In the manual, I found that the R6551 device can be switched to the HP3478A mode. So I hoped the Test Controller will work with HP3478A.txt setting file directly. But it does not work and I have no response.

But when I send the Test Controller startup sequence

++default<LF>++addr 6<LF>B<LF>++read_tmo_ms 950<LF>++read eoi<LF>

to R6551 directly from the terminal application, everytjing is OK and the device responds and returns the measured value correctly.  I suspect that the startup sequence is being sent by the Test Controller too early, before the serial port has a chance to initialize. That corresponds to my research on the terminal as well. Is it good idea? If yes is there some possibility to delay the startup sequence?

A definition can add extra startup delay see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Arduino_startup_reset (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Arduino_startup_reset)
If you want the delay for your computer and not a single device, there is a command line option for it.
Title: Re: Program that can log from many multimeters.
Post by: pivous on May 23, 2023, 11:43:33 am

A definition can add extra startup delay see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Arduino_startup_reset (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Arduino_startup_reset)
If you want the delay for your computer and not a single device, there is a command line option for it.

Thank you! It works!
Title: Re: Program that can log from many multimeters.
Post by: pivous on June 02, 2023, 06:09:33 am
I have created the first configuration file (It is not cleaned yet, but is functional) for Advantech R6551 (attached). Everything is working as I expected, except for an issue with refreshing the setup screen in relation to the "Autorange" checkbox. When Autorange is set to off, everything is O.K..

1. However, if I set "Autorange On",  the "comboboxHot Range DC_Voltage" becomes grayed out. That is correct. But, if I close the Setup window and reopen it, the "comboboxHot Range DC_Voltage" is no longer grayed out. This is incorrect.

2. If I gradually enable and disable "Autorange" in the opened Setup window using the command: (write: getElement("RANGE:1000V RANGE:AUTO", value)), the instrument correctly switches Range to "Auto" (On) and then to 1000V(off), but the change of the Range (to 1000V) is not indicated in the comboboxHot Range DC_Voltage.

Do you have some idea how to correct it? For better understanding I attached a printscreen of the setup window.

Here is my code for DC_Voltage  setup screen definition:

#cmdSetup info Active_Mode
:read: READ:FUNCTION?
:readmath: getElement("?; DC Voltage;AC Voltage;2W Resistance;4W Resistance;DC Current;AC Current", value)
:updatemodechange:

;DC_Voltage-------------------------------------------------------------------------------------
#cmdSetup checkbox AutoRange DC_Voltage
:write: (getElement("RANGE:1000V RANGE:AUTO",value))
:read: READ:RANGE?
:readmath: matchList(value,"0",1,"3",0,"4",0,"5",0,"6",0,"7",0)
On 0 1
:updatemodechange:

#cmdSetup comboboxHot Range DC_Voltage
:enable: !DC_Voltage.AutoRange.On
:write: (getElement("? RANGE:300MVI RANGE:3VI RANGE:30VR RANGE:300VR RANGE:1000V",value))
:read: READ:RANGE?
:readmath: matchList(value,"3",1,"4",2,"5",3,"6",4,"7",5)
300mV 1
3V 2
30V 3
300V 4
1000V 5
:updatemodechange:






Title: Re: Program that can log from many multimeters.
Post by: Sierra on June 02, 2023, 03:31:54 pm
Has anyone used the UT171 B/C meters with Test Controller?  Hoping for compatibility given the support from so many other UT meters. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2023, 04:18:59 pm
I have created the first configuration file (It is not cleaned yet, but is functional) for Advantech R6551 (attached). Everything is working as I expected, except for an issue with refreshing the setup screen in relation to the "Autorange" checkbox. When Autorange is set to off, everything is O.K..

1. However, if I set "Autorange On",  the "comboboxHot Range DC_Voltage" becomes grayed out. That is correct. But, if I close the Setup window and reopen it, the "comboboxHot Range DC_Voltage" is no longer grayed out. This is incorrect.

2. If I gradually enable and disable "Autorange" in the opened Setup window using the command: (write: getElement("RANGE:1000V RANGE:AUTO", value)), the instrument correctly switches Range to "Auto" (On) and then to 1000V(off), but the change of the Range (to 1000V) is not indicated in the comboboxHot Range DC_Voltage.

Do you have some idea how to correct it? For better understanding I attached a printscreen of the setup window.

Here is my code for DC_Voltage  setup screen definition:

#cmdSetup info Active_Mode
:read: READ:FUNCTION?
:readmath: getElement("?; DC Voltage;AC Voltage;2W Resistance;4W Resistance;DC Current;AC Current", value)
:updatemodechange:

;DC_Voltage-------------------------------------------------------------------------------------
#cmdSetup checkbox AutoRange DC_Voltage
:write: (getElement("RANGE:1000V RANGE:AUTO",value))
:read: READ:RANGE?
:readmath: matchList(value,"0",1,"3",0,"4",0,"5",0,"6",0,"7",0)
On 0 1
:updatemodechange:

#cmdSetup comboboxHot Range DC_Voltage
:enable: !DC_Voltage.AutoRange.On
:write: (getElement("? RANGE:300MVI RANGE:3VI RANGE:30VR RANGE:300VR RANGE:1000V",value))
:read: READ:RANGE?
:readmath: matchList(value,"3",1,"4",2,"5",3,"6",4,"7",5)
300mV 1
3V 2
30V 3
300V 4
1000V 5
:updatemodechange:


You have probably mixed up on the mode update definitions.
:updatemodechange: is releated the the "Mode" popup function and will update the control when it is used.
Using a regular :update: with names of the controls to update is the way to update other controls when a value change.
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Configuration_menu)

I will be happy to include your definition, but I will wait and see if you got a update with this.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 02, 2023, 04:20:49 pm
Has anyone used the UT171 B/C meters with Test Controller?  Hoping for compatibility given the support from so many other UT meters.

The issue is not the meter, but the interface. UNI-T meters with serial port interface is supported, but not meters with HID interface.
Some of the UNI-T cables uses serial ports, other uses HID.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 04, 2023, 07:35:48 am
V2.35 is up
It has a few bug fixes and additions, it also includes a collection of new devices.
   Added: B&K Precision 9115 Power supply (Thanks jmurray)
   Added: Owon TAO3104 oscillioscope as voltmeter (Thanks GBY)
   Added: Sorensen DCS80-13 power supply (Thanks GBY)
   Added: Sorensen DCS600-1.7 power supply (Thanks GBY)
   Added: Hioki PW6001 Power analyzer (Thanks GBY)
   Added: Vitrek PA900 power analyzer (Thanks GBY)
   Added: Yokogawa WT5000 power analyzer (Thanks GBY)
   Updated: Ametek XG 600-1.4 with script interface (Thanks GBY)
   Updated: GW Instek AC/DC power supply ASR-2000 Series for faster logging speed (Thanks GBY)
   Fixed: GW Instek series power supply names (Thanks GBY)   
   Added: :enable: / :visible: var to info control.
   Added: Racal-Dana 1998 & Racal-Dana 1998 Counter only config and logging (Thanks Gertjan Miedema)
   Added: HP53131A Counter (Thanks Hexley)
   Added: Block driver will support socket interface.
   Added: Poll delay setting in Block driver (#pollPause)
   Fixed: A charset issue with  #rxStart in Block driver
   Added: GPP-4323 support for firmware 1.19 and newer (Thanks Hexley)

Sorry about the slow update, but before GBY posted a lot of new drivers there where not much to update. My main internet connection being down also delayed the update.
Title: Re: Program that can log from many multimeters.
Post by: ali_asadzadeh on June 05, 2023, 08:03:00 am
Thanks HKJ, I hope we see more update more frequently, also if you have any updates on siglent SDS2104X Plus series scopes, it would be very nice to add them. :-+
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on June 05, 2023, 08:23:44 am
Hi HKJ,

A bit (too) late to the party, but here is a configuration file for the Racal-Dana 1991 and 1992 Universal Nanosecond Counters.

These counters are sister models to the 1998 and 1999, but targeted at another use profile. While the 1998/1999 are optimized for frequency counting, the 1991 and 1992 are universal counters, with scientific display, and much more functions.
Hence a more extensive Setup Menu:

(https://www.miedema.dyndns.org/co/2023/racal1998/Racal-1991-1992-v0.35-screenshot-600pix.png)
Racal 1991-1992 v0.35 screenshot.png (https://www.miedema.dyndns.org/co/2023/racal1998/Racal-1991-1992-v0.35-screenshot-1000pix.png)

While the command structure is the same, the 1991 and 1992 are having much more, and often a bit different commands. Hence a separate configuration file.

This configuration file was a co-production. I wrote it, but do not have a 1992 counter.
Dutch Circuits Online forum member Peter_dtn kindly stepped up, and did all the beta-testing. He tested with both 1992 and 1991.
Please find the product of our joint efforts at the bottom of this post.

V2.35 is up
Added: Racal-Dana 1998 & Racal-Dana 1998 Counter only config and logging
The Racal-Dana 1998 & Racal-Dana 1999 (note the small typo) are fully functional in TC.
Just when using their longest gate-times of 1 and 20 seconds, they can not keep up with feeding the Popups etc. As with these long gate times it takes 1 or 20 seconds to take one measurement....

Best regards, Gertjan.

Racal1991-1992.zip (https://www.miedema.dyndns.org/co/2023/racal1998/Racal1991-1992.zip)



Title: Re: Program that can log from many multimeters.
Post by: jmurray on June 06, 2023, 01:21:51 am
   Added: :enable: / :visible: var to info control.

Can confirm this appears to be working well!

   Added: Block driver will support socket interface.

Block driver on socket does not appear to be reading response packets into Test Controller.

Code: (Tx/Rx via serial) [Select]
;; COM14: Tx: 40 30 31 32 35 34 36 2A 0D
;; COM14: Rx: 40 30 31 32 35 30 30 43 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 44 2A 0D 0A

Code: (Tx/Rx via socket) [Select]
;; 192.168.0.80: Tx: 40 30 31 32 35 34 36 2A 0D
;; 192.168.0.80: Rx timeout 1000ms   In buffer:
dk.hkj.script.ProgramExceptions$UnknownException: No digits in number <>

Monitoring the lines with a terminal window I can see the responses to Test Controller's commands.
When using socket, the response does not appear to be read into Test Controller so it keeps sending the same command.



Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2023, 08:18:27 am
Thanks HKJ, I hope we see more update more frequently, also if you have any updates on siglent SDS2104X Plus series scopes, it would be very nice to add them. :-+

A update usually includes any new/updated drivers I have.
I prefer only to do updates when I have something, but I might have to update a bit more frequently that this time.

Ideas to improvement/additions to TC that I like, can make me do an update (Ideas that requires major changes to TC will most likely be ignored).
New device definitions will also increase my decide to do an update.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2023, 08:23:06 am
Hi HKJ,

A bit (too) late to the party, but here is a configuration file for the Racal-Dana 1991 and 1992 Universal Nanosecond Counters.

These counters are sister models to the 1998 and 1999, but targeted at another use profile. While the 1998/1999 are optimized for frequency counting, the 1991 and 1992 are universal counters, with scientific display, and much more functions.

Thanks, it will be included in the next release.
Until then it can be fetched from your post.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 06, 2023, 08:24:25 am
   Added: Block driver will support socket interface.

Block driver on socket does not appear to be reading response packets into Test Controller.

Code: (Tx/Rx via serial) [Select]
;; COM14: Tx: 40 30 31 32 35 34 36 2A 0D
;; COM14: Rx: 40 30 31 32 35 30 30 43 38 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 44 2A 0D 0A

Code: (Tx/Rx via socket) [Select]
;; 192.168.0.80: Tx: 40 30 31 32 35 34 36 2A 0D
;; 192.168.0.80: Rx timeout 1000ms   In buffer:
dk.hkj.script.ProgramExceptions$UnknownException: No digits in number <>

Monitoring the lines with a terminal window I can see the responses to Test Controller's commands.
When using socket, the response does not appear to be read into Test Controller so it keeps sending the same command.

I will have to look closer at this.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on June 07, 2023, 01:53:41 am
Just to note that I did a how-to article for TestController in April's Silicon Chip magazine.

https://www.siliconchip.com.au/Issue/2023/April (https://www.siliconchip.com.au/Issue/2023/April)

The article is in support of a test bench automation hardware project in the same issue.

I hope it brings more users to TestController.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 07, 2023, 07:24:58 am
Just to note that I did a how-to article for TestController in April's Silicon Chip magazine.

https://www.siliconchip.com.au/Issue/2023/April (https://www.siliconchip.com.au/Issue/2023/April)

The article is in support of a test bench automation hardware project in the same issue.

I hope it brings more users to TestController.

Nice, but it is behind a paywall, only the first page is visible (I would have loved to see the full article).

A few notes:
TC also support binary protocols, they will internally be converted to SCPI like protocols for scripting and manual control.
The supported device count is above 500 now.
It works on Windows, Linux and Mac, it may also work on other OS types as long as they support standard Java and are supported by the serial library.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on June 08, 2023, 01:30:31 am
Thanks for the update - I wrote the article nearly a year ago (the publishing process takes quite a while), so I'm unsurprised that there have been multiple improvements since that time.

I've sent a copy of the proof to the email address on your website.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 08, 2023, 05:33:43 am
Thanks for the update - I wrote the article nearly a year ago (the publishing process takes quite a while), so I'm unsurprised that there have been multiple improvements since that time.

I've sent a copy of the proof to the email address on your website.

Thanks for the article, it was interesting reading and a nice example of using TestController. I hope a lot of people read it  :)
When scripting, try using the script generator, it can make it some scripting a lot easier. The actual options in the menu will change, depending on what you do in TestController. I.e. do a configuration from one or more popup menus and the script generator will list a option to generate a script that do that. If the "Log event" popup is open and configured, there is a option to generate the same test in a script.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 11, 2023, 08:47:41 am
In addition to the article about TestController, Silicon chip magazine also have a project that uses TestController. I have added link and description to my user project page:

http://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#Swiss_Army_knife (http://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#Swiss_Army_knife)
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on June 15, 2023, 02:05:30 pm
Hi HKJ,

At the moment I am using Testcontroller a lot. Usually logging with 3 to 6 traces on the Chart.
It gets annoying pretty fast that every time I stop logging (for example to fine-tune the measurement set-up), and starting the logging again, I have to re-select the traces to get them in the preferred order again...

It would be nice if the curve selection could be remembered... Maybe until other devices are loaded? Or an extra checkbox: remember trace selection?

(https://www.miedema.dyndns.org/co/2023/TC_Chart_screenshot-600pix.png)
TC chart screenshot-1000pix (https://www.miedema.dyndns.org/co/2023/TC_Chart_screenshot-1000pix.png)

regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on June 15, 2023, 02:32:45 pm
Chart parameters can be set from a script.
https://lygte-info.dk/project/TestControllerChart%20UK.html#Scripting
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2023, 04:09:33 pm
Hi HKJ,

At the moment I am using Testcontroller a lot. Usually logging with 3 to 6 traces on the Chart.
It gets annoying pretty fast that every time I stop logging (for example to fine-tune the measurement set-up), and starting the logging again, I have to re-select the traces to get them in the preferred order again...

It would be nice if the curve selection could be remembered... Maybe until other devices are loaded? Or an extra checkbox: remember trace selection?

As jmurray says above it can be done with a script and TC can auto-generate a script to recreate the current layout.
This is done by right clicking on the log window and select "Generate scripts" and then "Chart/Hist/Range script", you can generate it directly as a menu option for the log window.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on June 16, 2023, 05:35:36 pm
Hi HKJ,

Thank you for the explanation. I tried it immediately.

When I click right on the log window and select "Generate scripts" and then "Chart/Hist/Range script", indeed something is running in the log & program editor window. I save the script.
When I stop, and restart the logging, I click "load and run", open the script, and click "run". Indeed the right traces are now selected, but unfortunately NOT in the right order....
So I must be missing something....

Anyway, this work-around seems like more work then just manually click the traces in the right order....

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 16, 2023, 06:01:07 pm
Hi HKJ,

Thank you for the explanation. I tried it immediately.

When I click right on the log window and select "Generate scripts" and then "Chart/Hist/Range script", indeed something is running in the log & program editor window. I save the script.
When I stop, and restart the logging, I click "load and run", open the script, and click "run". Indeed the right traces are now selected, but unfortunately NOT in the right order....
So I must be missing something....

Anyway, this work-around seems like more work then just manually click the traces in the right order....

I think I see the problem, I have not really seen the selection sequence as a important parameter, just that the right tracks are selected.
The script do more than just select the traces as you can see on the script commands.

If you email me a datafile and screen shoots of your selection, the restored selection and the generated script. I will take a look and if I agree you are right about selection is important and it is not too hard to fix it I will.

When doing this it might be best to generate a menu entry, it makes future selection very easy.
Title: Re: Program that can log from many multimeters.
Post by: andyB2022 on June 23, 2023, 03:02:16 pm
Hi, any config file here for ET5420A+?

Thanks.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 24, 2023, 09:25:32 am
Hi, any config file here for ET5420A+?

There is a definition for ET5420A and it can probably easy be adapted for ET5420A+
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on June 28, 2023, 11:44:17 am
Hi HKJ,

I wrote a configuration file for the HP / Agilent 3458A 8,5 digit multimeter.

The legendary 3458A is a complex instrument, designed for a broad range of tasks. From very fast systems measurements to very accurate measurements in calibration labs.

(https://www.miedema.dyndns.org/co/2023/tc/IMG_0043__Agilent_3458A-600pix.jpg)
IMG_0043  Agilent 3458A-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/tc/IMG_0043__Agilent_3458A-2000pix.jpg)

This configuration file is more targeted to high accuracy measurements then very high measurement speed. (For speed, I think the basic implementation of GPIB in TC is the limiting link. With single measurement data requests / readouts about 30 values/sec. But for system measurements there will be custom control software anyway…)

All configuration options I am using, and all settings that could be necessary for high accuracy measurements are in the menus:

(https://www.miedema.dyndns.org/co/2023/tc/TC_3458A_OHMF_screenshot-600pix.png)
TC 3458A OHMF screenshot-1000pix.png (https://www.miedema.dyndns.org/co/2023/tc/TC_3458A_OHMF_screenshot-1000pix.png)

There are double menu settings for the important parameters NPLC and Aperture (A/D converter integration time).
For quick setting of the most common values  one can use the piano buttons. But one can enter any valid value in the entry field of the number control if you want a different setting. (or a specific setting is specified in a procedure)

An advantage is that the numbers in the entry fields will always show the current settings used by the meter. No unnecessary luxury with so many settings that all influence the measurement result.  :)
It is also educational to see how NPLC and Aperture are interacting.

I have tested this configuration file with a Agilent 3458A, but it should also recognize the new black Keysight 3458A. (only the identification string should be different)

I implemented commands for AUTOCAL and TEMP? (internal temperature), so these can be used in scripts. But i removed Autocal from the menu as the risk of mishaps is too high (Auto Cal with cold meter, meter is blocked for 10 minutes, still voltages connected to the terminals)

Please find the definition file here: AgilentHP3458A.zip (https://www.miedema.dyndns.org/co/2023/tc/AgilentHP3458A.zip)
As before, you are welcome to use my pictures for your website.

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on June 29, 2023, 11:07:45 am
Hi HKJ,

I wrote a configuration file for the HP / Agilent 3458A 8,5 digit multimeter.


Thanks, it will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on June 30, 2023, 11:41:21 am
Hi HKJ,
Here is a device configuration file for Fluke 863, 865 and 867B Graphical Multimeters.
I wrote and tested the definition with a Fluke 867B. But it should work for the other of the members of the 86x family too.
These meters have a mechanical rotary mode switch. So there are no menu’s. All function switching and mode selection is done on the meter itself. The actual mode is decoded from #askValues.

(https://www.miedema.dyndns.org/co/2023/tc/IMG_0008__Fluke_867B-400pix.jpg)
IMG 0008 Fluke 867B-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/tc/IMG_0008__Fluke_867B-2000pix.jpg)


Actually there are two configuration files. I started with a definition which is only reading the main display, heeding your advice:
Quote
Quote from: HKJ on 12 December 2022, 10:56:09
I generally do not decode secondary displays on multimeters, there are a couple of reasons for that.

    Not very useful information (This is mostly about the frequency in AC).
    Logging rate goes down (Depends on multimeter).
    TC will automatic track range changes for devices with one value, not for devices with multiple values. This is not about the main pages, but on the popups (A lot of TC's functionality are in the popups).

And indeed, with  this definition the logging is the fastest.

But this meter has a very nice and extensive dual display function.
And with it’s opto isolated RS-232 connection, and extremely well isolated mains adapter, it is very well suited for things like monitoring the mains. For such cases it is handy to log Voltage and Frequency with one meter:

(https://www.miedema.dyndns.org/co/2023/tc/Powergrid-Utrecht-600pix.png)
Powergrid Utrecht-1200pix.png (https://www.miedema.dyndns.org/co/2023/tc/Powergrid-Utrecht-1200pix.png)

So I also wrote a configuration file for reading both primary and secondary values. Indeed this definition reads slower. (It is not a fast meter to start with: calculating RMS etc. just takes some time with this meter…)

In practice both configuration files coexist happily next to each other. And I just choose the one that is most suitable for the occasion. In the past months I used both about the same amount of time.
Unfortunately my programming skills are insufficient to combine both into one configuration file. (and keep the advantages of both)  :-[

Please find the definition files here: Fluke 86x device file.zip (https://www.miedema.dyndns.org/co/2023/tc/Fluke_86x_device_file.zip)


Just for fun, and for your Multimeter frequency response page, here is the frequency response of the 867B:

(https://www.miedema.dyndns.org/co/2023/tc/Fluke_867B_Frequency.png)
Fluke 867B Frequency.png (https://www.miedema.dyndns.org/co/2023/tc/Fluke_867B_Frequency.png)

(Yes, I am also working on a Rigol DG1032Z ARB definition, but that one needs some more fine tuning and polishing...)

Regards, Gertjan.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 04, 2023, 10:37:12 am
Here is a device configuration file for Fluke 863, 865 and 867B Graphical Multimeters.

Thanks, this will be included in next release.

Just for fun, and for your Multimeter frequency response page, here is the frequency response of the 867B:

Chart is added to webpage
Title: Re: Program that can log from many multimeters.
Post by: pepperoni7 on July 23, 2023, 07:22:28 pm
I'm very new to Linux and Python, so I'm also very glad there is TC to connect to my measurement gear and do measurements!
Thanx to HKJ and everyone else involved to make this possible.

The "USBTMC" Protocol has come up in the past. I've an OWON SDS1192 which uses the "PC" setting to log to its own propreiety software. However, it does support "USBTMC" mode as well.

Any chance of this being updated? I know very little about it at the moment, but it appears it would allow Test Controller to nearly immediately add a bunch of equipment to its list of supported devices.

The problem is that USBTMC requires native code and cannot be done in Java and native code requires separate code for each OS and cpu architecture.

OK, back to my question.
Wouldn't python-usbtmc make all this happen?
https://github.com/python-ivi/python-usbtmc

At least I could connect to a Siglent DSG1025 AWG on the command line using pyvisa after installing python-usbtmc

Regards
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 24, 2023, 10:30:24 am
OK, back to my question.
Wouldn't python-usbtmc make all this happen?
https://github.com/python-ivi/python-usbtmc

At least I could connect to a Siglent DSG1025 AWG on the command line using pyvisa after installing python-usbtmc

The issue is using Python from Java, it might be easy enough to run a Python program from Java, but what is required is to run a few lines of Python codes multiple times each second. That kind of stuff works best when everything stays loaded and initialized all the time, this makes it very different from just running a Python program.
Title: Re: Program that can log from many multimeters.
Post by: trp806mo on July 24, 2023, 08:02:50 pm
I'm trying for a device to convert in NR3 a number. For example  0.123 -> 123E-03  (and not 123m as si). Is there a trick to do it ?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on July 25, 2023, 10:05:58 am
I'm trying for a device to convert in NR3 a number. For example  0.123 -> 123E-03  (and not 123m as si). Is there a trick to do it ?

It depends on where you do it:

For regular value displays TC uses the datatype definition https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Data_type_definitions (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Data_type_definitions) where you define the format as SI, X or D with a digit count.
The controls used in configuration has a :format: tag that also accept these specifications.

In other cases you may need to use scripting with: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatSI (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatSI) or https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatDouble)
Title: Re: Program that can log from many multimeters.
Post by: bicycleguy on July 25, 2023, 06:42:44 pm
Hi HKJ,

Thank you for the explanation. I tried it immediately.

When I click right on the log window and select "Generate scripts" and then "Chart/Hist/Range script", indeed something is running in the log & program editor window. I save the script.
When I stop, and restart the logging, I click "load and run", open the script, and click "run". Indeed the right traces are now selected, but unfortunately NOT in the right order....
So I must be missing something....

Anyway, this work-around seems like more work then just manually click the traces in the right order....

I think I see the problem, I have not really seen the selection sequence as a important parameter, just that the right tracks are selected.
The script do more than just select the traces as you can see on the script commands.

If you email me a datafile and screen shoots of your selection, the restored selection and the generated script. I will take a look and if I agree you are right about selection is important and it is not too hard to fix it I will.

When doing this it might be best to generate a menu entry, it makes future selection very easy.
@HJK, @Gertjan,
Would like to second the thought that the selection sequence matters.
Great program !
thanks
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on August 02, 2023, 08:36:47 pm
V2.35 is up
   Added: Block driver will support socket interface.
   Added: Poll delay setting in Block driver (#pollPause)
   Fixed: A charset issue with  #rxStart in Block driver

1. I can confirm that #rxStart now works correctly with multiple bytes, thanks.

2. I also confirm that #pollPause does its job well, provided value should be in milliseconds.
Unfortunately I do not see it mentioned in documentation for the driver https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)

3. I wonder where to read about "socket interface" ?
Is this about possibility to communicate over a TCP socket in network instead of a serial interface?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 04, 2023, 07:16:55 am
2. I also confirm that #pollPause does its job well, provided value should be in milliseconds.
Unfortunately I do not see it mentioned in documentation for the driver https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)

Oops, I did write it but forgot to upload the new page, this is fixed now.

3. I wonder where to read about "socket interface" ?
Is this about possibility to communicate over a TCP socket in network instead of a serial interface?

Yes, socket is using TCP. There is no special documentation about it, but see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes). It will be selected if you write a socket port number after the #port tag.
I did not test it when adding the code and somebody says it do not work, it will be tested (and fixed) before next version.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on August 04, 2023, 11:36:42 am
Yes, socket is using TCP. There is no special documentation about it, but see here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_device_identification_and_connection_parametes). It will be selected if you write a socket port number after the #port tag.
I did not test it when adding the code and somebody says it do not work, it will be tested (and fixed) before next version.
Thanks, I was able to get  it working with my Tasi device (originally with serial port), when I made a COM<->TCP bridge, so TC communicated over a TCP socket.

I should publish definition file for Tasi soon, after polishing it for graphs etc.


...
Monitoring the lines with a terminal window I can see the responses to Test Controller's commands.
When using socket, the response does not appear to be read into Test Controller so it keeps sending the same command.
@jmurray, FYI, it works for me. Something is incorrect on your side.
Title: Re: Program that can log from many multimeters.
Post by: TheDefpom on August 12, 2023, 03:10:13 am
I made a minor change to the definition file for the Siglent SDL10xxXxx to do with how the instrument changes modes to CC on connection and locks its front panel, it now won't do that.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 14, 2023, 03:50:39 pm
I made a minor change to the definition file for the Siglent SDL10xxXxx to do with how the instrument changes modes to CC on connection and locks its front panel, it now won't do that.

It will be included in the next update.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2023, 08:44:57 am
V2.36 is up.
This update contains a few new (Maybe new is not the correct word) devices, a new popup and a modification of the #ChartCurves command.
   Added: Timer counter popup, this can be used to analyze on/off cycles that are seconds or slower
   Changed: #ChartCurves will select curves in the sequence listed in the command
   Added: Fluke 863, Fluke 865, Fluke 867 (Thanks Gertjan Miedema)
   Added: Agilent 3458A, HP 3458A high precision DMM (Thanks Gertjan Miedema)
   Added: Racal-Dana 1991 & Racal-Dana 1992 Counter only config and logging (Thanks Gertjan Miedema)

(https://lygte-info.dk/pic/Projects/TestController/DocTimerCounter/TimerCounter.png)

The new popup can be used to analyze freezers, heaters, pumps and other stuff with slow on/off control, usually by using a ammeter in the power lead to a device or a voltmeter across the active part of the device
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on August 18, 2023, 08:56:38 am
V3.26 is up.
   Changed: #ChartCurves will select curves in the sequence listed in the command

Thank you!
Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: dibro on August 18, 2023, 12:08:56 pm
"V3.26 is up."
I guess this should be - V2.36 is up.
At least the is what the About box says.  ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 18, 2023, 01:13:06 pm
"V3.26 is up."
I guess this should be - V2.36 is up.
At least the is what the About box says.  ;)

Oops, fixed.
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 22, 2023, 09:55:31 am
There is something changed?
I have used this program before, but today when I try to save the log, buttons "Save" or "Export" does nothing. They are supposed to show a dialog where I can choose to save the log, as I remember ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 22, 2023, 10:27:01 am
There is something changed?
I have used this program before, but today when I try to save the log, buttons "Save" or "Export" does nothing. They are supposed to show a dialog where I can choose to save the log, as I remember ...

Strange, I just tried here and it works as it is supposed to.
Note: Save and Export only works when there are data in the table. They will also be disabled if you are active logging to disk, but will be enabled when you stop logging.
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 22, 2023, 10:53:21 am
There is something changed?
I have used this program before, but today when I try to save the log, buttons "Save" or "Export" does nothing. They are supposed to show a dialog where I can choose to save the log, as I remember ...

Strange, I just tried here and it works as it is supposed to.
Note: Save and Export only works when there are data in the table. They will also be disabled if you are active logging to disk, but will be enabled when you stop logging.

I know, I have used it many times before. It has data, just wasted 4 hours of logging. After stopping can't save ... I have downloaded last version do a test log, same problem.  If you say that should work, maybe is something from Java ...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 22, 2023, 11:20:12 am
There is something changed?
I have used this program before, but today when I try to save the log, buttons "Save" or "Export" does nothing. They are supposed to show a dialog where I can choose to save the log, as I remember ...

Strange, I just tried here and it works as it is supposed to.
Note: Save and Export only works when there are data in the table. They will also be disabled if you are active logging to disk, but will be enabled when you stop logging.

I know, I have used it many times before. It has data, just wasted 4 hours of logging. After stopping can't save ... I have downloaded last version do a test log, same problem.  If you say that should work, maybe is something from Java ...

The Java I tested with is:

C:\Users\hkj>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)


Try running TC from a DOS prompt, it will output error messages to the DOS window. Error messages are always output, debug messages only in debug mode and both to DOS window and to TC log window.

Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 22, 2023, 04:47:45 pm
There is something changed?
I have used this program before, but today when I try to save the log, buttons "Save" or "Export" does nothing. They are supposed to show a dialog where I can choose to save the log, as I remember ...

Strange, I just tried here and it works as it is supposed to.
Note: Save and Export only works when there are data in the table. They will also be disabled if you are active logging to disk, but will be enabled when you stop logging.

I know, I have used it many times before. It has data, just wasted 4 hours of logging. After stopping can't save ... I have downloaded last version do a test log, same problem.  If you say that should work, maybe is something from Java ...

The Java I tested with is:

C:\Users\hkj>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)


Try running TC from a DOS prompt, it will output error messages to the DOS window. Error messages are always output, debug messages only in debug mode and both to DOS window and to TC log window.

My version is :

java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

The output at export command is in file attached.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2023, 08:37:27 am
The output at export command is in file attached.

Java fails to select a directory, I do not know why, but I have added exception handle to it. I.e. it will not prevent saving, but will instead list a error message: "Failed to set director:"
Please post the the error message, I would like to know if I try to set a invalid directory (The other possibility is that the directory has a filename java do not like).

The modified TC is here, it is only the jar file, not the full TC:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 23, 2023, 09:25:40 am
Hi,
Thank you for your help. I have tested modified program.
Now it show me a dialog for saving the file, but I cant choose another folder, can't browse, but when try to create a director I can browse. At this moment the log record: "Failed to set director: C:\Users\Robert\Documents\TestController".
I am running the program from "c:\TestController"
In a second attempt to save the same log, again does nothing and so on. Only on first attempt it show a dialog.
I attached a full output with a short log included.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2023, 09:43:49 am
Hi,
Thank you for your help. I have tested modified program.
Now it show me a dialog for saving the file, but I cant choose another folder, can't browse, but when try to create a director I can browse. At this moment the log record: "Failed to set director: C:\Users\Robert\Documents\TestController".
I am running the program from "c:\TestController"
In a second attempt to save the same log, again does nothing and so on. Only on first attempt it show a dialog.
I attached a full output with a short log included.

Try create a "TestController" directory in you "Documents" directory, it is assumed to be created automatic and I wonder why it is not.
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 23, 2023, 09:48:50 am
It is there. Is where it save the log at first attempt with new program.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2023, 10:04:49 am
It is there. Is where it save the log at first attempt with new program.

But in the screen shot it says "Documents", I suspect there is something wrong with your directories. I can be names or security.

In the testController.bat file you can add a dataDir=xxxxx option and switch the datadir to something else (You have to use the testController.bat file to start TC for this to work). For debug you will have to do the same modification in the testControllerDebug.bat file.
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 23, 2023, 10:59:13 am
I don't know what can be.
This is the only program that make this problem.
It is a win 11 and maybe they set some security setting, I don't know.
It show Documents and can't browse as I said. It is a strange behaviour on that save dialog. At least I can save with that version ... Then if I will need to log again I need to close the program a nd start again.
Try to set datadir path but no change. What is the syntax? Just a separate line or as option to main line?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 23, 2023, 12:01:18 pm
I don't know what can be.
This is the only program that make this problem.
It is a win 11 and maybe they set some security setting, I don't know.

I use Win10 and have no idea why it fails on your computer.
Do the path have any special characters in it (Maybe from your name).

It show Documents and can't browse as I said. It is a strange behaviour on that save dialog. At least I can save with that version ... Then if I will need to log again I need to close the program a nd start again.
Try to set datadir path but no change. What is the syntax? Just a separate line or as option to main line?

start javaw -jar TestController.jar dataDir=C:\TCData %1 %2 %3 %4 %5 %6 %7 %8 %9
Title: Re: Program that can log from many multimeters.
Post by: skander36 on August 23, 2023, 12:28:38 pm
Hi,
No problem with my name :) see attached.
Tested with set path. While is still show Documents without posibility to choose another dir, it save to the location from setpath variable (C:\TestController).
Anyway if you said that it should work and nobody report this problem, that mean the problem is on my environment. I will try to clean Java instalation and check to see if this can help.
Thank you for your help!
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 25, 2023, 09:32:26 am
Hi HKJ,

This might be a stupid question, but what would be the recommended way to implement a delay within a #scpiCmd #pgm# routine?
I've tried runScript("#delay 1") but it does not appear to work.
TestController also doesn't like it being called more than once, for example as part of a "for" loop, as it reports: "A background job is already running, this request is ignored".

Preferably a delay in milliseconds: I know the standard #delay can do fractions of a second, but whatever method I need to employ in this case would need to work in milliseconds.
Should I be using an expression to compare the results from the seconds() function?
Or is there a simpler function I could call?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2023, 10:30:11 am
Hi HKJ,

This might be a stupid question, but what would be the recommended way to implement a delay within a #scpiCmd #pgm# routine?
I've tried runScript("#delay 1") but it does not appear to work.
TestController also doesn't like it being called more than once, for example as part of a "for" loop, as it reports: "A background job is already running, this request is ignored".

Preferably a delay in milliseconds: I know the standard #delay can do fractions of a second, but whatever method I need to employ in this case would need to work in milliseconds.
Should I be using an expression to compare the results from the seconds() function?
Or is there a simpler function I could call?

You can directly include delay in SCPI commands by using [123] (123ms) or [*OPC] that will use a special SCPI function to wait until the device is done processing commands (This do not work on all SCPI devices).
You can find it here in the documentation: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Timing_issues (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Timing_issues)
With some drivers you can also add a fixed delay between commands.
In programming you can use sleep(123) (123ms) and #delay 0.123 in scripting.
In all cases caching can throw you delay off a little bit.

Also be aware that TC is multithreaded, it will generally not affect delays, but a delay may open up for another thread to use the device during the delay (this will not happen with the [...] delays). With standard use of TC there will usually only be two threads accessing a device: The one fetching measurements and the one doing configuration (There are exceptions to this), but with scripting this can easily be increased.

"A background job is already running, this request is ignored"
Only one regular script can run at a time, use runScriptAsync() to start a independent background job. With this you can also crash TC, because there is no limit on background jobs and even the fastest computer will have trouble running a few million background jobs. :)

Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 25, 2023, 12:17:34 pm
Hi HKJ,

This might be a stupid question, but what would be the recommended way to implement a delay within a #scpiCmd #pgm# routine?
I've tried runScript("#delay 1") but it does not appear to work.
TestController also doesn't like it being called more than once, for example as part of a "for" loop, as it reports: "A background job is already running, this request is ignored".

Preferably a delay in milliseconds: I know the standard #delay can do fractions of a second, but whatever method I need to employ in this case would need to work in milliseconds.
Should I be using an expression to compare the results from the seconds() function?
Or is there a simpler function I could call?

You can directly include delay in SCPI commands by using [123] (123ms) or [*OPC] that will use a special SCPI function to wait until the device is done processing commands (This do not work on all SCPI devices).
You can find it here in the documentation: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Timing_issues (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Timing_issues)
With some drivers you can also add a fixed delay between commands.
In programming you can use sleep(123) (123ms) and #delay 0.123 in scripting.
In all cases caching can throw you delay off a little bit.

Also be aware that TC is multithreaded, it will generally not affect delays, but a delay may open up for another thread to use the device during the delay (this will not happen with the [...] delays). With standard use of TC there will usually only be two threads accessing a device: The one fetching measurements and the one doing configuration (There are exceptions to this), but with scripting this can easily be increased.

"A background job is already running, this request is ignored"
Only one regular script can run at a time, use runScriptAsync() to start a independent background job. With this you can also crash TC, because there is no limit on background jobs and even the fastest computer will have trouble running a few million background jobs. :)

sleep(123) is what I was needing! Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 25, 2023, 01:38:11 pm
sleep(123) is what I was needing! Thanks!

I expected that, but I like to explain a bit more (when I have time). I hope a few people can learn a bit more about TC that way.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on August 27, 2023, 09:34:11 am
sleep(123) is what I was needing! Thanks!

I expected that, but I like to explain a bit more (when I have time). I hope a few people can learn a bit more about TC that way.

I realised that was the case. More information is always better!

I recently added a Mecmesin BFG1000 Basic Force Gauge to my inventory - so here's a new definition file you may include with TC.
I've done my best to accommodate every function and compensate any lacking features within the definition file.
I've also pre-filled everything to accommodate all other models in the BFG range - it will require some minor corrections for the lower capacity models but otherwise everything is there.

EDIT: There's always another bug once you hit submit! Corrected some readformat issues with the streaming mode implementation.
I've updated the attachment.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 29, 2023, 09:42:23 am
I recently added a Mecmesin BFG1000 Basic Force Gauge to my inventory - so here's a new definition file you may include with TC.
I've done my best to accommodate every function and compensate any lacking features within the definition file.
I've also pre-filled everything to accommodate all other models in the BFG range - it will require some minor corrections for the lower capacity models but otherwise everything is there.

EDIT: There's always another bug once you hit submit! Corrected some readformat issues with the streaming mode implementation.
I've updated the attachment.

Thanks, it will be included in next release. If you post more updates, please make another post.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on August 31, 2023, 08:27:32 am
Hi HKJ,

I am working on a definition for a Philips / Fluke PM2811 programmable power supply. It is SCPI compliant, and I am using the R&S HMC8043 definition for guidance.
This power supply was sold in several versions: 30V/10A and 60V/5A, front panel and back panel connectors etc. All these versions are having a bit different type number, and thus give a different answer to *IDN?.

Philips PM2811 30V / 10A:  PHILIPS,PM2811/01
Philips PM2811 60V / 5A :   PHILIPS,PM2811/11


1. Obviously the 30V/10A and 60V/5A versions need a bit different definition.
Would this work:

Code: [Select]
; Meta definition for PM2811 30V/10A version
#metadef
#idString PHILIPS,PM2811/01
....

; Meta definition for PM2811 60V/5A version
#metadef
#idString PHILIPS,PM2811/11
.....

Would TC automatically pick the right #metadef, depending on the *IDN? Answer?
I suppose the easy way would be to create just two model names: “Philips PM2811 30V/10” and “Philips PM2811 60V/5A”. But that seems to be a less elegant solution.

2. The second digit after the slash can change too…
Probably it means "front- or back panel connectors". But it could also be "Country Version" (In the full Type Number there are 3 digits after the slash…)
Anyway, the value of this last digit is not important for the definition. (No changes in the definition are needed when this digit changes)
But with a different *IDN? Answer TestController will not recognize the device…
So, is it possible to “mask” this last digit when TC does the device recognition with *IDN? Or is there another solution?

3. These power supplies were sold by Philips, but after the Fluke/Philips T&M alliance, they were sold under the Fluke brand. (In practice, I see more Fluke PM2811 than Philips PM2811).
However, also with the Fluke version, the *IDN? Answer remained PHILIPS,PM2811/xx
So, would you like to have both the Fluke and Philips version in your supported list?
And would coding like this work, as both #metadef’s are having the same #idstring:


Code: [Select]
; Meta definition for Philips PM2811 Power Supply
#metadef
#idString PHILIPS,PM2811/01
#name Philips PM2811
#handle PM2811
....

; Meta definition for Fluke PM2811 Power Supply
; As far as known the later Fluke versions kept "PHILIPS" in de *IDN? answer string
#metadef
#idString PHILIPS,PM2811/01
#name Fluke PM2811
#handle PM2811
....

Thanks in advance & regards, Gertjan.

edit: added the info that PM2811 is a SCPI instrument.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 31, 2023, 10:03:24 am
1. Obviously the 30V/10A and 60V/5A versions need a bit different definition.
Would this work:

Code: [Select]
; Meta definition for PM2811 30V/10A version
#metadef
#idString PHILIPS,PM2811/01
....

; Meta definition for PM2811 60V/5A version
#metadef
#idString PHILIPS,PM2811/11
.....

Would TC automatically pick the right #metadef, depending on the *IDN? Answer?
I suppose the easy way would be to create just two model names: “Philips PM2811 30V/10” and “Philips PM2811 60V/5A”. But that seems to be a less elegant solution.

When you select you equipment on the "Load devices" page you select the correct *idn? answer, TC can also automatic pick a matching *idn? answer in some cases.


2. The second digit after the slash can change too…
Probably it means "front- or back panel connectors". But it could also be "Country Version" (In the full Type Number there are 3 digits after the slash…)
Anyway, the value of this last digit is not important for the definition. (No changes in the definition are needed when this digit changes)
But with a different *IDN? Answer TestController will not recognize the device…
So, is it possible to “mask” this last digit when TC does the device recognition with *IDN? Or is there another solution?

TC will compare the specified text, if you leave out the second digit it will not be checked.


3. These power supplies were sold by Philips, but after the Fluke/Philips T&M alliance, they were sold under the Fluke brand. (In practice, I see more Fluke PM2811 than Philips PM2811)
However, also with the Fluke version, the *IDN? Answer remained PHILIPS,PM2811/xx
So, would you like to have both the Fluke and Philips version in your supported list?
And would coding like this work, as both #metadef’s are having the same #idstring:


Code: [Select]
; Meta definition for Philips PM2811 Power Supply
#metadef
#idString PHILIPS,PM2811/01
#name Philips PM2811
#handle PM2811
....

; Meta definition for Fluke PM2811 Power Supply
; As far as known the later Fluke versions kept "PHILIPS" in de *IDN? answer string
#metadef
#idString PHILIPS,PM2811/01
#name Fluke PM2811
#handle PM2811
....

I believe the best solution is to add both Fluke & Philips definitions, people may not know it is the same device. In cases where TC automatic pick device it may select the wrong one, but because it is the same definition it will work.

On serial devices TC will try to automatic pick devices if "Scan serial ports" are checked, but first after added the devices listed and checked below that.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on August 31, 2023, 10:27:38 am
Hi HKJ,

Thanks. Most things are clear  :).
But not the first question. Probably mostly because my question was not clear....
Lets show a bit more code:

Code: [Select]
; Meta definition for PM2811 30V/10A version
#metadef
#idString PHILIPS,PM2811/0
#name Philips PM2811
#handle PM2811
....

; Meta definition for PM2811 60V/5A version
#metadef
#idString PHILIPS,PM2811/1
#name Philips PM2811
#handle PM2811
.....

So there is only only one device name, but this device can return 2 different *IDN? answers, depending on whether it is a 30V/10A or 60V/5A version. (I adapted the #idstring already to your answer on the second question :) )

Will TestController, with the above code, select  the correct #metadef depending on the *IDN? answer?
If not, is there an other solution?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on August 31, 2023, 11:39:57 am
Code: [Select]
; Meta definition for PM2811 30V/10A version
...
#name Philips PM2811
....

; Meta definition for PM2811 60V/5A version
...
#name Philips PM2811
.....

So there is only only one device name, but this device can return 2 different *IDN? answers, depending on whether it is a 30V/10A or 60V/5A version. (I adapted the #idstring already to your answer on the second question :) )

Will TestController, with the above code, select  the correct #metadef depending on the *IDN? answer?
If not, is there an other solution?

I did not see that, there can only exist one definition for each #name (i.e. the #name string must be unique), you must add /0 or /1 to them.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on September 07, 2023, 06:16:50 am
Thinking about getting an UNI-T UT622 LCR meter after a tax return.
Anybody already doing a definition file? It has a Virtual COM interface 8),
no HID >:D thank God. So I might be able to produce a definition file myself
once I have it. :phew:
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on September 08, 2023, 11:25:49 am
Hi HKJ,

I wrote a device configuration file for the Fluke / Philips PM2811 programmable power supplies.
It is based on the R&S HMC8043 definition.

(https://www.miedema.dyndns.org/co/2023/pm2811/IMG_1676__Philips_PM2811-600pix.jpg)
IMG 1676  Philips PM2811-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/pm2811/IMG_1676__Philips_PM2811-2000pix.jpg)

These supplies exists in 2 versions: 30V/10A and 60V/5A. I wanted to combine both versions in one definition. The PM2811 has SCPI commands to query the maximum output voltage and current. Idea was to use the answers from those in variables, and use them in the menus as "maxVolt" etc. But I was not able to get this working. So now, as a bit less elegant solution, there are two different #name for the two versions.

Although this is an older power supply (introduced in 1991), it is quite speedy over GPIB. Using AR488 I get 5 read-outs per second. (V, A and W)

Divergent from the R&S definition I choose to NOT turn on the outputs with the quick select U and I radio buttons. I feel that one should first set up a power supply, and only after that, and when needed, switch its output on. Mostly to prevent accidents  :).

(https://www.miedema.dyndns.org/co/2023/pm2811/PM2811-CV-menu-screenshot-600pix.png)
PM2811 CV menu screenshot-1000pix.png (https://www.miedema.dyndns.org/co/2023/pm2811/PM2811-CV-menu-screenshot-1000pix.png)

The PM2811 protection works different from the R&S, and is more extensive. For Over Current Protection, one can choose between just current limiting, or switching the output off after over current.
The protection status indicator will show in detail what is wrong: Over voltage, Over current, Over temperature, Out of Sense or Calibration invalid.

There are also 2 and 3 channel versions: PM2812 and PM2813. These are big modular 19” units, with several output channel options. So these are too complicated to include in this definition with #metadefs. Especially without any means of testing...

It should be easy to create a definition for these, based on this definition, and using the 3ch R&S HMC8043 definition as a guide. To facilitate this, all the Output Channel selection commands are retained in this definition. (Here all CH1, the only Output... :))

Please find the definition file here: Philips PM2811.zip (https://www.miedema.dyndns.org/co/2023/pm2811/Philips_PM2811.zip)

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on September 08, 2023, 10:59:55 pm
Request to bump jSerialComm to recent release v2.10.3 and adopt TC code.

There were major and important changed for me in v2.10.0, so now jSerial can fully see and work with PTY ports on Linux.
I mean ports created by "socat" tools or from Python.
https://github.com/Fazecast/jSerialComm/releases/tag/v2.10.0


I've tried to repack TestController.jar to include updated jSerialComm, it almost working and now can even see ports created by Python (real Bluetooth BLE connections actually).
Error happening:
Code: [Select]
;; 00:54:43.342 jSerialComm version: 2.10.3
;; 00:54:43.344 Start thread for: ttyBLE - ATorch DL24P
;; 00:54:43.344 ttyBLE: Set params: 9600
;; 00:54:43.544 ttyBLE: Tx: B1 B2 11 00 00 B6
Exception in thread "Device Pseudo-Terminal Device (ttyBLE)" java.lang.NoSuchMethodError: 'int com.fazecast.jSerialComm.SerialPort.writeBytes(byte[], long, long)'
        at dk.hkj.comm.SerialPacketInterface.writeDataInternal(SerialPacketInterface.java:114)
        at dk.hkj.comm.SerialPacketInterface.writeData(SerialPacketInterface.java:134)
        at dk.hkj.comm.SerialPacketInterface.writeReadData(SerialPacketInterface.java:180)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.communicate(DeviceATorchPX100.java:73)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:139)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:188)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:144)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:139)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1507)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1590)

This is probably because of change in v2.10.0, quote from the release notes:
Quote
IMPORTANT NOTE: The bytesToRead and offset parameters in both readBytes() and writeBytes() have been changed from type long to int so that there is no mismatch between the parameters and the return type. Any code specifically passing a long to these functions will need to be updated.

I believe that's what causing the issue.

So, please refresh TC with current jSerialComm release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2023, 07:55:59 am
Thinking about getting an UNI-T UT622 LCR meter after a tax return.
Anybody already doing a definition file? It has a Virtual COM interface 8),
no HID >:D thank God. So I might be able to produce a definition file myself
once I have it. :phew:

I hope you make the definition.
There is one caveat with LCR meters, you need to read and set mode (i.e. L, C or R) for each measurement. You can see in the existing LCR meter definitions how it is done.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2023, 07:56:43 am
I wrote a device configuration file for the Fluke / Philips PM2811 programmable power supplies.
It is based on the R&S HMC8043 definition.

Thanks, it will be included in the next release.
Can I use your picture?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 10, 2023, 08:03:04 am
Request to bump jSerialComm to recent release v2.10.3 and adopt TC code.

I will do that in the next release.
No changes in TC code is necessary for that. There is mostly no issues with updating jSerialComm, but because most updates do not add anything new to TC I do not update all the time.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on September 10, 2023, 08:04:46 am
Hi HKJ,

You can always use my pictures, and any other graphics, for your website.

Best regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on September 15, 2023, 01:34:26 pm
When using "block" driver I have some issues, a few questions:

1. I need to send first a specific byteSequence to force device to respond on a pool byteSequence.
How can I do that?
#initCmd works only after device Found, which is a result of the pool definition, so it does not help.


2. If I need to perform a fixed delay after the specific byteSequence, before starting the pool, how is it possible?
#cmdDelayTime and #readingDelay are not related here - do not give me a result.

3. If I need to make a few different pools (with different byteSequences) and then parse them all to have all variables to parse their values.
How this can be made?


Title: Re: Program that can log from many multimeters.
Post by: Gertjan on September 18, 2023, 02:25:37 pm
Hi HKJ,

I am working on a definition for the Rigol DG1032Z ARB generator.
One can set the generator output amplitude units in Volts pp, Volts rms or dBm. Of course I want to use the correct units in TestController. A Vpp is different from a Vrms, en certainly different from a dBm :). So the amplitude unit in TC has to change with the Vpp / Vrms / dBm setting of the generator.

To make this possible I (mis)used the Mode function, and created different modes for Vpp, Vrms and dBm (for both CH1 and CH2)

The code I am using now:
Code: [Select]
; Possible modes for Channel 1: CH1_VPP, CH1_VRMS, CH1_DBM
; Possible modes for Channel 2: CH2_VPP, CH2_VRMS, CH2_DBM

#value Freq1 Hz SI
#value Ampl1_pp Vpp SI CH1_VPP
#value Ampl1_rms Vrms SI CH1_VRMS
#value Ampl1_dB dBm D3 CH1_DBM
#value Offset1 V SI

#value Freq2 Hz SI
#value Ampl2_pp Vpp SI CH2_VPP
#value Ampl2_rms Vrms SI CH2_VRMS
#value Ampl2_dB dBm D3 CH2_DBM
#value Offset2 V SI



; :SOUR1:FREQ?      Query the waveform frequency of CH1
; :SOUR1:VOLT?      Query the waveform amplitude of CH1
; :SOUR1:VOLT:OFFS? Query the offset voltage of CH1
; :SOUR1:VOLT:UNIT? Query the amplitude unit of CH1 (VPP|VRMS|DBM)

#askValues :SOUR1:VOLT:UNIT?;:SOUR2:VOLT:UNIT?;:SOUR1:FREQ?;:SOUR1:VOLT?;:SOUR1:VOLT:OFFS?;:SOUR2:FREQ?;:SOUR2:VOLT?;:SOUR2:VOLT:OFFS?;
#askValuesReadFormat xxffffff

#askMode :SOUR1:VOLT:UNIT?;:SOUR2:VOLT:UNIT?
#askModeMathFormat "CH1_"+getElement(value,0)+" CH2_"+getElement(value,1)
#modeFromValue "CH1_"+getElement(value,0)+" CH2_"+getElement(value,1)


; ---Setup Menu---
#cmdSetup combobox Amplitude_unit AMPL_1
:read: :SOUR1:VOLT:UNIT?
:write: :SOUR1:VOLT:UNIT #
Vpp VPP
Vrms VRMS
dBm DBM


This is working fine. Now TC selects the correct #value line, with the correct name and unit.
But I have to use #modeFromValue to read the modes. It would be better to set the modes directly when setting the output unit in the Setup Menu.

- Is it possible to set a mode from the Setup Menu?
- Is there a better way to accomplish the same thing that I have overlooked?

Thanks & regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on September 18, 2023, 06:11:12 pm
HPAK 34401 with AR488 USB GPIB-Adapter

I found the 34401 is supported using serial only. I tried to copy and edit the definition to use the AR488 to drive the instrument. Kinda works.
Problems I encountered:

- Whenever it connects to the instrument, an error is reported by the 34401
- Sometimes the instrument gets stuck

After that I ran out of time and have neither debugged the USB connection nor the GPIB bus. yet.

Anyone already used a 34401 with GPIB reliably?

Edit: Using 2.36: Seems to be related with SCPI commands used that are not in the GPIB command set. I can now use GPIB with the AR488 and it seems to work as designed despite the errors on connect and shutdown of the program.
One more thing I noticed: Changing the devices after program start and pressing the reconnect renders the application in an unusable state. After shutdown and restart, the program works with the new parameters/devices.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 24, 2023, 07:20:49 am
When using "block" driver I have some issues, a few questions:

1. I need to send first a specific byteSequence to force device to respond on a pool byteSequence.
How can I do that?
#initCmd works only after device Found, which is a result of the pool definition, so it does not help.

The first command to a device is *idn?, in the block driver it is the #verifyDevice command, but it is not used for async devices.

2. If I need to perform a fixed delay after the specific byteSequence, before starting the pool, how is it possible?
#cmdDelayTime and #readingDelay are not related here - do not give me a result.

You might be able to use [ms] (i.e. [500] for 500ms) as a command.


3. If I need to make a few different pools (with different byteSequences) and then parse them all to have all variables to parse their values.
How this can be made?

I am not sure what you mean by this.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 24, 2023, 07:25:53 am
- Is it possible to set a mode from the Setup Menu?

No, everything that requires changing of columns must be done from "mode".
This is also the reason the "mode" functions are blocked while logging (Columns cannot change while logging).

- Is there a better way to accomplish the same thing that I have overlooked?

I do not believe so.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 24, 2023, 07:28:57 am
One more thing I noticed: Changing the devices after program start and pressing the reconnect renders the application in an unusable state. After shutdown and restart, the program works with the new parameters/devices.

I have not seen this, can you specify exactly how you get that unstable state?
I might be something I forget to shut down when doing a reconnect, but I need some pointers to find it.
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on September 26, 2023, 08:55:23 am
One more thing I noticed: Changing the devices after program start and pressing the reconnect renders the application in an unusable state. After shutdown and restart, the program works with the new parameters/devices.

I have not seen this, can you specify exactly how you get that unstable state?
I might be something I forget to shut down when doing a reconnect, but I need some pointers to find it.

I will try to reproduce and log the communication. Maybe this will shed some light.

I found the difference between serial and GPIB to be these commands that are sent to the 34401A:

; Initial commands to meter when establishing connection
#initCmd SYST:REM;[500]

; Final command to meter before breaking connection
#finalCmd system:local

In serial mode this is required, in GPIB this is an unrecognized command. How can I omit/include these commands with respect to the chosen interface?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on September 28, 2023, 07:09:22 am
I found the difference between serial and GPIB to be these commands that are sent to the 34401A:

; Initial commands to meter when establishing connection
#initCmd SYST:REM;[500]

; Final command to meter before breaking connection
#finalCmd system:local

In serial mode this is required, in GPIB this is an unrecognized command. How can I omit/include these commands with respect to the chosen interface?


This is on the advanced side, you have to define a command and then use it:

#scpiCmd MyInit #pgm#
if (portType!="GPIB")
  deviceWrite(handle,"SYST:REM;[500]");
endif;

This command can then be used:
 #initCmd *RST;MyInit;

There is some documentation here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Protocol_is_nearly_SCPI,_but_there_is_a_few_issues_(SCPIx) (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Protocol_is_nearly_SCPI,_but_there_is_a_few_issues_(SCPIx))

Title: Re: Program that can log from many multimeters.
Post by: dl6lr on September 30, 2023, 08:12:18 pm
Now this works with either serial or GPIB connection to my 34401A!  :-+

I could retest the strange behaviour and with debug I found some errors.
My configuration is: 2 34401, one with serial on COM1 (not enabled), one with AR488 GPIB on COM20 (enabled). The GPIB is connected.
[attachimg=2]

I start Testcontroller and it detects the 34401A at GPIB address 22. Everything is fine. I issue the command DISP:TEXT "WORKING" to check the GPIB is OK.
Now I go to the "Load devices" tab and press "Reconnect" (n o changes made). I get some erros in the console and the thread for COM20 with the GPIB adapter is getting closed. The GUI is grayed out.

See this console output:
Code: [Select]
c:\g\TestController\2.36>testControllerDebug.bat
Starting
;; jSerialComm version: 2.9.1
;; COM20: Set params: 115200
;; Start thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; COM20: Tx: <++addr 22.> 2B 2B 61 64 64 72 20 32 32 0A
;; COM20: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM20: Tx: <++read_tmo_ms 9950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 39 39 35 30 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: <HEWLETT-PACKARD,34401A,0,11-5-3> 48 45 57 4C 45 54 54 2D 50 41 43 4B 41 52 44 2C 33 34 34 30 31 41 2C 30 2C 31 31 2D 35 2D 33
;; AR488 A:22: Tx <SerialInit>
;; AR488 A:22: Script start
;; AR488 A:22: Script end <>
;; Found Hewlett-Packard 34401A on AR488 A:22
;; HP34401A: Tx <FUNC?>
;; COM20: Tx: <FUNC?.> 46 55 4E 43 3F 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: <"VOLT"> 22 56 4F 4C 54 22
;; HP34401A: Rx <"VOLT">
DISP:TEXT "WORKING"
;; HP34401A: Tx <DISP:TEXT "WORKING">
;; COM20: Tx: <DISP:TEXT "WORKING".> 44 49 53 50 3A 54 45 58 54 20 22 57 4F 52 4B 49 4E 47 22 0A
;; COM20: Close
;; HP34401A: Tx <SerialExit>
java.lang.NullPointerException
        at dk.hkj.shared.SharedInterface.isOpen(SharedInterface.java:272)
        at dk.hkj.comm.GpibInterface.isOpen(GpibInterface.java:89)
        at dk.hkj.devices.DeviceSCPIx$TranslatingCommInterface.write(DeviceSCPIx.java:95)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:316)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:339)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:83)
        at dk.hkj.devices.DeviceSCPI.close(DeviceSCPI.java:154)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1638)
Thread for HP34401A
;; jSerialComm version: 2.9.1
java.lang.NullPointerException
        at dk.hkj.shared.SharedInterface.close(SharedInterface.java:238)
        at dk.hkj.comm.GpibInterface.close(GpibInterface.java:38)
        at dk.hkj.comm.LayerInterface.close(LayerInterface.java:40)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1639)
;; COM20: Set params: 115200
;; Start thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; COM20: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: timeout
;; AR488 A:22 Device HEWLETT-PACKARD,34401A, do not match: null
;; COM20: Close
;; Stopping thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Close
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on September 30, 2023, 08:16:10 pm
Here is the expanded file for the 34401A with either serial or GPIB.

Title: Re: Program that can log from many multimeters.
Post by: Josec on October 05, 2023, 07:56:21 am
I am trying to use a testcontroller to log readings of two multimeters, Fluke 8845A and HP3455A over GPIB. The interface is an AR488 (works and communicates with all my instruments).
I can't use the Fluke 8845A with GPIB. Using a socket works but stops logging readings after 3 minutes and happens independently of the logging interval. Also the values in the table don’t align with the values in the display (See photo).
My question is why is that happening? How difficult would it be to add support for GPIB for the fluke multimeter, and is there a driver for the HP3455A or can one be developed easily (I appreciate it is quite old, but I am older)?
I would appreciate any suggestions or solutions.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on October 05, 2023, 10:29:37 am
Hi Josec,

I am using my Fluke 8846A without any problems, connecting via the Ethernet interface. So your 8845A should work too...
With the 8845A / 8846A definitions, you can (and must) change settings on the meter itself. So make sure the meter settings are appropriate for your measurement.

Note that on the Ethernet interface the 8845A / 8846A is only supporting its native 8846A language (=SCPI).
But on the GPIB interface it also supports a Fluke 45 emulation and a Fluke 8840 / 8842 emulation.

So, if you are persistent in using GPIB, you could also try the Fluke 45 definition. Or the Fluke 8840A definition I am writing right now, and will post when done. :-)

In fact that is the best solution: write your own definitions, and share them, so others can use them too. After all, this is community supported software....

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: Josec on October 06, 2023, 09:30:08 am
Thanks Gertjan for your reply, unfortunately it didn’t fix the issue. I checked the network settings of the Fluke, and it all seems to be OK, all the other settings are just default settings. If you have an instrument that is working would you be able to give me some guidance on what to change?

I tried to change to Fluke 45 but the testcontroller support is just for  serial not the GPIB.

And in amongst all that I got the HP3455A working with the HP3478A driver over GPIB, so far it has been logging readings for more than 10 hours, I can get a graph, histograms and table, I didn't do a lot of testing, but if I change the function (AC, DC ohms) it does what I need.

I also tried to run the Fluke (over Ethernet) and HP together, the fluke takes over and the HP is not showing any readings.

I would really appreciate if you can help me with any more information regarding the Fluke 8845A such as  sharing your settings.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on October 06, 2023, 11:48:18 am
Hi Josec,

Congratulations with getting your HP 3455A working. Good to know it is using the same commands as the HP 3478A.

"the fluke takes over" sounds strange....
First step is to run TestController in debug mode, so you can see what is going on. With only the 8845A selected in the "load devices" tab, to make it easy to see what is going on. If you can't find the problem, post the debug log.

There is not much to set for the 8845A. In TestController, on the "Load Devices" tab, Type is Socket, and Address is the IP address of the 8845A.
The 8845A should be set to LAN: push Instrument Setup -> Port IF -> LAN (should be highlighted). If LAN is not highlighted: push Instrument Setup -> Port IF -> Select Port -> LAN.

Most probable is that the IP address is not correct. If you are using DHCP, the meter could get another address each time it connects to your network. Solutions: give it a fixed address in the DHCP table in your router, of a fixed address in the 8845A (outside of your DHCP range)

You can check the IP address on the meter: push Instrument Setup -> Port IF -> LAN (should be highlighted) -> IP-ADDR

Try to ping the 8845A from the TestController computer to check if the network connection is OK


In case you want to try the 8840A emulation using GPIB, I  have attached my 8840A definition below. This is not a release version. It is fully functional, but needs more  testing & debugging.
Fluke8840A.zip (https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke8840A.zip)

good luck & regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2023, 12:18:44 pm
I could retest the strange behaviour and with debug I found some errors.

I am looking at it.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2023, 12:20:23 pm
Here is the expanded file for the 34401A with either serial or GPIB.

It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2023, 12:23:55 pm
I am trying to use a testcontroller to log readings of two multimeters, Fluke 8845A and HP3455A over GPIB. The interface is an AR488 (works and communicates with all my instruments).
I can't use the Fluke 8845A with GPIB. Using a socket works but stops logging readings after 3 minutes and happens independently of the logging interval. Also the values in the table don’t align with the values in the display (See photo).
My question is why is that happening? How difficult would it be to add support for GPIB for the fluke multimeter, and is there a driver for the HP3455A or can one be developed easily (I appreciate it is quite old, but I am older)?
I would appreciate any suggestions or solutions.

I have no idea why it stops after 3 minutes.

Added GPIB is generally easy:
First step is to add it to this line in the definition: #port com gpib
Then check it out.
Some devices has small differences in supported commands depending on interface, I posted something about this a few posts back and the just posted 34401A definition file includes a example.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 06, 2023, 12:25:31 pm
In case you want to try the 8840A emulation using GPIB, I  have attached my 8840A definition below. This is not a release version. It is fully functional, but needs more  testing & debugging.
Fluke8840A.zip (https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke8840A.zip)

I look forwards to you posting the release version.
Title: Re: Program that can log from many multimeters.
Post by: Josec on October 06, 2023, 10:07:05 pm
Gertjan:
Thanks; your driver works, I can log and read the values in the table, also the log time limit (3 minutes) is gone).
I couple of comments, the reading is just 5 digits, may be the emulation mode limit? also at start up log and current_values are blank, after you select "Mode" and DC everything works. I include picture of the debugging window of the 8840A start up, log and Current_values reading.
If you need more information please let me know.

Best Regards and thanks again.
Jose
Title: Re: Program that can log from many multimeters.
Post by: Josec on October 06, 2023, 10:21:41 pm
HKJ:

Thankyou for create and support this program.
I think the problem with the 3 minutes is related to the initialization file on the part

"; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues FETCH1?"

I have no idea what to add there, but the FETCH3? command didn't work, with FETCH1? I get hundred of readings.
 I have attached the the log file of the initialization screen and the log screen, you may have a better idea of what is happening.
The log is quite different to the log screen of Gertjan 8840 emulation in my post before.

Regards
Jose
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2023, 11:18:45 am
"; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues FETCH1?"

I have no idea what to add there, but the FETCH3? command didn't work, with FETCH1? I get hundred of readings.
 I have attached the the log file of the initialization screen and the log screen, you may have a better idea of what is happening.
The log is quite different to the log screen of Gertjan 8840 emulation in my post before.

You may try a READ? command, you might have to add some trigger settings for that (That is done after the #prepareSample command in the definitions).

Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 07, 2023, 01:07:07 pm
V2.38 is up
This is a fairly minor update with a few new devices and latest version of jSerialComm.
   Fixed (I hope): A bug in GPIB when reconnecting.
   Added: HP/Agilent 34401A support for GPIB (Thanks dl6lr)
   Changed: jSerialComm updated to V2.10.3
   Added: Philips PM2811 30V-10A, Fluke PM2811 30V-10A, Philips PM2811 60V-5A, Fluke PM2811 60V-5A power supplies (Thanks Gertjan)
   Added: Mecmesin BFG 10, BFG 1000, BFG 200, BFG 2500, BFG 50, BFG 500 Basic Force Gauge (Thanks jmurray)
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on October 07, 2023, 09:09:26 pm
   Fixed (I hope): A bug in GPIB when reconnecting.
   Added: HP/Agilent 34401A support for GPIB (Thanks dl6lr)

I think the reconnect now works better, it does not throw exceptions. However it is still not working properly: After reconnect it sends "++default" to the AR488, so it is reset to its default values, that is i.e. address 1. But the meter is on address 22, and it does not set its parameters again, so it tries to identify the 34401A but it does not send any data to address 22.

Code: [Select]
c:\g\TestController\2.38>testControllerDebug.bat
Starting
;; jSerialComm version: 2.10.3
;; COM20: Set params: 115200
;; Start thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; COM20: Tx: <++addr 22.> 2B 2B 61 64 64 72 20 32 32 0A
;; COM20: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM20: Tx: <++read_tmo_ms 9950.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 39 39 35 30 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: <HEWLETT-PACKARD,34401A,0,11-5-3> 48 45 57 4C 45 54 54 2D 50 41 43 4B 41 52 44 2C 33 34 34 30 31 41 2C 30 2C 31 31 2D 35 2D 33
;; AR488 A:22: Tx <SerialInit>
;; AR488 A:22: Script start
;; AR488 A:22: Script end <>
;; Found Hewlett-Packard 34401A on AR488 A:22
;; HP34401A: Tx <FUNC?>
;; COM20: Tx: <FUNC?.> 46 55 4E 43 3F 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: <"VOLT"> 22 56 4F 4C 54 22
;; HP34401A: Rx <"VOLT">
*CLS
;; HP34401A: Tx <*CLS>
;; COM20: Tx: <*CLS.> 2A 43 4C 53 0A
;; COM20: Close
;; HP34401A: Tx <SerialExit>
;; jSerialComm version: 2.10.3
;; COM20: Set params: 115200
;; Start thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Tx: <++default.> 2B 2B 64 65 66 61 75 6C 74 0A
;; COM20: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM20: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM20: Rx: timeout
;; AR488 A:22 Device HEWLETT-PACKARD,34401A, do not match: null
;; COM20: Close
;; Stopping thread for: AR488 A:22 - Hewlett-Packard 34401A
;; COM20: Close

I am still uncomfortable with my 34401A setup with GPIB. It does not switch back to local mode, I have tried with [LOC] in exitCmd, but this seems to be ignored in SCPIx driver. It works when using ++loc with a terminal session to the AR488.

Furthermore I am struggeling with writing a driver for Prologix USB GPIB/AR488 and a HP3437A system voltmeter. It uses binary commands. I can easily access the instrument using a terminal program, but I am failing in writing the definitions for the TestController (inspired by HP3478A definition):

I have to set EOI on the last character and do not append any termination characters to send a single "B" character for binary query. Using #eol eoi and #eolRx eoi does not seem to do anything with the GPIB interface. Maybe the definitions are not effective in Ascii driver?

Trying to use an ugly hack to test at least something and setup the GPIB adapter with #initCmd ++eoi 1; ++eos 3 logs these commands in debug, but does not send them out. Using #initCmd tx ++eoi 1; tx ++eos 3; sends <dle>+<dle>+eoi 1 to the adapter, so ++eoi 1 gets send to the instrument. Using txBin does not seem to work either...

Just a question: The source is not available anywhere (github?) to have a look into?
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on October 08, 2023, 01:56:34 pm
It does not switch back to local mode, I have tried with [LOC] in exitCmd, but this seems to be ignored in SCPIx driver.

I encountered the same problem while writing other definitions, also connecting over GPIB. Solution was to add a pause to the #finalCmd.
In your definition this would  would look like: #finalCmd SerialExit;[1000];
My explanation is that otherwise the connection is broken before the meter had the time to receive the last command.

Do try to use [LOC], as it is the standard GPIB command for "Go to Local". But use it in the #finalCmd line, not in a #cmdSetup line
(Everything in the #cmdSetup command will be sent directly to the meter, everything in the #finalCmd line is interpreted by TestController)

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on October 08, 2023, 08:29:45 pm
It does not switch back to local mode, I have tried with [LOC] in exitCmd, but this seems to be ignored in SCPIx driver.

I encountered the same problem while writing other definitions, also connecting over GPIB. Solution was to add a pause to the #finalCmd.
In your definition this would  would look like: #finalCmd SerialExit;[1000];
My explanation is that otherwise the connection is broken before the meter had the time to receive the last command.

Do try to use [LOC], as it is the standard GPIB command for "Go to Local". But use it in the #finalCmd line, not in a #cmdSetup line
(Everything in the #cmdSetup command will be sent directly to the meter, everything in the #finalCmd line is interpreted by TestController)

Regards, Gertjan.

Yes, I tried both. Still not working. [LOC] does never issue the ++loc command to the Prologix compatible AR488. I assume this [LOC] does not work in SCPIx mode. Delaying the exit does not work either. I tried to use Ascii mode in the driver and then the GPIB even works worse. It i.e. does not address the instrument any more, in fact it never sends a ++addr 22 when trying to talk to instrument 22. I am a little bit confused.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on October 09, 2023, 03:31:53 pm
Hi HKJ,

I looked into the issue of the HP 34401A not going back to local control after terminating TestController.
Fully expecting that this was a matter of just better reading the manual :). But that was not (or partially) the case...

It turns out that the 34401A does not have a built in SCPI command to control remote and local.  You have to use a lower level GPIB command related to the REN line in order to do this.

And indeed, testing with a terminal program, the 34401A responds fine to the ++loc command, and goes to local.

In TestController, I expect when using [LOC], that a ++loc is sent to the meter (and intercepted by the GPIB controller). But this is not the case. Nothing is sent. And nothing appears in the debug log...

I wrote a as small as possible definition for testing, and it seems that none of the TC GPIB commands are working. (I tried  [CLR], [LLO] and  [LOC] ). Example: #finalCmd [LOC];  or  #finalCmd [LOC];[500];
So these findings are in line with the post of dl6lr above...

Can these commands only be used with the ASCII driver, or is something broken? I was testing with a AR488.

regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: Josec on October 09, 2023, 10:48:05 pm
May be testcontroller should issue ++loc via a  disconnect button in "Load devices; Disconnect"? in similar fashion to disconnect and remove an external USB device in the computer before remove.
I think disconnect shouldn't be part of the definition.
By the way I have the Fluke 8845A working with socket, and getting close to have the GPIB working too. Thank for all the help I received.
Jose
Title: Re: Program that can log from many multimeters.
Post by: Rax on October 10, 2023, 03:32:19 am
Having  embarked on another push to connect my instruments with a computer, and at the recommendation of an old member here, I'm trying to see if I can connect my 34401A via RS232 to my Win11 laptop.

After some good time spent on the website, I almost accidentally found the download link (shouldn't it be right on top of a page, namely where installation instructions are?...), and have started tinkering with it.

This must've been covered before, but how do I find out what the "address" should be for the HP?... I'd really appreciate some guidance. Thank you!
Title: Re: Program that can log from many multimeters.
Post by: alligatorblues on October 10, 2023, 03:38:05 am
I just thought I'd interject that MS Excel can do all the logging, formatting and charting. It also has a nice set of statistical, algebraic and arithematical capabilities.
Title: Re: Program that can log from many multimeters.
Post by: dl6lr on October 10, 2023, 06:30:47 am
This must've been covered before, but how do I find out what the "address" should be for the HP?... I'd really appreciate some guidance. Thank you!

With serial devices you use the com port as address.
Title: Re: Program that can log from many multimeters.
Post by: Rax on October 10, 2023, 12:42:05 pm
With serial devices you use the com port as address.
True, but I had no clear indication which one (of like five) is being used. This until I figured to watch them in Device Manager while connecting the meter via USB. When it also became evident it was easier to identify it than I thought, as "COM7" - the culprit - also had "USB" attached to it...
I was able to connect to it last night, and collected some readings, remote controlled the meter also a bit. Very cool, beginning to be a happy camper!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 11, 2023, 03:19:09 pm
Can these commands only be used with the ASCII driver, or is something broken? I was testing with a AR488.

These command are only supported by the ASCII driver, I will look at adding them SCPIx.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 11, 2023, 03:20:48 pm
I think disconnect shouldn't be part of the definition.

I disagree, when I close TC I want the device to be accessible locally without needing some special key sequence.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 11, 2023, 03:22:25 pm
This must've been covered before, but how do I find out what the "address" should be for the HP?... I'd really appreciate some guidance.

With serial devices you can right click with the mouse when editing the address field and all defined serial ports will be listed. Depending on the actual serial port more information may also be listed.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on October 11, 2023, 03:54:19 pm
Hi HKJ,

These command are only supported by the ASCII driver, I will look at adding them SCPIx.

It would be very nice to have these GPIB controll commands in the SCPIx driver.  The very popular Agilent/HP 34401A is an example that needs them....
So please do!


With serial devices you can right click with the mouse when editing the address field and all defined serial ports will be listed. Depending on the actual serial port more information may also be listed.

Thank you for this bit of very useful information! I tried it immediately, and it works like a charm... Not longer needed to look in device manager :).
I checked, and indeed you documented this in the TestController documentation. So I need to study your documentation even more :).

Regards, Gertjan.
Title: Re: Program that can log from many multimeters.
Post by: DrSteve on October 11, 2023, 06:15:23 pm
Hi,

I have just started trying this software and I am mostly looking at using existing AimTTi power supplies and loads. I have managed to adapt the QPX1200P to use with a QPX600DP, and after a few tweaks, it appears to be working (for now).

I am not having as much luck with the AimTTi LD400P. I have the very basics, but it isn't pretty. Has anyone used that kit with this software?
The biggest issue is that I can do a parameter sweep on the QPX600DP output voltage, but if I try to configure the LD400P for a sweep, the "idle" box is red no matter what value I enter.
Is there something I need to put in the device file for the LD400P to get it to accept an "idle" value?

Thanks

Steve
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 11, 2023, 06:56:32 pm
I have just started trying this software and I am mostly looking at using existing AimTTi power supplies and loads. I have managed to adapt the QPX1200P to use with a QPX600DP, and after a few tweaks, it appears to be working (for now).

Please post it when you have tested it, then I can include it in TC.

I am not having as much luck with the AimTTi LD400P. I have the very basics, but it isn't pretty. Has anyone used that kit with this software?
The biggest issue is that I can do a parameter sweep on the QPX600DP output voltage, but if I try to configure the LD400P for a sweep, the "idle" box is red no matter what value I enter.
Is there something I need to put in the device file for the LD400P to get it to accept an "idle" value?

When making new device files it is a good idea to use debug mode (Use the debug batch file to start TC), that way you can see the communication.

Generally it is important that TC reads all output from the device, if you only send a command and do not read the answer it may interfere with the next command. Because TC use multiple thread to communicate with a device it is basically guaranteed to interfere in some situations. 

Title: Re: Program that can log from many multimeters.
Post by: adso85swe on October 28, 2023, 10:12:04 am
I have played around with the software a bit, but not enough to know all the functions yet. For all you experienced users, or for the developer, does the following functionality exist or not:

Lets say that I would like to do a continuous logging for a long time, let’s say one year. Is it possible for the software to automatically do backup saves of the log file to the disc with a predefined interval, let’s say every day or every week? This would be very useful in case you want to secure the data in case of computer malfunctions.

Moreover, a nice tweak to this would be to log and being able to automatically save the log after a predefined interval, let’s say after a week, and then immediately start another fresh log automatically with the same settings, and have it saved after another week again, and continue like that. In this way the data would be saved in chunks of weekly basis instead of having a continuously growing file size over the full year. It would be nice to be able to save the files with the starting date, or with a running number, eg w01, w02, w03, and so on.

If these possibilities does not exist, it would definitely be on my wish list.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2023, 11:16:39 am
Lets say that I would like to do a continuous logging for a long time, let’s say one year. Is it possible for the software to automatically do backup saves of the log file to the disc with a predefined interval, let’s say every day or every week? This would be very useful in case you want to secure the data in case of computer malfunctions.

In the advanced log you can select logging direct to disk, this will directly log all samples to disk. The in-memory samples will at the start be all samples, but at some time it will switch to every other samples (Reducing all sampled data). TC will continue to record even more sparse in-memory log to avoid running out of memory.

Moreover, a nice tweak to this would be to log and being able to automatically save the log after a predefined interval, let’s say after a week, and then immediately start another fresh log automatically with the same settings, and have it saved after another week again, and continue like that. In this way the data would be saved in chunks of weekly basis instead of having a continuously growing file size over the full year. It would be nice to be able to save the files with the starting date, or with a running number, eg w01, w02, w03, and so on.

TC do not have that function, but it can easily be done with scripting in TC, including naming the files with a sequence number or a date.
This example will save every 10 seconds and then restart the log:

#while 1
#log 1
#delay 10
#log 0
#savetable ("c:\\data\\log"+date())
#endwhile

Place it in the "log" window and press "Run", it will log from all connected devices

If you want to format the date different check here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Date_&_time_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Date_&_time_functions)


To save with a running number use this:

=var n=1;
#while 1
#log 1
#delay 10
#log 0
#savetable ("c:\\data\\log"+n)
=n=n+1
#endwhile


To format with leading zeros use (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatInt (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#formatInt)):
#savetable ("c:\\data\\log"+formatInt(n,2,2))

To get help for the different commands type them in the command line and help will be show in the help window below it. With the #log command you need to type a space after it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2023, 11:41:48 am
A note about big data samples.

The largest sample I have is 5.5 million data points with 3 devices, it takes some time to load (about 10 seconds on my machine), there is no degeneration on the chart due to the data size.
If the amount of data slows down TC or it needs to be reduces for other programs, use the export function, it has a couple of different data reduction functions that can be applied:

(https://lygte-info.dk/pic/Projects/TestController/DocExport/ReduceByAveraging.png)

See more here: https://lygte-info.dk/project/TestControllerPopupExport%20UK.html (https://lygte-info.dk/project/TestControllerPopupExport%20UK.html)

Export uses same CSV or TAB formats as normal save, but can change date formats (Needed for Excel) and limit digits on number formats. It can also exclude some columns and change column names.
Title: Re: Program that can log from many multimeters.
Post by: robint on October 28, 2023, 02:37:28 pm
I just thought I'd interject that MS Excel can do all the logging, formatting and charting. It also has a nice set of statistical, algebraic and arithematical capabilities.

Indeed, but it cant do this live, you have to load a datalog from a usb or some other data file.  If only it would take data live through usb or socket

Anyone know?
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on October 28, 2023, 05:16:41 pm
Hi,

First of all, i really like Test Controller, because it offers a very nice and easy to use interface for quick measurements and parameter sweeps.
So thanks for the hard work you all put into the software.

I am trying to write a definition for my Voltcraft VC870.
Because the original cable was a HID cable and did not work with test controller (using the brymen example), i quickly hacked a esp8266 based serial to wifi bridge for it.

The VC870 sends 23byte of ascii coded data every 500ms in this format:

https://asset.conrad.com/media10/add/160267/c1/-/en/000124603IN01/informacije-124603-rocni-multimeter-digitalni-voltcraft-vc870-kalibracija-narejena-po-delovnih-standardih-cat-iii-1000-v-cat-iv-600-v-s.pdf (https://asset.conrad.com/media10/add/160267/c1/-/en/000124603IN01/informacije-124603-rocni-multimeter-digitalni-voltcraft-vc870-kalibracija-narejena-po-delovnih-standardih-cat-iii-1000-v-cat-iv-600-v-s.pdf)

So i used the AsciiBlock driver to read data from it, and it is working fine.
Code: [Select]
#metadef

#meta

#idString Voltcraft, VC870,
#name Voltcraft VC870
#handle VC870
#driver AsciiBlock
#port 23
#readingDelay 5


#rxStart
#rxLength 23
#rxEnd \r\n
#rxFormat ([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{5})([0-9]{5})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})([0-9]{1})

#askValues Values?

#askValuesMathFormat makeDouble(getElement(value, 3),0,3)
#value Voltage V D1

I get the display reading and the bytes for the mode (byte 0 and 1) and range (byte 2), but can't figure out, how to parse the mode and range and add them to the value.
I cant find anything for it in the documentation and in any of the existing device definitions.
I think i need some kind of table to translate the bytes into multiplication values, and to strings.

Does someone have an idea?

I also adde the device definition to this message.

Thank You!



Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2023, 05:37:36 pm
I am trying to write a definition for my Voltcraft VC870.
Because the original cable was a HID cable and did not work with test controller (using the brymen example), i quickly hacked a esp8266 based serial to wifi bridge for it.

When everything works I would like to add it to my projects page: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html)

So i used the AsciiBlock driver to read data from it, and it is working fine.

It is not the best driver for it. Try https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol)
It may be a bit more complicated to get into, but it is designed to handle DMM's and their quirks, only issue is that it only support the readout of one value.
My general opinion on dual display DMM's is that they are great, but for logging I prefer only to use one value, this gets the fastest logging speed. I you need to log two values, use two DMM's.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 28, 2023, 05:46:01 pm
I just thought I'd interject that MS Excel can do all the logging, formatting and charting. It also has a nice set of statistical, algebraic and arithematical capabilities.

Indeed, but it cant do this live, you have to load a datalog from a usb or some other data file.  If only it would take data live through usb or socket

Anyone know?

I have seen some options/software to log directly into excel for a few devices. Generally I do not see it as very useful, Excel may be able to do a lot, but it is NOT designed to handle logging of data.
I do prefer specialized logging software and generally me own, the predecessor to TestController has worked for more than 10 years and MANY hours of logging on a lot of different devices (All my testing on my website is done with it), but I wanted something with a GUI and easier to use, the result was TestController.
I have tried both Keysight and Keithley software, they are very advanced, can do a lot (But not always what I need), requires a good Windows computer, licensing and only work with one brand of devices.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on October 30, 2023, 08:16:37 am
I am trying to write a definition for my Voltcraft VC870.
Because the original cable was a HID cable and did not work with test controller (using the brymen example), i quickly hacked a esp8266 based serial to wifi bridge for it.

When everything works I would like to add it to my projects page: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html)

So i used the AsciiBlock driver to read data from it, and it is working fine.

It is not the best driver for it. Try https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol)
It may be a bit more complicated to get into, but it is designed to handle DMM's and their quirks, only issue is that it only support the readout of one value.
My general opinion on dual display DMM's is that they are great, but for logging I prefer only to use one value, this gets the fastest logging speed. I you need to log two values, use two DMM's.

Hi,
thanks for the fast reply.
Does DMM2 support TCP communication?
Because when i change the driver to DMM2 i lose all debug information.
The only thing written in the debug window is:
Code: [Select]
Starting
;; jSerialComm version: 2.10.3

Thats why i used AsciiBlock in the first place.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on October 31, 2023, 01:58:15 pm

thanks for the fast reply.
Does DMM2 support TCP communication?
Because when i change the driver to DMM2 i lose all debug information.
The only thing written in the debug window is:
Code: [Select]
Starting
;; jSerialComm version: 2.10.3

Thats why i used AsciiBlock in the first place.

DMM2 do not support socket, but I will look at adding it.

In the meantime you can reprogram your micro for serial interface and work on the definition.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on November 01, 2023, 11:42:30 pm
Thank You.
I am really looking forward to use the VC870 via TCP directly in Test Controller.

Following your suggestion i tried com0com and com0tcp to emulate a com port and tunnel the TCP data into it.
It's actually working quite well.

I finished the definition for the VC870 and tested it as good as i can with my equipment.
I'm fairly confident, that the scales are correct for all the modes except for °C and %, which i can not test.

By the way, i also added my Rigol MSO5104 to the Keysight DSOX.txt file.
Code: [Select]
#metadef
#idstring RIGOL TECHNOLOGIES,MSO5104
#name Rigol MSO5104
#replaceText MaxCH 4
#replaceText MaxBW 350M
#replaceText MaxSample 8..0G
#replaceText :MEAS:VAV? :MEAS:VAVG?
#sections QuadMode QuadSetup QuadInterface ReadStandard

The only difference was the VAV / VAVG command.
This should also work for the whole Rigol MSOXXXX line of products.

Is it possible to grab a complete waveform from the Scope by any chance?


Greetings.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on November 02, 2023, 08:53:02 am
Hi HKJ,

I wrote a definition for the Fluke 8840A Digital Multimeter.

(https://www.miedema.dyndns.org/co/2023/fluke8840a/IMG_1825__Fluke_8840A_front-600pix.jpg)
IMG 1825  Fluke 8840A front-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/fluke8840a/IMG_1825__Fluke_8840A_front-2000pix.jpg)

These still popular meters have been produced for 20 years, starting around 1985.

Early versions of the 8840A did not have a GPIB command for identification. So, to be compatible with these early 8840As, by default this definition does not verify the model number.
But for later versions (ca post 1990) one can enable model identification by removing the semicolon at the start of this line: "; #verifyDevice "8840A" model?".

As usual, more info in the header of the definition. Detailed info on all the different GPIB board versions in this post: Fluke 8840A/AF GPIB board (https://www.eevblog.com/forum/testgear/fluke-8840aaf-gpib-board/msg4146250/#msg4146250).


A screenshot of the menus:

(https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke-8840A-screenshot-600pix.png)
Fluke 8840A screenshot-1000pix.png (https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke-8840A-screenshot-1000pix.png)

The menu structure is inspired on HP 34401A menu by WA
I added the “Display mode: Normal / Blank” Menu item because the manual states that readings in the fast mode are more accurate with the display blanked.
Trigger mode and display mode options are explained in pop-up tips.

Beside the menus the screenshot is showing the frequency response of the 8840A.  3dB down at 450kHz is not bad for a meter designed in the mid-eighties!
The rest of the 8840A is very solid too: The reference is the famous SZA263 (also used in the Fluke 732A and early 732B Volt standards). There are very nice laser etched precision resistors on ceramic too. These meters are very stable. My meter is still in spec after a last cal in 1997...

The same frequency response in the standard format for your Multimeter frequency response (https://lygte-info.dk/info/DMMFrequencyResponse%20UK.html) web page:

(https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke-8840A_freq-600pix.png)
Fluke 8840A freq-800x400pix.png (https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke-8840A_freq-800x400pix.png)

As usual, you are welcome to use my pictures for your website.

Please find the definition file here: Fluke8840A.zip (https://www.miedema.dyndns.org/co/2023/fluke8840a/Fluke8840A.zip)

Best regards, Gertjan.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 05, 2023, 08:11:33 am
By the way, i also added my Rigol MSO5104 to the Keysight DSOX.txt file.

This will be included in the next release.

Is it possible to grab a complete waveform from the Scope by any chance?

Not while logging, but you can download data from a device.
You can see some examples on it in the Keysight handheld DMM definitions, there it is used to fetch log data. On a few devices TC can also download the screen.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 05, 2023, 08:26:17 am
I wrote a definition for the Fluke 8840A Digital Multimeter.

This will be included in the next release.


The same frequency response in the standard format for your Multimeter frequency response (https://lygte-info.dk/info/DMMFrequencyResponse%20UK.html) web page:

I have already included it on the page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 05, 2023, 01:12:07 pm
I'm fairly confident, that the scales are correct for all the modes except for °C and %, which i can not test.

If you short the input a meter will usually show ambient temperature, you can use that for testing °C

I have written a bit about multimeters and thermocouples here: https://lygte-info.dk/info/DMMThermocouplers%20UK.html (https://lygte-info.dk/info/DMMThermocouplers%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on November 05, 2023, 05:34:20 pm
Thank you.

I fixed the factor for the temperature and checked the DC loop current measurement (mA%)
The temperature in °F is displayed on the second display row, so are the A, Hz and VA in Watt Mode.
Is there a possibility to read two values with the DMM2 driver?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 06, 2023, 04:04:44 pm
Is there a possibility to read two values with the DMM2 driver?

Sorry, at the current time it only supports one value.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 07, 2023, 04:25:25 pm
Help please.

If for a SCPI command I get this reply (ASCII and as hex in next line):
Code: [Select]
V : -9.757mV->.
56 20 3A 20 2D 39 2E 37 35 37 6D 56 2D 3E 0A
how I can extract the number using #askValuesReadFormat ?
I've tried multiple ways and I'm getting 0.0 or NaN.
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on November 08, 2023, 05:08:32 pm
Hello,

How to clean up configuration?

Tried to add Arduino serial log but I could not make it so to not loose more time I deleted from devices and removed from interfaces. Now not even my brymer with serial interface works. The ghost of Arduino is there somewhere. :)
Tried installing old version but is the same issue. I have now an unusable system.

Arduino was on COM5 in this log:

Starting
;; jSerialComm version: 2.9.1
;; Start thread for: COM14 - Brymen BM869s (Serial)
;; Start thread for: COM11
;; Start thread for: COM12
;; Start thread for: COM5
;; Stopping thread for: COM12
;; Stopping thread for: COM11
;; COM12: Close
;; COM11: Close
;; Stopping thread for: COM14 - Brymen BM869s (Serial)
;; COM14: Close
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <temp_setpoint:0.00,PID_Output:0.00,Temperature:46.96> 74 65 6D 70 5F 73 65 74 70 6F 69 6E 74 3A 30 2E 30 30 2C 50 49 44 5F 4F 75 74 70 75 74 3A 30 2E 30 30 2C 54 65 6D 70 65 72 61 74 75 72 65 3A 34 36 2E 39 36
;; USB2.0-Ser! (COM5) Did not find any match for: temp_setpoint:0.00,PID_Output:0.00,Temperature:46.96
;; COM5: Close
;; Stopping thread for: COM5
;; COM5: Close
;; jSerialComm version: 2.9.1
;; Start thread for: COM14 - Brymen BM869s (Serial)
;; Start thread for: COM12
;; Start thread for: COM11
;; Start thread for: COM5
;; Stopping thread for: COM12
;; COM12: Close
;; Stopping thread for: COM14 - Brymen BM869s (Serial)
;; Stopping thread for: COM11
;; COM14: Close
;; COM11: Close
;; COM5: Set params: 9600
;; COM5: Tx: <*IDN?.> 2A 49 44 4E 3F 0A
;; COM5: Rx: <temp_setpoint:0.00,PID_Output:0.00,Temperature:46.37> 74 65 6D 70 5F 73 65 74 70 6F 69 6E 74 3A 30 2E 30 30 2C 50 49 44 5F 4F 75 74 70 75 74 3A 30 2E 30 30 2C 54 65 6D 70 65 72 61 74 75 72 65 3A 34 36 2E 33 37
;; USB2.0-Ser! (COM5) Did not find any match for: temp_setpoint:0.00,PID_Output:0.00,Temperature:46.37
;; COM5: Close
;; Stopping thread for: COM5
;; COM5: Close


Cheers,
Jorge
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 08, 2023, 06:56:03 pm
Help please.

If for a SCPI command I get this reply (ASCII and as hex in next line):
Code: [Select]
V : -9.757mV->.
56 20 3A 20 2D 39 2E 37 35 37 6D 56 2D 3E 0A
how I can extract the number using #askValuesReadFormat ?
I've tried multiple ways and I'm getting 0.0 or NaN.

You need to strip the other characters away, this is done in a #askModeMathFormat statement. Something like:
#askModeMathFormat substring(value,4,11)
might do in if the answer always is the same length https://lygte-info.dk/project/TestControllerFunctions%20UK.html#substring (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#substring) else a getMatch(value,"[-1234567890.m]+") can be used.
Then you use
#askValuesReadFormat s
This will handle the m.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 08, 2023, 07:09:06 pm
How to clean up configuration?

Delete some file in the ..\Documents\TestController\Settings folder. You can delete all files if you want, they will automatic be recreated. TestController will return to a "just installed" state if you do that. You can also check the individual settings.... files and only delete some of them. Other files in that directory will be downloaded from my server when needed (Except autorun.txt if it exist).

All the settings.... files are ascii files, i.e. you can edit them with a editor. This is perfectly legal, but if you damage the format too much you might have to delete the file to get TestController working again.
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on November 09, 2023, 04:17:30 pm
Delete some file in the ..\Documents\TestController\Settings folder. You can delete all files if you want, they will automatic be recreated. TestController will return to a "just installed" state if you do that. You can also check the individual settings.... files and only delete some of them. Other files in that directory will be downloaded from my server when needed (Except autorun.txt if it exist).

All the settings.... files are ascii files, i.e. you can edit them with a editor. This is perfectly legal, but if you damage the format too much you might have to delete the file to get TestController working again.

Now it works after deleting old stuff.
It got somehow messed up as I was not following this rules bellow which I got after some new reading. :)
/*
The #idString must match "BRAND,NAME" from the Arduino program or the device will not be loaded.
The #name is usually a more readable form of "BRAND NAME" and must be unique, TestController will only accept one definition for any #name
The #handle is a short form of the name that can be used as a variable. This do not have to be unique, but because it is used to match column formats when loading .csv files, it is best if it is.
*/
After fixing this and deleting the old settings it started working.
Now I can focus on setting the PID constants. :)

Cheers,
Jorge
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 09, 2023, 05:37:40 pm
You need to strip the other characters away, this is done in a #askModeMathFormat statement. Something like:
#askModeMathFormat substring(value,4,11)
might do in if the answer always is the same length https://lygte-info.dk/project/TestControllerFunctions%20UK.html#substring (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#substring) else a getMatch(value,"[-1234567890.m]+") can be used.
Then you use
#askValuesReadFormat s
This will handle the m.

It would be perfect if you gave me correct definition name - #askValuesMathFormat, instead of looking very similar, but wrong #askModeMathFormat  ;)
I've spent extra 1 hour before spot it during troubleshooting.

But still thank you !
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 09, 2023, 07:24:25 pm
Question about EOL.
My OWON XDS2102A oscilloscope during TS start is detected correctly. Also it works for SCPI command if I ask a single value (response correctly terminated by \n).
But for a manual command "MEASUrement:ALL?\n" does respond in a specific way.
It returns single TCP packet with 1450 bytes payload, which consists of binary data header and then JSON data in ASCII
Here is beginning and end of the packet. HEX bytes and then ASCII shifted for readability.
Code: [Select]
a6 05 00 00 7b 22 43 48 31 22 3a 7b 22 4d 41 58
            {  "  C  H  1  "  :  {  "  M  A  X
<trim here>
"     ?  ,  O  F  F  "  }  }
22 09 3f 2c 4f 46 46 22 7d 7d

Full JSON, without 4 bytes of binary header, is here:
Code: [Select]
{"CH1":{"MAX":"35.00mV,OFF","MIN":"-50.00mV,OFF","PKPK":"85.00mV,OFF","VTOP":" ?,OFF","VBASe":" ?,OFF","VAMP":" ?,OFF","AVERage":"-6.740mV,ON","SQUAresum":"18.04mV,OFF","CYCRms":" ?,OFF","CURSorrms":"18.03mV,OFF","OVERShoot":" ?,OFF","PREShoot":" ?,OFF","PERiod":"  ?,OFF","FREQuency":" ?,OFF","RTime":" ?,OFF","FTime":" ?,OFF","PWIDth":" ?,OFF","NWIDth":" ?,OFF","PDUTy":" ?,OFF","NDUTy":" ?,OFF","SCREenduty":" ?,OFF","FRR":" ?,OFF","FRF":" ?,OFF","FFR":" ?,OFF","FFF":" ?,OFF","LRR":" ?,OFF","LRF":" ?,OFF","LFR":" ?,OFF","LFF":" ?,OFF","RDELay":" ?,OFF","FDELay":" ?,OFF","RPHAse":" ?,OFF","PPULsenum":" ?,OFF","NPULsenum":" ?,OFF","RISEedgenum":" ?,OFF","FALLedgenum":" ?,OFF","AREA":" ?,OFF","CYCLearea":" ?,OFF"},"CH2":{"MAX":"25.00mA,OFF","MIN":"-60.00mA,OFF","PKPK":"85.00mA,OFF","VTOP":"   ?,OFF","VBASe":"   ?,OFF","VAMP":"   ?,OFF","AVERage":"-15.94mA,ON","SQUAresum":"23.18mA,OFF","CYCRms":"   ?,OFF","CURSorrms":"22.91mA,OFF","OVERShoot":" ?,OFF","PREShoot":" ?,OFF","PERiod":" ?,OFF","FREQuency":" ?,OFF","RTime":" ?,OFF","FTime":" ?,OFF","PWIDth":" ?,OFF","NWIDth":" ?,OFF","PDUTy":" ?,OFF","NDUTy":" ?,OFF","SCREenduty":" ?,OFF","FRR":" ?,OFF","FRF":" ?,OFF","FFR":" ?,OFF","FFF":" ?,OFF","LRR":" ?,OFF","LRF":" ?,OFF","LFR":" ?,OFF","LFF":" ?,OFF","RDELay":" ?,OFF","FDELay":" ?,OFF","RPHAse":" ?,OFF","PPULsenum":" ?,OFF","NPULsenum":" ?,OFF","RISEedgenum":" ?,OFF","FALLedgenum":" ?,OFF","AREA":" ?,OFF","CYCLearea":" ?,OFF"}}
The issue is that TC could not read it because there no EOL character. Very last byte there is "}" character.
So TC threads it as a "Rx Timeout" error.

I've tried to play with #rxEol and #eol parameters, providing values "\_", "eoi", "}}", "\}\}". I found these examples in files for other devices an in documentation here https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html

Question - how to resolve this issue to detect end of input in my case?

p.s. the TCP session capture in Wireshark is attached in archive.
[attachurl=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 10, 2023, 12:30:11 pm
But for a manual command "MEASUrement:ALL?\n" does respond in a specific way.
It returns single TCP packet with 1450 bytes payload, which consists of binary data header and then JSON data in ASCII
Here is beginning and end of the packet. HEX bytes and then ASCII shifted for readability.

Interesting, it looks like the binaryheader is a byte count. To handle that I will have to add a special read command and probably also a command to parse JSON. I may do that.
Can you send the data to me in a ascii hex format, then I can dump it in a Arduino to test with.
With ascii hex format I mean something like this: "a6 05 00 00 7b 22 43 48 31 22 3a 7b 22 4d 41 58" but including all the 1450 bytes. Using multiple lines is fine.
I do not have wireshark installed at the current time and do not wish to.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 10, 2023, 12:31:15 pm
It would be perfect if you gave me correct definition name - #askValuesMathFormat, instead of looking very similar, but wrong #askModeMathFormat  ;)
I've spent extra 1 hour before spot it during troubleshooting.

Sorry about that, a bad excuse is that I was short on time when I did it.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 11, 2023, 02:11:15 pm
Can you send the data to me in a ascii hex format, then I can dump it in a Arduino to test with.
With ascii hex format I mean something like this: "a6 05 00 00 7b 22 43 48 31 22 3a 7b 22 4d 41 58" but including all the 1450 bytes. Using multiple lines is fine.
That's ok to not wish to install Wireshark.

Here is HEX stream on 1450 bytes payload (binary header + JSON):
Code: [Select]
a60500007b22434831223a7b224d4158223a2233352e30306d562c4f4646222c224d494e223a222d35302e30306d562c4f4646222c22504b504b223a2238352e30306d562c4f4646222c2256544f50223a22093f2c4f4646222c225642415365223a22093f2c4f4646222c2256414d50223a22093f2c4f4646222c2241564552616765223a222d362e3734306d562c4f4e222c2253515541726573756d223a2231382e30346d562c4f4646222c22435943526d73223a22093f2c4f4646222c22435552536f72726d73223a2231382e30336d562c4f4646222c224f56455253686f6f74223a22093f2c4f4646222c2250524553686f6f74223a22093f2c4f4646222c22504552696f64223a2220203f2c4f4646222c224652455175656e6379223a22093f2c4f4646222c225254696d65223a22093f2c4f4646222c224654696d65223a22093f2c4f4646222c22505749447468223a22093f2c4f4646222c224e5749447468223a22093f2c4f4646222c225044555479223a22093f2c4f4646222c224e44555479223a22093f2c4f4646222c2253435245656e64757479223a22093f2c4f4646222c22465252223a22093f2c4f4646222c22465246223a22093f2c4f4646222c22464652223a22093f2c4f4646222c22464646223a22093f2c4f4646222c224c5252223a22093f2c4f4646222c224c5246223a22093f2c4f4646222c224c4652223a22093f2c4f4646222c224c4646223a22093f2c4f4646222c225244454c6179223a22093f2c4f4646222c224644454c6179223a22093f2c4f4646222c22525048417365223a22093f2c4f4646222c225050554c73656e756d223a22093f2c4f4646222c224e50554c73656e756d223a22093f2c4f4646222c2252495345656467656e756d223a22093f2c4f4646222c2246414c4c656467656e756d223a22093f2c4f4646222c2241524541223a22093f2c4f4646222c224359434c6561726561223a22093f2c4f4646227d2c22434832223a7b224d4158223a2232352e30306d412c4f4646222c224d494e223a222d36302e30306d412c4f4646222c22504b504b223a2238352e30306d412c4f4646222c2256544f50223a222020203f2c4f4646222c225642415365223a222020203f2c4f4646222c2256414d50223a222020203f2c4f4646222c2241564552616765223a222d31352e39346d412c4f4e222c2253515541726573756d223a2232332e31386d412c4f4646222c22435943526d73223a222020203f2c4f4646222c22435552536f72726d73223a2232322e39316d412c4f4646222c224f56455253686f6f74223a22093f2c4f4646222c2250524553686f6f74223a22093f2c4f4646222c22504552696f64223a22093f2c4f4646222c224652455175656e6379223a22093f2c4f4646222c225254696d65223a22093f2c4f4646222c224654696d65223a22093f2c4f4646222c22505749447468223a22093f2c4f4646222c224e5749447468223a22093f2c4f4646222c225044555479223a22093f2c4f4646222c224e44555479223a22093f2c4f4646222c2253435245656e64757479223a22093f2c4f4646222c22465252223a22093f2c4f4646222c22465246223a22093f2c4f4646222c22464652223a22093f2c4f4646222c22464646223a22093f2c4f4646222c224c5252223a22093f2c4f4646222c224c5246223a22093f2c4f4646222c224c4652223a22093f2c4f4646222c224c4646223a22093f2c4f4646222c225244454c6179223a22093f2c4f4646222c224644454c6179223a22093f2c4f4646222c22525048417365223a22093f2c4f4646222c225050554c73656e756d223a22093f2c4f4646222c224e50554c73656e756d223a22093f2c4f4646222c2252495345656467656e756d223a22093f2c4f4646222c2246414c4c656467656e756d223a22093f2c4f4646222c2241524541223a22093f2c4f4646222c224359434c6561726561223a22093f2c4f4646227d7d

I've also tried to understand what the binary header means. In current case x05A6 = 1446 in DEC, which indeed could be 1450 - 4 (bytes binary header itself).
I tried now to capture more examples to prove that it consistent. Looks like binary part and payload size in response size is always the same, while having different measured values in JSON data.
This is good to know that implementation should give predicable result in all cases.

Interesting note - when the requests is received from original OWON software on Windows - the oscilloscope answers with 2 TCP PUSH packets: 1260+190 payload size, in total the same 1450 bytes. So, the binary header in 1st packet is really may be used to wait whole payload size.
Maybe that's an influence of virtualization stack (VirtualBox) which causes packets split for guest OS.

I'd say that position, size and byte order of the binary header should be adjustable, preferably.
For JSON parsing I'd suggest to use JSONPath technic, which is widely used in such cases.
Title: Re: Program that can log from many multimeters.
Post by: Swake on November 13, 2023, 09:27:55 pm
Is there a way to add some text to the readout popup? In front or behind the shown value.

Example use cases:
- Several voltmeters at ones and would like to see the value on the screen but never remember what value comes from what meter.
- Current consumption on several power supplies, would allow to name the channels.

If this is not yet possible I would like to suggest it as an improvement.

I know the grid popup allows to identify the device on screen, but it is not as esthetic as the readout.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 14, 2023, 07:54:03 am
Is there a way to add some text to the readout popup? In front or behind the shown value.

Example use cases:
- Several voltmeters at ones and would like to see the value on the screen but never remember what value comes from what meter.

Workaround: write voltmeter names or current channel numbers on the desktop wallpaper, then place transparent readout popups on top or near to them. Works perfectly!
Title: Re: Program that can log from many multimeters.
Post by: Swake on November 14, 2023, 08:23:03 am
This idea is good if there is nothing else on the screen already. The 'always on top' feature is so handy. I also move these things to different places sometimes, that would impose changing the wallpaper too.
Title: Re: Program that can log from many multimeters.
Post by: onsokumaru on November 14, 2023, 08:25:17 am
Great work! Thanks for your effort   :D

I want to test this software, but also I have a raspberry pi 3 wondering around and I'm thinking on running the software there, and leave the Raspberry for that task exclusively. Do you think it will work or maybe the RPI desktop environment is too slow?

Again, thanks for sharing this with us
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 14, 2023, 08:32:13 am
This idea is good if there is nothing else on the screen already. The 'always on top' feature is so handy. I also move these things to different places sometimes, that would impose changing the wallpaper too.

Yes, i know that this solution will be useful only in some cases.
Title: Re: Program that can log from many multimeters.
Post by: Swake on November 14, 2023, 08:32:55 am
Don't have any experience running this on a Linux system but I think a raspi3 is certainly capable of running this jar.

Try it and tell us  :)
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 14, 2023, 09:01:33 am
I just started to use Test Controller yesterday with Tenma 72-13210 DC Load for testing batteries and it works flawlessly!
But I want to ask for the help with adding to Test Controller support for Tenma 72-7715 dual channel thermometer.
First I want to know if it is even possible to add support for this thermometer.
I can use soldering iron with both hands and even legs, but have no idea about how communication protocols and similar stuff works.
So if anyone can help with this I would be very grateful.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 14, 2023, 12:32:59 pm
Is there a way to add some text to the readout popup? In front or behind the shown value.

If this is not yet possible I would like to suggest it as an improvement.

I will think about it.
You can use color to distinguish between the different meters, you can configure color of digits and background.

I know the grid popup allows to identify the device on screen, but it is not as esthetic as the readout.

You am aware that you can size the grid to like 4x1 or 1x4 to align the readouts in a line.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 14, 2023, 12:36:48 pm
I want to test this software, but also I have a raspberry pi 3 wondering around and I'm thinking on running the software there, and leave the Raspberry for that task exclusively. Do you think it will work or maybe the RPI desktop environment is too slow?

I did test a early version on a pi 3 and it worked. 
But the pi is a low end computer, i.e. TC may run into performance issues and memory issues in some cases.

Please report back with any experience.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 14, 2023, 12:48:19 pm
But I want to ask for the help with adding to Test Controller support for Tenma 72-7715 dual channel thermometer.
First I want to know if it is even possible to add support for this thermometer.
I can use soldering iron with both hands and even legs, but have no idea about how communication protocols and similar stuff works.
So if anyone can help with this I would be very grateful.

TestController can work with serial and network connections. If the Tenma uses a virtual serial port it is possible to include it (But many newer devices use USB HID and TC do not support that).

Somebody has been working on a temperature measuring devices before, you can try searching this thread for it.
TC has Mastech MS6514
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 14, 2023, 03:35:46 pm
But I want to ask for the help with adding to Test Controller support for Tenma 72-7715 dual channel thermometer.
First I want to know if it is even possible to add support for this thermometer.
I can use soldering iron with both hands and even legs, but have no idea about how communication protocols and similar stuff works.
So if anyone can help with this I would be very grateful.

TestController can work with serial and network connections. If the Tenma uses a virtual serial port it is possible to include it (But many newer devices use USB HID and TC do not support that).

Somebody has been working on a temperature measuring devices before, you can try searching this thread for it.
TC has Mastech MS6514


I ordered USB A to USB mini B (4 pin) non standard cable, it will probably arrive tomorrow, then I can connect thermometer to the PC an see if the driver will create virtual com port.
Device itself is very nice, but the software and instructions for it is translated by google translator from Chinese language, so it is impossible to tell right now if it is USB HID or virtual serial.
Here is the example of software installation manual |O

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 14, 2023, 07:09:05 pm
Somebody has been working on a temperature measuring devices before, you can try searching this thread for it.
That was me. It was for Tasi device, different one. Likely it's not compatible with this Tenma.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 14, 2023, 08:48:21 pm
Somebody has been working on a temperature measuring devices before, you can try searching this thread for it.
That was me. It was for Tasi device, different one. Likely it's not compatible with this Tenma.

Ok. Some hope, that it could be similar to supported by TC Mastech MS6514.
I will get this rare USB mini B 4 pin cable and will post what I will be able to find out.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 15, 2023, 02:34:19 pm
But I want to ask for the help with adding to Test Controller support for Tenma 72-7715 dual channel thermometer.
First I want to know if it is even possible to add support for this thermometer.
I can use soldering iron with both hands and even legs, but have no idea about how communication protocols and similar stuff works.
So if anyone can help with this I would be very grateful.

TestController can work with serial and network connections. If the Tenma uses a virtual serial port it is possible to include it (But many newer devices use USB HID and TC do not support that).

Update on Tenma 72-7715.
This Tenma device is the same device as UNI-T UT325, just rebranded.
For communication with PC it uses "WCH CH9325" USB interface chip, which is UART - USB HID bidirectional converter.

Link to the description of communication protocol of UNI-T UT325/Tenma 72-7715:    https://sigrok.org/wiki/UNI-T_UT325 (https://sigrok.org/wiki/UNI-T_UT325)      https://sigrok.org/wiki/WCH_CH9325#Protocol (https://sigrok.org/wiki/WCH_CH9325#Protocol)

This is how it appears in "Devices and Printers":

[attachimg=1] [attachimg=2]

Please let me know if it is possible or not possible to connect this device to TC.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 16, 2023, 12:43:27 pm
For communication with PC it uses "WCH CH9325" USB interface chip, which is UART - USB HID bidirectional converter.
Please let me know if it is possible or not possible to connect this device to TC.

It cannot be connected with that chip, the data before that chip is standard serial data. This means you can buy a TTL-serial to USB cable and solder it on to the input of the chip and get serial data that TC can handle.

For temperature measurement there is also a couple of simple DIY projects:
A DS1820 example: https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DS1820_temperature_device (https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DS1820_temperature_device)
A DHT22 (Temp+humidity) example: https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DHT22/AM2302_temperature_and_humidity_device (https://lygte-info.dk/project/TestControllerArduino2%20UK.html#DHT22/AM2302_temperature_and_humidity_device)

User projects:
https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 16, 2023, 02:36:20 pm

It cannot be connected with that chip, the data before that chip is standard serial data. This means you can buy a TTL-serial to USB cable and solder it on to the input of the chip and get serial data that TC can handle.



Thank you for the answer.
I still would like to connect Tenma with thermocouples.
You mean cable like this: https://www.elextra.dk/da-DK/p/H45438?utm_source=GoogleAds&utm_medium=cpc&gclid=Cj0KCQiAmNeqBhD4ARIsADsYfTf0jr8N7nDCWD04vZST6gKz1QTX5yax7coI7ZEuXYDEHOmy3KRoV2UaAgUjEALw_wcB (https://www.elextra.dk/da-DK/p/H45438?utm_source=GoogleAds&utm_medium=cpc&gclid=Cj0KCQiAmNeqBhD4ARIsADsYfTf0jr8N7nDCWD04vZST6gKz1QTX5yax7coI7ZEuXYDEHOmy3KRoV2UaAgUjEALw_wcB)
If it is correct cable, I just can go to the shop and pick it up, they have two of them in stock at CPH shop.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 16, 2023, 05:27:32 pm
Thank you for the answer.
I still would like to connect Tenma with thermocouples.
You mean cable like this: https://www.elextra.dk/da-DK/p/H45438?utm_source=GoogleAds&utm_medium=cpc&gclid=Cj0KCQiAmNeqBhD4ARIsADsYfTf0jr8N7nDCWD04vZST6gKz1QTX5yax7coI7ZEuXYDEHOmy3KRoV2UaAgUjEALw_wcB (https://www.elextra.dk/da-DK/p/H45438?utm_source=GoogleAds&utm_medium=cpc&gclid=Cj0KCQiAmNeqBhD4ARIsADsYfTf0jr8N7nDCWD04vZST6gKz1QTX5yax7coI7ZEuXYDEHOmy3KRoV2UaAgUjEALw_wcB)
If it is correct cable, I just can go to the shop and pick it up, they have two of them in stock at CPH shop.

Yes, but you have to check if it is 5V or 3.3V for both cable and device.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 16, 2023, 08:57:40 pm
Yes, but you have to check if it is 5V or 3.3V for both cable and device.

It is 5v both.
I bought an adapter cable and connected it to the PC, in the Device Manager section "Ports (COM & LPT)" driver created this text: "this is not prolific pl2303 contact supplier".
Turns out it is fake Chinese chip and the driver recognize that. After some searching I found old driver version from 2015 which works, (this driver people are using on Windows 11, because this USB serial converter chip PL2303TA with designation "TA" is not supported on Win 11 by manufacturer, but it works on Win 11 with this driver and it don't have the function to check if chip is not original), now in the Device Manager section "Ports (COM & LPT)" I see this:

[attachimg=1]

Now I have no idea if it is working??? I pressed "SEND" button on Tenma thermometer and with the oscilloscope I can see that Tenma is sending data to the USB Serial adapter, but I have no idea if adapter is sending dada to the PC.
It is any way to check that?

----------------------------------------------

Update:
I think I got serial adapter working, it was some problems with the logic levels, I took apart adapter and desolder pull up resistor from RX input, now levels are ok.

About the functionality:
All functions, like start transmitting data and which data to transmit I can set on the thermometer itself, so thermometer not even need to receive any data (only commands it can receive is to start/stop transmitting).
What is needed is to somehow make TC to receive transmitted temperature values and correctly interpreter them.

[attachimg=2]

Thermometer software recognize when thermometer is sending T1 temperature (probe 1 or channel 1), T2 temperature (probe 2 or channel 2), T1 minus T2 and Hi/Lo limits set on the devise for T1 and T2.
But thermometer can send only one temperature at the time, only T1 or T2 or T1 - T2.
So the thermometer is sending temperature values and designation of what channel it is T1, T2, or T1 - T2, plus Lo/Hi limit signals when in T1 or T2 mode (it also sending thermocouple type and probably the time H:M, which is counting at incorrect speed, but that is completely unimportant).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 17, 2023, 08:03:50 am
Update:
I think I got serial adapter working, it was some problems with the logic levels, I took apart adapter and desolder pull up resistor from RX input, now levels are ok.

About the functionality:
All functions, like start transmitting data and which data to transmit I can set on the thermometer itself, so thermometer not even need to receive any data (only commands it can receive is to start/stop transmitting).
What is needed is to somehow make TC to receive transmitted temperature values and correctly interpreter them.

Thermometer software recognize when thermometer is sending T1 temperature (probe 1 or channel 1), T2 temperature (probe 2 or channel 2), T1 minus T2 and Hi/Lo limits set on the devise for T1 and T2.
But thermometer can send only one temperature at the time, only T1 or T2 or T1 - T2.
So the thermometer is sending temperature values and designation of what channel it is T1, T2, or T1 - T2, plus Lo/Hi limit signals when in T1 or T2 mode (it also sending thermocouple type and probably the time H:M, which is counting at incorrect speed, but that is completely unimportant).

What you need is a terminal program that can show hex codes.
I usually use Termite for that: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm)

You can probably use N81 is format, but will have to guess the correct baudrate.


The idea is to write down (Or copy to notepad) the message and write what the display shows beside it. It is important to have samples with a couple of different temperatures including negative.
Then see if you can figure out the meaning of the different hex codes, or you can post it here and somebody may help your with it.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 02:35:48 pm
What you need is a terminal program that can show hex codes.
I usually use Termite for that: https://www.compuphase.com/software_termite.htm (https://www.compuphase.com/software_termite.htm)

You can probably use N81 is format, but will have to guess the correct baudrate.

The idea is to write down (Or copy to notepad) the message and write what the display shows beside it. It is important to have samples with a couple of different temperatures including negative.
Then see if you can figure out the meaning of the different hex codes, or you can post it here and somebody may help your with it.

Thank you for termite, I was confused by trying to find com port monitor.

I got the data from comport and I can see transmitted temperature values. I will figure out all the things and then will post the results, will compile it to be easy to understand.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 17, 2023, 03:26:39 pm
I got the data from comport and I can see transmitted temperature values. I will figure out all the things and then will post the results, will compile it to be easy to understand.

When it works with TC I would like to include it, this means a picture (That I can publish on my website) of how your soldered the adapter to the meter would be useful.
Also note that it is best only to connect the TX data to the USB adapter, with the RX pin you may get two output pins connected together (This is only a minor detail, they will probably stay at same level all the time).
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 04:11:43 pm
When it works with TC I would like to include it, this means a picture (That I can publish on my website) of how your soldered the adapter to the meter would be useful.
Also note that it is best only to connect the TX data to the USB adapter, with the RX pin you may get two output pins connected together (This is only a minor detail, they will probably stay at same level all the time).

I can see values in termite, have no idea yet how to connet it to the TC.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 04:46:12 pm
I will start describing transmitted data:

[attachimg=1]   [attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 17, 2023, 05:04:46 pm
I will start describing transmitted data:

This looks like a job for the block driver (AsciiBlock can also be used): https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block))

When you have posted a bit more I can do a initial definition for you or you can check the included definitions for some examples and make it yourself.
For me to do a definition I need some hex data in ascii format, not as a image (I am lazy and don't want to type the data myself).

The way TC works you will have one column with temperature and you may add another column with channel. Input data has to be numeric, you can not throw in a text string (Except if you play with bits).

Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 05:41:18 pm
[attachimg=1]

Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 05:43:09 pm
For me to do a definition I need some hex data in ascii format, not as a image (I am lazy and don't want to type the data myself).

How I get you data in ascii format? Can I capture it like that, I need to figure it out...
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 05:48:11 pm
For me to do a definition I need some hex data in ascii format, not as a image (I am lazy and don't want to type the data myself).

How I get you data in ascii format? Can I capture it like that, I need to figure it out...

Hm, I not sure how get data in ascii? Any suggestions?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 17, 2023, 05:51:15 pm
For me to do a definition I need some hex data in ascii format, not as a image (I am lazy and don't want to type the data myself).

How I get you data in ascii format? Can I capture it like that, I need to figure it out...

Like the hex in your first image, just not in a image, but directly as text in the post. I do need all the different temperatures from your second example.
I may have to modify some code in TC to handle negative temperature.

I am not going to look at it today.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 06:08:19 pm

How I get you data in ascii format? Can I capture it like that, I need to figure it out...

Like the hex in your first image, just not in a image, but directly as text in the post. I do need all the different temperatures from your second example.
I may have to modify some code in TC to handle negative temperature.

I am not going to look at it today.

Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 07:06:34 pm
This is how to solder serial adapter to the thermometer.
In my case logic level 0 was to high, to solve that I desolder pull up resistor from adapters RX input.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 07:46:33 pm
This is how to solder serial adapter to the thermometer.
In my case logic level 0 was to high, to solve that I desolder pull up resistor from adapters RX input.

(Attachment Link)

After you will connect serial to USB adapter to the PC, thermometer will be powered from USB, it will work even without the battery.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 17, 2023, 08:12:01 pm
Found one more transmitting mode, Byte 14 can also be "3"
It is the same as "2", transmitted data is T1 - T2.
But "2" means that thermometers secondary display shows T1 temperature, and "3" means that thermometers secondary display shows T2 temperature.
It does not affect transmitted temperature values.

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 01:17:07 am
This looks like a job for the block driver (AsciiBlock can also be used): https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block) (https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block))

When you have posted a bit more I can do a initial definition for you or you can check the included definitions for some examples and make it yourself.
For me to do a definition I need some hex data in ascii format, not as a image (I am lazy and don't want to type the data myself).

The way TC works you will have one column with temperature and you may add another column with channel. Input data has to be numeric, you can not throw in a text string (Except if you play with bits).


I understand that now we in the stage, when it is clear, that Tenma could be connected to the TC.
But I live in an analog world (audio equipment, power supplies, etc.), yesterday first time in my life I had captured data from COM port, so I am learning while doing it.
I do not even know what "definitions" means in this case. So, I will need some hep with simple explanations of some things at the beginning.

------------------------------------------------------------------------------------

Ok, I had looked a bit at "Test Controller, Configuration of non SCPI devices" page. Then find out what is SCPI.
If I understood correctly, the working principle of the TC is based on SCPI and Tenma is not SCPI device, so it needs translation layer, like AsciiBlock.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 12:52:29 pm
I understand that now we in the stage, when it is clear, that Tenma could be connected to the TC.
But I live in an analog world (audio equipment, power supplies, etc.), yesterday first time in my life I had captured data from COM port, so I am learning while doing it.
I do not even know what "definitions" means in this case. So, I will need some hep with simple explanations of some things at the beginning.

I have attached a definition, I have only tested with a few of your supplied data, i.e. I will recommend you do a full test.
You can place the file in TestController/Devices, either the one in the TC directory or better in the one in documents.

I used the Block driver, but I have added a few things to it, i.e. you need a new version of TC. The link below will download a new .jar file, you have to replace your existing .jar file with it.
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)


Ok, I had looked a bit at "Test Controller, Configuration of non SCPI devices" page. Then find out what is SCPI.
If I understood correctly, the working principle of the TC is based on SCPI and Tenma is not SCPI device, so it needs translation layer, like AsciiBlock.

That is basically correct.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 01:41:10 pm
I have attached a definition, I have only tested with a few of your supplied data, i.e. I will recommend you do a full test.
You can place the file in TestController/Devices, either the one in the TC directory or better in the one in documents.

Awesome! It works.
I could not connect in the beginning, then I changed Baud rate in the definition text file to 2400 and it started to work.
I will do full test and let you know if it is any problems, right now it seems to work fine.
I definitely need to buy you a coffee for helping me with this and for making very awesome test software. If you have MobilePay, send me number to PM.


[attachimg=1]

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 02:02:08 pm
Awesome! It works.
I could not connect in the beginning, then I changed Baud rate in the definition text file to 2400 and it started to work.
I will do full test and let you know if it is any problems, right now it seems to work fine.

Sorry about that, I used a Arduino to test and my usual baudrate for that is 9600.
I have a simple Arduino program where I can just dump the hex into and it will send it, it makes it easy for my to add and test simple serial devices, even when I do not have the device.

I definitely need to buy you a coffee for helping me with this and for making very awesome test software. If you have MobilePay, send me number to PM.

I have never gotten around to get MobilePay, they only way to send me money is paypal.

I have added a little bit more to the definition, with the new one there is a "View" button on the "Load devices" page.
It do also add the UNI-T device name
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 02:35:36 pm
I have never gotten around to get MobilePay, they only way to send me money is paypal.

I have added a little bit more to the definition, with the new one there is a "View" button on the "Load devices" page.
It do also add the UNI-T device name

PayPal is also good (I like more MobalPay because they did not charge commission fee).

Yep, I see picture in "View", If you want I have picture of my device with soldered serial adapter and removed HID chip.

[attach=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 03:09:47 pm
In TestController, I expect when using [LOC], that a ++loc is sent to the meter (and intercepted by the GPIB controller). But this is not the case. Nothing is sent. And nothing appears in the debug log...

I wrote a as small as possible definition for testing, and it seems that none of the TC GPIB commands are working. (I tried  [CLR], [LLO] and  [LOC] ). Example: #finalCmd [LOC];  or  #finalCmd [LOC];[500];
So these findings are in line with the post of dl6lr above...

Can these commands only be used with the ASCII driver, or is something broken? I was testing with a AR488.

The beta version I posted a link to above (Post #3220) has added these  commands to the SCPIx driver, but it is not tested.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 04:29:50 pm

Yep, I see picture in "View", If you want I have picture of my device with soldered serial adapter and removed HID chip.

I have added the second picture and written a bit more in the notes.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 04:53:58 pm
I have added the second picture and written a bit more in the notes.

Looks good.
And yes, removed HID chip could create some confusion without explanation that it is not necessary to remove it.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 06:54:36 pm
Tenma 72-7715/UNI-T UT325 Thermometer testing with TC

Everything works as expected:

Tested positive temperatures up to 800 °C - no problems at all.
Change channels when running and logging - no problems.
Negative temperatures up to -100 °C - no problems.

Found one glitch in the device itself:

When temperature goes below -99.9 °C, then for few seconds device reports temperature as positive, then starts to report it as negative and woks correctly for the rest of the time.
But nobody probably needs to measure below -100 °C.

P.S. One more thing: After connecting thermometer to the PC, you need to press "SEND" button on the device to start sending data, then start TC or press "Reconnect", otherwise TC will not initialize the device.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 07:27:38 pm
Everything works as expected:

Good to know, I will probably include it in the standard devices (I generally don't do that if it includes any DIY stuff). With your photos it is very easy to modify and use.
If anybody want to comment for/against this, please do so.

P.S. One more thing: After connecting thermometer to the PC, you need to press "SEND" button on the device to start sending data, then start TC or press "Reconnect", otherwise TC will not initialize the device.

One more comment added to the #notes  :)

Out of curiosity: How do you test the different temperature?
Do you have a thermocoupler simulator (I often use that) or do you use a reference/power supply with a voltage divider (Or do you use another way).
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 07:39:06 pm
Out of curiosity: How do you test the different temperature?
Do you have a thermocoupler simulator (I often use that) or do you use a reference/power supply with a voltage divider (Or do you use another way).

I planned to use reference voltage source, but thermocouple and temperature controlled soldering iron and torch is much faster.
For negative temps same thing (iron and torch), but if you will set T1 - T2 temperature, then if one thermocouple is heated - thermometer shows negative temp, if another - positive. Oh, forgot to mention refrigerator.

Thermocouple simulator would be needed for calibration, for this testing iron and torch is perfect.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 07:47:09 pm

Thermocouple simulator would be needed for calibration, for this testing iron and torch is perfect.

By the way, this termometer can be calibrated by user. Or you can set offset to thermocouple1 and2 separately.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 08:01:14 pm
I planned to use reference voltage source, but thermocouple and temperature controlled soldering iron and torch is much faster.
For negative temps same thing (iron and torch), but if you will set T1 - T2 temperature, then if one thermocouple is heated - thermometer shows negative temp, if another - positive. Oh, forgot to mention refrigerator.

Thermocouple simulator would be needed for calibration, for this testing iron and torch is perfect.

You hit about 400 degrees in your chart, that is not from a solder iron (Or you mistreat your iron  ;) ), but a flame makes sense.

If you work a lot with thermocouplers a simulator (Process calibrator) is a good investment, but there are some caveats with them.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 08:15:26 pm
You hit about 400 degrees in your chart, that is not from a solder iron (Or you mistreat your iron  ;) ), but a flame makes sense.

No, I am not mistreat my iron, here is the little thing, in size little bit bigger, then a pencil, but very, very hot:

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 08:35:41 pm
If you work a lot with thermocouplers a simulator (Process calibrator) is a good investment, but there are some caveats with them.

I looked at the good  thermocouplers simulators, the price is something I can not justify. If I will needed for the work, then it is no problem, but for mostly hobby, it is no no.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 18, 2023, 08:46:20 pm
I looked at the good  thermocouplers simulators, the price is something I can not justify. If I will needed for the work, then it is no problem, but for mostly hobby, it is no no.

Check EBAY and AliExpress, you can find some moderately priced process calibrators and many of them support thermocouplers. They are not super high precision (In praxis, specifications may overstate the precision), but for most purposes they are acceptable.
When testing thermocoupler measurement devices you generally have two parameters: Absolute precision (offset) and how well they adhere to the curve.
Also be aware that a termocoupler measures temperature differences and that can give some issues.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 09:12:12 pm
______how well they adhere to the curve.
Also be aware that a termocoupler measures temperature differences and that can give some issues.

Yes, how well they adhere to the curve, that is programmable thing, on factory made thermometers not possible to change, they will have hard-coded look up table for that.
Temperature differences will make some troubles too, internal thermo sensor for ambient temperature compensation should also be working properly by it self and in soft.
But I will look at places like Aliexpress. Recently I bought Yaorea YR1035+ battery impedance meter from Aliexpress, 0-200 ohm, 0-100V. Was little bit impressed, turns out it is not crappy device. They even send instructions in English, and device menu was in English already.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 18, 2023, 09:21:14 pm
Tenma Time Test

Now I am editing this post at 6:20 AM, Tenma was running with TC all evening and all night without connection drop or other problems, I think it is stable.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 02:09:19 am
You hit about 400 degrees in your chart, that is not from a solder iron (Or you mistreat your iron  ;) ), but a flame makes sense.

Ok, I need to confess. Some years ago I had Weller soldering iron (I actually still have it) and I needed to solder inductor of a very thick copper wire to the graphics card power section
(the pcb there was multilayer ad was made almost from pure copper with enormous thermo-mass).
It was no way to solder with my Weller.
So, I stetted Weller to max 450 °C and when it heated up I blasted soldering iron tip with the blow torch to heated up it even much more,
then I soldered inductor with no problems. After some time soldering iron died (the hand piece, power supply was ok).
I bought new hand piece (they are sold separately), and never mistreated it again.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 19, 2023, 11:28:21 am
Yes, how well they adhere to the curve, that is programmable thing, on factory made thermometers not possible to change, they will have hard-coded look up table for that.

When using digital termocoupler chips the curve is wired into the chip, in a DMM it may be in the software (I have seen some DMM's that gives silly answer at very high or low temperatures).

Temperature differences will make some troubles too, internal thermo sensor for ambient temperature compensation should also be working properly by it self and in soft.

The main problem with that sensor is placement, I have a Fluke thermocoupler meter where it is basically glued to the connector, but all the other thermocoupler meters I have it is far from the connector, i.e. you may need to let the meter stabilize for a few hours before it is precise.


But I will look at places like Aliexpress. Recently I bought Yaorea YR1035+ battery impedance meter from Aliexpress, 0-200 ohm, 0-100V. Was little bit impressed, turns out it is not crappy device. They even send instructions in English, and device menu was in English already.

I have looked at the version without the +: https://lygte-info.dk/review/InternalResistanceMeterYR1035%20UK.html (https://lygte-info.dk/review/InternalResistanceMeterYR1035%20UK.html)


Tenma Time Test
Now I am editing this post at 6:20 AM, Tenma was running with TC all evening and all night without connection drop or other problems, I think it is stable.

Nice to hear. I would expect it to be stable, TC do not have any issues running and logging for days and can handle millions of samples.

So, I stetted Weller to max 450 °C and when it heated up I blasted soldering iron tip with the blow torch to heated up it even much more,

You can get high power hand pieces, I have a WP120 (120Watt) with a thick tip for that kind of work and a WP80 with a thin tip for more normal work.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 05:01:47 pm

The main problem with that sensor is placement, I have a Fluke thermocoupler meter where it is basically glued to the connector, but all the other thermocoupler meters I have it is far from the connector, i.e. you may need to let the meter stabilize for a few hours before it is precise.


Yes, Tenma 72-7715 has thermosensor between connectors:

[attachimg=1]

But I have Brymen 869S (which also supports two thermocoupless), not sure if it even has compensation sensor, or where it is?
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 05:15:05 pm

Tenma Time Test
Now I am editing this post at 6:20 AM, Tenma was running with TC all evening and all night without connection drop or other problems, I think it is stable.

Nice to hear. I would expect it to be stable, TC do not have any issues running and logging for days and can handle millions of samples.


I tested for data transmission drop, TC just records zeros and when transmission begins again, TC continues to record data:

[attachimg=1]

Only if I physically disconnect and reconnect serial to USB atapter from the PC, TC continues work and logging is running, but it not reconnects thermometer, and "Reconnect" button is disabled:

[attachimg=2]
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 05:33:58 pm

You can get high power hand pieces, I have a WP120 (120Watt) with a thick tip for that kind of work and a WP80 with a thin tip for more normal work.


For sure you need to have proper tools for the job, at that time I needed job to be done right now and had only one iron with small tips for regular pcb soldering.
Today situation is better, Here is picture of my biggest iron for soldering super thick wires and connectors, and smallest cartridge:

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 19, 2023, 05:49:19 pm
Yes, Tenma 72-7715 has thermosensor between connectors:

It would be even better on the PCB just below the input connector.

But I have Brymen 869S (which also supports two thermocoupless), not sure if it even has compensation sensor, or where it is?

The temperature sensor is usually build into the DMM chip and that means a long settling time if you move the DMM to a different environment.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 19, 2023, 05:59:11 pm
I tested for data transmission drop, TC just records zeros and when transmission begins again, TC continues to record data:

You may be able to change that on the configuration page with the "Timeout handling" (Not all drivers uses it and I do not remember if Block does).

Only if I physically disconnect and reconnect serial to USB atapter from the PC, TC continues work and logging is running, but it not reconnects thermometer, and "Reconnect" button is disabled:

Reconnect is always disabled when logging. You have to stop logging first, then you can reconnect and start over.
TC do not know what devices will respond to a reconnect and for that reason it need to reinitialize with the devices connected after the reconnect.
Somebody asked about how to save and restart logging, because he wanted to log over very long time. I posted a script that can be used for that and adding a #RECONNECT and #WAITREADY statement to it would do a reconnect each time and maybe recover any lost devices.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 06:15:25 pm
I tested for data transmission drop, TC just records zeros and when transmission begins again, TC continues to record data:
You may be able to change that on the configuration page with the "Timeout handling" (Not all drivers uses it and I do not remember if Block does).

That is not the problem, it works exactly how I expect it to work. I just tested what will happen if thermometer will stop sending data for short period.

Only if I physically disconnect and reconnect serial to USB atapter from the PC, TC continues work and logging is running, but it not reconnects thermometer, and "Reconnect" button is disabled:

Reconnect is always disabled when logging. You have to stop logging first, then you can reconnect and start over.
TC do not know what devices will respond to a reconnect and for that reason it need to reinitialize with the devices connected after the reconnect.
Somebody asked about how to save and restart logging, because he wanted to log over very long time. I posted a script that can be used for that and adding a #RECONNECT and #WAITREADY statement to it would do a reconnect each time and maybe recover any lost devices.

Ok, understand.
Here I tested what will happen if com port disappears  for short time, but if it will happen, then again, it will be device problem to not working correctly, nothing wrong with the TC.
But thanks for the explanation of "pause and restart logging".
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 07:39:11 pm
You may be able to change that on the configuration page with the "Timeout handling" (Not all drivers uses it and I do not remember if Block does).

Block does. I tested.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 19, 2023, 08:24:22 pm
But I will look at places like Aliexpress. Recently I bought Yaorea YR1035+ battery impedance meter from Aliexpress, 0-200 ohm, 0-100V. Was little bit impressed, turns out it is not crappy device. They even send instructions in English, and device menu was in English already.
I have looked at the version without the +: https://lygte-info.dk/review/InternalResistanceMeterYR1035%20UK.html (https://lygte-info.dk/review/InternalResistanceMeterYR1035%20UK.html)

do not know exactly what is the difference between them, but physically it is different, circuit boards is different too. Works very nice.


By the way, do you still test batteries? This is how I found TC software, I was looking 18650 cell comparisons on your site when was searching for good cells to replace in my Dewalt drill.
Finally I bought Murata VTC5D, but did not found this batteries tested on your site. I got recommended for two shops, which supposedly sell original cells, it is NKON.nl and Akkuteile.de
and bought VTC5D batteries from both shops, then tested for matching. From NKON all batteries was mathinh perfectly and was from the same batch with close serial numbers. From Akkuteile too. but between NKON and Akkuteile was small difference in capacity (discharge curves was identical).
Here is the pictrure of it:

[attach=1]

I still have some new untouched batteries from Akkuteile. If you want I could send you two.

This was tested with original Tenma 72-13210 DC Load software (which is extremely limited), then I started using Test Controller.
Title: Re: Program that can log from many multimeters.
Post by: Gertjan on November 20, 2023, 08:17:16 am
In TestController, I expect when using [LOC], that a ++loc is sent to the meter (and intercepted by the GPIB controller). But this is not the case. Nothing is sent. And nothing appears in the debug log...

I wrote a as small as possible definition for testing, and it seems that none of the TC GPIB commands are working. (I tried  [CLR], [LLO] and  [LOC] ). Example: #finalCmd [LOC];  or  #finalCmd [LOC];[500];
So these findings are in line with the post of dl6lr above...

Can these commands only be used with the ASCII driver, or is something broken? I was testing with a AR488.

The beta version I posted a link to above (Post #3220) has added these  commands to the SCPIx driver, but it is not tested.

Hi HKJ,
I found the root cause of these problems. The Prologix commands should be in lowercase, and TC outputs CAPITALS.

I did tests, comparing AR488 with the original Prologix GPIB adapter:

(https://www.miedema.dyndns.org/co/2023/IMG_1837__AR488_and_Prologix-600pix.jpg)
IMG 1837  AR488 and Prologix-2000pix.jpg (https://www.miedema.dyndns.org/co/2023/IMG_1837__AR488_and_Prologix-2000pix.jpg)

It turns out that the commands in the Prologix command language should be in lowercase. The AR488 is tolerant for CAPITAL LETTERS, and executes the command just the same. But the original Prologix is not tolerant! A command in CAPITAL LETTERS is NOT executed, and the Prologix returns an error message.

A piece of TC debug log of the shutdown procedure (ASCII driver, for Keithley 199 I was working on):
Code: [Select]
with original Prologix
=============
;; K199: Tx <clear>
;; K199: Tx <tx [CLR]>
;; COM27: Tx: <++CLR.> 2B 2B 43 4C 52 0A  <--- UPPERCASE, is not a valid command
;; K199: Delay: 1000ms
;; K199: Tx <goLocal>
;; K199: Tx <tx [LOC]>
;; COM27: Tx: <++LOC.> 2B 2B 4C 4F 43 0A  <--- UPPERCASE, is not a valid command

Using a AR488
=========
;; K199: Tx <clear>
;; K199: Tx <tx [CLR]>
;; COM15: Tx: <++CLR.> 2B 2B 43 4C 52 0A  <--- UPPERCASE, but is executed by AR488
;; K199: Delay: 1000ms
;; K199: Tx <goLocal>
;; K199: Tx <tx [LOC]>
;; COM15: Tx: <++LOC.> 2B 2B 4C 4F 43 0A  <--- UPPERCASE, but is executed by AR488
;; K199: Delay: 1000ms
;; COM15: Close
- With the Prologix the ++CLR and ++LOC are not executed, the meter stays in remote.
- with the AR488 ++CLR and ++LOC are properly executed, the meter goes to local control, end the COM port is properly closed.

I checked the Prologix behaviour in a terminal program:
Code: [Select]
++ver
Prologix GPIB-USB Controller version 6.107
++VER
Unrecognized command
++CLR
Unrecognized command
++LOC
Unrecognized command

Please can you adjust the TC code so it will output ++ commands in lowercase for [CLR], [LLO], [LOC] and [TRG]?
(The GPIB init commands are fine, TC sends these in lowercase.)

regards, Gertjan.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 20, 2023, 09:32:02 am
It turns out that the commands in the Prologix command language should be in lowercase. The AR488 is tolerant for CAPITAL LETTERS, and executes the command just the same. But the original Prologix is not tolerant! A command in CAPITAL LETTERS is NOT executed, and the Prologix returns an error message.

Thanks, this will be fixed in next release.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 20, 2023, 09:33:04 am
By the way, do you still test batteries?

Not at the current time.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on November 20, 2023, 12:09:24 pm
Hi,

i tried to integrate my Tek TDS460A with a GPIB Adapter using an ESP32 Port of the AR488 Project.
When i try to add an AR488Lan Interface from the GPIB Menu, Test Controller adds a normal AR488 interface where i can not set the ip adress and just the serial port.

I think this is a bug.

I was able to add the Scope with a litte bit of hacking in the normal Tek MDO MSO etc. device definition using a normal tcp socket and the auto mode in AR488, but it would be nice to use the correct method for this.

Thank you.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 20, 2023, 12:51:41 pm
When i try to add an AR488Lan Interface from the GPIB Menu, Test Controller adds a normal AR488 interface where i can not set the ip adress and just the serial port.

I think this is a bug.

It is a bug, it is fixed (It was very simple to fix) and will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: adso85swe on November 20, 2023, 10:44:13 pm

TC do not have that function, but it can easily be done with scripting in TC, including naming the files with a sequence number or a date.
This example will save every 10 seconds and then restart the log:

#while 1
#log 1
#delay 10
#log 0
#savetable ("c:\\data\\log"+date())
#endwhile

Place it in the "log" window and press "Run", it will log from all connected devices

In this scripting example above to start a log from the command prompt, is it possible to add a line to set the logging frequency as well? I.e. can I define that I want data to be logged e.g. every third second by script?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2023, 08:58:16 am
In this scripting example above to start a log from the command prompt, is it possible to add a line to set the logging frequency as well? I.e. can I define that I want data to be logged e.g. every third second by script?
[/quote]

Easily, the number after the #log command is the logging interval in seconds. You need to use #log 3 for every third second, values like #log 0.1 is also possible (10 times a second).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2023, 11:30:12 am
Somebody posted some questions and deleted them again, but they where good questions:

Quote
If I will use this script, then by automatically saving partial logs and restarting the table each time, TC will not use a lot of RAM on the PC, when logging very long time?

That is correct, but using the "Direct to disk" option is easier and will put all data in one file. Neither is needed for a few hours of logging.

Quote
And please explain me one thing, when I import CSV to Open Office spreadsheet, "minutes" and "date" are presented in strange way. Can not figure out how to convert it in to actual minutes and date:

Instead of using the save button, use the export button and select another format for "dateTime" in the format column.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 21, 2023, 11:52:28 am
In this scripting example above to start a log from the command prompt, is it possible to add a line to set the logging frequency as well? I.e. can I define that I want data to be logged e.g. every third second by script?


Easily, the number after the #log command is the logging interval in seconds. You need to use #log 3 for every third second, values like #log 0.1 is also possible (10 times a second).

If I understood correctly, then if I will use this script, which saves partial logs and restarts table each time, then TC will need much less RAM, when logging very long time, right?

Also, can someone explain to me what "DATE TIME" format TC are using, when saving table as CSV file. I imported table in Open Office, and can not figure it out.

[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2023, 12:29:26 pm
I answered most of it above, the actual format of dateTime is Unix, i.e. seconds since Jan 01 1970.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 21, 2023, 12:55:55 pm
I answered most of it above, the actual format of dateTime is Unix, i.e. seconds since Jan 01 1970.

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 21, 2023, 03:10:59 pm
Is there any way to have a dedicated button, which starts logging by single click with predefined interval?

I find it complicated and annoying that I need to do extra steps than just a single click:
- one click on Log button;
- move mouse down to X seconds option;
- click one more time on desired interval.
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 21, 2023, 05:15:17 pm
Also, one more feature request - clean up current collected values by a singe button.
This would allow to avoid stop/start again steps, which I should perform each time for such cleanup.

I'd love to see such button everywhere where we have buttons Save/Export. First of all its on Chart and Historgram tabs.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2023, 07:06:06 pm
Is there any way to have a dedicated button, which starts logging by single click with predefined interval?

I find it complicated and annoying that I need to do extra steps than just a single click:
- one click on Log button;
- move mouse down to X seconds option;
- click one more time on desired interval.

There is, it is called Grid Panel. You can also assign script commands to a function key.

Try executing this command:
#SinglePanel 302 37 212 118 Script "Logging" "script:#;1sec\n#log 1" "script:#;Stop\n#log 0"

This command can also be assigned to a function key.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 21, 2023, 07:06:55 pm
Also, one more feature request - clean up current collected values by a singe button.
This would allow to avoid stop/start again steps, which I should perform each time for such cleanup.

I'd love to see such button everywhere where we have buttons Save/Export. First of all its on Chart and Historgram tabs.

What do you mean bu clean up?
Title: Re: Program that can log from many multimeters.
Post by: Oleksii on November 21, 2023, 08:19:32 pm
What do you mean bu clean up?

Imagine when I had Log running and want to start it as a new logging, to forget min/max/avg values and have a new/fresh only values on Graph, Table, Chart tabs

And I want to perform it easily, preferably by single click on a dedicated button on those tabs in TC.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 22, 2023, 10:17:45 am
What do you mean bu clean up?

Imagine when I had Log running and want to start it as a new logging, to forget min/max/avg values and have a new/fresh only values on Graph, Table, Chart tabs

And I want to perform it easily, preferably by single click on a dedicated button on those tabs in TC.

I still don't understand, all min/max/avg is based on actual table data and when you start on a new log the table start over, i.e. they are cleaned out.
Another point is that you can control just about anything in TC from script, i.e. you can add more than just "#log 1" to a button, you can also add script commands to set specific values/states in TC or anything else.
To find the commands type # on the command line and the help window will show a list of all commands. Typing the full name of a command will show a description of the parameters in the help window.
Title: Re: Program that can log from many multimeters.
Post by: KungFuJosh on November 22, 2023, 03:21:22 pm
Can you add a note on your website about the release date so we know if it's been updated recently?

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 22, 2023, 03:53:03 pm
Can you add a note on your website about the release date so we know if it's been updated recently?

I do not really see a reason for that, TC itself tells you when a new version is available:
(http://lygte-info.dk/pic/cpf6/TCNewVersion.png)
 
You can also subscribe to this thread and you will get notified when a new release is available and a lot of other stuff about TC.
Title: Re: Program that can log from many multimeters.
Post by: Gediminas on November 22, 2023, 07:50:08 pm
In case somebody is interested,

Finally found Serial to USB adapter which works out of the box on Windows 10 (Windows installs driver automatically).
Chip FT232RL
Supports 3.3V and 5V systems

Has integrated stabilizer for 3.3V power delivery

[attachimg=1]

Bought it in Europe for about 5 Euro here: https://ardustore.dk/produkt/ft232rl-ftdi-usb-2-0-to-ttl-serial-adapter-module?gad_source=1&gclid=Cj0KCQiA6vaqBhCbARIsACF9M6mFt5dqH5Lfv7ZKHjJnqkt39621htmWl7eMl2ZpxOtOSiz2XIU-Nc8aAnowEALw_wcB (https://ardustore.dk/produkt/ft232rl-ftdi-usb-2-0-to-ttl-serial-adapter-module?gad_source=1&gclid=Cj0KCQiA6vaqBhCbARIsACF9M6mFt5dqH5Lfv7ZKHjJnqkt39621htmWl7eMl2ZpxOtOSiz2XIU-Nc8aAnowEALw_wcB)
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 22, 2023, 08:56:55 pm
Simply search for
FT232RL FTDI USB
for many hits.
Title: Re: Program that can log from many multimeters.
Post by: C18669 on November 23, 2023, 12:51:20 am
Hi Everyone
I am trying to add the HP 6033 power supply... I have got to the point where I get
;; Start thread for: PrologixUSB A:7 - HP6033a
;; COM6: Tx: <++auto 0.> 2B 2B 61 75 74 6F 20 30 0A
;; COM6: Tx: <++mode 1.> 2B 2B 6D 6F 64 65 20 31 0A
;; : Tx <txrx? ID?>
;; COM6: Tx: <++addr 7.> 2B 2B 61 64 64 72 20 37 0A
;; COM6: Tx: <ID?.> 49 44 3F 0A
;; COM6: Tx: <++read_tmo_ms 900.> 2B 2B 72 65 61 64 5F 74 6D 6F 5F 6D 73 20 39 30 30 0A
;; COM6: Tx: <++read eoi.> 2B 2B 72 65 61 64 20 65 6F 69 0A
;; COM6: Rx: <ID HP6033A> 49 44 20 48 50 36 30 33 33 41
;; PrologixUSB A:7 Device HP6033a do not match: ID HP6033A
;; COM6: Close
;; Stopping thread for: PrologixUSB A:7 - HP6033a
;; COM6: Close

the device file has...
#idString HP6033a
#name HP6033a
#handle HP6033A
#port GPIB
#baudrate 9600
#driver SCPIx
Title: Re: Program that can log from many multimeters.
Post by: C18669 on November 23, 2023, 02:02:02 am
Hi Everyone
managed to "fix" my issue...  not nice, but it works....

#idString ID HP6033A
#name HP6033A
#handle ID,HP6033A
#port GPIB
#baudrate 9600
#driver SCPIx
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 23, 2023, 12:19:59 pm
Hi Everyone
managed to "fix" my issue...  not nice, but it works....

#idString ID HP6033A

Not nice, but it is the answer, you can improve it by using a #scpiCmd override to edit it.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 24, 2023, 05:58:59 pm
Been busy doing a device file for my new UNI-T UT622 LCR meter.
Works quite well with Test Controller. Except for the fact that it will log only ESR and not Capacitance. But the values are being logged in Table. Strange.

Also the supplied software apparently uses some commands not detailed in the manual.
Like "Clear", "Parallel", "Serial" and "REC", for example. Will probably have to sniff these.

Now some piccies:[attachimg=1]
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 24, 2023, 07:19:02 pm
Been busy doing a device file for my new UNI-T UT622 LCR meter.
Works quite well with Test Controller. Except for the fact that it will log only ESR and not Capacitance. But the values are being logged in Table. Strange.

Looking forward to getting the definition.
What do you mean by "being logged in the table"?

Also the supplied software apparently uses some commands not detailed in the manual.
Like "Clear", "Parallel", "Serial" and "REC", for example. Will probably have to sniff these.

That is probably a issue with many devices. They have a few extra commands for their software, but they are not documented anywhere.

My guess is that (in some cases) the design team decides what is needed of commands, but the team doing the software find out that they need more commands. These commands are then not documented because they are not defined by the design team.
I will agree that it is very bad praxis to do this, but my opinion do not affect anything for the manufacturer.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 24, 2023, 07:36:22 pm
The values from the UT622 are to be found for both Capacitance and ESR in the Table. But only the values for ESR are to be found in the graph. Strange. Will look into this tomorrow.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 24, 2023, 08:00:34 pm
The values from the UT622 are to be found for both Capacitance and ESR in the Table. But only the values for ESR are to be found in the graph. Strange. Will look into this tomorrow.

??
That makes no sense, table and chart uses the same variables. You might have found a special character that TC has issues with.
Basically value names are variables in TC, that put some restriction on them, but I have put in some code to (try to) fix it.


Variables names may not contain anything like control chars or operators used in expressions. That is simplified, but mostly covers it.

For more knowledge: The variable tables in TC do not have any restriction on names, but the parser have. This means that you can get around restrictions, but I will rate that as a bad idea.
Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 25, 2023, 06:58:53 am
Setting the range for the graph manually works for UT 622 Capacitance.
For some reason "Auto" will not set the range properly. See piccies

Title: Re: Program that can log from many multimeters.
Post by: Messtechniker on November 25, 2023, 07:32:25 am
Now to the interesting bit. What I'm after is capacitance and the ESR temperature coefficient.
Simply by pointing a heat gun at the object of interest - an old 47 uF 350 V lytic I get the following:

[attachimg=1]
 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on November 25, 2023, 11:16:43 am
Setting the range for the graph manually works for UT 622 Capacitance.
For some reason "Auto" will not set the range properly. See piccies

I do have some special handling for very small values, but it is not active at micro level.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 03, 2023, 07:40:20 pm
I made some modifications to my Battery Test Script.
Removed dropout checks and calculation since my load (DL24P)
has no more dropouts since HKJ improved this in Testcontroller (Thanks HKJ)

Added some options which I liked to have.
So you can check if there is no overload for the load.
See menu.jpg for info.

I also made an version with checking the internal resistance of the battery.
Best is to use an 4-wire connection when your load supports this.
Tested also with an 0.44 ohm resistor in series and it works great.
In Result.jpg you can see how it look.
(BTW used an powersupply and 0.44 ohm resistor in series to test)

Results are dependent on accuracy of the load of coarse,
but Internal Resistance has to do with relative measurement values,
so they should be fairly accurate.

Graph.jpg is an picture made with settings 12V minimum, capacity 2200mAh
and discharge current 1A. Battery simulated by Powersupply with 0.44 ohm
in series. Starting 10 seconds with 0.2C current, 1 second at 1C current.
At this point Internal Resistance is determined.
then further discharge with 1A current.
After shutdown voltage rises a little, is the result of the series resistor.

Internal resistance testing is done by the following rules by IED61960.

According to IEC61960, the DC resistance can be measured as follows:
A DC current step is applied to measure the change in the cell’s voltage.
Battery resistance is defined as the change in voltage over the change
 in current when a discharge current of 0.2C is applied for 10s
followed by a discharge current of 1C for 1s.
The DCIR is calculated byformula DCR = (V1-V2)/(I2-I1)

where V1 and I1 are the voltage and current values after the 10s 0.2C discharge just before the current step;
V2 and I2 are the voltage and current values after the 1s 1C discharge.

Rules I have found on https://www.landtinst.com/what-is-internal-resistance-ir-and-how-to-test-ir/ (https://www.landtinst.com/what-is-internal-resistance-ir-and-how-to-test-ir/)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 06, 2023, 12:15:54 pm
I made some modifications to my Battery Test Script.

I have added it to the user script page: http://lygte-info.dk/project/TestControllerUserScripts1%20UK.html (http://lygte-info.dk/project/TestControllerUserScripts1%20UK.html)
I did not remove the old script.

I have added one line to the scripts:
#scriptInterface Load setCurrent setOn readVoltage setVoltage

This line is placed just after the #scriptMenu line and will work as a filter when the script is placed in a menu. The filter means the script will only be listed if a load with the required functions are loaded (TC has a couple of these filter conditions that can be used).
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on December 08, 2023, 04:26:16 am
I'm having trouble connecting my Fluke 8846A to TestController and I'm not seeing why.  If anyone has a moment, I'd appreciate it.  I'm getting the USA Cal Club FX reference tomorrow and trying to get some logging set up, but for some reason it won't connect.  I'm using the FT232 (Fluke branded, worked fine before) RS232-to-USB cable.  I can set up a terminal program and connect to the 8846A just fine using 9600 8/no parity/1 stop bit.  The command "*IDN?" gives me a response of

FLUKE,8846A,1293013,08/02/10-11:53

exactly as expected.  I can then enter commands and the meter responds properly.

I've previously used the 8846A successfully with TestController.  I haven't used it in a while, so I fired it up and tried, then updated TestController and tried again.  My troubleshooting is a bit stymied because I don't know, don't remember or never knew where and how the program stores its configuration information.

When I go to add the 8846A to the list of connected devices, it won't let me select "SERIAL" as the connection, it only shows "SOCKET".  If I select 'Scan Serial Ports", it does so but I get a response of

;;FT232R USB UART (COM3) Did not find any match for. *IDN?

My definition file (or whatever it is called) for the Fluke 8846A is attached.  I'd appreciate any advice on getting this going.  I may have overlooked something silly, so no idea is too basic.  Any explanation of how TestController actually works here is also helpful.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 08, 2023, 08:45:23 am
I'm having trouble connecting my Fluke 8846A to TestController and I'm not seeing why. 

The definition only support network connection, you can easily change that:
Find the line:
#port 3490
in the definition and change it to:
#port 3490 com
After restarting TestController, removing 8846A from the loaded list and adding it again, you can click on the "Socket" text and select serial instead.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 08, 2023, 09:52:21 am
Made an new script for testing Power Supplies with an Electronic Load.
Start with giving up the parameters off the supply and starting from Zero current
to maximum current in number of steps you want.
Stops when the supply is overloaded.
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on December 08, 2023, 02:32:23 pm
The definition only support network connection, you can easily change that:
Find the line:
#port 3490
in the definition and change it to:
#port 3490 com
After restarting TestController, removing 8846A from the loaded list and adding it again, you can click on the "Socket" text and select serial instead.

OK, I did that and I now get the error message:

;;FT232R USB UART (COM3) Device FLUKE,8846A, do not match. *IDN?

When I successfully connected way back when, I did need to use "Scan Serial Ports", so I assume it was finding it that way.  Now it will find my attached 34401A just fine by scanning serial ports even if I don't have it specifically loaded, so that much is working.  However, even with the Fluke 8846A loaded, I get this error.  The 8846A does have newer firmware than when I used it previously. 

I also am connecting an HP 34401A and that seems to be working reliably.  I have two identical Fluke-branded RS232 to USB cables and if I swap them between the two meters, TestController finds the 34401A right away just by scanning the serial ports.  I used the terminal program to look at the 34401A, and *IDN? returns the exact string (up to the second comma) as shown in the #idstring entry of the configuration file. 



Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 08, 2023, 05:10:03 pm
OK, I did that and I now get the error message:

;;FT232R USB UART (COM3) Device FLUKE,8846A, do not match. *IDN?

When I successfully connected way back when, I did need to use "Scan Serial Ports", so I assume it was finding it that way.  Now it will find my attached 34401A just fine by scanning serial ports even if I don't have it specifically loaded, so that much is working.  However, even with the Fluke 8846A loaded, I get this error.  The 8846A does have newer firmware than when I used it previously. 

I also am connecting an HP 34401A and that seems to be working reliably.  I have two identical Fluke-branded RS232 to USB cables and if I swap them between the two meters, TestController finds the 34401A right away just by scanning the serial ports.  I used the terminal program to look at the 34401A, and *IDN? returns the exact string (up to the second comma) as shown in the #idstring entry of the configuration file.

Do you have any echo enabled? You get the answer "*IDN?", not the device id (The text if do not match: is the actual answer TC tries to match to the device id).
Starting TC in debug mode may help a bit.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 08, 2023, 05:11:16 pm
Made an new script for testing Power Supplies with an Electronic Load.
Start with giving up the parameters off the supply and starting from Zero current
to maximum current in number of steps you want.
Stops when the supply is overloaded.

I will add that to the user script, but I do not have the time today.

Just a note: TC do not use {} in its language, they are obvious ignored (That may change at a later date) or your script would not work.
Title: Re: Program that can log from many multimeters.
Post by: bdunham7 on December 08, 2023, 05:28:23 pm
Do you have any echo enabled? You get the answer "*IDN?", not the device id (The text if do not match: is the actual answer TC tries to match to the device id).
Starting TC in debug mode may help a bit.

So I got it to nominally work at this point, but I'm still not 100% sure of the real issue and I'll test more later.  What I did was add the line #baudrate 9600N81 to the Fluke8846A.txt file, and then in the meter's RS232 menu I changed the EOL setting from "CRLF" to "LF".  I tried using the line #eol CRLF in the TestController config file, but that didn't work.

I was looking in the documentation for a complete list or explanation of the appropriate arguments to go after #baudrate and #eol, but I didn't find it.  Is it there?

Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 08, 2023, 05:39:32 pm
So I got it to nominally work at this point, but I'm still not 100% sure of the real issue and I'll test more later.  What I did was add the line #baudrate 9600N81 to the Fluke8846A.txt file, and then in the meter's RS232 menu I changed the EOL setting from "CRLF" to "LF".  I tried using the line #eol CRLF in the TestController config file, but that didn't work.

I was looking in the documentation for a complete list or explanation of the appropriate arguments to go after #baudrate and #eol, but I didn't find it.  Is it there?

The #eol needs a byte arguments, that can be: \r \n
Maybe I need to explain a bit more in the documentation

#baudrate works with a standard baudrate definition, but is not used when you specify "com", there you use the Baudrate column on the "Load devices" page.

There is probably a couple of tags that could use a better documentation and I do look in this thread for requests.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 09, 2023, 07:22:12 am
I will add that to the user script, but I do not have the time today.

Just a note: TC do not use {} in its language, they are obvious ignored (That may change at a later date) or your script would not work.

OK, I will remove them and update the script as soon as posible. Maybe better to wait a while before adding.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2023, 11:38:32 am
OK, I will remove them and update the script as soon as posible. Maybe better to wait a while before adding.

I will wait for a ready from you.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 09, 2023, 12:01:11 pm
Done. Replaced script files in both posts with scripts for Battery- and Powersupply test.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2023, 03:01:33 pm
Done. Replaced script files in both posts with scripts for Battery- and Powersupply test.

Added it, but you did not change both scripts for the first one.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 09, 2023, 04:10:07 pm
Added it, but you did not change both scripts for the first one.

I had not added the line:
#scriptInterface Load setCurrent setOn readVoltage setVoltage
OK now.
{} were removed allready.

Just for information PX100 owners. I get reading errors when make settings during running.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 09, 2023, 05:03:26 pm

I had not added the line:
#scriptInterface Load setCurrent setOn readVoltage setVoltage
OK now.
{} were removed allready.

Just for information PX100 owners. I get reading errors when make settings during running.

It is up now (The issue was that one of files was called "old" and was not updated, you probably uploaded the wrong one).
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 09, 2023, 07:19:17 pm
On / Off buttons in Device PopUp for Atorch PX100 devices is not working.

Replacing with:

#cmdSetup buttonsOn On/Off
:read: on?
:write: on
:updatedelayed: 0.5
Off 0
On 1
:tip: Turn load On or Off

works OK.
Did not attach my devicefile because I enabled Temperature etc.

Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 12, 2023, 07:23:38 pm
Made some modifications in the Riden 60xx device file.
In PopUp in the tab for memory settings itow was not working, wrong register adresses.
Working now. Tested with RD6012

In the main tab, recalling M9 doesn't work for me. Don't know why.
I use the modified Unisoft firmware in the Riden.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on December 13, 2023, 11:57:06 am
On / Off buttons in Device PopUp for Atorch PX100 devices is not working.

Replacing with:

#cmdSetup buttonsOn On/Off
:read: on?
:write: on
:updatedelayed: 0.5
Off 0
On 1
:tip: Turn load On or Off

works OK.
Did not attach my devicefile because I enabled Temperature etc.

I am not sure what the difference is to the existing definition?


Made some modifications in the Riden 60xx device file.
In PopUp in the tab for memory settings itow was not working, wrong register adresses.
Working now. Tested with RD6012

Thanks, I have update it for next version.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 13, 2023, 03:43:51 pm
I am not sure what the difference is to the existing definition?

Sorry, had an old version off the device file.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 21, 2023, 10:14:08 am
Updated my Powersupply test.
Can be used for checking internal and serial resistance.
External cable and connector resistance can so be checked.
Four wire connecting with the load is preferred.
In the graph you can see internal resistance check (left) is done.
Internal Resistance check is done with 10% and 80% of the maximum current.

Mwah, programming / scripting is not my best business,
so script can have some flaws, but it works.
Comments are welcome.

Merry Christmas and a Happy 2024 to everyone.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on December 23, 2023, 08:44:15 pm
Just to share for what it's worth.
Once I bought an ADC10F103C and didn't nothing with it.
3.3 volt max. input makes it not always useful for me.
I liked to have an universal voltage logger,
so I made an resistor interface and so it is an usefull voltage logger to max. 60v.
Made different maximal input voltages over the 10 channels.
2x5, 3x10, 3x30 and 2x60 Volt input.
First made 10 math calculation for calculate and calibration.
That works fine, but lazy I am, modified my device file,
so it works out of the box.

Modification in the device file:
*** Only as indication.****
#rxFormat 9e5*1.6958885 26e5*1.6958885 43e5*3.2600326 60e5*3.268149 77e5*3.2476453 94e5*10.284538 111e5*10.259917 128e5*10.259917 145e5*19.173553 162e5*19.179894

Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 03, 2024, 03:11:31 am
Noob here, but not to the topic in general... ;)

I'm starting out on TestController the hard (?) way: by defining a new device (Fluke 8808A).

I'm not sure if the following is normal or unusual... but in any case it doesn't seem to be documented that I see... nor have I seen it discussed.

Measurements returned by this device may be either of these formats:

Tx <meas?>
; F8808: Rx <+28.399E-3 VDC>
;; F8808: Rx as numbers <0.028399 NaN>

or (if doing two simultaneous measures)

 Tx <meas?>
;; F8808: Rx <+1.192E-3 VDC,-0.001E-6 ADC>
;; F8808: Rx as numbers <0.001192 NaN -1.0E-9 NaN>

(I *may* be able to disable the unit info, although that seems valuable for auto-changing the measurement mode???)

QUESTIONS

1) Units

Clearly this DMM provides measurements using engineering units (ie powers of ten scaled by multiples of 3)

This is not documented in the #value setup. What am I supposed to use for #value here?


2) Measurement type

Are there examples of reading from DMM's that supply the type of measurement?

3) Single / Double measures

I see two types of double-measure documented lightly:

DMM and DMM:2 (for in essence two whole meters)

vs a more complex setup supporting primary/secondary measures (haven't figured that out yet.)

Any recommendations on which path to take?

THANK YOU SOOO MUCH! This is an incredible tool :)

Pete
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2024, 09:40:02 am
Updated my Powersupply test.

I have added the update to my webpage: https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html#Power_supply_load_sweep_by_Pukker (https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html#Power_supply_load_sweep_by_Pukker)

Once I bought an ADC10F103C and didn't nothing with it.
3.3 volt max. input makes it not always useful for me.
I liked to have an universal voltage logger,
so I made an resistor interface and so it is an usefull voltage logger to max. 60v.

This is also added to my webpage: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker)

It is a nice way to make the module more practical, now it just need a 3D printed box (This would required a USB extension cable).
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2024, 10:00:09 am
I'm starting out on TestController the hard (?) way: by defining a new device (Fluke 8808A).

I'm not sure if the following is normal or unusual... but in any case it doesn't seem to be documented that I see... nor have I seen it discussed.

Measurements returned by this device may be either of these formats:

Tx <meas?>
; F8808: Rx <+28.399E-3 VDC>
;; F8808: Rx as numbers <0.028399 NaN>

or (if doing two simultaneous measures)

 Tx <meas?>
;; F8808: Rx <+1.192E-3 VDC,-0.001E-6 ADC>
;; F8808: Rx as numbers <0.001192 NaN -1.0E-9 NaN>

(I *may* be able to disable the unit info, although that seems valuable for auto-changing the measurement mode???)

You do generally not need the unit information, because you can usually poll it with another SCPI command. In TC you can use a expression to remove the unit, before parsing the numbers.
You use the #readformat and #readmath to adjust the input line: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#mathFormat_&_readmath (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#mathFormat_&_readmath)

1) Units

Clearly this DMM provides measurements using engineering units (ie powers of ten scaled by multiples of 3)

This is not documented in the #value setup. What am I supposed to use for #value here?


TC will as default handle this kind of format and use SI prefix when displaying the values.

2) Measurement type

Are there examples of reading from DMM's that supply the type of measurement?

I do not remember, but probably, you can handle it as I wrote above.

3) Single / Double measures

I see two types of double-measure documented lightly:

DMM and DMM:2 (for in essence two whole meters)

vs a more complex setup supporting primary/secondary measures (haven't figured that out yet.)

Any recommendations on which path to take?

You need to use modes for handle 1/2 values and it is handled with the #value lines.
If two #value lines are enabled, TC will expect two answering values.
I.e. you need to get the #askmode statement working: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##askMode (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##askMode)

There a many bench meter definitions you can look in for examples, maybe a "Fluke8845A.txt" is a good start.

Also note bench meters are usually listed as both DMM and BMM, the BMM is a meter that can be computer controlled.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on January 03, 2024, 10:01:38 am

I have added the update to my webpage: https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html#Power_supply_load_sweep_by_Pukker (https://lygte-info.dk/project/TestControllerUserScripts1%20UK.html#Power_supply_load_sweep_by_Pukker)

This is also added to my webpage: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker)

It is a nice way to make the module more practical, now it just need a 3D printed box (This would required a USB extension cable).

Nice, but the 3D printer is missing here.
but will take an box, drilling, sawing etc.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 03, 2024, 10:27:59 am
It is a nice way to make the module more practical, now it just need a 3D printed box (This would required a USB extension cable).

Nice, but the 3D printer is missing here.
but will take an box, drilling, sawing etc.

I can recommend getting a 3D printer, it makes it much easier to get high quality boxes for your projects. Square holes are easy and precise, making special feature to mount a display on (Using short self tappers) is also easy. Only issue is that a typical 3D printed plastic box is very limited with heat.

Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 03, 2024, 04:38:42 pm
Noob question: is there a way to reliably reload the definition file for a device from within TC? "Reconnect" doesn't do that. :(

Sure would be handy while I am working up my device definition!
Title: Lessons learned on initial setup
Post by: MrPete on January 03, 2024, 04:47:54 pm
I thought I would contribute a few things I discovered in my first setup/use of TC. (I'm a professional SW/HW/FW guy, trained to notice niggly things ;) )

USB-Serial Driver for Win 10/11

I have a USB-Serial dongle, marked Eminent 1016 but actually is Prolific 2303 GC aka Prolific 2303HXA

Here's the latest best driver. Do NOT use the most recent from Prolific. https://github.com/johnstevenson/pl2303-legacy/releases

Without this driver (or 3.3.2.102 but that version has other issues), I got "Error 433" from any serial/terminal app, and TC didn't think the COM port existed at all.

If you're having serious issues, running a free trial of "Free Device Monitoring Studio" from HHD Software may be very helpful. It traces 100% of all signals on the serial port!

Correction for ID String Definition

The documentation says:

The correct answer: The idstring must exactly match the first portion of the *idn? answer, including any blanks etc.

Example: if *idn? returns "BRAND, MODEL,..." then this line must be "#idString BRAND, MODEL," (and not "#idstring BRAND,MODEL,")

Title: Re: Lessons learned on initial setup
Post by: HKJ on January 03, 2024, 05:04:19 pm
Noob question: is there a way to reliably reload the definition file for a device from within TC? "Reconnect" doesn't do that. :(

Sure would be handy while I am working up my device definition!

Thats not possible, but you can speed up startup by emptying the "Devices" directory (All files must be restored when you are finished or TC will not support any other device)

USB-Serial Driver for Win 10/11

I have a USB-Serial dongle, marked Eminent 1016 but actually is Prolific 2303 GC aka Prolific 2303HXA

Here's the latest best driver. Do NOT use the most recent from Prolific. https://github.com/johnstevenson/pl2303-legacy/releases

Without this driver (or 3.3.2.102 but that version has other issues), I got "Error 433" from any serial/terminal app, and TC didn't think the COM port existed at all.

If you're having serious issues, running a free trial of "Free Device Monitoring Studio" from HHD Software may be very helpful. It traces 100% of all signals on the serial port!

Good information.


Correction for ID String Definition

The documentation says:
  • #idString first two parts of *idn? answer
  • The idstring is the brand name and the device name

The correct answer: The idstring must exactly match the first portion of the *idn? answer, including any blanks etc.

Example: if *idn? returns "BRAND, MODEL,..." then this line must be "#idString BRAND, MODEL," (and not "#idstring BRAND,MODEL,")

I have modified the text a bit.
Title: Re: Program that can log from many multimeters.
Post by: romany on January 09, 2024, 07:33:12 pm
I have a ET5420 and I'm making progress getting it to talk with Test Controller (under linux) - it can pull the version number - but the model number is where it fails.  If I look under system info on the 5420 there are 4 entries:

PRODUCT MODEL
S/N
Software Version
Hardware Version

There is no entry under PRODUCT MODEL - and this is a read only section - no way to enter one.  When I run Test Controller it comes back with this:

Device ET5420 do not match: ÿÿÿÿÿÿÿ,V1.02.2127.002,09422132071,V1.03.2136.003

EDIT:   I edited the Device file for the 5420 and replaced the  idString name with ÿÿÿÿÿÿÿ.  Got by the "do not match" error anyway...


Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 11, 2024, 11:49:46 am
I have a ET5420 and I'm making progress getting it to talk with Test Controller (under linux) - it can pull the version number - but the model number is where it fails.  If I look under system info on the 5420 there are 4 entries:

PRODUCT MODEL
S/N
Software Version
Hardware Version

There is no entry under PRODUCT MODEL - and this is a read only section - no way to enter one.  When I run Test Controller it comes back with this:

Device ET5420 do not match: ÿÿÿÿÿÿÿ,V1.02.2127.002,09422132071,V1.03.2136.003

EDIT:   I edited the Device file for the 5420 and replaced the  idString name with ÿÿÿÿÿÿÿ.  Got by the "do not match" error anyway...

Obvious that device has a faulty firmware version or more likely the model is in EEPROM and that entry is damaged, luckily you found a work-around.

Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 14, 2024, 12:29:15 am
@HKJ, I am making more progress, and have more questions:

Background: 8808A DMM/BMM can do two values but there are many interactions... can't always do two and it's complicated.

Questions

1) What causes the expected # of values to change, in #askValues, in the current values list, in the table, regular table, in the chart? It's not clear.
   (I see something about "mode based" but stil not clear)


2) Is there a way to modify the number of values returned by #askValues based on a condition?
     My example: if I request two but only have one value being measured, the meter returns "!>" as an error string as a result!)

   I'm thinking I need to generate some kind of return string with <1st value>,  then if value2 is NOT "!>" then append (separator?)  and <2nd value>

hints mucho appreciaated...

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 14, 2024, 04:19:05 pm
1) What causes the expected # of values to change, in #askValues, in the current values list, in the table, regular table, in the chart? It's not clear.
   (I see something about "mode based" but stil not clear)

The number of expected and shown values is directly controlled by the number of enabled columns (#value statement)
The #value statement can optionally have one or more mode names listed (DMM's always has this). This mode is read from the device (#askMode see https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##askMode (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html##askMode) ) or can be set manually with some commands (#cmdModeCheck). It is possible to have multiple modes active simultaneous.
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Selecting_mode_(Mostly_for_multimeters) (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Selecting_mode_(Mostly_for_multimeters))

2) Is there a way to modify the number of values returned by #askValues based on a condition?
     My example: if I request two but only have one value being measured, the meter returns "!>" as an error string as a result!)

   I'm thinking I need to generate some kind of return string with <1st value>,  then if value2 is NOT "!>" then append (separator?)  and <2nd value>

It is possible to adjust #askValues based on mode https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Selecting_multiples_modes (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#Selecting_multiples_modes)
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 14, 2024, 11:05:11 pm
Thanks for that link-filled answer :)

Honestly, this is starting to feel like a Catch-22 ;)
I will work my way through your references...

For now....

A) NOTE: there are two device files making actual use of #cmdModeCheck: R&SHMC8012.txt (significant), and GossenMetraHitEnergy.txt (minor) all others have it commented out ;)

B) Here's my initial observation on what you wrote:

*The number of expected and shown values is directly controlled by the number of enabled columns (#value statement)

* The #value statement can optionally have one or more mode names listed (DMM's always has this).
* This mode is read from the device (#askMode ...).
* It is possible to have multiple modes active simultaneous.
...

* It is possible to adjust #askValues based on mode

I read this as saying (in real-world sequence):

1) I can read the current mode(s) from the DMM. Presumably detecting whether one or two are active now.
2) From that, I can control #value to read one or two values

What I did NOT hear is any way to directly tweak the number of values produced from data returned by the DMM.

(in other words, I'm thinking it would be nice to simply attempt to read two values. If the return string is "1.1E3, 5.7E-6" it's 2, if the string is "1.1E3,***" it is actually only one.)

I'll get back once I've absorbed those links. THANK YOU again!!
pete
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2024, 03:29:06 pm
What I did NOT hear is any way to directly tweak the number of values produced from data returned by the DMM.

That is correct, for TestController it is a fairly major reconfiguration change every time the number of returned parameters changes. It has to reconfigure many of its pages and tables to fit the changed parameters, this reconfiguration is triggered every time you change the mode.

You can always check the active modes for a device by typing on the command line: =deviceMode("DMM6500")
The DMM6500 is the device handle (It must be a loaded device for this to work).

TestController has a programming language with lots of functions to handle special cases, you can read about it here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html (https://lygte-info.dk/project/TestControllerFunctions%20UK.html)
And more generally here: https://lygte-info.dk/project/Calculator%20UK.html
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 15, 2024, 04:42:07 pm
@HKJ I am starting to understand the underlying architecture better. Whew.

Does this mean that if I want to incorporate some calculated values...

* That too is one of these major hiccups requiring reconfiguration?
* And, do I therefore need to invent a mode for that?

Looking at how cmdModeCheck is used, I am guessing the following is a semi-correct expanded interpretation / documentation. Am I close?

Current Docs

Quote
If the mode on/off commands contain [localmode] the state of the mode is handled by TestController and need not be included in the #askMode. With local mode it may not be necessary to send commands to the device, but only to add more columns and modify the #askValues command with the [mode:xxx] tag.
...
"Changing number of columns, device mode is not used (Note: m2 test is not used, but must be present)."
Code: [Select]
#cmdModeCheck modeLabel deviceModeString defaultState
mode on commands
mode off commands
modes where this mode is valid, use ! to invert mode. (This line is optional)
* In the example, "deviceModeString" is always "m2" and is present in #cmdMode and #cmdModeCheck
* EVERY example in the documentation, and in the device files, uses [localmode]

My Interpretation of the above
Here's an example from R&SHMC8012.txt:
Code: [Select]
#askValues FETC?[mode:Frequency_Voltage,Frequency_Current,DCV_Power,DCI_Power,dB,dBm];FETCH2?[mode:DCV_Power,DCI_Power];CALC:POW?[mode:Limit];STAT:QUES:COND?[mode:Statistics];CALC:AVER:COUN?;CALC:AVER:MAX?;CALC:AVER:AVER?;CALC:AVER:MIN?;CALC:AVER:SDEV?;CALC:AVER:PTP?

; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat FFFFFFFFFF

One more question that's slightly related:

In defining #cmdMode, the docs say:
Normally, a sorted list puts all empty records at the start or end. QUESTION: By any chance, does adding #cmdMode as a blank, cause a separate alphabetical sort before and after the blank?

(BTW a nit: it should say "sorted in alphabetical order")

THANKS as always!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2024, 05:54:16 pm
Does this mean that if I want to incorporate some calculated values...

* That too is one of these major hiccups requiring reconfiguration?
* And, do I therefore need to invent a mode for that?

Generally you do not do calculated values in the driver, you do them later on the "Math" page.
It is possible, but requires some extra definitions.

My Interpretation of the above
  • Each #cmdModeCheck defines an independent additional mode that can potentially be active simultaneously.
  • Best to always use [localmode] for multi-mode devices. We have no instructions or examples of non-local (ie where the device returns good multi-mode data on its own)
  • The third line ("modes where this is valid"...) defines how this mode interacts with all other modes, in the sense of a filter. (?? By default this mode is available with all other modes. If not, then some combination of positive inclusion and/or negative removal must be used. ?? )
  • For multi-mode value reading, #askValues and #askValuesNumberFormat is used to define and limit the number of values to be read. See below.





Here's an example from R&SHMC8012.txt:
Code: [Select]
#askValues FETC?[mode:Frequency_Voltage,Frequency_Current,DCV_Power,DCI_Power,dB,dBm];FETCH2?[mode:DCV_Power,DCI_Power];CALC:POW?[mode:Limit];STAT:QUES:COND?[mode:Statistics];CALC:AVER:COUN?;CALC:AVER:MAX?;CALC:AVER:AVER?;CALC:AVER:MIN?;CALC:AVER:SDEV?;CALC:AVER:PTP?

; Format of answer: f=float, u=remove trailing letters, x=skip, *=Zero upper case values if this value is 0
#askValuesReadFormat FFFFFFFFFF
  • Counting in #askValues, one sees up to ten values returned depending on the combination of active modes. Thus, #askValuesReadFormat specifies ten floating point numbers.
  • Sometimes a single mode produces more than one value (eg Statistics); sometimes a single mode is present in more than one list, which is another way to produce multiple values (eg DCV_Power).
  • In #askValues, the modes listed in a group [mode:Mode1,Mode2...] are "OR'd" together: the following associated values are expected if any of the listed modes are active.




One more question that's slightly related:

In defining #cmdMode, the docs say:
  • All defined modes are shown in a popup window, where they are sorted in alphabetically order.
  • It is also possible to add empty positions with #cmdMode (on a line by itself)

Normally, a sorted list puts all empty records at the start or end. QUESTION: By any chance, does adding #cmdMode as a blank, cause a separate alphabetical sort before and after the blank?

The empty definitions are only valid when you take over the design by specifying a
#cmdModeLayout columns row
Then you are using the empty #cmdMode to get the best layout
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 15, 2024, 08:49:37 pm
@HKJ
Quote
The empty definitions are only valid when you take over the design by specifying a
#cmdModeLayout columns row
Then you are using the empty #cmdMode to get the best layout

Ahh! So #cmdModeLayout also turns off the auto-sort!

Quote
Depend on the device, if you can read the mode from the device it is a more reliable way to track the modes

I didn't find any example of using #cmdModeCheck to define a device-readable mode. Is there one I missed?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 15, 2024, 09:05:53 pm
@HKJ
Quote
The empty definitions are only valid when you take over the design by specifying a
#cmdModeLayout columns row
Then you are using the empty #cmdMode to get the best layout

Ahh! So #cmdModeLayout also turns off the auto-sort!

Yes, both auto sizing of columns/rows and sorting is turned off.

Quote
Depend on the device, if you can read the mode from the device it is a more reliable way to track the modes

I didn't find any example of using #cmdModeCheck to define a device-readable mode. Is there one I missed?

Probably not, I do not remember any device where I have used it.
The #askMode will set multiple modes if it return multiple parameters, i.e. you can use it like:
#askMode cmdForMainMode;cmdForExtraMode
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 17, 2024, 05:48:25 pm
@HKJ Thank you so much for shedding light on various bits! I have another undefined/undocumented area that's presumably important...

The various BMM/DMM device files have a variety of #interface read... definitions (see below).

Documentation says:
Quote
#interface read... column
#interface read... column column...

The definition of read is very easy, because it uses the same reading as "current values" and logging, i.e. the "#askValues" command and only the actual index of the value must be specified. For multichannel devices multiple indexes must be listed, one for each channel. The first value the device returns is numbered 0.
The read definitions also defines a name... command that can be used to get the column name for the value from the actual device.

QUESTIONS:

1) Given that the parameter to these is a zero-based column number, is it a bug to have only "#interface readValue 1" ?

2) The document suggests using "readValue column column..." but nobody does that. Instead they have separate "readValue 0" "readValue2 1"... WHY?

3) What's the meaning of readValue, readValue2, readValue3...? Not documented.

4) In NO case do I see any of these used anywhere else in the device files, nor the auto-generated nameValue* that's described. Do these definitions set up something inside TC?

5) One device has "BMM" without "DMM". I have not yet found an explanation of what these interfaceTypes actually accomplish. Is there a table somewhere of perhaps variables or controls that are defined or enabled through use of these?


Code: [Select]
;Rigol DM30xx, Fluke8846A
#interfaceType DMM BMM
#interface readValue 0

;Fluke8845A
#interfaceType DMM BMM
#interface readValue 1

;R&SHMC8012
#interfaceType DMM BMM
#interface readValue  0
#interface readValue2 1
#interface readPower  2

;MTX328x
#interfaceType BMM
#interface readValue  0
#interface readValue2 1
#interface readValue3 2
#interface readValue4 3
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 17, 2024, 06:45:32 pm
Documentation says:
Quote
#interface read... column
#interface read... column column...

The definition of read is very easy, because it uses the same reading as "current values" and logging, i.e. the "#askValues" command and only the actual index of the value must be specified. For multichannel devices multiple indexes must be listed, one for each channel. The first value the device returns is numbered 0.
The read definitions also defines a name... command that can be used to get the column name for the value from the actual device.

QUESTIONS:

1) Given that the parameter to these is a zero-based column number, is it a bug to have only "#interface readValue 1" ?

No, but it means you cannot read the first column with a read... function.
But it looks like the Fluke8845A is wrong, it has to be 0.

2) The document suggests using "readValue column column..." but nobody does that. Instead they have separate "readValue 0" "readValue2 1"... WHY?

You list multiple column after the read... command when the device implements multiple devices.
Try checking out the R&SHMC8043.txt, it is a 3 channel power supply.

Using "readValue2 1" is sort of a hack, usually you use readVoltage, readCurrent, etc., but if you have two columns where the type of data changes depending on mode, using readValue with a number is a usable hack.

3) What's the meaning of readValue, readValue2, readValue3...? Not documented.

See above.

4) In NO case do I see any of these used anywhere else in the device files, nor the auto-generated nameValue* that's described. Do these definitions set up something inside TC?

They do, all the interface names are accessible from scripts, see here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Test_controller_device_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Test_controller_device_functions)
They are also used in some of the grid panel controls. This is mostly invisible, because it is used as a filter on what devices you can select for that grid panel item.

5) One device has "BMM" without "DMM". I have not yet found an explanation of what these interfaceTypes actually accomplish. Is there a table somewhere of perhaps variables or controls that are defined or enabled through use of these?

That is a error, BMM is bench multimeter and means that it can be controlled from TC, not only read. See here: https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_#interfaceType_definition (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#The_#interfaceType_definition)

These interface types are often used to filter what devices can be selected, especially in grid panels, but also in some other places.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on January 19, 2024, 01:02:50 am
Hi HKJ,

Just a minor UI request: when importing a log file into the table to quickly review the charts, it would be nice to have a "Select All" checkbox for the listed parameters that have been logged, instead of having to check each individual box.

[attachimg=1]

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 21, 2024, 02:16:40 pm
@HKJ, a new set of confusions  :P

I'm working on the definition for a BMM with primary and secondary modes/measures (Fluke 8808A). As is common, some functions are only available on primary, and there are limitations on which functions can be used on secondary.

I've got all the primaries working ok. Secondary has me a bit confused. I have two questions, both relating (I think!) to #cmdModeCheck:

Background: I'm using #cmdModeCheck for the secondary measurements, and for the modifiers (Rel, MinMax, etc) particularly because it allows defining which (primary) modes are allowed. (In general: any combination of DC/AC Volts/Amps can be on either one; can do ohms on P or P+S (and select 2/4 wire on P), Freq with select other things, and Modifiers go with almost every Primary mode.)

1) Modes Where This Mode Is Valid

I am not understanding how this line functions.
If I define the valid modes, and the invalid modes (with !Mode)... OR just define the valid modes... The result is that I get grayed-out result no matter what I do, unless I remove this line completely??!

2) How to do interlocking secondary modes?

If I choose Secondary AC Volts, by definition any other Secondary mode is no longer active. So that's not exactly a check-uncheck item... more like a second set of mode radio buttons.

It's pretty clear to me that the Mode Off Commands in #cmdModeCheck can't be used in this case. Those appear to ONLY work well when thinking of a single #cmdModeCheck as an isolated item that can be turned on/off.

So... how would you suggest handling a secondary set of modes that interlock? It almost feels like a radio button version of #cmdSetup??
This can't be the first device that has such a setup...


Title: Re: Program that can log from many multimeters.
Post by: jorgemef on January 21, 2024, 02:56:17 pm
Hello,
Not sure if already addressed in the 129 pages. :) I have keitley2000 and 2001 TSC scan multiplex card. It works with SPI protocol. Any simple way to use the multiplex channel wit Testcontroller? I would like to use it to monitor 3 different voltage reference signals from some boards I am setting up. :)
Thanks, Jorge
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 21, 2024, 06:00:53 pm
... I have keitley2000 and 2001 TSC scan multiplex card. It works with SPI protocol. Any simple way to use the multiplex channel wit Testcontroller? I would like to use it to monitor 3 different voltage reference signals from some boards I am setting up. :)
(Search at top-right... "multiplex" has not been said before ;) )
I downloaded the user guide. Looks like it ought to work for you. Simple? Not sure...
* While there's already a Keithley2000.txt device file, yours is likely a bitt different. You may need to work out a device definition. Once you've got the basic device recognition (even without much of anything else)...
* ensure the existing #value (data types) to be read are OK
* work out how you want to set it up to do what you want. NO NEED to automate that to start.
* work out a set of commands that would at least define how to read the data you want (that part MUST be sent by TC.) Got to have #askValues defined.
* use testcontrollerdebug.bat to see the interaction at the outset and make sure it isn't blowing up
* use the Current Values tab to watch data come in
* then turn on logging and collect a bunch of data :)

Simple? Depends on your expectations. It WILL take some learning :)

Hope that helps a little!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2024, 11:56:21 am
Just a minor UI request: when importing a log file into the table to quickly review the charts, it would be nice to have a "Select All" checkbox for the listed parameters that have been logged, instead of having to check each individual box.

I will think about it.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2024, 12:10:37 pm
I'm working on the definition for a BMM with primary and secondary modes/measures (Fluke 8808A). As is common, some functions are only available on primary, and there are limitations on which functions can be used on secondary.

I've got all the primaries working ok. Secondary has me a bit confused. I have two questions, both relating (I think!) to #cmdModeCheck:

Background: I'm using #cmdModeCheck for the secondary measurements, and for the modifiers (Rel, MinMax, etc) particularly because it allows defining which (primary) modes are allowed. (In general: any combination of DC/AC Volts/Amps can be on either one; can do ohms on P or P+S (and select 2/4 wire on P), Freq with select other things, and Modifiers go with almost every Primary mode.)

1) Modes Where This Mode Is Valid

I am not understanding how this line functions.
If I define the valid modes, and the invalid modes (with !Mode)... OR just define the valid modes... The result is that I get grayed-out result no matter what I do, unless I remove this line completely??!

2) How to do interlocking secondary modes?

If I choose Secondary AC Volts, by definition any other Secondary mode is no longer active. So that's not exactly a check-uncheck item... more like a second set of mode radio buttons.

It's pretty clear to me that the Mode Off Commands in #cmdModeCheck can't be used in this case. Those appear to ONLY work well when thinking of a single #cmdModeCheck as an isolated item that can be turned on/off.

So... how would you suggest handling a secondary set of modes that interlock? It almost feels like a radio button version of #cmdSetup??
This can't be the first device that has such a setup...

One place where #cmdModeCheck is used is the "R&SHMC8012.txt" definition and you can probably get a lot of hint from there.

Also use =deviceMode(handle) command to check what modes are active when you test

Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 22, 2024, 12:18:28 pm
Hello,
Not sure if already addressed in the 129 pages. :) I have keitley2000 and 2001 TSC scan multiplex card. It works with SPI protocol. Any simple way to use the multiplex channel wit Testcontroller? I would like to use it to monitor 3 different voltage reference signals from some boards I am setting up. :)
Thanks, Jorge

Test controller do not have the concept of multichannel device only returning one channel value at a time, it always needs all channels simultaneous. If you can setup a couple of commands to return all values, you are on (That may mean a low log rate).

If you do not require high precision, you can make a alternate solution very cheaply, that works with TC: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker)
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 22, 2024, 05:20:06 pm
Test controller do not have the concept of multichannel device only returning one channel value at a time, it always needs all channels simultaneous. If you can setup a couple of commands to return all values, you are on (That may mean a low log rate).
To say the same thing in a perhaps overly optimistic way ;)... many BMM devices pull multiple values sequentially in their #askValues command. The R&S8012.txt device uses 3-5 commands in a row to accomplish that. The Fluke 8808A I'm working with now does that. Depending on the specific measurements involved, yes the log rate can vary from dozens per second to one log every two seconds worst case :)

The key is, ALL values to be read must fit into a single #askValues sequence.
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 22, 2024, 07:50:37 pm
@HKJ I've done a bunch of testing on modes and #cmdModeCheck

I'm not sure if these indicate some bugs. At the least, I seem to be missing a function or two to accomplish some seemingly obvious use cases :)

In #cmdModeCheck:
* If I use the 4th line (list of valid/invalid modes), it ONLY works if I use the inverted logic (a list of modes that are invalid for this, ie !VDC etc) Otherwise, this mode is always grayed out 100% of the time, even if I make it active by default when starting (ie line 1 last parameter set to 1 instead of 0)
* Unlike #cmdMode, every #cmdModeCheck mode is 100% independent of all others, in the sense that any mode change is ignored by this one -- the check box NEVER gets auto-unchecked.

   In other words:

 1) With regular #cmdMode modes... the regular #cmdMode modes act like a set of radio buttons: only one of them is active at a time. TC knows which one(s) is/are active via #askMode. If I switch from DCV to ACV, it knows, etc... and all columns etc change based on that.

2) With #cmdModeCheck... all of the buttons are independent. (I'll call these CheckBoxModes for the moment)
     * TC knows if I preset a CheckBoxMode to be active, and knows if I manually check or uncheck it... BUT:
     * Changing a mode that's on the list of valid/invalid Modes only makes the CheckBoxMode gray or normal (touchable or not). It never changes the active value
     * AND, there's no interaction between CheckBoxModes. Even if I'm using the DeviceModeString on line one, and NOT [localmode]... nothing auto-un-checks a CheckBoxMode that's no longer active. The user must manually uncheck.

QUESTIONS:

Q1) deviceMode(handle) and isDeviceMode(handle,mode) are great for testing modes. Is there a function that lets me set/clear a mode?

Q2) Is there a way to do some math in #cmdModeCheck so I can code the interactions between #cmdModeCheck items? :)

Q3) If not Q2 (and maybe anyway ;) ) ... is there a way to set/clear Modes within the UI of #cmdSetup?

(Something that *appears* to approach this is the fancy mode capture code in devices like Siglent SDL10xxXxx... yet (I could easily be wrong on this as a noob ;) ... it appears to be capturing, not changing modes.?)
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 23, 2024, 08:36:11 pm
@HKJ a seemingly dumb question, but not actually documented (four items are listed but not documented at the bottom of https://lygte-info.dk/project/TestControllerPopupLog%20UK.html )

What does #haslogged actually do? I see in one of your scripts that you have two of those in a row. This indicates it does more than simply "sync" with the log file... ;)
Title: Re: Program that can log from many multimeters.
Post by: jmurray on January 24, 2024, 02:28:10 am
@HKJ a seemingly dumb question, but not actually documented (four items are listed but not documented at the bottom of https://lygte-info.dk/project/TestControllerPopupLog%20UK.html )

What does #haslogged actually do? I see in one of your scripts that you have two of those in a row. This indicates it does more than simply "sync" with the log file... ;)

Don't forget that you can always type the command into the command line text box in the program and it will provide a helpful description.
[attachimg=1]


On the topic of logging, @HKJ, I notice for example on the device definition web page, there's mention of being able to test the portType variable:
[attachimg=2]

Is there a global or system variable that can be queried to determine whether logging is currently running?
I have Test Controller executing a batch file that launches putty and logs the output to a filename, but would like to be able to leave a script running in the background that can execute my "close putty" script if I stop logging in Test Controller.
Not vital and if need by I'll come up with a work-around, but thought it worth asking the question.

Thanks!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 24, 2024, 01:10:18 pm
Q1) deviceMode(handle) and isDeviceMode(handle,mode) are great for testing modes. Is there a function that lets me set/clear a mode?

No.
But you can change between normal modes by defining a interface section that support the required script commands.
https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#A_generic_interface (https://lygte-info.dk/project/TestControllerConfigDevice%20UK.html#A_generic_interface)

Q2) Is there a way to do some math in #cmdModeCheck so I can code the interactions between #cmdModeCheck items? :)

No

Q3) If not Q2 (and maybe anyway ;) ) ... is there a way to set/clear Modes within the UI of #cmdSetup?

(Something that *appears* to approach this is the fancy mode capture code in devices like Siglent SDL10xxXxx... yet (I could easily be wrong on this as a noob ;) ... it appears to be capturing, not changing modes.?)

No
All the #cmdMode stuff is static definitions, they get parsed once when the device is loaded. The #cmdModeCheck get enabled/disable by parsing the mode names, the parser assumes enabled and if any of the listed mode check fails it will be disabled.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 24, 2024, 01:23:15 pm
Is there a global or system variable that can be queried to determine whether logging is currently running?
I have Test Controller executing a batch file that launches putty and logs the output to a filename, but would like to be able to leave a script running in the background that can execute my "close putty" script if I stop logging in Test Controller.
Not vital and if need by I'll come up with a work-around, but thought it worth asking the question.

No, but there will be in the next version.
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 25, 2024, 05:00:11 am
All the #cmdMode stuff is static definitions, they get parsed once when the device is loaded. The #cmdModeCheck get enabled/disable by parsing the mode names, the parser assumes enabled and if any of the listed mode check fails it will be disabled.

I understand that the definitions are static. However, which Mode is/are active at any time is not static, correct? It's based on the dynamics of at least the result of #askMode?

So my question relates to how could one feed dynamic information into (or within) the system so that #cmdModeCheck modes are correctly turned on and off? I guess enable/disable was the wrong way to ask it ;)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2024, 11:47:19 am
So my question relates to how could one feed dynamic information into (or within) the system so that #cmdModeCheck modes are correctly turned on and off? I guess enable/disable was the wrong way to ask it ;)

#askMode/#modeFromValue are the primary ways to set the modes, #cmdModeCheck with [localMode] is another way.
When the active modes changes TC will reinitialize the select columns and displayed values.
Title: Re: Program that can log from many multimeters.
Post by: adso85swe on January 25, 2024, 12:26:25 pm

TC do not have that function, but it can easily be done with scripting in TC, including naming the files with a sequence number or a date.
This example will save every 10 seconds and then restart the log:

#while 1
#log 1
#delay 10
#log 0
#savetable ("c:\\data\\log"+date())
#endwhile

Place it in the "log" window and press "Run", it will log from all connected devices

If you want to format the date different check here: https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Date_&_time_functions (https://lygte-info.dk/project/TestControllerFunctions%20UK.html#Date_&_time_functions)

This is great, thanks a lot. One question though, the CVS file that is automatically saved with this script has the default dateTime format in Unix time, i.e. just a long number in seconds. Is there a way to change the log format of the date by script? Im not talking about the date in the file name, but the actually logged time stamps.

Thanks a lot for a great work with this software.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2024, 01:30:33 pm
This is great, thanks a lot. One question though, the CVS file that is automatically saved with this script has the default dateTime format in Unix time, i.e. just a long number in seconds. Is there a way to change the log format of the date by script? Im not talking about the date in the file name, but the actually logged time stamps.

Yes, you have to use #export instead of #savetable:
#ExportInit
#ExportColumn dateTime "" System
#ExportTable myFileName

If you want to redefine more columns for the export, use the export popup, but instead of finish with pressing "Export data" close the popup. Then go to the commands tab and right click in the log window and select "Generate script, Export script", this will give you the script needed to export in the selected format.

(http://lygte-info.dk/pic/cpf6/TCExportScript.png)

Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 25, 2024, 01:52:30 pm
#cmdModeCheck with [localMode] is another way.
Ahh! So #cmdModeCheck without [localMode] isn't fully implemented yet?

I'm talking about making use of deviceModeString:
Code: [Select]
#cmdModeCheck modeLabel deviceModeString defaultState
The Fluke 8808A for example has secondary modes VDC2, ADC2, VAC2, AAC2, OHMS2, FREQ2, etc... (and CLR2, which turns off any secondary measure)

So I have things like

Code: [Select]
#cmdModeCheck secVDC VDC2 0
VDC2
*CLS
!pFREQ,!pDIODE,!pCONT

This partly works: clicking the checkbox does enable the secondary mode!

However, even though all of these have correct deviceModeString values in place, TC doesn't seem to detect these modes to check/uncheck the appropriate check boxes.

(NOTE: I have to use *CLS instead of CLR2 for the "off" string, because leaving it blank breaks everything (is there a better placeholder?), and using CLR2 there causes all secondary measures to turn off pretty much all the time. Instead I have an extra button to turn secondary off:

Code: [Select]
#cmdModeCheck secCLR CLR2 0
CLR2
*CLS
!pFREQ,!pDIODE,!pCONT

This works -- kind of -- it does send the command. But then there is a checked box in the UI that only clears if the users clicks again ;)

Anyway... shouldn't TC see the secondary modes in #askMode and cause the other #askModeCheck checkboxes to clear? I.e. the ones that don't have [localMode]?
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2024, 03:47:24 pm
Anyway... shouldn't TC see the secondary modes in #askMode and cause the other #askModeCheck checkboxes to clear? I.e. the ones that don't have [localMode]?

That is correct, TC do not in any way control the checkboxes, that may not be ideal and I probably have to fix it in a future version. There is one issue with two way control: It can get into a loop
The reason is that not all devices changes immediately, but may take up to a few seconds.
Title: Re: Program that can log from many multimeters.
Post by: MrPete on January 25, 2024, 05:38:12 pm
Anyway... shouldn't TC see the secondary modes in #askMode and cause the other #askModeCheck checkboxes to clear? I.e. the ones that don't have [localMode]?

That is correct, TC do not in any way control the checkboxes, that may not be ideal and I probably have to fix it in a future version. There is one issue with two way control: It can get into a loop
The reason is that not all devices changes immediately, but may take up to a few seconds.
When you say "two way control" do you mean the ability to set both primary and secondary measures? Or something else?
It seems this potential issue is there for any device that has multiple channels or simultaneous modes (ie multiple values read.)

Having a secondary set of modes seems pretty common, both in bench meters and multi channel devices.

To make this practical, here's a table of what's allowed for the 8808A. I've also included the (primary mode) modifiers. These of course are common in many bench meters.

Primary Modes

(A simple mutually-exclusive set of modes. I.e. these are the 'radio buttons' ;) )
VDC, VAC, ADC, AAC, FREQ, OHMS-2wire, OHMS-4wire, DIODE, CONT

(Primary) Modifiers

Three sets: each can have one selected, or none. All have certain exclusions.
REL -- work with all primary except DIODE and CONT
MIN, MAX, MNMX  -- work with all primary except DIODE and CONT
DB, DBPOWER -- work with VDC and VAC (DBPOWER is DBm ;) )

Secondary Modes

(A simple mutually-exclusive set of six modes. I.e. these are the 'radio buttons' ;) ... but some are not available depending on the primary mode.)
VDC2, VAC2, ADC2, AAC2 -- selectable with any primary Volts or Amps
FREQ2 -- selectable with VAC or FREQ
OHMS2 -- selectable with OHMS-2wire and OHMS-4wire

Further info for understanding:
FWIW, I am noodling over what it would take to treat the secondary modes as a second channel. The hard part there (maybe) is that there are interactions in terms of what is allowed. Plus, I don't actually see any examples of #askMode being applied in a multi-channel sense.
- Could I format a second incoming mode as "VDC2:2" and have the ":2" treated as channel 2???
- How would channels be defined in mode definitions? Maybe  #cmdMode secVDC VDC2:2  (ie on channel 2 (":2"), send string "VDC2" to set this mode)

I'm probably being creatively stupid here LOL
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 25, 2024, 06:16:17 pm
When you say "two way control" do you mean the ability to set both primary and secondary measures? Or something else?
It seems this potential issue is there for any device that has multiple channels or simultaneous modes (ie multiple values read.)

I mean from both GUI and from the device.

Having a secondary set of modes seems pretty common, both in bench meters and multi channel devices.

Yes and mostly the TC definition is only defined to handle the primary value (Metra hit energy is an exception).


Further info for understanding:
  • #AskValues is simply "MEAS?" which returns one or two values
  • #AskMode is a little trickier, but not hard: I pass through the primary mode, and append "2" to the secondary mode if it exists.
  • Modifiers and (Fixed vs Auto) ranging apply only to the Primary mode; Secondary does something appropriate ;)

FWIW, I am noodling over what it would take to treat the secondary modes as a second channel. The hard part there (maybe) is that there are interactions in terms of what is allowed. Plus, I don't actually see any examples of #askMode being applied in a multi-channel sense.
- Could I format a second incoming mode as "VDC2:2" and have the ":2" treated as channel 2???
- How would channels be defined in mode definitions? Maybe  #cmdMode secVDC VDC2:2  (ie on channel 2 (":2"), send string "VDC2" to set this mode)

I'm probably being creatively stupid here LOL

You can have multiple commands after #askMode (Like #askValues), TC will look at the full answer and split it on spaces/commas, each item will be a mode. You can also do math (#askModeMathFormat ) on the result to split it into multiple modes.
Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 28, 2024, 05:16:39 am
I'm working on a device file for the Owon XDS series oscilloscopes.

What's the best way to decode the #askValues when the response is in the form "SS : NNN.NYY->"

Code: [Select]
;; OwonXDS: Tx <:MEASU:CH1:VAMP?>
;; OwonXDS: Rx <Va : 1.829V->>

;; OwonXDS: Tx <:MEASU:CH1:FREQ?>
;; OwonXDS: Rx <F : 1.759KHz->>

Title: Re: Program that can log from many multimeters.
Post by: palmerr23 on January 28, 2024, 05:46:38 am
I did some extra searching and found a previous answer:

#askValuesReadFormat xxs
Title: Re: Program that can log from many multimeters.
Post by: HKJ on January 28, 2024, 05:32:25 pm
I did some extra searching and found a previous answer:

#askValuesReadFormat xxs

That is the best way, another way is to use a expression in #askValuesMathFormat, but it is a slower (Only a issue on very slow computer or with many devices running simultaneous).
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 04, 2024, 03:04:58 pm
Hi,

when i use an AR488 with test controller only one device at a time works, as soon as i enable 2 devices in "Load Devices" i get

Code: [Select]
;; COM4: Tx: <READ?.> 52 45 41 44 3F 0A
;; HP34401A: Tx <system:local>
Thread for HP34401A
java.lang.NullPointerException: Cannot invoke "dk.hkj.comm.CommInterface.write(String)" because "this.ci" is null
        at dk.hkj.shared.SharedInterface.writeWithDelay(SharedInterface.java:114)
        at dk.hkj.shared.SharedInterfaceAR488.write(SharedInterfaceAR488.java:68)
        at dk.hkj.comm.GpibInterface.write(GpibInterface.java:59)
        at dk.hkj.main.SCPICommand.writeReadInternal(SCPICommand.java:316)
        at dk.hkj.main.SCPICommand.writeRead(SCPICommand.java:339)
        at dk.hkj.main.DeviceInterface.doCommand(DeviceInterface.java:83)
        at dk.hkj.devices.DeviceSCPI.close(DeviceSCPI.java:154)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1638)
;; jSerialComm version: 2.10.3
;; COM4: Set params: 115200
Exception in thread "Scan ports" java.lang.ClassCastException: class dk.hkj.comm.DummyInterface cannot be cast to class dk.hkj.comm.SerialInterface (dk.hkj.comm.DummyInterface and dk.hkj.comm.SerialInterface are in unnamed module of loader 'app')
;; Start thread for: AR488 A:14 - Agilent 34401A Enhanced
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesShared(InterfaceThreads.java:643)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:791)
;; Stopping thread for: AR488 A:14 - Agilent 34401A Enhanced

It works independently with both devices, but not both together.

And when does the new version with the fixed AR488Lan gets released?
The bug that the AR488Lan adds a normal AR488 is still in the current version.
I tried Prologix LAN also had no luck with it.

Thank you for your hard work!
Title: Re: Program that can log from many multimeters.
Post by: MrPete on February 04, 2024, 10:11:51 pm
You can have multiple commands after #askMode (Like #askValues), TC will look at the full answer and split it on spaces/commas, each item will be a mode. You can also do math (#askModeMathFormat ) on the result to split it into multiple modes.

SO... Is the following a ridiculous idea, or potentially useful?

1) Architecturally, I will create and maintain knowledge of N Mode Sets. Each set can have a single Mode that's active, or none. By default TC understands one Mode Set (the "Primary Mode")

2) I'll write code to maintain the current state of each Mode Set, and feed it to TC via #AskMode. Any time ANY mode is requested/changed, ALL active modes will be returned to TC (ie either zero or one mode from each mode set)

The only thing that feels unclear to me at this point, is how the calculated (#CmdModeCheck) modes may interact with this... but i'll cross that bridge when I am further along. ;)

Sample real-world setup

Mode Set: Primary = VDC, VAC, ADC, AAC, FREQ, OHMS-2wire, OHMS-4wire, DIODE, CONT

Mode Set: PrimModRel: REL (available for all Primary except DIODE and CONT)
Mode Set: PrimModMinMaX: MIN, MAX, MNMX (avail for all Primary exc DIODE and CONT)
Mode Set: PrimModDb: DB, DBPOWER (avail for VDC, VAC)

Mode Set: Secondary: VDC2, VAC2, ADC2, AAC2  (avail w/ any primary Volts or Amps)
                                 FREQ2 (avail w/ Primary VAC or FREQ)
                                 OHMS2 (avail w/ Primary OHMS-2wire and OHMS-4wire)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 06, 2024, 11:36:31 am
when i use an AR488 with test controller only one device at a time works, as soon as i enable 2 devices in "Load Devices" i get
It works independently with both devices, but not both together.


Yes, that is a known bug.

And when does the new version with the fixed AR488Lan gets released?
The bug that the AR488Lan adds a normal AR488 is still in the current version.
I tried Prologix LAN also had no luck with it.

Thank you for your hard work!

I have not been putting much time into TC lately and it is not really for a official release, but you can get a test version here (jar only) with the above fixed:
http://lygte-info.dk/pic/Projects/TestController/TestController.jar (http://lygte-info.dk/pic/Projects/TestController/TestController.jar)
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 06, 2024, 11:40:29 am
SO... Is the following a ridiculous idea, or potentially useful?

That might work, just be aware that #cmdMode do translate mode names. You can use same name as both first and second parameter to avoid that.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 06, 2024, 09:24:31 pm
Thank you,
i can configure an AR488Lan now, but i still its trying to use some local port:

Code: [Select]
;; jSerialComm version: 2.10.3
;; Start thread for: AR488Lan A:2 - HP 66311B
;; Stopping thread for: AR488Lan A:2 - HP 66311B

The local com port its still working and the AR488 is also working via telnet.

If you dont have time for TestController, have you thought about hosting the sourcecode an github?
You put a lot of effort into this awesome software, it would be sad if the development stops.

Greetings.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 07, 2024, 12:16:11 pm
Thank you,
i can configure an AR488Lan now, but i still its trying to use some local port:

Code: [Select]
;; jSerialComm version: 2.10.3
;; Start thread for: AR488Lan A:2 - HP 66311B
;; Stopping thread for: AR488Lan A:2 - HP 66311B

The local com port its still working and the AR488 is also working via telnet.

I am not really sure what the problem is here.

If you dont have time for TestController, have you thought about hosting the sourcecode an github?
You put a lot of effort into this awesome software, it would be sad if the development stops.

Since start of summer my lab has mostly been packed down due to some construction work, it was supposed to last the summer, but is not finished yet. This has slowed down my work significantly.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 08, 2024, 09:09:37 pm



I am not really sure what the problem is here.

I added an AR488Lan with the ip, but it seems like it TestController is not trying to connect via a the TCP/IP connection.
When i use the normal AR488 with it plugged into a USB Port its still working.
I can address the AR488Lan via Telnet from my pc, so there should be any connection.
Can you maybe add more debug messages in the jar file, for me it seems like its tying a local port in the AR488Lan mode because if the jSerialComm message.
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 09, 2024, 11:48:25 am
In addition for my ADC10F103C resistor interface in Post 3299
like to share an option for Current measurement with an ACS712 interface.
Can be powerd from ADC10F103C 5Volt and GND output.
Output can be connected to a 0-5Volt input.
The ACS712 can be bought for a few Euro's in 5, 20 and 30A versions.
In my case the 5A version has an output of 185mV/A.
The offset is 2.5 Volt, so you can measure Pos. and Neg. current.
With an simple math formula you can calculate the according Current.

Formula: Current = (ADC10.Input1_5V-2.5)/0.185

You can always put an calibration factor in the formula.

Pros:
Negative and Positive current. For example usefull in a charge and discharge system.
Isolated input.
1.2 mOhm input resistance.
ADC10F103C and ACS712 powered by USB, no additional power supply needed.
With other ADC10F103C Voltage inputs you can make calculations like Power consumption etc.,
making measurement for voltage, current and power consumption dependence.
Cheap

Cons:
Linearity at low current a bit low. (I have an cheap Chinese module, is the ACS712 original?}
Some noise on output.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 09, 2024, 11:55:08 am
I added an AR488Lan with the ip, but it seems like it TestController is not trying to connect via a the TCP/IP connection.
When i use the normal AR488 with it plugged into a USB Port its still working.
I can address the AR488Lan via Telnet from my pc, so there should be any connection.
Can you maybe add more debug messages in the jar file, for me it seems like its tying a local port in the AR488Lan mode because if the jSerialComm message.

If is not tested, but is a copy of the Prologix Ethernet that I know works.
Is the configuration correct, except for the IP address it must look this way:
(http://lygte-info.dk/pic/cpf6/GPIBAR488Lan.png)


Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 09, 2024, 12:08:16 pm
In addition for my ADC10F103C resistor interface in Post 3299
like to share an option for Current measurement with an ACS712 interface.

I have added it to the page.
These modules are nice, I did a DMM adapter with one of these modules a long time ago: https://lygte-info.dk/info/CurrentAdapter%20UK.html (https://lygte-info.dk/info/CurrentAdapter%20UK.html)
Title: Re: Program that can log from many multimeters.
Post by: Pukker on February 09, 2024, 12:20:15 pm
I have added it to the page.
These modules are nice, I did a DMM adapter with one of these modules a long time ago: https://lygte-info.dk/info/CurrentAdapter%20UK.html (https://lygte-info.dk/info/CurrentAdapter%20UK.html)

Aha, didn't looked there before.  DMM current-interfaces are pretty indeed.
Don't like high currents in my DMM.   :bullshit:
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 09, 2024, 08:09:26 pm
Don't like high currents in my DMM.   :bullshit:

I agree with that.
One issue is the voltage drop, it do not really matter when the voltage is high, but at low voltages it will significantly change the result (See my article about the module).
The other issue is heat, the shunt in the meter may handle it well (Sometimes), but the copper traces do not (Some meters do include copper trace resistance in shunt value, meaning they drift significantly at high current), their resistance will increase significantly and that will lead to even more problems with heat.

The ACS712 is not ideal, due to its issues at low current, but at higher currents it is a good solution at a price (A high quality shunt with a high quality amplifier and low resistance connection, will be better in many cases, but also much more expensive).
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 10, 2024, 11:31:05 am
I
I added an AR488Lan with the ip, but it seems like it TestController is not trying to connect via a the TCP/IP connection.
When i use the normal AR488 with it plugged into a USB Port its still working.
I can address the AR488Lan via Telnet from my pc, so there should be any connection.
Can you maybe add more debug messages in the jar file, for me it seems like its tying a local port in the AR488Lan mode because if the jSerialComm message.

If is not tested, but is a copy of the Prologix Ethernet that I know works.


I found the problem.
The port of the prologix TCP/IP socket is 1234, while the AR488Lan is 23.
I edited the firmware of the AR488Lan and recompiled it to host the socket on 1234, and it works now with all my devices simultaneously.

So it would be great, if you could change the port for AR488Lan to 23 in a future release.

Thank you!
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 10, 2024, 11:58:47 am
I found the problem.
The port of the prologix TCP/IP socket is 1234, while the AR488Lan is 23.
I edited the firmware of the AR488Lan and recompiled it to host the socket on 1234, and it works now with all my devices simultaneously.

So it would be great, if you could change the port for AR488Lan to 23 in a future release.

I will look at it.
Note: You can add port after the IP number like this: 1.2.3.4:23
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 11, 2024, 11:34:44 am
Thanks, but with with the port in the ip field its sufficient for me.

It there any progress in this matter?


thanks for the fast reply.
Does DMM2 support TCP communication?
Because when i change the driver to DMM2 i lose all debug information.
The only thing written in the debug window is:
Code: [Select]
Starting
;; jSerialComm version: 2.10.3

Thats why i used AsciiBlock in the first place.

DMM2 do not support socket, but I will look at adding it.

In the meantime you can reprogram your micro for serial interface and work on the definition.

With the test version you uploaded, the output is different from the version from november, but its still not working.

Code: [Select]
;; jSerialComm version: 2.10.3
Exception in thread "Scan ports" java.lang.ClassCastException: dk.hkj.comm.SocketInterface cannot be cast to dk.hkj.comm.SerialInterface
        at dk.hkj.devices.DeviceDMM2.getCommInterface(DeviceDMM2.java:288)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:1432)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSocket(InterfaceThreads.java:671)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:806)

Its not urgent, but if this works, i can use my multimeter wirelessly as a data logger on projets across the lab. That would be awesome.
I use com0com for the connection in the meantime, but it would be nice to have it working directly in TestController.

I also attached the schematic, sourcecode and 3D printable case files i used for the adapter.
Title: Re: Program that can log from many multimeters.
Post by: jmurray on February 12, 2024, 12:05:03 am
Hi HKJ,

I noticed there's an :update: line missing from the Itech IT85xx definition file for the constant resistance mode. I've added it in to the attached file.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 12, 2024, 12:55:20 pm
It there any progress in this matter?
With the test version you uploaded, the output is different from the version from november, but its still not working.

Try download TC again

I also attached the schematic, sourcecode and 3D printable case files i used for the adapter.

If you have a picture or two of the finished adapter and how it fits on the meter, I may add it to the project page.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 12, 2024, 12:57:52 pm
I noticed there's an :update: line missing from the Itech IT85xx definition file for the constant resistance mode. I've added it in to the attached file.

Thanks, I will include it.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 14, 2024, 06:14:17 am


Try download TC again


If you have a picture or two of the finished adapter and how it fits on the meter, I may add it to the project page.

Hello HKJ,

unfortunately the error still persists. I also tried to remove the config and set it up again.
I attachtched some pictures from the adapter for the VC870.
It should also work with other Voltcraft and Uni-T DMMs.
I assume they have the same geometry just other protocols.

Title: Re: Program that can log from many multimeters.
Post by: samuil on February 14, 2024, 12:52:39 pm
That is, except for one detail. The ON button does not yet work on the DL24M. The load must be turned on manually with the button on the load display. I can't solve that yet.
Please incorporate these changes into your program and I hope this helps someone. I am very satisfied with your TC so far.

This line controls on:

#scpiCmd on tx 1 (value) *dd

Maybe you have to get rid of the *dd?

if that doesn't work you can try:
#scpiCmd on tx 1 (value?0xffffff:0)
To turn on the load DL24M command line:
on 256
via script:
=setOn(load,256);
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 14, 2024, 06:29:05 pm
So i tested the  VC870 with the old version from the normal download menu from you webite.
While using the definition:

Code: [Select]
#idString Voltcraft, VC870,
#name Voltcraft VC870
#handle VC870
#driver DMM2
#port comfixedbaud 23
#baudrate 9600
#subDriver Definition
...

With a local COM Port (comfixedbaud) i get the correct values from the meter:
Code: [Select]
;; COM2: Rx: 30 30 30 30 31 39 36 32 30 30 30 30 30 30 32 30 30 30 35 30 30 0D 0A
;; VC870: Tx <VALUE?>
;; VC870: Rx <0.1962>
;; VC870: Rx as numbers <0.1962>

When using socket i just get:
Code: [Select]
;; jSerialComm version: 2.10.3
When i use the test version from your link i get:

Using COM Port:

Code: [Select]
;; jSerialComm version: 2.10.3
Exception in thread "Scan ports" java.lang.ClassCastException: dk.hkj.comm.SerialPacketInterface cannot be cast to dk.hkj.comm.SocketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.<init>(DeviceDMM2.java:33)
        at dk.hkj.devices.DeviceDMM2.getCommInterface(DeviceDMM2.java:317)
        at dk.hkj.main.InterfaceThreads$DeviceThread.<init>(InterfaceThreads.java:1432)
        at dk.hkj.main.InterfaceThreads$ScanPorts.addDevicesSerial(InterfaceThreads.java:659)
        at dk.hkj.main.InterfaceThreads$ScanPorts.run(InterfaceThreads.java:792)

Using socket:
Code: [Select]
Starting
;; jSerialComm version: 2.10.3
;; Start thread for: 192.168.2.43 - Voltcraft VC870
java.lang.ClassCastException: dk.hkj.comm.SocketPacketInterface cannot be cast to dk.hkj.comm.SerialPacketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.readFromSerialPort(DeviceDMM2.java:71)
        at dk.hkj.devices.DeviceDMM2$DriverInterface$1.run(DeviceDMM2.java:46)
        at java.lang.Thread.run(Unknown Source)
;; Found Voltcraft VC870 on 192.168.2.43
java.lang.ClassCastException: dk.hkj.comm.SocketPacketInterface cannot be cast to dk.hkj.comm.SerialPacketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.readFromSerialPort(DeviceDMM2.java:71)
        at dk.hkj.devices.DeviceDMM2$DriverInterface$1.run(DeviceDMM2.java:46)
        at java.lang.Thread.run(Unknown Source)
;; VC870: Tx <VALUE?>
;; VC870: Rx <0.0>
;; VC870: Rx as numbers <0.0>
java.lang.ClassCastException: dk.hkj.comm.SocketPacketInterface cannot be cast to dk.hkj.comm.SerialPacketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.readFromSerialPort(DeviceDMM2.java:71)
        at dk.hkj.devices.DeviceDMM2$DriverInterface$1.run(DeviceDMM2.java:46)
        at java.lang.Thread.run(Unknown Source)
...
...
and no data


So its not working at all with the version from this link "http://lygte-info.dk/pic/Projects/TestController/TestController.jar"
Title: Re: Program that can log from many multimeters.
Post by: linux-works on February 14, 2024, 06:45:30 pm
too funny - I just got done designing my own opto plugin (open-scad) for the ut61e (and similar) series.

Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 15, 2024, 04:43:23 pm
So i tested the  VC870 with the old version from the normal download menu from you webite.

So its not working at all with the version from this link "http://lygte-info.dk/pic/Projects/TestController/TestController.jar"

Try downloading again, I hope I have fixed the typecasts.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 15, 2024, 04:44:49 pm
too funny - I just got done designing my own opto plugin (open-scad) for the ut61e (and similar) series.

If you get it to something that can be used with TC, I will be happy to publish it on my project page.
Title: Re: Program that can log from many multimeters.
Post by: linux-works on February 15, 2024, 04:53:27 pm
tc = tinkercad (?)

I think openscad only exports its own source and stl as an object.  no step.  it seems to bug people.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 15, 2024, 04:57:57 pm
tc = tinkercad (?)

I think openscad only exports its own source and stl as an object.  no step.  it seems to bug people.

This thread is about TestController, i.e. TC

It is not only the box, but electronic too, i.e. a way to make your own interface for UNI-T

If you check my project page you will see it already some project of that type: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html) but none of the include a box (One with box will be added soon, see above).
Title: Re: Program that can log from many multimeters.
Post by: linux-works on February 15, 2024, 06:51:29 pm
ok, tc could have meant anything, so thanks for clearing that up for me.

a lot of msgs to catch up with, so still reading.

I developed my own framework and so it will probably be quite different in approach and implementation and even goals.  some may overlap, naturally.

so yet another independent toolsuite being designed and built.  oh well. 
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 16, 2024, 05:19:52 pm
I developed my own framework and so it will probably be quite different in approach and implementation and even goals.  some may overlap, naturally.

so yet another independent toolsuite being designed and built.  oh well.

That does not prevent your adapter from working with TC, as long as it present the data on a serial port or socket and you do not modify the data in your adapter.

There are many different toolsuites for test equipment and there are many differences. TC is supposed to be easy to use, with broad support for different brands and not designed for high speed data acquisition (100Hz is about maximum, but often a few Hz is more realistic, due to the devices). I have put a lot of tools into TC that is useful with the slow sampling.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 19, 2024, 01:41:24 pm
So i tested the  VC870 with the old version from the normal download menu from you webite.

So its not working at all with the version from this link "http://lygte-info.dk/pic/Projects/TestController/TestController.jar"

Try downloading again, I hope I have fixed the typecasts.

Unfortunatly i still get exactly the same error as soon as the socket is connected.
Title: Re: Program that can log from many multimeters.
Post by: Lajt on February 21, 2024, 10:40:01 pm
Hello everyone.

Recently, I acquired a Hioki DM7275 Precision DC Voltmeter and made a DIY temperature probe for it.
(https://lajtronix.eu/2024/02/21/diy-hioki-dm7275-76-temp-probe-z2001/ (https://lajtronix.eu/2024/02/21/diy-hioki-dm7275-76-temp-probe-z2001/))
Wanted to use TC for logging but DM7275 doesn't seem to be supported so I made a device file (attached).

Device file is as simple as it gets. Connection is only through LAN (since I have a basic model).
It will recognize DM7275 & DM7276 in all configurations.

DM7275-01
DM7275-02 Built-in GP-IB
DM7275-03 Built-in RS-232C

DM7276-01
DM7276-02 Built-in GP-IB
DM7276-03 Built-in RS-232C

I wanted to do a dual mode (Volts & Volts+Temp), and full control options but it was too complicated considering my very limited free time.
Nonetheless with correct IP and default port (23) it will connect and read the data.

HKJ, thank you for this great piece of software.

Regards,
Lajt
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2024, 12:23:52 pm
Unfortunatly i still get exactly the same error as soon as the socket is connected.

I doubt it was the exact same error, but I have fixed a bit more.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 25, 2024, 12:27:03 pm
Recently, I acquired a Hioki DM7275 Precision DC Voltmeter and made a DIY temperature probe for it.
(https://lajtronix.eu/2024/02/21/diy-hioki-dm7275-76-temp-probe-z2001/ (https://lajtronix.eu/2024/02/21/diy-hioki-dm7275-76-temp-probe-z2001/))
Wanted to use TC for logging but DM7275 doesn't seem to be supported so I made a device file (attached).

Device file is as simple as it gets. Connection is only through LAN (since I have a basic model).
It will recognize DM7275 & DM7276 in all configurations.

It will be included in the next release.
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 26, 2024, 06:46:07 am
Unfortunatly i still get exactly the same error as soon as the socket is connected.

I doubt it was the exact same error, but I have fixed a bit more.

Code: [Select]
java.lang.ClassCastException: dk.hkj.comm.SocketPacketInterface cannot be cast to dk.hkj.comm.SerialPacketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.readFromSerialPort(DeviceDMM2.java:71)
        at dk.hkj.devices.DeviceDMM2$DriverInterface$1.run(DeviceDMM2.java:46)
        at java.lang.Thread.run(Unknown Source)
;; VC870: Tx <VALUE?>
;; VC870: Rx <0.0>
;; VC870: Rx as numbers <0.0>
java.lang.ClassCastException: dk.hkj.comm.SocketPacketInterface cannot be cast to dk.hkj.comm.SerialPacketInterface
        at dk.hkj.devices.DeviceDMM2$DriverInterface.readFromSerialPort(DeviceDMM2.java:71)
        at dk.hkj.devices.DeviceDMM2$DriverInterface$1.run(DeviceDMM2.java:46)
        at java.lang.Thread.run(Unknown Source)

Thanks, but still...
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 26, 2024, 10:23:36 am
Thanks, but still...

I made a mistake and the latest did not get uploaded, it is up now.
I always update the version number for test releases , it is now v2.43
Title: Re: Program that can log from many multimeters.
Post by: Gulftown on February 26, 2024, 04:46:59 pm
It's working now, thank you!
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on February 26, 2024, 04:55:56 pm
Hello,
Not sure if already addressed in the 129 pages. :) I have keitley2000 and 2001 TSC scan multiplex card. It works with SPI protocol. Any simple way to use the multiplex channel wit Testcontroller? I would like to use it to monitor 3 different voltage reference signals from some boards I am setting up. :)
Thanks, Jorge

Test controller do not have the concept of multichannel device only returning one channel value at a time, it always needs all channels simultaneous. If you can setup a couple of commands to return all values, you are on (That may mean a low log rate).

If you do not require high precision, you can make a alternate solution very cheaply, that works with TC: https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker (https://lygte-info.dk/project/TestControllerUserProjects1%20UK.html#10_channel_12bit_ADC_module_addition_by_Pukker)

Hello,

For opening the different channels on the keithley2000 multiplex card it requires these specific SPCI commands (IEEE-488 bus):
*RST; :rout:close (@2); :rout:open (@2); :rout:scan:int:func (@2), ‘volt:dc’ // example for Channel #2

How can I send such commands through TestController? It identifies it as Java Exception whenever pipes () are open.

Thanks,
Jorge

Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 28, 2024, 02:00:53 pm
For opening the different channels on the keithley2000 multiplex card it requires these specific SPCI commands (IEEE-488 bus):
*RST; :rout:close (@2); :rout:open (@2); :rout:scan:int:func (@2), ‘volt:dc’ // example for Channel #2

How can I send such commands through TestController? It identifies it as Java Exception whenever pipes () are open.

Anything in () are processes as expressions, there are two ways to get around that:
Use quotes: ":rout:close (@2);"
or use a expression: (":rout:close (@2);")
Title: Re: Program that can log from many multimeters.
Post by: jorgemef on February 28, 2024, 03:49:19 pm
For opening the different channels on the keithley2000 multiplex card it requires these specific SPCI commands (IEEE-488 bus):
*RST; :rout:close (@2); :rout:open (@2); :rout:scan:int:func (@2), ‘volt:dc’ // example for Channel #2

How can I send such commands through TestController? It identifies it as Java Exception whenever pipes () are open.

Anything in () are processes as expressions, there are two ways to get around that:
Use quotes: ":rout:close (@2);"
or use a expression: (":rout:close (@2);")

The first way the equipment gets as error as " " is sent in the stream.
The second way works. :) Thanks HKJ.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on February 28, 2024, 06:25:58 pm
The first way the equipment gets as error as " " is sent in the stream.
The second way works. :) Thanks HKJ.

The first method do not work everywhere, but the second do.
Title: Re: Program that can log from many multimeters.
Post by: the Chris on March 09, 2024, 09:56:28 am
Hey HKJ.

Does TestController take care of the serial port configuration under Linux? I tried to get it running with my 34401A over RS232 but failed to do so, since a few hours actually. Whatever I do, TestController will report:

"Physical Port S1 (ttyS1) Device HEWLETT-PACKARD,34401A, do not match: null"

Depending on the way I configure the 34401A to, I can provoke the following Errors, partially in combination:

Using CuteCom, I can establish a connection using 9600 baud, FlowControl None, DataBits 7, Parity Even, StopBits 2.

If I configure the 34401A to use no Parity and 8 DataBits and then configure CuteCom in the same way, I can also establish a connection.

Is there some known issue in Linux when trying to establish an RS232 connection besides being in the Dialout member group?

Best wishes,
Christian
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 09, 2024, 10:38:24 am
Does TestController take care of the serial port configuration under Linux?

I does, you have to give access privileges to serial ports and you must use the correct port name.
To get the correct port name: right click the mouse when the address field is in edit mode (Can be invoked with F2 or by typing into the field).
Title: Re: Program that can log from many multimeters.
Post by: the Chris on March 09, 2024, 01:48:25 pm
Yes, this has worked right from the beginning. The correct ttyS0 and ttyS1 are offered in the context menu. ttyS1 is the one the 34401A is connected to. But TestController just reports ";; Physical Port S1 (ttyS1) Device HEWLETT-PACKARD,34401A, do not match: null" without the device going into REMote mode or anything, not even an error.

However, If I change the parity on the device intentionally from NONE (8 Data Bits) to EVEN (7 Data Bits), I can provoke ERROR 513 on the device when TestController tries to connect, followed again by TestController outputting ";; Physical Port S1 (ttyS1) Device HEWLETT-PACKARD,34401A, do not match: null".

So the connection seems possible, but still TestController does not seem to be able to retrieve anything.

EDIT: I will check the cable. I have the suspicion that receiving data from device is not possible at all, just sending commands to it.


Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 09, 2024, 02:23:14 pm
";; Physical Port S1 (ttyS1) Device HEWLETT-PACKARD,34401A, do not match: null" without the device going into REMote mode or anything, not even an error.

However, If I change the parity on the device intentionally from NONE (8 Data Bits) to EVEN (7 Data Bits), I can provoke ERROR 513 on the device when TestController tries to connect, followed again by TestController outputting ";; Physical Port S1 (ttyS1) Device HEWLETT-PACKARD,34401A, do not match: null".

TC did not get an answer from the device. Default baudrate is 9600N81, you can always type something else in the baudrate field, it accept more than just baudrate, other parameters can be used.

TC uses a package for serial communication, there is a link to it on the about page. They list supported OS and CPU's somewhere (It need to support each OS/CPU combination, because it uses a machine code stub for interfacing).
Title: Re: Program that can log from many multimeters.
Post by: the Chris on March 10, 2024, 07:54:32 am
Thanks for you help, HKJ. It nailed the possible causes down to a hardware related issue and at the end of the day, that's what solved the problem: the RS232 crossover cable was missing a bridge between pin 1 and 6. Soldering one in led to TC now happily reporting ";; Found Agilent 34401A on Physical Port S1 (ttyS1)"  :D

One cable finished, two more to fix  ::)
Title: Re: Program that can log from many multimeters.
Post by: the Chris on March 12, 2024, 01:23:02 pm
HKJ, according to the notes, the E3632A via RS232 is supposed to work only on Windows due to the missing DTR/DSR support on Linux. However, the DTR/DTS support is said to be mandatory for the 34401A as well (with respect to its note inside TC) and after bridging PIN1 and PIN6 on the connectors of the cable, the 34401A works in Linux (albeit, obviously, now with faked hardware handshake).

Can I expect an E3632A to work as well considering what I saw on the 34401A? Both device config files of TC show an identical RS232 configuration.

I noticed that 34401A is using the SCPIx protocoll whereas the E3632A is set to use Std. SCPI. Is that intentionally? The SCPIx is described as originally intended for being used in combination with chinese device implementations.
Title: Re: Program that can log from many multimeters.
Post by: HKJ on March 12, 2024, 03:53:34 pm
Can I expect an E3632A to work as well considering what I saw on the 34401A? Both device config files of TC show an identical RS232 configuration.

The issue is that 34401A sometimes is in a state where it do not read the serial port, any commands send during that time will be lost. I have no idea how serious this issue is on different versions of 34401A or if it exist on E3632A

I noticed that 34401A is using the SCPIx protocoll whereas the E3632A is set to use Std. SCPI. Is that intentionally? The SCPIx is described as originally intended for being used in combination with chinese device implementations.

The SCPIx add a layer in the communication, that can handle user define command (#scpiCmd), in this case it is done to get access to TC's programming and add a conditional command (Condition being it is only send in GPIB mode).
SCPIx also add a few more tricks that can be used to handle devices that do not follow SCPI completely, this is very common on Chinese implementation, but is not exclusive for them.