Serial I/O problem with pywin32 ?
Diez B. Roggisch
deets at nospam.web.de
Wed Sep 3 11:33:50 EDT 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