Commit b1f91dc4 authored by Daniel Friesel's avatar Daniel Friesel
Browse files

make plotting optional, show stats

parent c143ca0b
Loading
Loading
Loading
Loading
+27 −13
Original line number Diff line number Diff line
@@ -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):
		if i >= opt['skip']:
			timestamp, current, voltage, total_energy = map(float, line.split(' '))
		data[i] = [timestamp, current, voltage, total_energy]
			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,6 +80,13 @@ if __name__ == '__main__':
		with open(opt['save'], 'w') as f:
			f.write(log_data)

	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])