Is it possible to use python to get True Full Duplex on a Serial port?
Diez B. Roggisch
deets at nospam.web.de
Fri Aug 14 10:03:22 EDT 2009
Hendrik van Rooyen schrieb:
> On Friday 14 August 2009 14:13:46 greg wrote:
>
>> You can't read and write with the same stdio file object
>> at the same time. Odd things tend to happen if you try.
>>
>> You need to open *two* file objects, one for reading
>> and one for writing:
>>
>> fr = open("/dev/ttyS0","rb",0)
>> fw = open("/dev/ttyS0","wb",0)
>>
>> and give fr to the reading thread and fw to the
>> writing thread.
>
> Does this actually work without somehow falling foul of the fact that
> the /dev/ttyS0 is only one thing? - I know that there is no physical reason
> for not being able to go in and out at the same time - in my embedded stuff I
> do that routinely - but that is all assembler running on bare metal so it is
> under my own control.
>
>> You could also try avoiding file objects altogether
>> and use the raw system calls in the os module. Since
>> you're not using any buffering, there's little reason
>> to use the stdio layer. If you do that, you should be
>> able to use the same file descriptor for reading and
>> writing without any trouble.
>
> Thanks for this - I now have my weekend cut out for me...
You should *really* just use pyserial. No hassle, instant satisfaction.
Diez
More information about the Python-list
mailing list