我正在使用此代码从远程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中解析数据。我将非常感谢您对代码的任何帮助。
答案 0 :(得分:1)
您实际上并未解析数据 - response
是一个称为dict
(字典)的Python对象,您可以引用它的任何元素。
我相信response['samples'][0]['adc-0']
应该为您提供您正在寻找的号码。
print response['samples'][0]['adc-0']