import matplotlib.pyplot as plt
import numpy as np
import time
import serial
import sys
import random

serial_port = '/dev/ttyUSB0'
baud = 9600

if len(sys.argv) > 1:
	serial_port = sys.argv[1]

ser = serial.Serial(serial_port, baud)


fig = plt.figure()
ax = fig.add_subplot(111)

# some X and Y data
x = np.arange(100)
y = [0] * 100
#y2 = [0] * 100

li, = ax.plot(x, y, 'b')
#li2, = ax.plot(x, y, 'r-')

# draw and show it
ax.relim() 
ax.autoscale_view(True,True,True)
fig.canvas.draw()
plt.ylim(-10,1033)
plt.show(block=False)

# loop to update the data
while True:
	try:	
		val = 0;
		byte2 = 0
		byte3 = 0
		byte4 = 0
		ser.flush()
		#
		# find framing 
		#
		while 1:
			byte1 = byte2
			byte2 = byte3
			byte3 = byte4
			byte4 = ord(ser.read())
			if ((byte1 == 1) & (byte2 == 2) & (byte3 == 3) & (byte4 == 4)):
				break
		data1 = ord(ser.read())
		data2 = ord(ser.read())
		data3 = ord(ser.read())
		val = data1+ 256*data2+256*256*data3
		val = val/100

		y[:-1] = y[1:]
		y[-1:] = [val]
		li.set_ydata(y)
		#y2[:-10] = y2[10:]
		#y2[-10:] = vals2
		#li2.set_ydata(y2)
		fig.canvas.draw()

		time.sleep(0.01)
	except KeyboardInterrupt:
		break
