Author Topic: Program that can log from many multimeters.  (Read 489404 times)

GingGangGooly and 5 Guests are viewing this topic.

Offline MichaKersloot

  • Newbie
  • Posts: 6
  • Country: nl
Re: Program that can log from many multimeters.
« Reply #2300 on: February 08, 2022, 12:27:42 pm »
1. The device responses with 2 lines first line contains the data (almost always numbers) then a <cr> then "OK". At the moment i use txrx? which seems to ignore the second line, but I'm not sure that's the correct way.
Use txrx2? instead
I tried that, but how to get rid of the <cr>OK ?

There are a lot of functions to edit the answer, see https://lygte-info.dk/project/TestControllerFunctions%20UK.html#String_functions they are used after a :readmath: tag.

Let me rephrase my question ;-) If I only need the first line of the response, is it ok to use txrx? or in your experience will things go wrong later on and should I really use txrx2? and process the results to get rid of the second line.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2301 on: February 08, 2022, 12:42:36 pm »
Let me rephrase my question ;-) If I only need the first line of the response, is it ok to use txrx? or in your experience will things go wrong later on and should I really use txrx2? and process the results to get rid of the second line.

Use the txrx2?.
TC may access the device from multiple threads and unused input can affect other communication.

There are multiple ways to strip the second line, either one of these can do it: getElement(), getMatch(), replace()
To use CR in a string write \r
 

Offline oz2cpu

  • Frequent Contributor
  • **
  • Posts: 850
  • Country: dk
    • webx.dk private hobby and diy stuff
Re: Program that can log from many multimeters.
« Reply #2302 on: February 08, 2022, 08:24:35 pm »
HERE you go HKJ, one more for your collection :-)
i tried to make it same size as yours, feel free to use the picture,
i managed to figure out the param sweeper, thanks for your patient help as always,
by the way, how do i make param sweeper remember the settings ?
Radioamateur OZ2CPU, Senior EE at Prevas
EMC RF SMPS SI PCB LAYOUT and all that stuff.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2303 on: February 08, 2022, 08:37:17 pm »
HERE you go HKJ, one more for your collection :-)

I will think about adding a section for user contributions to that article.

by the way, how do i make param sweeper remember the settings ?

Right click in log window:


You can get the line for any popup window by using the "Layout" and "In log window", then delete the extra lines, but there is a separate entry for ParamSweeper
 
The following users thanked this post: oz2cpu

Offline NekoBrinch

  • Newbie
  • Posts: 3
  • Country: dk
Re: Program that can log from many multimeters.
« Reply #2304 on: February 18, 2022, 12:00:44 am »
@HKJ

Your piece of software is really nice.
Is your software proprietary or are you going to put it on GitHub for us to contribute to?
Like a lot of people here are pro electronics, I myself is pro software and can certainly lend a hand.

 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2305 on: February 18, 2022, 05:14:50 am »
As I couldn't justify myself paying 300 Euro for the original USB-IR-Interface by Gossen Metrawatt "Z216C USB X-TRA", when you are able to build up three units for the price of 1/3, I have a question concerning the Metrahit PM XTRA.


The USB-IR-thingie is probably old and anyone knows it, but just to sum it up for later use:


You only need the "FTDI Adapter FT232RL USB to TTL Serial":

https://www.ebay.de/itm/223727784474?hash=item341737121a:g:m2MAAOSw7old366r

...and the "IrDA2 click IR by MikroElektronika".

https://eu.mouser.com/ProductDetail/Mikroe/MIKROE-1195?qs=5gSubTaN56myuTgGIeORag%3D%3D

These are just my links, where I bought them, feel free to buy from anywhere for any pricing!


As far as the "IrDA2 click" is concerned you only have to modify the Baud rate and power selection. Using a second solder iron is most likely the easiest way to move the components, when you don't have expensive desoldering tweezers:







The FTDI-Driver is already implemented in the lnux kernel and Windows probably needs the installation of the FTDI-Driver package...

https://ftdichip.com/drivers/

..., thus one can say, that it works out of the box.


In linux it is named the same as the USB-IR-Interface from the Fluke 289:

"Future Technology Devices International, Ltd FT232 Serial (UART) IC"

I haven't opened the Fluke USB-IR-Interface yet, but if you are able, to change the Baud rate from 115200 to 38400 the same as above, this could be the cheapest and easiest way to get a working USB-IR-Interface for the Gossen Metrawatt, I will check this later.


At the moment I only have them on a breadboard, to test them:







When the DMM sits flat on the table, it fits between the rubber holster on top of a package of handkerchiefs:  :-DD







Well, in order to use it with TestController I took your script from the Metrahit Energy and modified the IDs...







... and started the debugging mode...


This is what I got...

Code: [Select]

;; Found Gossen MetraHit PM XTRA on FT232R USB UART (COM8) sn:
#DEBUG GME  +modeComm +valueComm +otherComm +commHex
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Urror 01:Not implemented command:VAL:L?> 55 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>
;; GME: Tx <VAL:L?> 56 41 4C 3A 4C 3F
;; GME: Rx <Error 01:Not implemented command:VAL:L?> 45 72 72 6F 72 20 30 31 3A 4E 6F 74 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 63 6F 6D 6D 61 6E 64 3A 56 41 4C 3A 4C 3F
;; GME: Rx as numbers <0.0 0.0 0.0 0.0>




When I change the measurement it is always shown correctly, but I don't get a reading. Is there something I can do? Do I have to modify your Energy-Script any further, to get a correct reading? Is it better to rename "GME" (= GossenMetrawattEnergy?) into something else, in order to have a distinction between both DMMs?


Thank you very much & Cheers!  ;)
 
The following users thanked this post: Totoro, Bad_Driver

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2306 on: February 18, 2022, 08:24:17 am »
Is your software proprietary or are you going to put it on GitHub for us to contribute to?
Like a lot of people here are pro electronics, I myself is pro software and can certainly lend a hand.

At the current time I do not have any plans to open source the software.
The device definitions are in ascii format and is open for anybody to modify and/or add new devices.
I hope people will publish (in this thread) any device definitions they make, then I will most likely include the definition in the next release.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2307 on: February 18, 2022, 08:41:22 am »
Well, in order to use it with TestController I took your script from the Metrahit Energy and modified the IDs...



Look like it answers to *idn? command

... and started the debugging mode...


This is what I got...

;; GME: Rx <Error 01:Not implemented command:VAL:L?>


But not to the "VAL:L?"
You have to find the correct command to read the values, sadly GOSSEN have the opinion that the protocol is proprietary and they do not like to share it.
But somebody has for the Energy meter: http://www.pewa.de/DATENBLATT/METRAHit-Energy-Interface-Protokoll.pdf


When I change the measurement it is always shown correctly, but I don't get a reading. Is there something I can do? Do I have to modify your Energy-Script any further, to get a correct reading? Is it better to rename "GME" (= GossenMetrawattEnergy?) into something else, in order to have a distinction between both DMMs?

The definition for the Energy meter contains lots of stuff that is only supported by the Energy meter. For another meter it is best to remove that and then maybe add stuff that is supported by that meter.
The handle is not critical for the function and there will probably not be any problems using the same for another Gossen meter.
Only issue is that when loading saved csv files the handle is used to locate the device for information about how many decimals to show for each value. 
 
The following users thanked this post: PushUp

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2308 on: February 18, 2022, 11:32:07 am »
Ahhh - perfect! The link was helpful, even in my native language!  :-+

Now it works and I have to check the measurements...I hope, that I don't struggle as with my HMC8012-Script which is quiet difficult and extensive and still not ready, but I will give my best, not to disappoint you!  :)







The best thing of this SetUp: it works under Linux out of the box and I don't have any interruptions any more; unfortunately I cannot test it any more against the original USB-IR-Interface as I have already sent it back... But as METRAwin10 also works under Windows, without a problem I am quiet confident, that it was the right decision!


;; Found Gossen MetraHit PM XTRA on FT232R USB UART (ttyUSB0) sn: XXXXXX

IDN? shows:

IDN?
;; GMC,METRAHIT PM XTRA,IDENT NO.: M250A,SERIAL NO.: XXXXXX    ,SW: 2.04


As you have a "PM Prime", which may be integrated in the future, how do you want to name the Gossen Metrawatt DMMs in TestController, so that it has a certain pattern?

Metrahit Energy: "GME" = GossenMetrawattEnergy

Metrahit PM Prime: "GMP" with P for PRIME?

Metrahit PM XTRA: "GMX" with X for XTRA?

IDN? gives GMC???


I only know, that a short term is useful, in case you wanna add a math function, but what would you prefer?


Cheers!  ;)
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2309 on: February 18, 2022, 11:48:31 am »
As you have a "PM Prime", which may be integrated in the future, how do you want to name the Gossen Metrawatt DMMs in TestController, so that it has a certain pattern?

Metrahit Energy: "GME" = GossenMetrawattEnergy

Metrahit PM Prime: "GMP" with P for PRIME?

Metrahit PM XTRA: "GMX" with X for XTRA?

IDN? gives GMC???

I only know, that a short term is useful, in case you wanna add a math function, but what would you prefer?

I do not care that much about the handles, your idea sounds fine.
Preferably they have to fairly short, i.e. not more than 6 characters and unique, but as I said above it is not a big issue if they are not.
TC will modify the handle names if multiple devices have the same handle or you can use the "Remap" function, but that may prevent automatic setting of decimals on loaded csv files.

Yes, I have the PM Prime and also the protocol documentation, but I had to promise not to publish the protocol documentation.
 

Offline PushUp

  • Regular Contributor
  • *
  • Posts: 173
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2310 on: February 20, 2022, 02:44:25 pm »
I think there are some points, where I need some help/hints, please...  ;)


With hindsight, I changed the handle to "PMXTRA", because "GMX" always reminds me of my E-Mail-Provider "gmx.de".


Well, generally speaking I think the Gossen Metrawatt PM XTRA will work now together with TestController - at least it does it for me with room for some improvements I guess! As I have a clamp meter, but no clamp sensor, I haven't considered the "Clip" thingie yet.

The big difference in contrast to the "ENERGY" is the fact, that the PMXTRA requires always the use of the rotary switch by hand any time you want to have another main measurement (= position of the rotary switch from 0 till 9 = 10 positions).

Therefore it is in a way useless to build a "mode popout", but as you can control quiet a lot with the Gossen Metrawatt in general, it would be a nice gimmick, especially to make a SetUp for changing some settings easier, than manually via the command line in TestController.



I think, that there is a restriction in TestController as far as the amount of "places" for the "mode popout" is concerned:

#cmdModeLayout 4 10

...is obviously too much...and although I know, that it is a waste of space, I wanted to have it this way:





..., in order to have a better overview of the correct rotary switch position (red colour = does not work).


However, it is not that important as you have to be close to the DMM anyway and as I couldn't manage to get three readings to work (the one that I put a circle around), it is still not fully usable; at the moment this is the maximum of space I can use, which is of course totally fine:







As mentioned above, the rotary switch has 10 positions (from 0 till 9); you ask for the current position of the rotary switch with "POS?". If it's wrong, you don't get a reading of course.

In order not to miss something, I went through any position and function/sub-function, in order to give you the possibility to look for errors or improvements within the script.

Unfortunately there is no difference in naming when using "set?" concerning my first two not working measurements via "mode popout", as you have position 0 for VAC with VAC_Filter (1kHz) and also position 1 for VAC with VAC_Filter (1kHz), but together with a 1MOhm input, which you can see here:







I couldn't solve:

Position 0 = 3rd function
VAC_F,0.6E+1 (with 1kHz-filter)

Position 1 = 2nd function, all with 1MOhm input
VAC_F,0.6E+1 (with 1kHz-filter)

Position 9 = 2nd function
FREQ_IAC,0.6E+3



All rotary switch positions with main- and sub-functions:

Code: [Select]

Position 0 = 4 functions

set?
;; VAC,0.6E+1
set?
;; FREQ_VAC,0.6E+3
set?
;; VAC_F,0.6E+1
set?
;; dB,0.6E+0


Position 1 = 3 functions

set?
;; VAC,0.6E+1
set?
;; VAC_F,0.6E+1
set?
;; FREQ_VAC,0.6E+3


Position 2 = 2 functions

set?
;; VDC,0.6E+0
set?
;; VACDC,0.6E+1


Position 3 = 2 functions

set?
;; FREQ_TTL,0.6E+3
set?
;; DUTY,0.1E+3


Position 4 = 1 Funktion

set?
;; RES,0.6E+8


Position 5 = 2 functions

set?
;; BUZ,0.6E+3
set?
;; DIO,0.6E+1


Position 6 = 3 functions

set?
;; TEMP_U,K
set?
;; TEMP_R,PT100
set?
;; TEMP_R,PT1000


Position 7 = 1 Funktion

set?
;; CAP,0.6E-7


Position 8 = 2 functions

set?
;; IDC,0.6E-3
set?
;; IACDC,0.6E-3


Position 9 = 2 functions

set?
;; IAC,0.6E-3
set?
;; FREQ_IAC,0.6E+3







That is my little interim result with the script looking like this and with some notes, what is still to do/solve...




Code: [Select]


#idString GMC,METRAHIT PM XTRA,
#name Gossen MetraHit PM XTRA
#handle PMXTRA
#port comFixedBaud
#baudrate 38400
#driver SCPIx

#eol \r\n

; A list of possible column name with unit and formatter (SI, Time, Int, D0..D6)
#value VoltageDC V si VDC,DIO,Diode
#value CurrentDC A si IDC,ADC
#value VoltageAC V d4 VAC,VAC_F
#value CurrentAC A si IAC,AAC
#value VoltageACDC V d4 VACDC
#value CurrentACDC A si IACDC,AACDC
#value Resistance ohm si RES,BUZ,Resistance,Continuity
#value Capacitance F si CAP,Capacitance
#value Temperature °C d4 TEMP,TEMP_U,TEMP_R,Temperature_K,Temperature_PT100,Temperature_PT1000
#value Frequency Hz si Frequence_AC,FREQ_IAC,Frequence_TTL,FREQ_TTL
#value DutyCycle % d3 DUTY,Duty_cycle
#value Decibel dB d2 dB,Decibel


#scpiCmd *idn? txrx? idn?
:readmath: var v=split(value,"[,]");v[0]+","+v[1]+","+trim(replace(v[3],"SERIAL NO.:",""))+","+trim(replace(v[4],"SW:",""));


; How to poll for data, this is used for table and #values?
; a #askMode, #cmdMode and #prepareSample is used before this is string is used.
; This is a single line command
#askValues VAL?
#askValuesReadFormat uuuuuuxxxx

; Accept this delay when reading values (seconds), auto range can be very slow on this meter
#readingDelay 5

; Mode change have a longer delay on reading values (seconds)
#modeChangeDelay 10

; Switch meter to this mode during start, leave empty to avoid any switching
#initialMode

; String to ask about actual meter mode,
; This is a single line command
#askMode set?
#askModeMathFormat getElement(value,0,",");


#interfaceType DMM
#interface readValue 0

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


; Prepare the meter to response to #askValues
#prepareSample


; Initial commands to meter when establishing connection
#initCmd  txrx NOFF

#readingDelay 3

; Final command to meter before breaking connection
#finalCmd SET:APOFF 5

;#cmdModeLayout 4 10 ...is too big!
#cmdModeLayout 4 7

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

#cmdMode VAC VAC
txrx sens:volt:ac:auto

#cmdMode Frequence_AC FREQ_VAC
txrx sens:freq:vac:auto,volt:rang 1000

; Does not work!
#cmdMode NoFilterFunction VAC_F
txrx sens:volt:ac:auto

#cmdMode Decibel dB
txrx sens:db

#cmdMode VAC VAC
txrx sens:volt:ac:auto

; Does not work!
#cmdMode NoFilterFunction VAC_F
txrx sens:volt:ac:auto

#cmdMode Frequence_AC FREQ_VAC
txrx sens:freq:vac:auto,volt:rang 1000

#cmdMode

#cmdMode VDC VDC
txrx sens:volt:dc:auto

#cmdMode VACDC VACDC
txrx sens:volt:acdc:auto

#cmdMode

#cmdMode

#cmdMode Frequence_TTL FREQ_TTL
txrx sens:freq_ttl:auto

#cmdMode Duty_cycle DUTY
txrx sens:duty:auto

#cmdMode

#cmdMode

#cmdMode Resistance RES
txrx sens:res:auto

#cmdMode

#cmdMode Continuity BUZ
txrx sens:short

#cmdMode Diode DIO
txrx sens:diode

#cmdMode Temperature_K TEMP
txrx sens:temp:tc k

#cmdMode Temperature_PT100 TEMP
txrx sens:temp:rtd pt100

#cmdMode Temperature_PT1000 TEMP
txrx sens:temp:rtd pt1000

#cmdMode Capacitance CAP
txrx sens:cap:auto

#cmdMode ADC IDC
txrx sens:curr:dc:auto

#cmdMode AACDC IACDC
txrx sens:curr:acdc:auto

#cmdMode AAC IAC
txrx sens:curr:ac:auto

; Does not work!
#cmdMode NoHzFunction FREQ_IAC
txrx sens:freq_iac


; For later use: I want to have a SetUp for some settings like "rate?" and "SET:RATE 00:01.0" and so on...
; Setup menu functions
; The parameters on the first line is: type name page
; Settings on the following lines are:
; read: SCPI to read value from device, is used to synchronize when opening setup page or setting equal named fields. Not always used
; readformat: Parse read value.
; write: Send the value to device, this field is used in combination with data fields in the details to send updates to device.
; tip: Add this tip to all components for this input field.
 

;Mode-------------------------------------------------------------------------------------------







Cheers!  :)
« Last Edit: February 21, 2022, 05:53:39 am by PushUp »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2311 on: February 21, 2022, 08:29:12 am »
I think there are some points, where I need some help/hints, please...  ;)

When you have a rotary switch, use the:

#cmdModeGet Button_Text

definition, it will add a button that can inquire the meter about actual mode.

You can use multiple commands after #askMode and then use #askModeMathFormat to combine them to a longer mode string, this will hopefully allow you to select the correct columns.

Another solution is to use #modeFromValue if the returned values contains enough information about the actual mode. This means you can put everything in the "Setup" popup and leave the "Mode" popup undefined.
 
The following users thanked this post: PushUp

Offline mirror

  • Contributor
  • Posts: 13
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2312 on: February 22, 2022, 01:47:05 pm »
I am try to use TestController under Ubuntu 20.04. Siglent SDG and SDS are working fine.
But no luck with the USB Serial Adaptor on the Voltcraft VC830. Made a copy inside SimpleDMM.txt and plugged in the cable. A /dev/hidraw0 and /dev/usb/hiddev0 is generated.
Code: [Select]
lsusb:
Bus 002 Device 006: ID 1a86:e008 QinHeng Electronics HID-based serial adapater
and
Code: [Select]
dmesg:
[ 4606.473388] usb 2-1.1: USB disconnect, device number 6
[ 4612.118722] usb 2-1.1: new full-speed USB device number 7 using ehci-pci
[ 4612.232755] usb 2-1.1: New USB device found, idVendor=1a86, idProduct=e008, bcdDevice=14.00
[ 4612.232766] usb 2-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4612.232770] usb 2-1.1: Product: USB to Serial
[ 4612.232772] usb 2-1.1: Manufacturer: WCH.CN
[ 4612.238214] hid-generic 0003:1A86:E008.0005: hiddev0,hidraw0: USB HID v1.00 Device [WCH.CN  USB to Serial] on usb-0000:00:1d.0-1.1/input0
I putted /dev/hidraw0 into the address but it doesn't. Meanwhile I am at page 50 of this longely thread but couldn't find a guess.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2313 on: February 22, 2022, 04:01:43 pm »
But no luck with the USB Serial Adaptor on the Voltcraft VC830. Made a copy inside SimpleDMM.txt and plugged in the cable.

Sorry, but I have trouble with HID interfaces, for now it only works with a couple of Brymen meters on Windows.
I plan to take another look on it, but I do not know when.
 

Offline mirror

  • Contributor
  • Posts: 13
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2314 on: February 22, 2022, 06:42:10 pm »
Thank you for this nice piece of software!
Can you tell me, what you placed into the address entry for the Brymen under Windows.
As I understood the identification for HID are Vendor and Product ID's.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2315 on: February 22, 2022, 06:55:03 pm »
Can you tell me, what you placed into the address entry for the Brymen under Windows.
As I understood the identification for HID are Vendor and Product ID's.

I uses this in the definition:
#port usbhid
#usbVendor 0x0820
#usbProduct 0x0001
#usbpoll 0 0 0x86 0x66

And then I must use a protocol driver supporting binary communication (Like the binary DMM protocol).
I have not documented much about ascii/binary, mostly because both serial and socket can do both, i.e. they will work with both a ascii or a binary protocol driver.

USB HID do not require the address field to find the device, but will fill the serial number into the address field when connected first time.
 

Offline mirror

  • Contributor
  • Posts: 13
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2316 on: February 22, 2022, 08:30:03 pm »
Just inserted this into SimpleDMM for the VC830:
Code: [Select]
#metadef
#idString Victor,Victor 86C,
#name Victor 86C
#handle V86C
#subDriver 5
#baudrate 2400N81Dr

#metadef
#idString Voltcraft,Voltcraft VC830,
#name Voltcraft VC830
#handle VC830
#port usbhid
#usbVendor 0x1a86
#usbProduct 0xe008
#driver usbhiddmm
#subDriver 869
#usbpoll 0 0 0x86 0x66

#metadef
#idString Voltcraft,Voltcraft VC850,
#name Voltcraft VC850
#handle VC850
#subDriver 5
#baudrate 2400N81Dr

It seems the program found the device:
Code: [Select]
;; jSerialComm version: 2.9.0
;; Start thread for: HIDv0000p0000 - Voltcraft VC830
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 044E 120C  39 39 39 39
;; HIDv0000p0000: Found HID: 044E 120C  39 39 39 39
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 046D C52F 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 0001 0001 
;; HIDv0000p0000: Found HID: 044E 1212 
;; HIDv0000p0000: Found HID: 1A86 E008 
;; Stopping thread for: HIDv0000p0000 - Voltcraft VC830

But there are no actual value shown and logging is only the time stamp.
Did not understood what you said about binary DMM protocol. How can I activate this?
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2317 on: February 22, 2022, 08:50:07 pm »
But there are no actual value shown and logging is only the time stamp.

As I already stated: It only works with a few Brymen DMM's and only on Windows. The driver is supposed to work on Linux, but I have not had any luck with it yet.

Did not understood what you said about binary DMM protocol. How can I activate this?
The binary DMM is described here: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol
 

Offline mirror

  • Contributor
  • Posts: 13
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2318 on: February 28, 2022, 09:22:47 pm »
Got stable connection from the VC830 hid device under Ubuntu and Win 10. But can't understand the pinciple of device driver configuration. Especially what is inside the java binary and what is in the .txt file. I studied the documentation but is usbhiddmm code in the binary or only a name for the description. Same for subDriver - I can't change to something else than 869. (Taken over from your Brymen example.) There are special code for 869 in your java code?
Code: [Select]
#metadef
; VC830

#meta

#idString Voltcraft,Voltcraft VC830,
#name Voltcraft VC830
#handle VC830
#port usbhid
#usbVendor 0x1a86
#usbProduct 0xe008

#driver usbhiddmm
#subDriver 869

#readingDelay 1

#usbpoll 0 0 0x86 0x66

#interfaceType DMM
#interface readValue 0

#dataFormat 14 0x30 0xf0

#digits 1 5
I checked the interface with other Software https://github.com/thomasf/uni-trend-ut61d and see that the VC830 is compatible with UT61B/D/C, seems they have same Fortune controller.
The perl script in the link above shows the decoding of the 14 byte. Can you take a look and give some hints to my drive description above, especially to dataFormat
What is the difference between the implemented serial driver for UT61 and the mentioned Binary driver?
BTW - found no description about the usbpoll parametrizatiion.
Sorry for my confusion.

 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2319 on: March 02, 2022, 10:14:14 am »
There are special code for 869 in your java code?

Yes, the usbhiddmm is a driver for Brymen , it has 3 subdrivers: 525, 829 and 869

Using driver DMM2 with subdriver Definition will load a customable 7 segment / digit decoder, but looking at the DMM2 code I can see it will only work on serial ports, not HID. That is a fairly minor fix or I could add the definition type to the usbhiddmm (That is even simpler), but as long as I do not get data back from the HID connection I will not use time to implement it.
From the documentation you can download a zip file that uses the definition decoder on 3 different DMM's.
 

Offline View[+]Finder

  • Supporter
  • ****
  • Posts: 186
  • Country: us
    • Sparks! A Learning Place for Curious Minds
Re: Program that can log from many multimeters.
« Reply #2320 on: March 04, 2022, 09:12:11 pm »
Getting data from an instrument display for logging can be difficult, if not impossible, without a pathway into the device via GPIB, TCPIP, or other comm port. Messing with JTAG or sniffing the signal is far beyond the capabilities of most folks interested in using the data obtained, so "Hats off" to authors of software for reading and fetching data from an operating meter during measurement. Thanks as well to manufacturers who have provided logging capabilities in their instruments and made them accessible to users. That is the modern way . . .

Some meters are far more locked-down for reasons of security and protection of the customer's perception of the integrity of the data collected. Take Fluke, for example (see Dave's video on why Fluke meters are worth the money, etc.) and the 28X series of meters like my 289. The Fluke business model is that data collection is under the control of the firmware and is presented to the user via remote access thru form-completion software. After a technician logs voltage measurements from some industrial gear over several days, there is a printout with Fluke's name on it to support the log with timestamps for every sample and a whole lot more. Yes, the data is also available for export to CSV files and from there to any analysis, but only via the gateway FormView.

Other than the obvious, why is this a problem? Well, the Fluke 289 has the ability to capture data unattended for days at a time under battery power and preserve a detailed log for later retrieval. It can do this because it sleeps between samples using precious little power and does not rely on disks or tape for storage.

I have a couple of other logging meters (Uni-T 61E, for example) that will output readings to a PC and MooshiMeter that logs via Bluetooth, also to another device. Not even in the same league as Fluke 28X series.

What would be better for me would be the ability to access the Fluke 289 recorded data directly, 'read-only' of course, much in the same way as getting data from a modern Keithley or Keysight bench meter. To that end, I'm contributing to a long-standing 289 eevblog forum thread:https://www.eevblog.com/forum/reviews/going-further-with-the-fluke-289

This is not an exercise in 'reverse-engineering' or alternative firmware creation, just a little probing with Python into features documented in the Remote Interface Specification using a Fluke IR USB interface.

« Last Edit: March 04, 2022, 09:19:14 pm by View[+]Finder »
 

Offline aronake

  • Regular Contributor
  • *
  • Posts: 189
  • Country: hk
Re: Program that can log from many multimeters.
« Reply #2321 on: March 13, 2022, 11:59:54 am »
Any of you wise testcontrol stars out there who could help to make, or even come with suggestions on how to make the device file?

It need a specially coded protocol to work fully, but just reading the values looks to be possible:
Use Ascii protocol with #scpiCmds

To read the data you can use the txrxnBin? command
And then a :readmath: with two binConv() function to extract the bits.

You need to return the two values as number with one space between (Like "12.3 45.7").

Something like this:

#scpiCmd values? txrxnBin? 13 #0A0000NA2
:readmath: (binConv(value,5,2)/10.0)+" "+(binConv(value,10,2)/10.0)

First thanks for awesome software! I got it to work with quite some of my test equipment

I am still trying to get this thermometer to work. Seems I do not get any response from the meter when sending #0A0000NA2.

I do get a response when using a terminal program.

Some questions that could help me in the right direction:
What is best way to test if the serial connection is actually open?
Is there a way to send text (in ASCII) over serial from the command line to the device in hex? When I type #0A0000NA2, this is extra problematic starting with #, as then seen as a command.
For baudrate confirguraiton is 19200E81 correct for 19200 baud, even parity, 8 data bit, 1 stopbit, no flow control? if not, how to type?
Is CR and LF added for each command sent over serial or need to be explicitly added?
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 2904
  • Country: dk
    • Tests
Re: Program that can log from many multimeters.
« Reply #2322 on: March 13, 2022, 12:46:29 pm »
First thanks for awesome software! I got it to work with quite some of my test equipment

I hope you will share definitions, others may have similar equipment.

I am still trying to get this thermometer to work. Seems I do not get any response from the meter when sending #0A0000NA2.

I do get a response when using a terminal program.

Some questions that could help me in the right direction:
What is best way to test if the serial connection is actually open?

If the serial port is not opened at initialization, the connection/device will be closed and removed from the open list.
Use the debug mode to see what is going on, there is a .bat file to start it

Is there a way to send text (in ASCII) over serial from the command line to the device in hex? When I type #0A0000NA2, this is extra problematic starting with #, as then seen as a command.

You can switch into calculator mode at any time using (), i.e. ("#0A0000NA2") will send the text between the quotes, including the #
When you have tx and txrx commands in a driver they can be used from the command line.

You can generally test all commands from the command line, before putting them into the definition. But you will not be able to do :readmath: from the command line (You can do the math, but not as :readmath: and this can be helpful to check if an expression works  correctly).

For baudrate confirguraiton is 19200E81 correct for 19200 baud, even parity, 8 data bit, 1 stopbit, no flow control? if not, how to type?

Yes.

Is CR and LF added for each command sent over serial or need to be explicitly added?

SCPI and ascii drives will add it, the exact sequence can de defined with #EOL
You can often use \r and \n for CR and LF
« Last Edit: March 13, 2022, 12:48:24 pm by HKJ »
 

Offline aronake

  • Regular Contributor
  • *
  • Posts: 189
  • Country: hk
Re: Program that can log from many multimeters.
« Reply #2323 on: March 14, 2022, 05:56:28 am »
Awesome! Thanks for further info and quick answer!

And, yes of course! Very happy to share definitions! They just need some more polishing to be release ready.

Again, thanks for a truly awesome piece of software! My selection of new test equipment is now highly dependent on if they are supported by testcontroller or if it is likely that its possible to do a good definition.
 

Offline Oberfail

  • Newbie
  • Posts: 3
  • Country: de
Re: Program that can log from many multimeters.
« Reply #2324 on: March 17, 2022, 05:24:29 pm »
Hey, i'm trying to get a Atorch DL24 to work with this software, but have some issues with it. Other programs are able to read it out, so it defenitly is connected to the pc properly.
Under "Load devices" the DL24 is correctly setup, upon starting the debug version i get the following error:
Code: [Select]
Starting
;; jSerialComm version: 2.9.0
;; Start thread for: COM5 - ATorch DL24
;; COM5: Set params: 9600
;; COM5: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1394)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1467)
;; COM5: Tx: B1 B2 11 00 00 B6
java.lang.NullPointerException
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.cmdIdn(DeviceATorchPX100.java:81)
        at dk.hkj.devices.DeviceATorchPX100$TranslatingCommInterface.write(DeviceATorchPX100.java:130)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:141)
        at dk.hkj.comm.CommInterface.writeRead(CommInterface.java:136)
        at dk.hkj.main.InterfaceThreads$DeviceThread.initDevice(InterfaceThreads.java:1397)
        at dk.hkj.main.InterfaceThreads$DeviceThread.run(InterfaceThreads.java:1467)
;; Stopping thread for: COM5 - ATorch DL24
;; COM5: Close

How can i resolve the issue?

Greetings from Germany
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf