Как получить несколько ответных пакетов ATCommand от локального xbee для AT-команды «FN» (поиск соседа) с использованием библиотеки python digi-xbee - PullRequest
0 голосов
/ 07 июня 2018

Этот код хорошо работает для всех AT-команд, кроме "FN":

from digi.xbee.devices import XBeeDevice

#Initialise a serial port for the local xbee 
local_xbee = XBeeDevice("/dev/tty.usbserial-AH02D9Q4", 9600). 

#Opens serial port for sending commands   
local_xbee.open()

#Sets new timeout for sync command operation 
local.set_sync_ops_timeout(10). 

#Send "FN" AT command to local xbee to receive neighbour list
neighbour_xbee_list = local.get_parameter("FN")

print(neighbour_xbee_list)

local_xbee.close()

Примечание:

Приведенный выше код возвращает только одного соседа, тогда как у меня более одного узлав сети.

Ответы [ 2 ]

0 голосов
/ 14 июня 2018
import serial
from digi.xbee.packets.common import ATCommPacket
from digi.xbee.devices import XBeeDevice
from digi.xbee.reader import PacketListener
from digi.xbee.serial import XBeeSerialPort
from digi.xbee.util import utils
import time


local_xbee = XBeeDevice("/dev/tty.usbserial-AH02D9Q4", 9600)
local_xbee.open()
print("This is : ", local_xbee.get_node_id())
print(local_xbee._packet_listener.is_running())
parameter = "FN"
frame_id = 33
my_packet = ATCommPacket(frame_id, parameter)
#print(my_packet)
#print(my_packet.frame_id)
#print(my_packet.command)
final_send = my_packet.output()
local_xbee._serial_port.write(final_send)
print("Finding Neighbours")
while True:
    print(".")
    Queue = local_xbee._packet_listener.get_queue()
    received_packet = Queue.get_by_id(frame_id)
    if received_packet != None:
        #if received_packet.status == ATCommandStatus.OK:
        final = received_packet._get_api_packet_spec_data().__str__()
        print(final)
    time.sleep(0.5)

local_xbee.close()
0 голосов
/ 07 июня 2018

Я считаю, что вопрос заключается не в том, как использовать команду FN, а в том, как обнаружить соседей.

Для этого вы можете использовать описанную здесь функцию start_discovery_process.http://xbplib.readthedocs.io/en/latest/user_doc/discovering_the_xbee_network.html#discovernetwork

...