From 42c1681a9e768403d087ca8791aebf043a045b27 Mon Sep 17 00:00:00 2001 From: Cbm Rich Date: Mon, 17 Nov 2014 10:40:56 +0100 Subject: [PATCH] added scripts to read TDK Lambda and Hameg HMP via Ethernet --- tools/powersupply_hameg.pl | 73 +++++++++++++++++++++++++++++++++ tools/powersupply_tdklambda.pl | 56 +++++++++++++++++++++++++ users/cern_cbmrich/hameg.pl | 74 +--------------------------------- users/cern_cbmrich/tdk.pl | 57 +------------------------- 4 files changed, 131 insertions(+), 129 deletions(-) create mode 100755 tools/powersupply_hameg.pl create mode 100755 tools/powersupply_tdklambda.pl mode change 100755 => 120000 users/cern_cbmrich/hameg.pl mode change 100755 => 120000 users/cern_cbmrich/tdk.pl diff --git a/tools/powersupply_hameg.pl b/tools/powersupply_hameg.pl new file mode 100755 index 0000000..41fd0a3 --- /dev/null +++ b/tools/powersupply_hameg.pl @@ -0,0 +1,73 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use IO::Socket; +use Time::HiRes qw(usleep); + +sub showUsage { + print "usage: hameg.pl [ON|OFF|ON#|OFF#|MEAS] HOST\n"; + print " where ON/OFF applies to all channels and ON#/OFF# to the number (1-4) specified\n"; + print " example turn off 1 channel: ./hameg.pl OFF1 hameg01\n"; + + exit; +} + +my $cmd = $ARGV[0] or showUsage; +my $peer = $ARGV[1] or showUsage; +my $socket; + +$cmd = uc $cmd; + + +sub measure { + my @values = (); + for(my $chan = 1; $chan <= 4; $chan++) { + usleep 1e5; print $socket "INST OUT$chan\n"; + + usleep 1e5; print $socket "MEAS:VOLT?\n"; my $volt = <$socket>; + usleep 1e5; print $socket "MEAS:CURR?\n"; my $curr = <$socket>; + usleep 1e5; print $socket "OUTP:STAT?\n"; my $stat = <$socket>; + + chomp $volt; + chomp $curr; + chomp $stat; + + $stat = $stat eq "1" ? "ON" : "OFF"; + + print "$peer CH $chan: $curr A @ $volt V ($stat)\n"; + } +} + +sub switchPowerGen { + my $state = shift; + $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); + usleep 1e5; print $socket "OUTP:GEN $state\n"; +} + +sub switchPowerChan { + my $chan = shift; + my $state = shift; + $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); + usleep 1e5; print $socket "INST OUT$chan\n"; + usleep 1e5; print $socket "OUTP:STAT $state\n"; +} + + +local $SIG{ALRM} = sub { die 'ERROR: Timed Out'; }; +alarm 3; + +$socket = IO::Socket::INET->new(PeerAddr => $peer, PeerPort => 50000, Proto => "tcp", Type => SOCK_STREAM) or die "ERROR: Cannot connect: $@"; + +if ($cmd eq "ON" || $cmd eq "OFF") { + switchPowerGen $cmd; + measure; +} elsif ($cmd =~ m/^(ON|OFF)([1-4])$/) { + switchPowerChan $2, $1; + measure; +} elsif ($cmd =~ m/^MEAS/) { + measure; +} else { + showUsage; +} + +alarm 0; diff --git a/tools/powersupply_tdklambda.pl b/tools/powersupply_tdklambda.pl new file mode 100755 index 0000000..10b567c --- /dev/null +++ b/tools/powersupply_tdklambda.pl @@ -0,0 +1,56 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use IO::Socket; +use Time::HiRes qw(usleep); + +sub showUsage { + print "usage: tdk.pl [ON|OFF|MEAS] HOST\n"; + exit; +} + +my $cmd = $ARGV[0] or showUsage; +my $peer = $ARGV[1] or showUsage; +my $socket; + +$cmd = uc $cmd; + +sub measure { + my @values = (); + + usleep 1e5; print $socket "MEAS:VOLT?\n"; + my $volt = <$socket>; + usleep 1e5; print $socket "MEAS:CURR?\n"; + my $curr = <$socket>; + usleep 1e5; print $socket "OUTP:STAT?\n"; + my $state = <$socket>; + + chomp $volt; + chomp $curr; + chomp $state; + + print "$peer CH 0: $curr A @ $volt V ($state)\n"; +} + +sub switchPower { + my $state = shift; + $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); + usleep 1e5; print $socket "OUTP:STAT $state\n"; +} + +local $SIG{ALRM} = sub { die 'ERROR: Timed Out'; }; +alarm 2; + +$socket = IO::Socket::INET->new(PeerAddr => $peer, PeerPort => 8003, Proto => "tcp", Type => SOCK_STREAM) or die "ERROR: Cannot connect: $@"; + +if ($cmd eq "OFF" || $cmd eq "ON") { + switchPower $cmd; + measure; +} elsif ($cmd =~ m/^MEAS/) { + measure; +} else { + showUsage; +} + + +alarm 0; diff --git a/users/cern_cbmrich/hameg.pl b/users/cern_cbmrich/hameg.pl deleted file mode 100755 index b9d8c56..0000000 --- a/users/cern_cbmrich/hameg.pl +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use IO::Socket; -use Time::HiRes qw(usleep); - -sub showUsage { - print "usage: tdk.pl [ON|OFF|ON#|OFF#|MEAS] HOST\n"; - print " where ON/OFF applies to all channels and ON#/OFF# to the number (1-4) specified\n"; - print " example turn off 1 channel: ./hameg.pl OFF1 hameg01\n"; - - exit; -} - -my $cmd = $ARGV[0] or showUsage; -my $peer = $ARGV[1] or showUsage; -my $socket; - -$cmd = uc $cmd; - - -sub measure { - my @values = (); - for(my $chan = 1; $chan <= 4; $chan++) { - usleep 1e5; print $socket "INST OUT$chan\n"; - - usleep 1e5; print $socket "MEAS:VOLT?\n"; my $volt = <$socket>; - usleep 1e5; print $socket "MEAS:CURR?\n"; my $curr = <$socket>; - usleep 1e5; print $socket "OUTP:STAT?\n"; my $stat = <$socket>; - - chomp $volt; - chomp $curr; - chomp $stat; - - $stat = $stat eq "1" ? "ON" : "OFF"; - - print "$peer CH $chan: $curr A @ $volt V ($stat)\n"; - } -} - -sub switchPowerGen { - my $state = shift; - $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); - usleep 1e5; print $socket "OUTP:GEN $state\n"; -} - -sub switchPowerChan { - my $chan = shift; - my $state = shift; - $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); - usleep 1e5; print $socket "INST OUT$chan\n"; - usleep 1e5; print $socket "OUTP:STAT $state\n"; -} - - -local $SIG{ALRM} = sub { die 'ERROR: Timed Out'; }; -alarm 3; - -$socket = IO::Socket::INET->new(PeerAddr => $peer, PeerPort => 50000, Proto => "tcp", Type => SOCK_STREAM) or die "ERROR: Cannot connect: $@"; - -if ($cmd eq "ON" || $cmd eq "OFF") { - switchPowerGen $cmd; - measure; -} elsif ($cmd =~ m/^(ON|OFF)([1-4])$/) { - switchPowerChan $2, $1; - measure; -} elsif ($cmd =~ m/^MEAS/) { - measure; -} else { - showUsage; -} - -alarm 0; diff --git a/users/cern_cbmrich/hameg.pl b/users/cern_cbmrich/hameg.pl new file mode 120000 index 0000000..f664dc0 --- /dev/null +++ b/users/cern_cbmrich/hameg.pl @@ -0,0 +1 @@ +../../tools/powersupply_hameg.pl \ No newline at end of file diff --git a/users/cern_cbmrich/tdk.pl b/users/cern_cbmrich/tdk.pl deleted file mode 100755 index 10b567c..0000000 --- a/users/cern_cbmrich/tdk.pl +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env perl -use strict; -use warnings; -use IO::Socket; -use Time::HiRes qw(usleep); - -sub showUsage { - print "usage: tdk.pl [ON|OFF|MEAS] HOST\n"; - exit; -} - -my $cmd = $ARGV[0] or showUsage; -my $peer = $ARGV[1] or showUsage; -my $socket; - -$cmd = uc $cmd; - -sub measure { - my @values = (); - - usleep 1e5; print $socket "MEAS:VOLT?\n"; - my $volt = <$socket>; - usleep 1e5; print $socket "MEAS:CURR?\n"; - my $curr = <$socket>; - usleep 1e5; print $socket "OUTP:STAT?\n"; - my $state = <$socket>; - - chomp $volt; - chomp $curr; - chomp $state; - - print "$peer CH 0: $curr A @ $volt V ($state)\n"; -} - -sub switchPower { - my $state = shift; - $state = (uc($state) eq 'ON' ? 'ON' : 'OFF'); - usleep 1e5; print $socket "OUTP:STAT $state\n"; -} - -local $SIG{ALRM} = sub { die 'ERROR: Timed Out'; }; -alarm 2; - -$socket = IO::Socket::INET->new(PeerAddr => $peer, PeerPort => 8003, Proto => "tcp", Type => SOCK_STREAM) or die "ERROR: Cannot connect: $@"; - -if ($cmd eq "OFF" || $cmd eq "ON") { - switchPower $cmd; - measure; -} elsif ($cmd =~ m/^MEAS/) { - measure; -} else { - showUsage; -} - - -alarm 0; diff --git a/users/cern_cbmrich/tdk.pl b/users/cern_cbmrich/tdk.pl new file mode 120000 index 0000000..a6aa3ec --- /dev/null +++ b/users/cern_cbmrich/tdk.pl @@ -0,0 +1 @@ +../../tools/powersupply_tdklambda.pl \ No newline at end of file -- 2.43.0