Grant Edwards wrote:
On 2009-02-22, John Nagle <na...@animats.com> wrote:

I've been using PySerial on Windows (Win2000, amusingly) to
drive a Baudot teletype at 45.45 baud.  Input and output work,
but there's a delay of about 1 second (!) on the input side
between receiving a character and reporting it to the program.

The UART you're using almost certainly has a receive FIFO.
Normally, the UART doesn't interrupt the CPU to tell it there's
receeve data ready until the FIFO is almost full (eg 12 bytes
present in a 16 byte FIFO).

If the UART has an empty receive FIFO, and it receives a single
character that character goes into the receive FIFO.  If data
stops coming in before the rx FIFO threshold is reached, the
UART will wait 40 bit-times...

   Ah, 40 bit times.  That's the default.  And that's the problem.
I thought the accumulation timer was a fixed timer of a few milliseconds.

   There is a "disable FIFO" checkbox in Windows 2000. It's hard to
find.

        - Log off as user.
        - Log on as "administrator"
        - Open Control Panel -> System
        - Go to "Devices" tab and select "Device manager".
        - Open "Ports" in the tree and click on desired COM1 port.
        - Click "Advanced" button.
        - Set "Receive buffer size" slider to 1.
        - Click "Disable FIFO" checkbox.
        - Close all the dialogs.
        - Reboot. (Yes, it doesn't take effect until the next reboot.)

That fixed the problem.  Thanks.

                                        John Nagle
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to