[Twisted-Python] Rts/Cts Serial port flow control in twisted

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Tue Nov 8 09:57:37 EST 2011

On 11:59 am, dsturmfels at gmail.com wrote:
>Has anyone had much experience with serial flow control in twisted?

I don't. :)  It sounds like this may not really have much to do with 
Twisted, though.
>I've been using a twisted serial port in my gtk+ software for quite a 
>now, and I can get xonxoff flow control to work, but for some reason,
>rtscts flow control isn't working (or I may be using it wrong).
>I'm connecting the software, via a usb-serial cable, to a Datalogic 
>scanner cradle.
>I've been able to replicate this problem with pyserial as well.

As you perhaps already know, Twisted's serial port support is 
implemented in terms of pyserial - and the layer Twisted adds is very 
thin.  So the problem you experience with pyserial is probably exactly 
the same as the problem you experience with Twisted, since the latter is 
actually the same code as the former.
>Without flow control on, I can for example, send a particular serial 
>to the cradle, and the cradle replies instantly with it's software 
>(as a string).
>If I scan a barcode, this also instantly shows up in 
>(as a string).
>With xonxoff flow control on in both the software and cradle, the 
>connection works exactly the same as having no flow control on.
>With rtscts flow control on in both the software and cradle however, 
>cradle doesn't reply instantly with it's software version when the 
>string is sent.
>However, a scanned barcode shows up instantly in the twisted/pyserial
>software, and if you've previously requested the cradle software 
>the software version string only shows up directly after receiving a
>barcode string.
>Am I doing something wrong, or does anyone know what might be going on 

Do you know that the device supports RTS/CTS?  Do you know that the USB 
driver for the device supports it?  Do you know that the USB driver 
support for it is bug free? :)

Sorry I can't add anything more helpful.  I think you want to be looking 
for the problem at a pretty low level, though.  Perhaps even at the 
level of measuring voltage on the RTS pin...


More information about the Twisted-Python mailing list