#!/usr/bin/perl -T use strict; use warnings; use utf8; use open qw(:std :utf8); use Encode qw(encode decode); sub usage() { print "usage: $0 filename\n"; exit; } my ($num, $w_sum, $a_sum, $v_sum) = (0, 0, 0, 0); unless ($#ARGV == 0) { usage(); } @ARGV = map { decode("UTF-8", $_) } @ARGV; my $read_f = $ARGV[0] ; unless (-e $read_f) { usage; } open(IN, "<", $read_f) or die "omg! can't open input file: $read_f"; while () { chomp; my ($x, $a, $current, $y, $q, $voltage, $z) = split; $w_sum += $current * $voltage; # [mA] * [V] $a_sum += $current; $v_sum += $voltage; $num++; } printf "Avg Power: %.2f mW\n", $w_sum / $num; printf "Avg Current: %.2f mA\n", $a_sum / $num; printf "Avg Batt Voltage: %.2f V\n", $v_sum / $num; # $v_sum / $num here gives us avg voltage. # [V] * [mA] / 1000 [mA/A] * 16 [s] * (1 [h] / 3600 [s]) printf "Energy Balance: %.2f Wh\n", $v_sum * $a_sum / 1000 * 16 / 3600 / $num; printf "Charge Balance: %.2f Ah\n", $a_sum / 1000 * (16/3600); close(IN);