2013-02-10 120 views
4

我有兩個Xbee Pro 900,每個都連接到Raspberry Pi。兩者都更新到版本1061並設置爲帶有轉義的API啓用。他們也有相同的調制解調器VID 7FFF。兩個Pi都安裝了PySerial和python-xbee庫。無法在API模式下使用Xbee進行發送/接收(python)

的XBee 1(接收器)具有0013A200409A1BB8
的XBee 2(發件人)的序列號的0013A200709A1BE9

序號以下附上我的代碼,它只是示例代碼,我在網上找到。我的問題是,我沒有收到適當的Xbee上的任何東西。我完全不知道什麼是錯誤的,我已經三重檢查了目標地址,以及兩個Xbee的配置設置。

的Xbee 2碼(發送方):

#! /usr/bin/python 

import time 

from xbee import XBee 
import serial 

PORT = '/dev/ttyUSB0' 
BAUD_RATE = 9600 

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

# Create API object 
xbee = XBee(ser,escaped=True) 
import pprint 
pprint.pprint(xbee.api_commands) 

DEST_ADDR_LONG = "\x00\x13\xA2\x00\x40\x9A\x1B\xB8" 

# Continuously read and print packets 
while True: 
    try: 
     print "send data" 
     xbee.tx_long_addr(frame='0x1', dest_addr=DEST_ADDR_LONG, data='AB') 
     time.sleep(1) 
    except KeyboardInterrupt: 
     break 

ser.close() 

的Xbee 1代碼(接收器):

#! /usr/bin/python 

from xbee import XBee 
import serial 

PORT = '/dev/ttyUSB0' 
BAUD_RATE = 9600 

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

# Create API object 
xbee = XBee(ser,escaped=True) 

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

ser.close() 

當兩個程序正在運行,在發送的Xbee與Tx燈閃爍,但我接收在接收Xbee上沒有任何東西。有什麼我失蹤?謝謝你的時間!

回答

0

您確定XBee模塊處於轉義API模式(ATAP=2)嗎?和9600波特?

你能在python-xbee中啓用一個模式來轉儲所有的字符嗎?

您確認串行接線是否正確? (我看你使用USB,所以這不是一個問題。)

如果你沒有硬件流控制掛鉤,確保的XBee模塊具有ATD6=0ATD7=0集(禁用RTS和CTS )並且python-xbee不期待握手。

如果您確實在XBee上配置了硬件流控制,請確保您已告訴python-xbee使用它。

你可以在RaspPi上使用minicom或其他串行終端來確認串行是否正常工作?在接收端使用minicom來查看你是否收到任何東西?

你可以嘗試發送和接收連接到PC而不是Pi的無線電嗎?從PC發送到Pi,反之亦然?

1

您是使用XBee還是XBeePro?我有同樣的問題,並幫助我很多。

嘗試修改接收機代碼方式如下:

import config 
import serial 
import time 
from xbee import ZigBee 

def toHex(s): 
    lst = [] 
    for ch in s: 
     hv = hex(ord(ch)).replace('0x', '') 
     if len(hv) == 1: 
      hv = '0'+hv 
     hv = '0x' + hv 
     lst.append(hv) 

def decodeReceivedFrame(data): 
      source_addr_long = toHex(data['source_addr_long']) 
      source_addr = toHex(data['source_addr']) 
      id = data['id'] 
      samples = data['samples'] 
      options = toHex(data['options']) 
      return [source_addr_long, source_addr, id, samples] 

PORT = '/dev/ttyUSB0' 
BAUD_RATE = 9600 

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

zb = ZigBee(ser, escaped = True) 

while True: 
    try: 
     data = zb.wait_read_frame() 
     decodedData = decodeReceivedFrame(data) 
     print decodedData 

    except KeyboardInterrupt: 
     break 

在我的情況上面的代碼輸出以下:

[['0x00', '0x13', '0xa2', '0x00', '0x40', '0x9b', '0xaf', '0x4e'], ['0x68', '0x3f'], 'rx_io_data_long_addr', [{'adc-0': 524}]] 

Here我共享配置設置控制器節點(兼容X -CTU)

相關問題