On 2012-12-14 00:00, Barry Dick wrote:
My data looks like this when it comes from the device (biofeedback device).
There are 9 bytes in total, and I need to buffer so much, and then poll it for
new/recent packets. The start packet unfortunately starts with 0x00
So far the only thing I've found that looks like what I want to do is this, but
I don't know how to implement it. http://code.activestate.com/recipes/408859/
Data: [0000002d0270025e00]
Data: [0001004a0006026547]
Data: [0002004b000a026343]
Data: [00]
Data: [03004f0006025b4a00]
Data: [046698000802569d00]
Data: [00003002830257f100]
Data: [01004a000602585400]
Data: [020048000a025b4e00]
Data: [03004b0006025b4e00]
Data: [046698000702579d00]
Data: [00002f027602480e00]
Data: [01004a0006024b61]
Data: [0002004a000a025552]
Data: [0003004b0006025752]
Data: [00046698000702569e]
Data: [0000002c025b025321]
Data: [00010048000602505e]
My code so far looks like this...
import bluetooth, sys, time, os, binascii, struct;
# Create the client socket
client_socket=BluetoothSocket( RFCOMM )
client_socket.connect(("10:00:E8:AC:4D:D0", 1))
data = ""
try:
while True:
try:
data = client_socket.recv(9)
except bluetooth.BluetoothError, b:
print "Bluetooth Error: ", b
if len(data) > 0:
print "Data: [%s]" % binascii.hexlify(data)
except KeyboardInterrupt:
#print "Closing socket...",
client_socket.close()
#print "done."
Is the following more like how you want it?
data = ""
try:
while True:
try:
more = client_socket.recv(9)
except bluetooth.BluetoothError, b:
print "Bluetooth Error: ", b
else:
data += more
while len(data) >= 9:
print "Data: [%s]" % binascii.hexlify(data[ : 9])
data = data[9 : ]
except KeyboardInterrupt:
#print "Closing socket...",
client_socket.close()
#print "done."
You could, of course, decide to recv more than 9 bytes at a time. It
could return less than you asked for (but it should block until at
least 1 byte is available), but it will never return more than you
asked for.
--
http://mail.python.org/mailman/listinfo/python-list