On 2 February 2011 06:36, Jason Heeris <jason.hee...@gmail.com> wrote: > This is a bit long, sorry... > > I have a PyGTK program that uses threads and pyserial's blocking > methods to interact with an RS232 connected device. I'd like to throw > out the threading awfulness and redo it in Twisted, if possible, but > I'm a little lost. > > The real protocol is a bit convoluted, but basically: > - You can issue single character commands to the device that give a fixed > length response, such as sending 'C' and getting an eight-digit hex > string back (the program flash CRC) > - You can put the device into "programming mode" (command 'P'), where it > takes an arbitrary length sequence of records, verifying each record and > stopping when it sees the special "end record" > - The device will send back '!' to indicate an error > - The device will send back '>' to indicate that it's ready for more > commands
The job of the protocol class is to assemble the bytes that you receive into packets or messages. Ideally the protocol will have characters that frame a message, and it sounds like you might have this if > or ! is always sent at the end of every reply. The protocol dataReceived method will be called as data arrives at the serial port once enough data has arrived to complete a message this method calls stringReceived with the complete message. There are some protocol that might be suitable in twisted/protocols/basic.py > <snip> > I'd also like to structure things so that successive calls to the > DeviceProtocol object queue up, something like: You can use a DeferredSemaphore for this. <snip> Michael _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python