解析数据包以在Python中提取所需数据

时间:2016-03-16 07:09:20

标签: python

我正在使用此代码从远程xbee中读取数据:


from xbee import XBee, ZigBee
import serial

PORT = 'COM4'
BAUD_RATE = 9600

# Open serial port
ser = serial.Serial(PORT, BAUD_RATE)

# Create API object
xbee = ZigBee(ser,escaped=True)
import pprint
pprint.pprint(xbee.api_responses)

# Continuously read and print packets
while True:
    try:
        print "waiting"
        response = xbee.wait_read_frame()
        print response
    except KeyboardInterrupt:
        break

ser.close()

代码行“print response”一遍又一遍地在命令提示符中生成此部分文本:

{'source_addr_long': '\x00\x13\xa2\x00@\xe5\x02\x12', 'source_addr': '\xff\xfe', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 210}], 'options': 'B'}
这是一个以cmd打印的数据包。我需要从每个数据包中获取的数据是'samples':[{'adc-0':210}],在这种情况下,该数字内部的数字是210,但它的范围可以是0到1023.我需要有这个数字保存在varable之后,以便我可以在实时情节中使用它。

我还在学习如何使用python,所以我不确定如何在python中解析数据。我将非常感谢您对代码的任何帮助。

1 个答案:

答案 0 :(得分:1)

您实际上并未解析数据 - response是一个称为dict(字典)的Python对象,您可以引用它的任何元素。

我相信response['samples'][0]['adc-0']应该为您提供您正在寻找的号码。

print response['samples'][0]['adc-0']