from Tkinter import *
import serial

WINDOW = 600

#
# idle routine
#
def idle(parent,canvas,oldup,olderup):
   dn_lo = ord(ser.read())
   dn_hi = ord(ser.read())
   up_lo = ord(ser.read())
   up_hi = ord(ser.read())
   dn = dn_lo + 256*dn_hi
   up = up_lo + 256*up_hi
   framing = ord(ser.read())
   framing = ord(ser.read())
   framing = ord(ser.read())
   framing = ord(ser.read())
   canvas.coords("rect",0,0,WINDOW/4,(up+oldup+olderup)/3)
   canvas.itemconfigure("label",text="%d"%up)
   parent.after_idle(idle,parent,canvas,up,oldup)


#
# open serial port
#
ser = serial.Serial('COM1',19200)
ser.setDTR()

#
# find framing
#
print "finding framing ..."
byte2 = 0
byte3 = 0
byte4 = 0
while 1:
   byte1 = byte2
   byte2 = byte3
   byte3 = byte4
   byte4 = ord(ser.read())
   if ((byte1 == 1) & (byte2 == 2) & (byte3 == 3) & (byte4 == 4)):
      break
#
# start plotting
#
root = Tk()
root.title('efe.charge.py')
root.bind('q','exit')
canvas = Canvas(root, width=WINDOW/4, height=WINDOW, background='#FF3300')
canvas.create_text(WINDOW/8,WINDOW-WINDOW/8,text="",font=("Verdana", 20),tags="label",fill="#000000")
canvas.create_rectangle(0,0,WINDOW/4,WINDOW,fill="#000000",tags="rect")

canvas.pack()
root.after(1000,idle,root,canvas,0,0)
root.mainloop()
