Author Topic: Program that can log/control many multimeters and other devices.  (Read 1665582 times)

0 Members and 107 Guests are viewing this topic.

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5975 on: March 14, 2026, 02:54:25 pm »
For now i am back to ascii and put in your suggestion for replace text this is working great.
I am trying to make a readback for the range en output status.

Fot so far this is not working any suggestions?
I am trying somthin like this below

The power supply allways answer the command with the actual setting and that is the only thing i can use
#scpiCmd Range? txrx? (value?"SSHIFTH":"SSHIFTL") ;; this doesn't work but i don't kno a other way. how to turn the virtual led on or off
:readmath: ((value)=="SSHIFTH"?1:0)
#scpiCmd Range txrx (value?"SSHIFTH":"SSHIFTL")


I do not really know what you are doing.
One last resort solution is to store settings locally in TC, but they will first match after you have send a value to the device.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5976 on: March 14, 2026, 02:55:14 pm »
Please overwrite my previous Yokogawa defintion that was included with 2 others.

New one attached...

Updated, thanks.
 

Offline dUkk

  • Contributor
  • Posts: 14
  • Country: 00
Re: Program that can log/control many multimeters and other devices.
« Reply #5977 on: March 14, 2026, 03:08:29 pm »
Does TestController supports COM (Serial Port) based binary protocols ? I have CEM DT-99x multimeter that is feeding only data (i cant request any). so i was guess how to pass data to TestController. (i have PoC python code getting and parsing data from binary flow over serial port).

Yes.
You will probably want to use this one: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_DMM_protocol
It is designed to handle 7segment data and a variety of flags in a binary message.
For more general binary data you use this one: https://lygte-info.dk/project/TestControllerConfigDevice2%20UK.html#Binary_with_fixed_communication_blocks_(Block)

thank but i didnt catch how that will help my goal.
Because from refered article " fixed length binary data" . CEM 99s protocol is not fixed length. it was variable. From 20 to 100+ bytes long. with start of frame end of frame markers. So processing it required buffer incoming bytestream and then split to frames (by markers) and parse each variale length frame according to protocol. Frame length is selected by used measurement type. measurement type was selected by hardware rotary switch.
currently i see only two possible solutions. native java support of DT99s protocol in TestController. but sources are unavailable. (so only feature request to author is possible on this way). or second last solution: write 'fake-SCPI' server that will translate binary DT99s protocol to some that was possible to be parsed by TestController data.
 
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5978 on: March 14, 2026, 03:21:07 pm »
thank but i didnt catch how that will help my goal.
Because from refered article " fixed length binary data" . CEM 99s protocol is not fixed length. it was variable. From 20 to 100+ bytes long. with start of frame end of frame markers. So processing it required buffer incoming bytestream and then split to frames (by markers) and parse each variale length frame according to protocol. Frame length is selected by used measurement type. measurement type was selected by hardware rotary switch.
currently i see only two possible solutions. native java support of DT99s protocol in TestController. but sources are unavailable. (so only feature request to author is possible on this way). or second last solution: write 'fake-SCPI' server that will translate binary DT99s protocol to some that was possible to be parsed by TestController data.

Without knowing anything about the protocol that was the best advise I could give.
With the above explanation I agree you, but to implement the protocol I would need documentation and a meter.
 
The following users thanked this post: dUkk

Offline Benleentje

  • Contributor
  • Posts: 45
  • Country: nl
Re: Program that can log/control many multimeters and other devices.
« Reply #5979 on: March 14, 2026, 03:53:18 pm »
For now i am back to ascii and put in your suggestion for replace text this is working great.
I am trying to make a readback for the range en output status.

Fot so far this is not working any suggestions?
I am trying somthin like this below

The power supply allways answer the command with the actual setting and that is the only thing i can use
#scpiCmd Range? txrx? (value?"SSHIFTH":"SSHIFTL") ;; this doesn't work but i don't kno a other way. how to turn the virtual led on or off
:readmath: ((value)=="SSHIFTH"?1:0)
#scpiCmd Range txrx (value?"SSHIFTH":"SSHIFTL")


I do not really know what you are doing.
One last resort solution is to store settings locally in TC, but they will first match after you have send a value to the device.

The power supply cab be set in low or high range bij 2 differnte command.
SSHIFTL
SSHIFTH.

But it can only go to low range if the set voltage is below 150V. In low range the maximum current can set 2x higher
So if i send the command SSHIFTL and the power supply is above 150V the power supply reject the command but i have no way of knowing this.
I want somehow to use So i was trying this.

#scpiCmd Range? txrx? (value?"SSHIFTH":"SSHIFTL")

Sending the comand SSHIFTH if value = 1 and together readback the answer? Is this even possible?
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5980 on: March 14, 2026, 04:00:50 pm »
I do not really know what you are doing.
One last resort solution is to store settings locally in TC, but they will first match after you have send a value to the device.

The power supply cab be set in low or high range bij 2 differnte command.
SSHIFTL
SSHIFTH.

But it can only go to low range if the set voltage is below 150V. In low range the maximum current can set 2x higher
So if i send the command SSHIFTL and the power supply is above 150V the power supply reject the command but i have no way of knowing this.
I want somehow to use So i was trying this.

#scpiCmd Range? txrx? (value?"SSHIFTH":"SSHIFTL")

Sending the comand SSHIFTH if value = 1 and together readback the answer? Is this even possible?
[/quote]

I do not know why your command do not work, it is supposed to, but Range? must be called with a parameter to get anything into value
 

Offline Benleentje

  • Contributor
  • Posts: 45
  • Country: nl
Re: Program that can log/control many multimeters and other devices.
« Reply #5981 on: March 14, 2026, 04:17:50 pm »
This doesn't word.

Code: [Select]
#CMDSetup buttonsOn Range
:read: Range? (value)
:write: Range
:tip: turn range

#scpiCmd Range? txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: ((value)=="SSHIFTH"?1:0)
#scpiCmd Range txrx (value?"SSHIFTH":"SSHIFTL")

Code: [Select]
;; APS7100: Tx <Range 0>
;; APS7100: Tx <txrx (value?"SSHIFTH":"SSHIFTL")>
;; COM3: Tx: <SSHIFTL..> 53 53 48 49 46 54 4C 0D 0A
;; COM3: Rx: <SSHIFTL> 53 53 48 49 46 54 4C
;; APS7100: Tx <Range? (value)>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: ((value)=="SSHIFTH"?1:0)>
dk.hkj.script.ProgramExceptions$UnknownException: (value) could not be converted to boolean
value?"SSHIFTH"____<----____:"SSHIFTL"


If i do it directly in de command line it work

Range? 1
;; APS7100: Tx <Range? 1>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: ((value)=="SSHIFTH"?1:0)>
;; COM3: Tx: <SSHIFTH..> 53 53 48 49 46 54 48 0D 0A
;; COM3: Rx: <SSHIFTH> 53 53 48 49 46 54 48
;; APS7100: Rx <1>
;; 1




:read: Range? (value)
Don't work
« Last Edit: March 14, 2026, 04:20:29 pm by Benleentje »
 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5982 on: March 14, 2026, 04:29:28 pm »
Should :readmath: ((value)=="SSHIFTH"?1:0) need to be :readmath: (value=="SSHIFTH"?1:0)
« Last Edit: March 14, 2026, 04:37:04 pm by flash2b »
They say attention is a shovel. It's time to dig 'em out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5983 on: March 14, 2026, 04:35:06 pm »
This doesn't work.

That is strange, it is the same parser in both cases.
You can try this: value=="SSHIFTH"?1:0
or: equals(value,"SSHIFTH")?1:0
or: listIndex(value,"SSHIFTL SSHIFTH")
They all do the same and there is no need to add extra ()
 

Offline Benleentje

  • Contributor
  • Posts: 45
  • Country: nl
Re: Program that can log/control many multimeters and other devices.
« Reply #5984 on: March 14, 2026, 04:45:30 pm »
:readmath: equals(value,"SSHIFTH")?1:0
Commandline
Range? 1
;; APS7100: Tx <Range? 1>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: equals(value,"SSHIFTH")?1:0>
;; COM3: Tx: <SSHIFTH..> 53 53 48 49 46 54 48 0D 0A
;; COM3: Rx: <SSHIFTH> 53 53 48 49 46 54 48
;; APS7100: Rx <1>
;; 1

program
Code: [Select]
;; APS7100: Tx <Range 0>
;; APS7100: Tx <txrx (value?"SSHIFTH":"SSHIFTL")>
;; COM3: Tx: <SSHIFTL..> 53 53 48 49 46 54 4C 0D 0A
;; COM3: Rx: <SSHIFTL> 53 53 48 49 46 54 4C
;; APS7100: Tx <Range? (value)>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: equals(value,"SSHIFTH")?1:0>
dk.hkj.script.ProgramExceptions$UnknownException: (value) could not be converted to boolean
value?"SSHIFTH"____<----____:"SSHIFTL"


listIndex(value,"SSHIFTL SSHIFTH")
commandline
Range? 0
;; APS7100: Tx <Range? 0>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: listIndex(value,"SSHIFTL SSHIFTH")>
;; COM3: Tx: <SSHIFTL..> 53 53 48 49 46 54 4C 0D 0A
;; COM3: Rx: <SSHIFTL> 53 53 48 49 46 54 4C
;; APS7100: Rx <0>
;; 0

program
;; APS7100: Tx <Range 0>
;; APS7100: Tx <txrx (value?"SSHIFTH":"SSHIFTL")>
;; COM3: Tx: <SSHIFTL..> 53 53 48 49 46 54 4C 0D 0A
;; COM3: Rx: <SSHIFTL> 53 53 48 49 46 54 4C
;; APS7100: Tx <Range? (value)>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: listIndex(value,"SSHIFTL SSHIFTH")>
dk.hkj.script.ProgramExceptions$UnknownException: (value) could not be converted to boolean
value?"SSHIFTH"____<----____:"SSHIFTL"

Code: [Select]
They all do the same and there is no need to add extra ()Sometimes i am not sure in what order the program makes the evaluation and putting () will mostly force it the way i want it.
In this case i trye ed many things whit () and without () one different places
« Last Edit: March 14, 2026, 04:55:12 pm by Benleentje »
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5985 on: March 14, 2026, 04:53:09 pm »
;; APS7100: Tx <Range 0>
;; APS7100: Tx <txrx (value?"SSHIFTH":"SSHIFTL")>
;; COM3: Tx: <SSHIFTL..> 53 53 48 49 46 54 4C 0D 0A
;; COM3: Rx: <SSHIFTL> 53 53 48 49 46 54 4C
;; APS7100: Tx <Range? (value)>
;; APS7100: Tx <txrx? (value?"SSHIFTH":"SSHIFTL")
:readmath: listIndex(value,"SSHIFTL SSHIFTH")>
dk.hkj.script.ProgramExceptions$UnknownException: (value) could not be converted to boolean
value?"SSHIFTH"____<----____:"SSHIFTL"

Now it makes sense, the error message is from this expression: txrx (value?"SSHIFTH":"SSHIFTL")
I do not know what the contents of value is, but TC cannot convert it to a boolean.
 

Offline Benleentje

  • Contributor
  • Posts: 45
  • Country: nl
Re: Program that can log/control many multimeters and other devices.
« Reply #5986 on: March 14, 2026, 05:02:46 pm »
So i guess i have to work with a var?
This is a thing i don't understand yet how to put in the program.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5987 on: March 14, 2026, 05:12:20 pm »
So i guess i have to work with a var?
This is a thing i don't understand yet how to put in the program.

Generally you do a "var name" to declare a variable for the current context, but that only works when the full programming mode is active.
In #scpiCmd you can use a :setvar: tag, it works like :readmath: but will store the value in a variable:

:setvar: myvar=value
:setvar: myvar=inputValue

You can also use expressions and you need to get it defined before it is used, i.e. the definition must have a #initCmd that calls a #scpiCmd to assign a value.
When it is defined in can be used like value in all #scpiCmd
 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5988 on: March 14, 2026, 07:33:30 pm »
Please overwrite my previous Analogic defintion that was included with 2 others.

New one attached...

[ Attachment Invalid Or Does Not Exist ]

Part of TestController v3.00
(Sorry about this)
« Last Edit: March 20, 2026, 09:20:22 am by flash2b »
They say attention is a shovel. It's time to dig 'em out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5989 on: March 14, 2026, 07:37:40 pm »
Please overwrite my previous Analogic defintion that was included with 2 others.

Done  ;D
 

Offline Mister_X

  • Newbie
  • Posts: 3
  • Country: de
Re: Program that can log/control many multimeters and other devices.
« Reply #5990 on: March 14, 2026, 09:03:54 pm »
Hello everyone,

I'm new here and hope I'm posting my question in the right place. There's too much information for me to read completely. If there's already an answer somewhere else, please let me know.

I'm running a script with a test controller that performs a load step to calculate the internal resistance (DCIR) and record the process. So, I get a log/graph showing the discharge profile, but the calculated resistance value and some environmental conditions are only displayed in the script's output window.

Is there a way to save these data points together? Can the script's calculated values ​​be included in the log file, added to the table, or somehow saved along with the recorded profile data?

Thank you for your help!
 

Offline KungFuJosh

  • Super Contributor
  • ***
  • Posts: 8345
  • Country: us
  • TEAS is real.
Re: Program that can log/control many multimeters and other devices.
« Reply #5991 on: March 15, 2026, 12:00:12 am »
You should be able to add math channels and have that be part of the logs/charts/grid panels.
"Experience is something you don't get until just after you need it." - Steven Wright
Best Continuity Tester Ever
Best Continuity Tester Ever...Got Betterer!
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5992 on: March 15, 2026, 07:11:59 am »
Hello everyone,

I'm new here and hope I'm posting my question in the right place. There's too much information for me to read completely. If there's already an answer somewhere else, please let me know.

I'm running a script with a test controller that performs a load step to calculate the internal resistance (DCIR) and record the process. So, I get a log/graph showing the discharge profile, but the calculated resistance value and some environmental conditions are only displayed in the script's output window.

Is there a way to save these data points together? Can the script's calculated values ​​be included in the log file, added to the table, or somehow saved along with the recorded profile data?

Thank you for your help!

As Josh says: You can use math channels, for that the calculations must be done on the Math page or it can reflect a global variable into the table.

Another way to save information is to create a file with it, TC do support creating/writing to files from script (or rather programming)
Lines starting with = in script mode are passed to programming mode. A #calc statement will switch into programming mode until line that start with #.

 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5993 on: March 15, 2026, 03:03:13 pm »
I have updated 2 definitions: Tasi 612C from gby and Mastech 6514 from SpottedDick
I have also update 1 definition for UNI-T UT325 and Tenma 72-7715 with no author

I have only added the #interfaceType and #interface commands to make them compatible with the Battery Test popup.

HKJ please add these to TestController.

[ Attachment Invalid Or Does Not Exist ]
[ Attachment Invalid Or Does Not Exist ]

Part of TestController v3.00
« Last Edit: March 20, 2026, 09:20:44 am by flash2b »
They say attention is a shovel. It's time to dig 'em out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5994 on: March 15, 2026, 03:24:03 pm »
I have updated 2 definitions: Tasi 612C from gby and Mastech 6514 from SpottedDick
I have also update 1 definition for UNI-T UT325 and Tenma 72-7715 with no author

I have only added the #interfaceType and #interface commands to make them compatible with the Battery Test popup.

Done, thanks.
 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5995 on: March 15, 2026, 03:39:37 pm »
As I have a limited setup at the moment (no load connected, not here are the moment) I tried the Battery Test popup

I get this:
14/03-2026 18:39:24    Battery: 2.5 V    Initial charging 500 mA
14/03-2026 18:39:24    Battery: 2.5 V    Abort
14/03-2026 18:39:24    Battery: 2.5 V    Info message: Failed to set device: BSide I83010 to 500m
14/03-2026 18:39:24    Battery: 2.5 V    Total testing time: 00:00

The error message is it because there is no load or is it because of the BSide I83010 ?
They say attention is a shovel. It's time to dig 'em out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5996 on: March 15, 2026, 03:43:52 pm »
As I have a limited setup at the moment (no load connected, not here are the moment) I tried the Battery Test popup

I get this:
14/03-2026 18:39:24    Battery: 2.5 V    Initial charging 500 mA
14/03-2026 18:39:24    Battery: 2.5 V    Abort
14/03-2026 18:39:24    Battery: 2.5 V    Info message: Failed to set device: BSide I83010 to 500m
14/03-2026 18:39:24    Battery: 2.5 V    Total testing time: 00:00

The error message is it because there is no load or is it because of the BSide I83010 ?

It is because a
setCurrent(0.5)
getCurrent()
Did not return 500mA.
TC/Battery test checks on some parameters that they are correctly registered by the device.


 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5997 on: March 15, 2026, 03:47:03 pm »
setCurrent 500m works from the commandLine.

My interface is:

#interface setCurrent setCurrent (value)

Can I also use setCurrent from the commandLine ?
They say attention is a shovel. It's time to dig 'em out.
 

Offline flash2b

  • Frequent Contributor
  • **
  • Posts: 998
  • Country: nl
  • Everything I like about myself is better with you.
Re: Program that can log/control many multimeters and other devices.
« Reply #5998 on: March 15, 2026, 03:50:02 pm »
I am one step further:

15/03-2026 16:49:02    Battery: 2.5 V    Initial charging 500 mA
15/03-2026 16:49:02    Battery: 2.5 V    Abort
15/03-2026 16:49:02    Battery: 2.5 V    Info message: Failed to set device: BSide I83010 to 4.2
15/03-2026 16:49:02    Battery: 2.5 V    Total testing time: 00:00

2nd try
15/03-2026 17:01:15    Battery: 2.5 V    Initial charging 500 mA
15/03-2026 17:01:16    Battery: 2.5 V    Abort
15/03-2026 17:01:16    Battery: 2.5 V    Info message: Failed to set device: BSide I83010 to 2.5
15/03-2026 17:01:16    Battery: 2.5 V    Total testing time: 00:00
« Last Edit: March 15, 2026, 04:02:38 pm by flash2b »
They say attention is a shovel. It's time to dig 'em out.
 

Offline HKJTopic starter

  • Super Contributor
  • ***
  • Posts: 4885
  • Country: dk
    • Tests
Re: Program that can log/control many multimeters and other devices.
« Reply #5999 on: March 15, 2026, 03:50:07 pm »
setCurrent 500m works from the commandLine.

My interface is:

#interface setCurrent setCurrent (value)

Can I also use setCurrent from the commandLine ?

As long as you stick a = before it (That will switch the input line to programming mode). That way you can also use getCurrent(), but the interface test popup ought to do that.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf

 

-->