On 9/13/2010 8:36 AM Markus Hubig said...
Hi @all!

I'm about to write a class for serial communication on Win32 and Linux which
provides a method called "talk" to send something over the serial line,
wait for
the answer and returns it. My problem is, that I don't know how long the
answer
will be (ok max 260 bytes but most answers are much smaller).

This is what I have now, please leave some comments:

    1. Will this work on Win32 (with select)?
    2. Should I better use twisted.internet.serialport?
    3. Will self.read(260)block until it reads the full 260 bytes?


You're subclassing Serial -- the answers to your questions depend on what that is. So, what is it? Does it support windows? Has anyone compared/contrasted it to twisted.internet.serialport? What does its read do? And finally, perhaps, does it have it's own support group/list? You'll probably get better answers directly from there than here.

HTH,

Emile




class SerialDevice(Serial):

     def __init__(self,port):
         Serial.__init__(self)
         self.port = port
         self.baudrate = 57600
         self.bytesize = EIGHTBITS
         self.parity = PARITY_ODD
         self.stopbits = STOPBITS_TWO
         self.timeout = 0
         self.xonxoff = 0
         self.rtscts = 0
         self.dsrdtr = 0
         self.open()
         self.flush()

     def _write(self, packet):
         fileno = self.fileno()
         while True:
             readable, writeable, excepts = select( [], [fileno], [], 0.2 )
             if fileno in writeable:
                 time.sleep(0.1)
                 length = self.write(packet)
                 break
         return length

     def _read(self):
         fileno = self.fileno()
         while True:
             readable, writeable, excepts = select( [], [fileno], [], 0.2 )
             if fileno in readable:
                 time.sleep(0.1)
                 packet = self.read(260)
                 break
         return packet

     def talk(self, packet):
         self._write(packet)
         responce = self._read()
         return responce

Thank you, Markus




_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to