XBee PRO S1 всегда получает ответ с API MODEM_STATUS_RESPONSE вместо ничего

Моя проводка такая:
XBee проводка

XBee настроен в режиме API 1, и mbed (LPC1768) выполняет этот код:

Serial terminal(USBTX, USBRX);

wait_ms(1000);

while(!terminal.readable()) {
wait_ms(10);
}
terminal.getc();
mbed_led1 = 1;

while(1) {
xbee.readPacketUntilAvailable();
terminal.puts("Packet available\r\n");
XBeeResponse response = xbee.getResponse();
if (response.isAvailable()) {

char tmp[20];
int c = response.getApiId();
sprintf(tmp, "%d", c);
terminal.puts("Response available at API: ");
terminal.puts(tmp);
terminal.puts("\r\n");

if (response.getApiId() == RX_16_RESPONSE) {
Rx16Response rx16 = Rx16Response();
response.getRx16Response(rx16);

uint8_t len = rx16.getDataLength();
char l[20];
sprintf(l, "%d", len);

terminal.puts("We have data: ");
terminal.puts(l);
terminal.puts("\r\n");
}
}
wait(1);
}

Библиотека XBee для mbed, по сути, является портом широко популярной библиотеки Arduino XBee. Источники здесь: http://mbed.org/users/okini3939/code/XBee/

И когда вышеупомянутый код выполняется, мой вывод такой:

Terminal ready
Packet available
Response available at API: 138
Packet available
Response available at API: 138
...

138 является десятичным представлением шестнадцатеричного 0x8A, который, в свою очередь, отображается в MODEM_STATUS_RESPONSE.

Этот модуль XBee является единственным, который питается.

И мой вопрос: почему у меня такое странное поведение? Почему этот XBee успешно прочитал пакет вообще?

1

Решение

Модуль XBee отправляет кадр состояния модема хосту, и это не результат того, что модуль получил пакет. Попробуйте сбросить оставшуюся часть фрейма состояния модема, чтобы узнать, о каком состоянии модуль XBee пытается сообщить. Это может быть сообщение об аппаратном сбросе (0x00), за которым следует координатор запущен (0x06).

Документация по XBee Series 1 включает в себя список всех возможных значений состояния модема.

Кстати, обновление sprintf(tmp, "%d", c); использовать "0x%02X" так как строка формата будет печатать тип фрейма в шестнадцатеричном виде и облегчит поиск типов фреймов в документации.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]