[英]XBee PRO S1 always gets response with API MODEM_STATUS_RESPONSE instead of nothing
我的接線是這樣的:
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怎么完全成功讀取了數據包?
XBee模塊將調制解調器狀態幀發送到主機,而不是模塊接收到數據包的結果。 嘗試轉儲“調制解調器狀態”框架的其余部分,以查看XBee模塊嘗試報告的狀態。 可能正在報告硬件重置(0x00),然后報告協調器已啟動(0x06)。
XBee Series 1文檔包含所有可能的調制解調器狀態值的列表。
順便說一句,更新sprintf(tmp, "%d", c);
使用"0x%02X"
作為格式字符串將以十六進制打印幀類型,並使在文檔中查找幀類型更加容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.