#!/usr/bin/env python import os import sys import getopt import subprocess import signal import serial import time def delta_nrj(delta, myline, min=[0,0,0,0,0], max=[0,0,0,0,0]): array = myline.split(" ") time = float(array[0]) - delta[0] for i in range(1, len(delta)): if (float(array[i]) < min[i]): min[i] = float(array[i]) if (float(array[i]) > max[i]): max[i] = float(array[i]) delta[i] += time * float(array[i]) delta[0] = float(array[0]) # print delta return delta def compute_pmu(infile, dry_run=True, verbose=False): try: fi = open(infile, "r") except IOError: print "WARN: Unable to open %s" % (infile) sys.exit(2) lines = fi.readlines() offset = [0, 0, 0, 0, 0] nrj = [0, -0, -0, -0, -0] min = [0, 50000000, 50000000, 50000000, 50000000] max = [0, 0, 0, 0, 0] label = ["time", "dcdc1", "dcdc2", "dcdc3", "AC"] for myline in lines: delta_nrj(nrj, myline, min, max) for i in range(1, len(nrj)): nrj[i] -= offset[i] * nrj[0] print "Total nrj: %8.3f Joules for %s -- min %8.3f -- max %8.3f" % (nrj[i]/1000, label[i], min[i], max[i]) if (min[i] < offset[i]): print "!!! Min below offset" if __name__ == '__main__': def handleSigTERM(signum, frame): record = False signal.signal(signal.SIGTERM, handleSigTERM) signal.signal(signal.SIGINT, handleSigTERM) infile = "EC-pmu.txt" verbose = False try: opts, args = getopt.getopt(sys.argv[1:], "i:avd") except getopt.GetoptError as err: print str(err) # will print something like "option -a not recognized" sys.exit(2) for o, a in opts: if o == "-i": infile = a if o == "-v": verbose = True compute_pmu(infile, False, verbose)