<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 -- http://mail.python.org/mailman/listinfo/python-list