我的接线是这样的:
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);
}
mbed 的 XBee 库本质上是广受欢迎的 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 怎么会成功读取数据包?