# Modified from original hello.txrx.45.py code. import Tkinter from Tkinter import * import serial import tkMessageBox # from osax import * # from appscript import * import time WINDOW = 600 # window size eps = 0.75 # filter fraction filt = 0.0 # filtered value threshold = 10000 temp = 0 two = 0 # itunes = app('itunes') # sa = OSAX() def idle(parent,canvas): global filt, eps global threshold, temp, two, sa # # Idle routine. # byte2 = 0 byte3 = 0 byte4 = 0 ser.flush() # # Find framing. # while 1: byte1 = byte2 byte2 = byte3 byte3 = byte4 byte4 = ord(ser.read()) if ((byte1 == 1) & (byte2 == 2) & (byte3 == 3) & (byte4 == 4)): break # # Read and plot. # # ord(c) = Given a string of length one, return an integer representing the Unicode code point # of the character when the argument is a unicode object, or the value of the byte when the # argument is an 8-bit string. up_low = ord(ser.read()) up_high = ord(ser.read()) down_low = ord(ser.read()) down_high = ord(ser.read()) up_value = 256*up_high + up_low down_value = 256*down_high + down_low value = (up_value - down_value) filt = (1-eps)*filt + eps*value x = int(.2*WINDOW + (0.9-0.2)*WINDOW*filt/10000.0) canvas.itemconfigure("text",text = "%.1f"%filt) canvas.coords('rect1', 0.2*WINDOW, 0.05*WINDOW, x, 0.2*WINDOW) canvas.coords('rect2', x, 0.05*WINDOW, 0.9*WINDOW, 0.2*WINDOW) canvas.itemconfigure("countL", text = "0") canvas.coords('rectL', 0.2*WINDOW, 0.4*WINDOW, 0.5*WINDOW, 0.5*WINDOW) test = filt if test > threshold: print "OVER!" print threshold temp += 1 canvas.itemconfigure("countL", text = temp) canvas.itemconfigure('rectL', fill = 'blue') canvas.update() parent.after_idle(idle, parent, canvas) # sa.set_volume(temp*10) if temp > 10: temp = 0 else: print "UHOH!" print temp canvas.itemconfigure("countL", text = temp) canvas.itemconfigure('rectL', fill = 'green') canvas.update() parent.after_idle(idle, parent, canvas) # # Check command line arguments. # if (len(sys.argv) != 2): print "command line: hello.txrx.45V3.py serial_port" sys.exit() port = sys.argv[1] # # Open serial port. # ser = serial.Serial(port, 9600) ser.setDTR() # # Set up GUI. # top = Tkinter.Tk() top.title('hello.txrx.45V3.py (q to exit)') top.bind('q', 'exit') def helloCallBack(): tkMessageBox.showinfo("Hello Python", "Hello World") count = 0 def increment(): global count count += 1 if count >= 5: count = 0 B.config(state = ACTIVE) print str(count) + ' Done' B = Tkinter.Button(top, text ="Click Me!!", activebackground = '#E6E6FA', command = helloCallBack, \ fg = '#E6E6FA', highlightcolor = '#00000b', state = 'disabled') C = Tkinter.Button(top, text ="Click Me First!!", command = increment, state = 'normal') canvas = Canvas(top, width=WINDOW, height=.50*WINDOW, background='white') canvas.create_text(.1*WINDOW,.125*WINDOW,text="Ooo...",font=("Helvetica", 24),tags="text",fill="#0000b0") canvas.create_text(.15*WINDOW,.375*WINDOW,text="1",font=("Helvetica", 24),tags="countL",fill="#00FFFF") canvas.create_text(.55*WINDOW,.375*WINDOW,text="2",font=("Helvetica", 24),tags="countR",fill="#FF00FF") 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='#00b000') canvas.create_rectangle(.2*WINDOW,.4*WINDOW,.5*WINDOW,.5*WINDOW, tags='rectL', fill='#00FF00', outline='#FFFFFF') canvas.create_rectangle(.6*WINDOW,.4*WINDOW,.9*WINDOW,.5*WINDOW, tags='rectR', fill='#FFFF00', outline='#FFFFFF') canvas.pack() B.pack() C.pack() top.after(100,idle,top,canvas) top.mainloop()