python - एपीआई मोड में एक्सबीई का उपयोग करके भेज/प्राप्त नहीं किया जा सकता(अजगर)




api raspberry-pi (2)

क्या आप 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}]]

यहां मैंने नियंत्रक नोड के लिए कॉन्फ़िगरेशन सेटिंग्स साझा की हैं (एक्स-सीटीयू के साथ संगत)

मेरे पास दो एक्सबी प्रो 900 है, प्रत्येक रास्पबेरी पीआई से जुड़े हैं दोनों को संस्करण 1061 में अपडेट किया गया है और एस्केप को पलायन के साथ सक्षम किया गया है। उनके पास 7 एफएफएफ का एक ही मोडेम वीआईडी ​​है दोनों Pi के PySerial और अजगर-एक्सबी लाइब्रेरी स्थापित है।

एक्सबी 1 (रिसीवर) का सीरियल नंबर 0013 ए 20040 9 ए 1 बीबी 8 है
एक्सबी 2 (प्रेषक) में 0013 ए 20070 9 ए 1 बीई 9 की एक सीरियल संख्या है

मैंने अपना कोड नीचे दिया है, जो सिर्फ ऑनलाइन नमूना कोड है I found मेरी समस्या यह है कि मैं उचित 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()

एक्सबी 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 भेजने पर टीएक्स लाइट झपकी लेती है, लेकिन मुझे एक्सबी प्राप्त करने पर कुछ नहीं मिलता क्या मुझे याद आ रही है? आपके समय के लिए धन्यवाद!


क्या आप निश्चित हैं कि एक्सबीआई मॉड्यूल एपीआई मोड ( ATAP=2 ) में हैं? और 9600 बॉड?

क्या आप अजगर-एक्सबीई में एक मोड को सक्षम कर सकते हैं ताकि सभी अक्षरों को और बाहर निकाल दें?

क्या आपने पुष्टि की है कि सीरियल वायरिंग सही है? (मुझे लगता है कि आप USB का उपयोग कर रहे हैं, इसलिए यह कोई समस्या नहीं है।)

यदि आपके पास हार्डवेयर प्रवाह नियंत्रण को झुकाव नहीं है, तो सुनिश्चित करें कि XBee मॉड्यूल में ATD6=0 और ATD7=0 सेट (आरटीएस और सीटीएस अक्षम करें) है और यह अजगर-एक्सबीई हैंडशेकिंग की उम्मीद नहीं कर रहा है।

यदि आपके पास XBee पर कॉन्फ़िगर किया गया हार्डवेयर प्रवाह नियंत्रण है, तो सुनिश्चित करें कि आपने अजगर-एक्सबीई को इसका उपयोग करने के लिए कहा है

क्या आप यह सुनिश्चित करने के लिए कि सीरियल काम कर रहा है, रास्पपी पर मिनीकॉम या दूसरे सीरियल टर्मिनल का उपयोग कर सकते हैं? प्राप्त करने के लिए minicom का उपयोग करने के लिए यह देखने के लिए कि क्या आपको कुछ भी मिल रहा है?

क्या आप पीआई के बजाय पीसी से जुड़े रेडियो से भेजने और प्राप्त करने का प्रयास कर सकते हैं? पीसी से पीआई तक भेजना, या इसके विपरीत?





xbee