Node.js 使用节点xbee发送数据包时出现校验和不匹配错误

Node.js 使用节点xbee发送数据包时出现校验和不匹配错误,node.js,arduino,xbee,node-xbee,Node.js,Arduino,Xbee,Node Xbee,配置为协调器API的XBee Series 2正在尝试向配置为路由器的XBee Series 2发送数据包。协调器连接到运行node.js的Mac OSX和 这会导致节点抛出错误: /Users/me/Dropbox/Projects/test-node/node_modules/xbee-api/lib/xbee-api.js:173 throw new Error("Checksum Mismatch", S); ^ Error: Checksum

配置为
协调器API的XBee Series 2正在尝试向配置为
路由器的XBee Series 2发送数据包。协调器连接到运行node.js的Mac OSX和

这会导致节点抛出错误:

/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)
使用路由器
侧的
上的Arduino串行监视器,我们可以看到协调器发送的数据实际上到达了路由器

问题:为什么会出现校验和错误?我们怎样才能解决这个问题

路由器处于配置状态

  <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>
  <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>

XB24-ZB_22A7.xml
2001
FFFF
3.
0
FF
0
1.
0
13A200
40A74613
0x20
1E
0
FF
30000
3C
3.
3.
E8
E8
11
4.
1.
0
0
3.
0
0
3.
1.
0
64
3E8
2B
0
1.
0
20
1388
0
0
0
0
0
0
1.
1.
0
0
1ff
0
28
1.
3E8
0
0
协调器API配置

  <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>
  <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>

XB24-ZB_21A7.xml
2001
FFFF
3.
0
FF
0
FFFF
0x20
1E
0
FF
30000
3C
3.
3.
4.
1.
0
0
3.
0
0
1.
0
1.
0
20
1.
1.
0
0
0
0
1.
1.
0
0
1ff
0
28
1.
0
0
0

解析协调器上接收到的帧时,似乎会抛出错误。如果是这种情况,您可以转储接收到的帧吗

堆栈跟踪指向
fs.js:454:17
——这是您的代码吗?有什么

如果您尝试来自
xbee api
的其他示例,它们是否有效

有些不相关,但我建议以115200 bps的速度运行协调器,并确保在串行库和XBee模块中都启用了流控制。这避免了缓冲区溢出的问题。在XBee模块上堆积数据之前,从网络输入的数据被传送到主机


要启用硬件流控制,请将XBee模块上的
ATD6
ATD7
设置为
1
。这要求主机在发送到XBee之前检查来自XBee的
CTS
信号,并在准备接收来自XBee的字节时断言
RTS
信号。

出于某种奇怪的原因,我找不到
fs.js
。这不是我的密码。我已将协调器和路由器设置为115200 bps,但错误仍然存在。如何启用流控制?如果我继续重新启动同一个nodejs程序,在尝试几次之后,将不再出现校验和不匹配错误。但是,如果我再次重试,它将开始给出校验和不匹配错误,直到稍后重新启动。有什么想法吗?切换到Windows,它开始工作得很好。偶尔出现校验和不匹配错误,但仍不确定原因。它可能正在处理串行端口关闭时XBee模块上排队的帧。我的猜测是,有一种帧类型它并不熟悉,或者它正在处理部分帧,或者有帧错误。如果看不到解析后的帧,就很难确定了。我在回答中添加了关于启用流控制的说明。