Event objects Threading on Serial Port on Win32

Gabriel gbsuar at gmail.com
Tue Jun 27 15:57:33 EDT 2006


David:
Tube el mismo problema que vos con el hilo del ejemplo de pyserial. Me
paso que en Linux andaba bien, obvio, pero tenia un pequeño
problemilla en Windows, también obvio.

Lo solucione de la siguiente manera:
Asi es el codigo original de la función ComPortThread

def ComPortThread(self):
        """Thread that handles the incomming traffic. Does the basic input
           transformation (newlines) and generates an SerialRxEvent"""

        while self.alive.isSet():               #loop while alive event is true
            if self.ser.inWaiting() != 0:
                text = self.ser.read()
                event = SerialRxEvent(self.GetId(), text)
                self.GetEventHandler().AddPendingEvent(event)


solo tiene que agregarle el siguiente bucle antes que nada:
while not self.alive.isSet():
            pass

quedándote así dicha función...

def ComPortThread(self):
        """Thread that handles the incomming traffic. Does the basic input
           transformation (newlines) and generates an SerialRxEvent"""
        while not self.alive.isSet():
            pass

        while self.alive.isSet():               #loop while alive event is true
            if self.ser.inWaiting() != 0:
                text = self.ser.read()
                event = SerialRxEvent(self.GetId(), text)
                self.GetEventHandler().AddPendingEvent(event)

y listo... Con eso debería andar
Espero haber sido útil

-- 
Gabriel



More information about the Python-list mailing list