Search Members Help

» Welcome Guest
[ Log In :: Register ]

Mini-ITX Boards Sale, Fanless BareBones Mini-ITX, Bootable 1G DSL USBs, 533MHz Fanless PC <-- SALE $200 each!
Get The Official Damn Small Linux Book. DSL Market , Great VPS hosting provided by Tektonic
Pages: (5) </ 1 2 3 4 [5] >/

[ Track this topic :: Email this topic :: Print this topic ]

reply to topic new topic new poll
Topic: Torsmo< Next Oldest | Next Newest >
hs7sv Offline





Group: Members
Posts: 247
Joined: June 2005
Posted: Feb. 14 2007,12:09 QUOTE

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.  :D


--------------
"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
Back to top
Profile PM ICQ AOL MSN YIM 
20 replies since Dec. 26 2005,18:00 < Next Oldest | Next Newest >

[ Track this topic :: Email this topic :: Print this topic ]

Pages: (5) </ 1 2 3 4 [5] >/
reply to topic new topic new poll
Quick Reply: Torsmo

Do you wish to enable your signature for this post?
Do you wish to enable emoticons for this post?
Track this topic
View All Emoticons
View iB Code