簡體   English   中英

XBee PRO S1始終使用API​​ MODEM_STATUS_RESPONSE而不是什么獲得響應

[英]XBee PRO S1 always gets response with API MODEM_STATUS_RESPONSE instead of nothing

我的接線是這樣的: 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);
}

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM