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.
47 lines
1.0 KiB
47 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)
|