Код получателя не работает с помощью xbee- python - PullRequest
0 голосов
/ 11 января 2020

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

У меня есть маршрутизатор xbee, подключенный к Arduino, и координатор xbee, подключенный к моему ноутбуку. Я sh хочу отправить сообщение от Arduino на модуль ноутбука.

Вот мои данные отправки на Arduino:

#include <XBee.h>

XBee xbee = XBee();
XBeeAddress64 addr64 = XBeeAddress64(0x0013A200, 0x406BFE13); 
uint8_t payload[] = {'H','i'};
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));
ZBTxStatusResponse txStatus = ZBTxStatusResponse();


void setup() {
  Serial.begin(9600);
  xbee.setSerial(Serial);

}

void loop() {

  xbee.send(zbTx);
  if (xbee.readPacket(500)) {
    if (xbee.getResponse().getApiId() == ZB_TX_STATUS_RESPONSE) {
      xbee.getResponse().getZBTxStatusResponse(txStatus);
    }
  } else if (xbee.getResponse().isError()) {
    //Serial.print("Error reading packet.  Error code: ");  
    //Serial.println(xbee.getResponse().getErrorCode());
  }
  delay(1000);
}

А вот код моего получателя на моем ноутбуке :

from digi.xbee.devices import XBeeDevice, RemoteXBeeDevice, ZigBeeDevice, RemoteZigBeeDevice
from digi.xbee.models.address import XBee64BitAddress
from digi.xbee.models.mode import APIOutputModeBit
from digi.xbee.util import utils

PORT = "/dev/cu.usbserial-A100Z2II"
local_device = ZigBeeDevice(PORT, 9600)
remote_device = RemoteZigBeeDevice(local_device, XBee64BitAddress.from_hex_string("0013A20040865061"))

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

try:
    local_device.open()

    mode = APIOutputModeBit.calculate_api_output_mode_value(local_device.get_protocol(),
        {APIOutputModeBit.EXPLICIT})
    local_device.set_api_output_mode_value(mode)

    data = remote_device
    message = local_device.read_expl_data()

    if message is not None:
        print(message.data)

finally:
    if local_device is not None and local_device.is_open():
        local_device.close()


По какой-то странной причине, когда я печатаю message.data, я всегда получаю один и тот же 17-байтовый массив: \ x01 \ x00 \ x00 \ x00 \ x00 @ \ x8f \ x1e \ X10D \ x80 \ x00 \ x00 \ x00 \ x80 \ x00 \ x00 . Это происходит, даже если модуль маршрутизатора не подключен.

Для справки: я успешно отправляю сообщение с моего ноутбука на модуль Arduino, однако моя конечная цель - отправить сообщение с Arduino. к модулю ноутбука.

Есть предложения, что делать? У меня нет большого опыта с этим материалом, поэтому я буду признателен за любые советы!

...