From b1f91dc4dbd62efbf276bc441feb739c19bbb7d4 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Thu, 18 Oct 2018 08:13:21 +0200 Subject: make plotting optional, show stats --- bin/msp430-etv | 40 +++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 13 deletions(-) (limited to 'bin') 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 ') 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() -- cgit v1.2.3