summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2018-10-18 08:13:21 +0200
committerDaniel Friesel <derf@finalrewind.org>2018-10-18 08:13:21 +0200
commitb1f91dc4dbd62efbf276bc441feb739c19bbb7d4 (patch)
tree2e2a7b4538fe768ea6f19d08a12759befc91fa0e
parentc143ca0b50005c1f40c231ba38cb2e9e417cb96b (diff)
make plotting optional, show stats
-rwxr-xr-xbin/msp430-etv40
1 files changed, 27 insertions, 13 deletions
diff --git a/bin/msp430-etv b/bin/msp430-etv
index 7d4123a..8ed0c4f 100755
--- a/bin/msp430-etv
+++ b/bin/msp430-etv
@@ -22,7 +22,7 @@ def measure_data(time):
if __name__ == '__main__':
try:
- optspec = ('load= save=')
+ optspec = ('load= save= skip= plot stat')
raw_opts, args = getopt.getopt(sys.argv[1:], "", optspec.split(' '))
for option, parameter in raw_opts:
@@ -30,7 +30,12 @@ if __name__ == '__main__':
opt[optname] = parameter
if not 'load' in opt:
- duration = int(args[1])
+ duration = int(args[0])
+
+ if 'skip' in opt:
+ opt['skip'] = int(opt['skip'])
+ else:
+ opt['skip'] = 0
except getopt.GetoptError as err:
print(err)
@@ -39,7 +44,7 @@ if __name__ == '__main__':
print('Usage: msp430-etv <duration>')
sys.exit(2)
except ValueError:
- print('Error: duration "{}" is not a number'.format(sys.argv[1]))
+ print('Error: duration or skip is not a number')
sys.exit(2)
if 'load' in opt:
@@ -51,11 +56,13 @@ if __name__ == '__main__':
lines = log_data.split('\n')
data_count = sum(map(lambda x: len(x) > 0 and x[0] != '#', lines))
data_lines = filter(lambda x: len(x) > 0 and x[0] != '#', lines)
- data = np.empty((data_count, 4))
+
+ data = np.empty((data_count - opt['skip'], 4))
for i, line in enumerate(data_lines):
- timestamp, current, voltage, total_energy = map(float, line.split(' '))
- data[i] = [timestamp, current, voltage, total_energy]
+ if i >= opt['skip']:
+ timestamp, current, voltage, total_energy = map(float, line.split(' '))
+ data[i - opt['skip']] = [timestamp, current, voltage, total_energy]
m_duration = data[-1, 0] - data[0, 0]
m_energy = data[-1, 3] - data[0, 3]
@@ -73,10 +80,17 @@ if __name__ == '__main__':
with open(opt['save'], 'w') as f:
f.write(log_data)
- pwrhandle, = plt.plot(data[:, 0], data[:, 1] * data[:, 2], 'b-', label='U*I', markersize=1)
- #energyhandle, = plt.plot(data[1:, 0], (data[1:, 3] - data[:-1, 3]) / (data[1:, 0] - data[:-1, 0]), 'r-', label='E/Δt', markersize=1)
- plt.legend(handles=[pwrhandle])
- plt.xlabel('Time [s]')
- plt.ylabel('Power [W]')
- plt.grid(True)
- plt.show()
+ if 'stat' in opt:
+ print('Mean voltage: {:f}'.format(np.mean(data[:, 2])))
+ print('Mean current: {:f}'.format(np.mean(data[:, 1])))
+ print('Mean power: {:f}'.format(np.mean(data[:, 1] * data[:, 2])))
+ print('Total energy: {:f}'.format(m_energy))
+
+ if 'plot' in opt:
+ pwrhandle, = plt.plot(data[:, 0], data[:, 1] * data[:, 2], 'b-', label='U*I', markersize=1)
+ #energyhandle, = plt.plot(data[1:, 0], (data[1:, 3] - data[:-1, 3]) / (data[1:, 0] - data[:-1, 0]), 'r-', label='E/Δt', markersize=1)
+ plt.legend(handles=[pwrhandle])
+ plt.xlabel('Time [s]')
+ plt.ylabel('Power [W]')
+ plt.grid(True)
+ plt.show()