Skip to content Skip to sidebar Skip to footer

Pyserial Data Received From Xbee Not Properly Displayed

I am trying to get multiple XBees running as sensors and output devices to send their samples to a coordinator XBee hooked up as below and to turn things on and off on these remote

Solution 1:

As a matter of fact @is\x40. And yis\x79. So the "values" are correct...

>>> '\x13\xa2\x00\x40\x79\xe6\x5f' == '\x13\xa2\x00@y\xe6_'True

If it is only a matter of formatting, you could use something like that to pretty display your addresses:

>>>value = '\x13\xa2\x00@y\xe6_'>>>pretty_value = ':'.join("{:02X}".format(ord(c)) for c in value)>>>print(pretty_value)
13:A2:00:40:79:E6:5F

On the other hand, it seems to me that you are off by one byte while accessing the address:

Expected:\x13\xa2\x00\x40\x79\xe6\x5fActual value:\x00\x13\xa2\x00\x40\x79\xe6

One possible reason is that you missed tha fact that in API 2 mode some characters could be escaped. So changing the actual offset of the various fields in the data frame. Since you are using a library, are you sure it handle properly API 2 mode? Is it correctly configured to do so?


Concerning your frame:

7E 00 16 92 00 13 A2 00 40 79 E6 5F
DF 13 01 01 00 40 09 00 40 02 04 02
07 2E

Just decoding the first fields fields of the header:

  • This is a 0x92 "IO Sample Rx" frame of 16 bytes long.
  • The source address 64 bits is 00:13:A2:00:40:79:E6:5F
  • The source address 16 bits is DF:13
  • The packed was acknowledged (0x01)

Post a Comment for "Pyserial Data Received From Xbee Not Properly Displayed"