import sys import serial from threading import * import time from tkinter import * button_clicked = False class LabelDemo(Frame): """ Definizione della classe che permette di visualizzare un messaggio """ def __init__(self, master = None): """Impostazione della finestra e dei suoi oggetti""" Frame.__init__(self) #inizializzazione dellle variabili di Frame self.master.title("Demo Board") #impostazione titolo finestra self.grid() #impostazione layout a griglia self._label = Label(self, text = "Disconnect") #creazione componente self._label.grid(row = 2, column = 5) #posizione dell'etichetta nella griglia self._connectButton = Button(self, text = "Click me", command = self._switch) self._connectButton["fg"] = "red" self._connectButton.grid(row = 3, column = 5) def _switch(self): """Gestione delle attivitą per il pulsante""" global button_clicked nButton=Button if self._label["text"] == "Connect": self._label["text"] = "Disconnect" self._connectButton["fg"] = "red" #colore bottone button_clicked = False else: self._label["text"] = "Connect" self._connectButton["fg"] = "green" button_clicked = True class PrincipalThread(Thread): """Thread per la visualizzazione delle connessioni alla porta seriale del distositivo""" def __init__(self): Thread.__init__(self, name = "cercaSeriale") #self.event_type_handle = event_handler def run(self): global button_clicked #if button_clicked == True: if sys.platform.startswith('win'): ports = ['COM%s' % (i + 1) for i in range(256)] #visualizzo tutte le porte seriali da 1 a 256 else: raise EnvironmentError("COM non supportata") #elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty" #ports = glob.glob('/dev/tty[A-Za-z]*') #elif sys.platform.startswith('darwin'): #ports = glob.glob('/dev/tty.*') result = [] for port in ports: try: s = serial.Serial(port) #selezione porta seriale s.bauderate = 9600 #definizione bauderate #num = s.name s.close() result.append(port) except(OSError, serial.SerialException): pass print("porte seriali: " + str(result)) class loop(Thread): def __init__(self): Thread.__init__(self, name = "Loop") self.setName("Loop") def run(self): pr = LabelDemo() pr.mainloop() def gira(): process = PrincipalThread() if button_clicked == True: process.start() print(process.isAlive()) time.sleep(5) else: print(process.isAlive()) time.sleep(2) return gira() def main(): #visualizza() if __name__ == "__main__": #cell= SharedCell() t = loop() t.start() gira() main()