# -*- coding: iso-8859-1 -*- # mk, 23.10.09 # model import serial class Model(object): def __init__(self): self.s = serial.Serial('/dev/ttyS0') # 1 = COM2, 0 = COM1, ... self.s.setRTS(False) def __del__(self): # schließt sicher die Schnittstelle self.s.close() # view from tkinter import * class View(Tk): def __init__(self,cbEin,cbAus,cbCTS,cbHalt): Tk.__init__(self) # Callbacks self.cbEin = cbEin self.cbAus = cbAus self.cbCTS = cbCTS self.protocol("WM_DELETE_WINDOW",cbHalt) # cbHalt wird aufgerufen, wenn das 'X' gedrückt wird # Fenster self.title("RTS - CTS") self.geometry('200x100') # Button self.bTaster = Button(master=self, text="Taster") self.bTaster.bind('',self.cbEin) self.bTaster.bind('',self.cbAus) self.bTaster.place(x=30,y=37) # Canvas self.c = Canvas(master=self,width=60,height=60) self.c.place(x=120,y=20) # Items item = self.c.create_oval(10,10,50,50,fill='#550000') self.c.itemconfig(item,tags=('LED')) # Timer starten self.after(0,self.poll) def poll(self): if self.cbCTS(): self.c.itemconfig('LED',fill='#ff0000') else: self.c.itemconfig('LED',fill='#550000') self.after(20,self.poll) # rekursiver Aufruf # controller class Controller(object): def __init__(self): self.model = Model() self.view = View(self.schalteEin,self.schalteAus,self.model.s.getCTS,self.Halt) self.view.mainloop() def schalteEin(self,event): self.model.s.setRTS(True) def schalteAus(self,event): self.model.s.setRTS(False) def Halt(self): # Aufräumarbeiten self.model.s.close() # Schnittstelle schließen self.view.quit() # mainloop beenden self.view.destroy() # Fenster beseitigen # Hauptprogramm c = Controller()