serial and threads

Neil Benn benn at cenix-bioscience.com
Tue Aug 17 07:10:14 EDT 2004


Silke wrote:

>Hi all!
>
>I'm trying to write a program in python using the modules
>'serialwin32' and 'thread' to create one thread that writes to a
>
>  
>
<snip>
Hello,

          I've done a similar implementation, I always assume that - 
unless the documentation for a class specifically states that it is 
thread-safe then I assume it isn't.  The way I get around the issue you 
have is to lock access to the serial object (s in your case).  The way I 
get around this is to use the InWaiting method (or whatever the 
equivalent will be in your serial module) which will return how many 
bytes are waiting, then I can read that number of bytes from the serial 
port, store the information and release the lock on that port. :

        self.__objLock.acquire()
        try:
            intNoChars = self.__objSerialPort.inWaiting()
            if (intNoChars > 0):
                strReceivedString = self.__objSerialPort.read(intNoChars)
                self.newMessage(strReceivedString)
            self.__objLock.release()
        except:
            self.__objLock.release()
            raise   

    Obviously you will also want to lock on all other access to the 
port, close, open, write, etc.

    P.S. Please don't start ranting about my use of Hungarian!!

Cheers,

Neil

-- 

Neil Benn
Senior Automation Engineer
Cenix BioScience
BioInnovations Zentrum
Tatzberg 47
D-01307
Dresden
Germany

Tel : +49 (0)351 4173 154
e-mail : benn at cenix-bioscience.com
Cenix Website : http://www.cenix-bioscience.com




More information about the Python-list mailing list