#!/usr/bin/python import serial, Tkinter def zero(): global ha, hb ha = [] hb = [] zero() w = Tkinter.Tk(className="Capslider"); w.wm_title("Cap Slider Demo"); w.wm_resizable(0,0) sv = Tkinter.DoubleVar(w); tv = Tkinter.DoubleVar(w); uv = Tkinter.DoubleVar(w) #s = Tkinter.Scale(w, from_=0, to_=100, variable=sv); s.pack() #t = Tkinter.Scale(w, from_=0, to_=100, variable=tv); t.pack() u = Tkinter.Scale(w, from_=0, to_=100, variable=uv, orient='h'); u.pack() bu = Tkinter.Button(w, command=zero, text="zero"); bu.pack() ser = serial.Serial("/dev/ttyUSB0", 115200) def update(): global la, lb, ha, hb line = ser.readline().split() if len(line) != 2: line = ser.readline().split() print line a, b = [int(i) for i in line] ha.append(a) hb.append(b) if len(ha) > 200: del ha[:50] if len(hb) > 200: del hb[:50] mina = min(ha); maxa = max(ha) minb = min(hb); maxb = max(hb) if maxa == mina: maxa = mina + 8 if maxb == minb: maxb = minb + 8 if mina != maxa: a = (a - mina) * 100.0 / (maxa - mina) else: a = 0 if minb != maxb: b = (b - minb) * 100.0 / (maxb - minb) else: b = 0 print a, b sv.set(a) tv.set(b) if a == 0 and b == 0: # No data v = 50 u.configure(sliderlength=u.winfo_width()-8) else: u.configure(sliderlength=25) if b == 0: v = 100 u.configure(state='normal') elif a == 0: v = 0 u.configure(state='normal') else: print "diff", a-b, a-b v = 50 - 50 * (b-a)/max(a,b) u.configure(state='normal') uv.set(v) w.after(50, update) update() w.mainloop()