2013-10-16 24 views
1

我正在研究一個涉及XBee系列2B無線電的項目,並且可能會使用一些建議來確定數據包來自哪個終端設備。所述設置包括一個Python 2.7應用上的覆盆子裨模型B從多個XBee系列2B終端接收數據

Python的-的XBee 2.1.0文檔狀態運行: ZigBee設備延伸此行爲,以包括「ND」的自動解析,節點發現,AT命令響應。 一個ND的參數字段AT響應將假定的格式如下:

{"source_addr": two bytes, 
"source_addr_long": eight bytes, 
"node_identifier": string, 
"parent_address": two bytes, 
"device_type": one byte, 
"status": one byte, 
"profile_id": two bytes, 
"manufacturer": two bytes, 
} 

我認爲這意味着,對於ZigBee的所述I/O示例消息包含上述參數字段。

是source_addr ==終點無線電的16位MY參數?

ser = serial.Serial('/dev/ttyUSB0', 9600) 
xbee = ZigBeer(ser) 
myID = xbee.source_addr 

感謝:

可以用它來得到!

回答

1

我認爲I/O樣品到遠程ATIO命令響應,這樣就遵循一個遠程的格式AT響應,幷包括短期和長期的地址。

在XBee模塊上,短地址是ATMY,長地址是ATSHATSL的組合。我不知道python-xbee足以說明它們存儲在ZigBee對象中的位置。

附加信息:

節點發現不同於發送I/O採樣。當主機向其本地XBee發送ATND時,XBee模塊會發送廣播發現消息並將響應傳遞迴主機。主機可以從遠程模塊解析地址和「節點標識符」(ATNI字符串)的響應。

從這個地址列表中,主機可以發送ATIO命令到遠程節點並解析響應。我不熟悉Python-XBee庫,所以我不知道它是如何實現節點發現,節點表管理以及向發現的節點發送「遠程AT命令」的。

+0

感謝您的迴應。這與文檔爭吵,但我的問題是更多關於如何使用Python2.7/Python-XBee2.1.0 Lib以編程方式訪問該信息。 – RoboArch

+0

我已經用更多(希望有幫助的)信息更新了我的答案。我不太瞭解Python-XBee庫以提供代碼示例。 – tomlogic

1

的的XBee包是一個字典

from xbee import ZigBee 
import serial 

ser = serial.Serial('/dev/ttyAMA0', 9600) 
xbee_conn=ZigBee(ser) 
xbee_conn.at(command='ND') 
while True: 
    try: 
     packet = xbee.wait_read_frame() 
     print packet 
    except KeyboardInterrupt: 
     break 
ser.close() 

要獲得對數據的訪問它作爲一個字典:

source_address_long = packet['parameter']['source_addr_long'] 

希望這有助於。