2016-02-03 33 views
-1

配置的兩個的XBee親S2B使用X-CTU,一個作爲協調器和其他路由器,API = 2,波特率爲9600發送方碼(協調)是如下:接收代碼不工作的XBee蟒

import time 
from xbee import XBee 
import serial 

PORT = "/dev/ttyUSB0" 
BAUDRATE = 9600 

#open serial port 
sender_port = serial.Serial(PORT, BAUDRATE) 
print "serial port object>>>", sender_port 

#xbee object API=2 
sender = XBee(sender_port,escaped=True) 

#address of the remote xbee to which data is to sent 
ADDRESS = "\x00\x13\xA2\x00\x40\xD9\x6F\xE5" 

#send data using the tx_long_addr 
while True: 
    try: 
     print "sending data..." 
     sender.tx_long_addr(frame_id='A', dest_addr=ADDRESS, data="hello") 
     time.sleep(1) 

    except KeyboardInterrupt: 
     break 


sender.halt() 
sender_port.close() 
下面

是接收器代碼(路由器)

import time 
from xbee import XBee 
import serial 

PORT = "/dev/ttyUSB1" 
BAUDRATE = 9600 

def byte2hex(byteStr): 
    return ''.join(["%02X" % ord(x) for x in byteStr]).strip() 

def decodereceivedFrame(data): 
    source_address = byte2hex(data['source_addr']) 
    xbee_id = data['id'] 
    rf_data = data['rf_data'] 
    options = byte2hex(data['options']) 
    return [source_address, xbee_id, rf_data, options] 

#open serial port at receiving end 
remote = serial.Serial(PORT, BAUDRATE) 

#xbee object API=2 
remote_xbee = XBee(remote, escaped=True) 

while True: 
    try: 
     print "yes i m here" 
     data = remote_xbee.wait_read_frame() 
     print "data >>>", data 
     decoderdata = decodereceivedFrame(data) 
     print "data received<<<<", decoderdata 

    except KeyboardInterrupt: 
     break 

remote_xbee.halt() 
remote.close() 

但在執行接收器的代碼,什麼也沒有發生,它不會打印收到的消息。在X-CTU幀正在傳輸和接收沒有任何錯誤,我在代碼中做錯了什麼。請指導。 謝謝

回答

0

發現這個問題,我的錯----

  1. 發件人=的ZigBee(sender_port,躲過= TRUE)
  2. sender.send( 'TX',frame_id = 'A', dest_addr = 「\ x5E \ X71」,dest_addr_long = 「\ X00 \ X13 \ XA2 \ X00 \ X40 \ xD9 \ x6F \ xE5」,數據= 「你好」)現在

作品.. !!! :)