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
|