From e1bdcbd6ccf8854b8be78817d7bfea30f075e61a Mon Sep 17 00:00:00 2001 From: hadaq Date: Mon, 12 Apr 2021 12:10:24 +0200 Subject: [PATCH] updated remote functions --- powersupplies/web/htdocs/index.html | 1 + powersupplies/web/htdocs/pwr.pl | 21 ++++++++-- powersupplies/web/htdocs/pwr_hmp.htm | 19 ++++----- powersupplies/web/htdocs/pwr_psp.htm | 2 +- powersupplies/web/htdocs/pwr_remote.pl | 54 ++++++++++++++++++++++---- 5 files changed, 75 insertions(+), 22 deletions(-) diff --git a/powersupplies/web/htdocs/index.html b/powersupplies/web/htdocs/index.html index 4f167ec..eb2424f 100644 --- a/powersupplies/web/htdocs/index.html +++ b/powersupplies/web/htdocs/index.html @@ -10,6 +10,7 @@

Basic power supply control

+

Please don't keep any tabs open! Multi-user is not yet implemented for remote serial devices.

Platzhalter

diff --git a/powersupplies/web/htdocs/pwr.pl b/powersupplies/web/htdocs/pwr.pl index 4dcd631..e1fc870 100755 --- a/powersupplies/web/htdocs/pwr.pl +++ b/powersupplies/web/htdocs/pwr.pl @@ -43,6 +43,14 @@ my $file = $ser_dev; my $db; if(-e $file && -r $file) { $db = lock_retrieve($file); + my $waitcnt = 0; + while($db->{lock} && $waitcnt < 30) { + usleep(100000); + $waitcnt++; + $db = lock_retrieve($file); + } + $db->{lock} = 1; + lock_store($db,$file) if $db; } @@ -186,7 +194,7 @@ sub HMP_serial { sub HMP_ethernet { print strftime("%H:%M:%S &", localtime()); - my $port = IO::Socket::INET->new(PeerAddr => $ser_dev, PeerPort => $ser_speed, Proto => "tcp", Type => SOCK_STREAM, Timeout => 1) + my $port = IO::Socket::INET->new(PeerAddr => $ser_dev, PeerPort => $ser_speed, Proto => "tcp", Type => SOCK_STREAM, Timeout => 2) or (print("Device not found") && return); while ( my $command = shift(@new_command) ) { $command = uri_unescape($command); @@ -223,11 +231,15 @@ sub serial_rw { sub getValue { my ($fh,$cmd,$cnt,$forceread) = @_; - if (0 && defined $db->{$cmd.$cnt}{tim} && $db->{$cmd.$cnt}{tim} > time()-10) { + if (defined $db->{$cmd.$cnt}{tim} && $db->{$cmd.$cnt}{tim} > time()-5) { return $db->{$cmd.$cnt}{val}; } else { + usleep(10000); my $val = serial_rw($fh,$cmd,$forceread); + if($val eq "") { + return $db->{$cmd.$cnt}{val}; + } addDB($cmd.$cnt,$val); return $val; } @@ -239,8 +251,9 @@ sub addDB { $db->{$cmd}{val} = $val; $db->{$cmd}{tim} = time(); } - -#lock_store($db,$file); + +$db->{lock} = 0; +lock_store($db,$file) if $db; print "\n"; exit 1; diff --git a/powersupplies/web/htdocs/pwr_hmp.htm b/powersupplies/web/htdocs/pwr_hmp.htm index 8b840dc..639ccc8 100644 --- a/powersupplies/web/htdocs/pwr_hmp.htm +++ b/powersupplies/web/htdocs/pwr_hmp.htm @@ -23,10 +23,10 @@ Actual[V/A] - - - - + + + + Limits[V/A] @@ -41,7 +41,7 @@ Global Switch -Enable read-back of values +Enable read-back of values Read settings   @@ -49,7 +49,7 @@ Read settings