You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.0 KiB
46 lines
1.0 KiB
#!/usr/bin/python |
|
|
|
import sys |
|
import getopt |
|
|
|
def usage(): |
|
print "powersum.py [OPTIONS] HZ VOLTAGE [FILE]" |
|
print "OPTIONS: " |
|
print "-o OFFSET: subtract OFFSET from all data points" |
|
print "\nHZ: samples per second in FILE or stdin" |
|
sys.exit(0) |
|
|
|
offset = 0.0 |
|
voltage = 4.3 |
|
|
|
parsedargv,argvrem = getopt.getopt(sys.argv[1:], "vo:w:l:h", ["help"]) |
|
for o,a in parsedargv: |
|
if o == '-o': offset = float(a) |
|
if o == '-h' or o == '--help': usage() |
|
|
|
hz = float(argvrem[0]) |
|
voltage = float(argvrem[1]) |
|
if len(argvrem) > 1: |
|
f = open(argvrem[2], "r") |
|
else: |
|
f = sys.stdin |
|
|
|
totalpower = 0.0 |
|
samplectr = 0 |
|
|
|
for line in f: |
|
try: |
|
val = float(line.split(" ")[1]) # xxx take 2nd arg in line |
|
val -= offset |
|
except: |
|
print "Can't parse data line, did you remember the timestamp?" |
|
print "data was: %s" % line |
|
sys.exit(1) |
|
|
|
samplectr+=1 |
|
totalpower += val/hz |
|
|
|
avecurrent = totalpower * hz *1000 / samplectr |
|
avepower = avecurrent * voltage |
|
|
|
print "%.3f %.3f" % (avecurrent, avepower)
|
|
|