Serial I/O problem with pywin32 ?

Diez B. Roggisch deets at nospam.web.de
Wed Sep 3 17:33:50 CEST 2008


Xavier schrieb:
> Hi,
> 
> I try to access to a Bluetooth GPS data-logger with Python. I use
> pySerial.
> 
> Sending and receiving little messages (~100 char) works fine. However,
> when I ask the GPS to dump the trails, it returns some Mbytes and here
> is the problem : in the stream of bytes, I randomly losts chunks of
> ~100bytes.
> 
> I tried USPP and pyBlueZ instead of pySerial : same problem.
> 
> It doesn't like it is a bufferoverun bug from me because :
>  - the GPS seems to wait when I do not read the stream,
>  - there is never more than 200 inWainting() characters,
>  - my code to test it is quite simple :
> 
>   seriallink = serial.Serial("COM40")
>   fileName = "data.dump"
>   out = open(fileName, 'w')
>   while 1:
>     c = seriallink.read()
>     out.write(" %0.2X" % ord(c))
>     print "*",
>   out.close()
> 
> (with pyBluez :
> sock=BluetoothSocket( RFCOMM )
> sock.connect(("00:0A:...", 1)))
> 
> I tried my program on two different PC with two Bluetooth dongle,
> (with pySerial, USPP, pyBluez).
> The same things are :
>  - windows
>  - the GPS (which works fine with the dumper program of the
> constructor)
>  - pyWin32
> 
> I've found another guy with a similar problem :
> http://www.generation-nt.com/reponses/rs232-entraide-142097.html
> He says:
>  - no problem with little messages
>  - lost of one byte every hour when receiving a lot of data
> 
> Any known problems with pywin32 and serial I/O when downloading a big
> stream of data ?

 From my experience with serial lines I'd say: that's the culprit. They 
tend to be rather unreliable, as there is no real protocol ensuring data 
integrity.

You might consider downloading chunks of data if that's somehow 
possible, and re-try failed chunks.

Diez



More information about the Python-list mailing list