hs7sv
  
 
 
  
 
 
Group: Members 
Posts: 247 
Joined: June 2005 | 
  | 
Posted: Feb. 14 2007,12:09 | 
   | 
 
 
  
This is a modified version of battstate.pl for 2 batteries support:-
 | Code Sample  |  #!/usr/bin/perl # # This is somem messy Perl script, but hey, # it works. If you somehow stuble upon this # code, then please note that you may have to # change certain paths, such as BAT0, depending # on how many batteries you have. Also, note # that this script has only been tested with # ACPI and not APM. # # Enjoy! :-) # # written by ateam (derek@backdrifts.net) # # modified for 2 batteries support by hs7sv (paphons@gmail.com)
  ##### Remain Capacity 1 #####
  chop (@info = `cat /proc/acpi/battery/BAT0/state`); chop (@capacity = `cat /proc/acpi/battery/BAT0/info`);
  $state = @info[2]; chop ($state1 = `echo \"$state\" | awk '{ print \$3 }'`);
  chop ($left = @info[4]); chop ($left1 = `echo \"$left\" | awk '{ print \$3 }'`);
  chop ($full = @capacity[1]); chop ($full1 = `echo \"$full\" | awk '{ print \$3 }'`);
  ##### Remain Capacity 2 #####
  chop (@info = `cat /proc/acpi/battery/BAT1/state`); chop (@capacity = `cat /proc/acpi/battery/BAT1/info`);
  $state = @info[2]; chop ($state2 = `echo \"$state\" | awk '{ print \$3 }'`);
  chop ($left = @info[4]); chop ($left2 = `echo \"$left\" | awk '{ print \$3 }'`);
  chop ($full = @capacity[1]); chop ($full2 = `echo \"$full\" | awk '{ print \$3 }'`);
  ##### Remain Time 1 #####
  chop (@time = `cat /proc/acpi/battery/BAT0/state`);
  $rcap = @time[4]; chop ($rcap1 = `echo \"$rcap\" | awk '{ print \$3 }'`);
  $prate = @time[3]; chop ($prate1 = `echo \"$prate\" | awk '{ print \$3 }'`);
  ##### Remain Time 2 #####
  chop (@time = `cat /proc/acpi/battery/BAT1/state`);
  $rcap = @time[4]; chop ($rcap2 = `echo \"$rcap\" | awk '{ print \$3 }'`);
  $prate = @time[3]; chop ($prate2 = `echo \"$prate\" | awk '{ print \$3 }'`);
  ##### Combination #####
  if ($state1 eq "charging" or $state2 eq "charging") {    $state = "charging"; } else {    $state = "discharging"; }
  $left = $left1 + $left2; $full = $full1 + $full2;
  $remain = $left / $full * 100; $remain = int ($remain);
  $rcap = $rcap1 + $rcap2; $prate = $prate1 + $prate2;
  ##### Remain Time Calculation #####
  if ($prate > 0) {    if ($state eq "discharging")    {       $seconds = $rcap / $prate * 60 * 60;       if ($remain < 10)       {          $charge = "remaining LOW";       }       else       {          $charge = "remaining";       }    }    else    {         $seconds = ($full - $rcap) / $prate * 60 * 60;         $charge = "until charged";    }
     $minutes = sprintf("%.2f", $minutes);
     $hours = $seconds / 60 / 60;    $hours = sprintf("%.2f", $hours);
     chop ($singhour = $hours);    chop ($singhour);    chop ($singhour);
     $hourmins = $hours;
     $hourmins =~ s/^.//;    $hourmins =~ s/^.//;
     $hourmins = $hourmins * .6;    $hourmins = sprintf("%.0f", $hourmins); } else {    $seconds = 0; }
  if ($singhour >= 1) {    print " $singhour"; }
  if ($hourmins >= 1) {    if ($singhour < 1)    {        print " 0";    }
     if ($hourmins < 10)    {        print ":0$hourmins";    }    else    {        print ":$hourmins";    }    print " $charge";  } elsif ($state eq "discharging" and $prate == 0) {    print " A:C"; } else {    print ":00 $charge";  }
  print "\n"; 
  if ($state eq "discharging" and $prate == 0) {    $printstate = "AC on-line"; } elsif ($state eq "charging") {    $printstate = "AC on-line and charging"; } elsif ($state eq "discharging") {       $printstate = "AC unplugged"; } print " $remain%, $printstate"; |  
  This program works for a battery also.    
  -------------- "My advice is to just  return hardware that does not work with a plain Linux kernel, right to the place where you bought it, and ask for your money back..." 
  Klaus Knopper
 |