2013-02-10 50 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)

相关问题