#!/usr/bin/perl ###################################################################################### stir controll (mwx'2019) use Device::SerialPort; use Time::HiRes qw( usleep ); $dev='/dev/ttyACM0'; my $port = Device::SerialPort->new($dev); ################################################### setup serial port $port->baudrate(9600); $port->databits(8); $port->parity("none"); $port->stopbits(1); $port->lookfor(); $cmd=join(':',@ARGV);$cmd='info' if ($cmd=~/^\s*$/); @r=split(':',&scmd($cmd)); print " LEFT RIGHT\n"; printf("Stirrer On: %6d %6d\n", $r[0],$r[16]); printf("Speed: %6d %6d\n", $r[1],$r[17]); printf("Boost Speed: %6d %6d\n", $r[2],$r[18]); printf("RPM: %6d %6d\n", $r[3],$r[19]); printf("Average RPM: %6d %6d\n", $r[4],$r[20]); printf("Regulation: %6d %6d\n", $r[5],$r[21]); printf("Boost On: %6d %6d\n", $r[6],$r[22]); printf("Boost Time: %6d %6d\n", $r[7],$r[23]); printf("Catch On: %6d %6d\n", $r[8],$r[24]); printf("Catch Time: %6d %6d\n", $r[9],$r[25]); printf("Rise Time: %6d %6d\n", $r[10],$r[26]); printf("Off Time: %6d %6d\n", $r[11],$r[27]); printf("Random Range: %6d %6d\n", $r[12],$r[28]); printf("Random Value: %6d %6d\n", $r[13],$r[29]); printf("Boost Remain: %6d %6d\n", $r[14],$r[30]); printf("Off Remain: %6d %6d\n", $r[15],$r[31]); printf("VERSION: %s\n",$r[32]); printf("UPTIME: %s\n",&dhms($r[33]/1000)); printf("ERROR: %d\n",$r[34]); sub scmd() { ##################################################################################### send command my($cmd,$quiet)=@_; $port->write($cmd); my $founddata=0; $msg=""; for ($i=0;$i<1000;$i++) { $in = $port->lookfor(); $founddata=1 if ($in ne ""); $msg.=$in; last if ($in eq "" && $founddata); &usleep(2500); } $msg=~s/[\r\n]+//g; return $msg; } sub dhms { ######################################################################## convert secs to dd:hh:mm:ss my($t)=@_;my ($d,$h,$m,$s); $s=$t%60;$t=($t-$s)/60;$m=$t%60;$t=($t-$m)/60;$h=$t%24;$t=($t-$h)/24;$d=$t; return sprintf("%d:%02d:%02d:%02d",$d,$h,$m,$s); } ########################################################################################################### END