# # hello.temp.45.py # # receive and display temperature # hello.temp.45.py serial_port # # Neil Gershenfeld # CBA MIT 3/27/12 # # (c) Massachusetts Institute of Technology 2012 # Permission granted for experimental and personal use; # license for commercial sale available from MIT # from Tkinter import * #from Tkinter import * from numpy import log import serial WINDOW = 1200 # window size #was 600 eps = 0.5 # filter time constant filter = 0.0#filtered value 0.0 def idle(parent,canvas): # print "hi in here" global filter, eps line = ser.readline() #print line # first_char = line[:1] try: value = int(line)#float(line[1:]) #print value filter = (1-eps)*filter + eps*value x = int(.2*WINDOW + (.9-.2)*WINDOW*(filter-100.0)/800.0) # delta = 800, starts at 100 #print "x is" + x canvas.itemconfigure("text1",text=int(filter)) #("text1",text="%.2f"%filter) canvas.coords('rect1',.2*WINDOW,.05*WINDOW,x,.2*WINDOW) #canvas.coords('rect1',.2*WINDOW,.05*WINDOW,x,.2*WINDOW) canvas.coords('rect2',x,.05*WINDOW,.9*WINDOW,.2*WINDOW) #canvas.coords('rect2',x,.05*WINDOW,.9*WINDOW,.2*WINDOW) canvas.update() except: print "Error with: " + line parent.after_idle(idle,parent,canvas) # # check command line arguments # if (len(sys.argv) != 2): sys.exit() port = sys.argv[1] # # open serial port # ser = serial.Serial(port,9600) ser.setDTR() # # start plotting # root = Tk() root.title('Capacitance') #root.title('hello.temp.45.py (q to exit)') root.bind('q','exit') canvas = Canvas(root, width=WINDOW, height=.25*WINDOW, background='white') #canvas = Canvas(root, width=WINDOW, height=.25*WINDOW, background='white') canvas.create_text(.1*WINDOW,.1*WINDOW,font=("Helvetica", 30, "bold"),text="Capacitance",fill="#000000") canvas.create_text(.1*WINDOW,.125*WINDOW,text=".33",font=("Helvetica", 24),tags="text1",fill="#000000") canvas.create_rectangle(.2*WINDOW,.05*WINDOW,.3*WINDOW,.2*WINDOW, tags='rect1', fill='#b00000') #canvas.create_rectangle(.2*WINDOW,.05*WINDOW,.3*WINDOW,.2*WINDOW, tags='rect1', fill='#b00000') canvas.create_rectangle(.3*WINDOW,.05*WINDOW,.9*WINDOW,.2*WINDOW, tags='rect2', fill='#F0F8FF')#canvas.create_rectangle(.3*WINDOW,.05*WINDOW,.9*WINDOW,.2*WINDOW, tags='rect2', fill='#0000b0') canvas.pack() root.after(100,idle,root,canvas) root.mainloop()