import serial
import time
import csv
import matplotlib
matplotlib.use("tkAgg")
import matplotlib.pyplot as plt
import numpy as np

ser = serial.Serial('/dev/cu.usbmodem1411')
ser.flushInput()

plot_window = 20
y_var = np.array(np.zeros([plot_window]))

plt.ion()
fig, ax = plt.subplots()
line, = ax.plot(y_var)

while True:
    try:
        ser_bytes = ser.readline()
        print("test1")
        try:
            decoded_bytes = float(ser_bytes[0:len(ser_bytes)-2].decode("utf-8"))
            print("test2")
            print(decoded_bytes)
            print("test3")
        except:
            continue
            print("test4")
        with open("test_data.csv","a") as f:
            writer = csv.writer(f,delimiter=",")
            print("test5")
            writer.writerow([time.time(),decoded_bytes])
            print("test6")
        y_var = np.append(y_var,decoded_bytes)
        print("test7")
        y_var = y_var[1:plot_window]
        print("test8")
        line.set_ydata(y_var)
        print("test9")
        ax.relim()
        print("test10")
        ax.autoscale_view()
        print("test11")
        fig.canvas.draw()
        print("test12")
        fig.canvas.flush_events()
        print("test13")
        ax.set(xlabel='time (s)', ylabel='voltage (mV)', title='Analog temperature data (pin A5)')
    except:
        print("Keyboard Interrupt")
        break
