簡體   English   中英

使用node-xbee發送數據包時的校驗和不匹配錯誤

[英]Checksum Mismatch Error when using node-xbee to send a packet

配置為Coordinator API XBee系列2試圖將數據包發送到配置為Router AT的XBee系列2。 協調器已連接到運行node.js和xbee-api的Mac OSX。

var frame_obj = {
    type: 0x10,
    ud: 0x01,
    destination64: "0013a20040b19213",
    data: "1"
}

serialport.write(xbeeAPI.buildFrame(frame_obj))

這會導致Node拋出錯誤:

/Users/me/Dropbox/Projects/test-node/node_modules/xbee-api/lib/xbee-api.js:173
        throw new Error("Checksum Mismatch", S);
              ^
Error: Checksum Mismatch
    at XBeeAPI.parseRaw (/Users/me/Dropbox/Projects/test-node/node_modules/xbee-api/lib/xbee-api.js:173:15)
    at Object.parser (/Users/me/Dropbox/Projects/test-node/node_modules/xbee-api/lib/xbee-api.js:119:10)
    at Object.SerialPort.options.dataCallback (/Users/me/Dropbox/Projects/test-node/node_modules/serialport/serialport.js:136:15)
    at SerialPortFactory.SerialPort._emitData (/Users/me/Dropbox/Projects/test-node/node_modules/serialport/serialport.js:305:20)
    at afterRead (/Users/me/Dropbox/Projects/test-node/node_modules/serialport/serialport.js:283:18)
    at /Users/me/Dropbox/Projects/test-node/node_modules/serialport/serialport.js:297:9
    at Object.wrapper [as oncomplete] (fs.js:454:17)

使用AT Router端的Arduino串行監視器,我們可以看到協調器發送的數據實際上已到達路由器。

在此處輸入圖片說明

問題:為什么會有校驗和錯誤? 我們如何解決這個問題?

路由器AT配置

  <data>
    <profile>
      <description_file>XB24-ZB_22A7.xml</description_file>
      <settings>
        <setting command="ID">2001</setting>
        <setting command="SC">FFFF</setting>
        <setting command="SD">3</setting>
        <setting command="ZS">0</setting>
        <setting command="NJ">FF</setting>
        <setting command="NW">0</setting>
        <setting command="JV">1</setting>
        <setting command="JN">0</setting>
        <setting command="DH">13A200</setting>
        <setting command="DL">40A74613</setting>
        <setting command="NI">0x20</setting>
        <setting command="NH">1E</setting>
        <setting command="BH">0</setting>
        <setting command="AR">FF</setting>
        <setting command="DD">30000</setting>
        <setting command="NT">3C</setting>
        <setting command="NO">3</setting>
        <setting command="CR">3</setting>
        <setting command="SE">E8</setting>
        <setting command="DE">E8</setting>
        <setting command="CI">11</setting>
        <setting command="PL">4</setting>
        <setting command="PM">1</setting>
        <setting command="EE">0</setting>
        <setting command="EO">0</setting>
        <setting command="KY"></setting>
        <setting command="BD">3</setting>
        <setting command="NB">0</setting>
        <setting command="SB">0</setting>
        <setting command="RO">3</setting>
        <setting command="D7">1</setting>
        <setting command="D6">0</setting>
        <setting command="CT">64</setting>
        <setting command="GT">3E8</setting>
        <setting command="CC">2B</setting>
        <setting command="SM">0</setting>
        <setting command="SN">1</setting>
        <setting command="SO">0</setting>
        <setting command="SP">20</setting>
        <setting command="ST">1388</setting>
        <setting command="PO">0</setting>
        <setting command="D0">0</setting>
        <setting command="D1">0</setting>
        <setting command="D2">0</setting>
        <setting command="D3">0</setting>
        <setting command="D4">0</setting>
        <setting command="D5">1</setting>
        <setting command="P0">1</setting>
        <setting command="P1">0</setting>
        <setting command="P2">0</setting>
        <setting command="PR">1FFF</setting>
        <setting command="LT">0</setting>
        <setting command="RP">28</setting>
        <setting command="DO">1</setting>
        <setting command="IR">3E8</setting>
        <setting command="IC">0</setting>
        <setting command="V+">0</setting>
      </settings>
    </profile>
  </data>

協調器API配置

  <data>
    <profile>
      <description_file>XB24-ZB_21A7.xml</description_file>
      <settings>
        <setting command="ID">2001</setting>
        <setting command="SC">FFFF</setting>
        <setting command="SD">3</setting>
        <setting command="ZS">0</setting>
        <setting command="NJ">FF</setting>
        <setting command="DH">0</setting>
        <setting command="DL">FFFF</setting>
        <setting command="NI">0x20</setting>
        <setting command="NH">1E</setting>
        <setting command="BH">0</setting>
        <setting command="AR">FF</setting>
        <setting command="DD">30000</setting>
        <setting command="NT">3C</setting>
        <setting command="NO">3</setting>
        <setting command="CR">3</setting>
        <setting command="PL">4</setting>
        <setting command="PM">1</setting>
        <setting command="EE">0</setting>
        <setting command="EO">0</setting>
        <setting command="KY"></setting>
        <setting command="NK"></setting>
        <setting command="BD">3</setting>
        <setting command="NB">0</setting>
        <setting command="SB">0</setting>
        <setting command="D7">1</setting>
        <setting command="D6">0</setting>
        <setting command="AP">1</setting>
        <setting command="AO">0</setting>
        <setting command="SP">20</setting>
        <setting command="SN">1</setting>
        <setting command="D0">1</setting>
        <setting command="D1">0</setting>
        <setting command="D2">0</setting>
        <setting command="D3">0</setting>
        <setting command="D4">0</setting>
        <setting command="D5">1</setting>
        <setting command="P0">1</setting>
        <setting command="P1">0</setting>
        <setting command="P2">0</setting>
        <setting command="PR">1FFF</setting>
        <setting command="LT">0</setting>
        <setting command="RP">28</setting>
        <setting command="DO">1</setting>
        <setting command="IR">0</setting>
        <setting command="IC">0</setting>
        <setting command="V+">0</setting>
      </settings>
    </profile>
  </data>

解析在協調器上接收到的幀時,似乎引發了錯誤。 如果是這樣,您可以轉儲接收到的幀嗎?

堆棧跟蹤指向fs.js:454:17是您的代碼嗎? 什么東西在那里?

如果您嘗試使用xbee-api其他示例,它們是否有效?

有點無關,但是我建議以115200 bps的速度運行協調器,並確保已在串行庫和XBee模塊上啟用了流控制。 這樣可以避免緩沖區溢出的問題。 來自網絡的數據在被堆積在XBee模塊上之前,已被傳遞到主機。

要啟用硬件流控制,請將XBee模塊上的ATD6ATD7設置為1 這要求主機在發送給XBee之前先檢查來自XBee的CTS信號,並在准備好從XBee接收字節時聲明RTS信號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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