[Python] gui e seriale in contemporanea

Perini Matteo perini.matteo a gmail.com
Mar 5 Ago 2014 21:20:24 CEST


Il 05/08/2014 16:25, Marco Giusti ha scritto:
> vediamo se così va'
> meglio.
HO modificato il codice così...


import time
import threading
import serial
import gtk
import gobject


class Quit(Exception):
     pass


class Gui:

     def __init__(self, quit):
         self.quit = quit
         win = gtk.Window()
         win.connect("destroy", lambda w: self.exit())
         self.textbuffer = gtk.TextBuffer()
         textview = gtk.TextView(self.textbuffer)
         textview.set_editable(False)
         sw = gtk.ScrolledWindow()
         sw.add(textview)
         win.add(sw)
         win.set_default_size(300, 200)
         win.show_all()

     def exit(self):
         self.quit.set()
         gtk.main_quit()

     def add_text(self, text):
         enditer = self.textbuffer.get_end_iter()
         self.textbuffer.insert(enditer, text)


class Thread2 (threading.Thread):

     def __init__(self, name, gui, quit):
         threading.Thread.__init__(self, name=name)
         self.__gui = gui
         self.__quit = quit


     def run(self):
         self.ser=serial.Serial("/dev/ttyACM0",9600)
         while True:
             line = self.ser.read()
             gobject.idle_add(self.__gui.add_text, line)


if __name__ == "__main__":
     gobject.threads_init()
     quit = threading.Event()
     gui = Gui(quit)
     t = Thread2("Serial", gui, quit)
     t.start()
     gtk.main()


e funziona bene!!
Grazie mille.
Provo a studiarmi un po il codice... perché ci sono delle cose che non 
capisco bene.
A breve ci risentiremo con nuove domande temo.
Ciao e grazie ancora.
Matteo.



Maggiori informazioni sulla lista Python