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.

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.97 are (not all are tested):
Agilent 34401A, Agilent U1252B, Agilent U1272A, Ametek XG 600-1.4, Ametek XG 80-10.5, 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, DigiTek DT-9602R+, EZA EZ-735, East Tester ET3240, 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-50M, FeelElec FY6900-60M, Fluke 187, Fluke 189, Fluke 287, Fluke 289, Fluke 87, Fluke 8846A, Fluke 89, GWInstek GPP-4323, GWInstek PSM-2010, Gossen M5032, Greenlee DM-810A, Greenlee DM-820A, Greenlee DM-830A, Greenlee DM-860A, 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 2000, 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, Kollmorgen AKD2G Servo, Lux meter, Mastech MS8040, Mastech MS8218, Maynuo M9712C, Owon ODP3033, Owon ODP3063, Owon ODP6033, Peaktech 2025, ProsKit MT-1820, Protek 506, R&S HMC8043, Riden RD6006, Riden RD6012, Rigol DM3058, Rigol DM3058E, Rigol DM3068, Rigol DP811A, Siglent SDG1032X, Siglent SDG1062X, Siglent SDG2042X, Siglent SDG2082X, Siglent SDG2122X, Siglent SDG6022X, Siglent SDG6032X, Siglent SDG6052X, 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, SparkFun 70C, TTi CPX400DP, TTi QL355P, TTi QPX1200SP, Tenma 72-7730, Tenma 72-7732, Tenma 72-9380A, 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, VirtualRampGenerator, VirtualSinusGenerator, VirtualSquareGenerator, Voltcraft VC-920, Voltcraft VC-940 COM, Voltcraft VC-960, Voltcraft VC850

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
[attachurl=1]

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.

[attach=1]
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.

[attach=1]
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?

[attachimg=1]
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.

[attach=1]
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

[attach=1]

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

[attach=1]

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]