[pyserial - winXP] Serial port stop receiving data after a few hours, raise no error

pauland80 at gmail.com pauland80 at gmail.com
Tue Aug 7 17:06:22 EDT 2007


<snip>
>    My soft passively listen to a device sending +- 300 bytes of data each
>    second. After several hours of work, the soft abruptly stops receiving
>    data without any error, (while the device sends properly, of course)
>    and I need to restart it (the python soft) to "reactivate" the ports.
>
>    I read that when the serial port encounters an error (frame error or
>    so, I imagine?) it stop receiving data until the library function
>    "getCommError()" is called.
>
>    Am I on the good track? Can I call this function from my pyserial
>    code?
>
>    Why pyserial does'nt raise a serial.SerialException in this case?
>
>    Notes:
>    ---------
>    I'm not working with plain serial ports, I use serial over USB (FTDI
>    or so) and serial over Ethernet (moxa.com).
>    I'm in 115k 8N1 and I use 4 ports simultaneously
>    I use python 2.4 with pyserial 2.2 on Windows XP.
<snip>



Late thanks for your both answers! (Please excuse me for that)

The problem was a bug in the device firmware.
But before finding this, I dugg lightly in the pyserial source and
found (to take with care!) :

+ getCommError(...) is (?) no more implemented in the win32 API (it
was in the win16 API) ; it is replaced by GetCommState(...) ; pyserial
use GetCommState(...) in _reconfigurePort()

+ pyserial use ClearCommError in the functions read(...) and
inWaiting(...) ; it takes somewhat different arguments than
GetCommState(...) but return the same (?) info AND clear the errors
(getcomm(Error|State) doesn't (?)).

+ the errors on the serial flow (overrun and so) seem just cleared
away and not followed to the application by pyserial.

PA

the links :
delta win 16/32 on msdn : http://msdn2.microsoft.com/en-us/library/aa383678.aspx
GetCommState() on msdn : http://msdn2.microsoft.com/en-us/library/aa363260.aspx
ClearCommError() on msdn : http://msdn2.microsoft.com/en-us/library/aa363180.aspx




More information about the Python-list mailing list