Я сталкиваюсь с этой проблемой уже несколько дней, и я надеялся, что кто-нибудь сможет помочь.
У меня есть маршрутизатор 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. к модулю ноутбука.
Есть предложения, что делать? У меня нет большого опыта с этим материалом, поэтому я буду признателен за любые советы!