Serial I/O problem with pywin32 ?
Diez B. Roggisch
deets at nospam.web.de
Wed Sep 3 17:33:50 CEST 2008
> I try to access to a Bluetooth GPS data-logger with Python. I use
> 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
> 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 "*",
> (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
> - pyWin32
> I've found another guy with a similar problem :
> 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
You might consider downloading chunks of data if that's somehow
possible, and re-try failed chunks.
More information about the Python-list