from tkinter import *
from numpy import log
import serial

WINDOW=600
heartBeat=0

def idle():
   global heartBeat
   byte2 = 0
   byte3 = 0
   byte4 = 0
   arduinoSerialData.flush()
   while 1:
      byte1 = byte2
      byte2 = byte3
      byte3 = byte4
      byte4 = ord(arduinoSerialData.read())
      if ((byte1 == 1) & (byte2 == 2) & (byte3 == 3) & (byte4 == 4)):
        break
   low = ord(arduinoSerialData.read())
   high = ord(arduinoSerialData.read())
   heartBeat = 256*high + low
   canvas.itemconfigure("text",text=heartBeat)
   canvas.update()
   root.after(1000,idle)

arduinoSerialData =serial.Serial('/dev/ttyACM0',115200)
arduinoSerialData.setDTR()

# start plotting
root= Tk()
root.title('Heart Monitor')
root.bind('q','exit')
photo= PhotoImage(file="heartread.png")

canvas = Canvas(root, width=WINDOW, height=.4*WINDOW, background='white')
canvas.create_text(0.5*WINDOW,.06*WINDOW,text="Heart Beat monitor",font=("Helvetica bold", 24))
canvas.create_text(.8*WINDOW,.2*WINDOW,text=70,font=("Helvetica", 32),tags="text",fill="#0000b0")
canvas.create_image(.15*WINDOW,.125*WINDOW, image=photo,anchor=NW)
canvas.pack(expand=YES)
Button(root, text="start",font=("Helvetica", 24), command=idle).pack()  

root.mainloop()

