我有两个XBee Series 2模块和一个Arduino UNO . 我使用的是XBee-API库:http://code.google.com/p/xbee-api/ . 我生成三个RemoteATRequest数据包(0x17)来控制远程睡眠节点的数字引脚并将其从SoftwareSerial发送到XBee协调器,该协调器通过Sparkfun XBee Arduino Shield(https://www.sparkfun.com/products/10854)连接到Arduino UNO . 通讯工作正常 . 每个请求包都发送到远程 . 并且对于每个请求分组,接收远程分组 . 我用串行监视器和RS232 < - > TTL转换器检查了这个 . 但在我的Arduino软件中,似乎只收到一个远程数据包 . 奇怪的是,当我在远程休眠时发送请求数据包时,如果它处于唤醒状态并且从协调器获取请求,则读取三个响应 .
有没有人尝试相同或相同的问题?我已经尝试了很多,直到知道另一个波特率,延迟发送 . 什么都行不通 .
1 回答
我对ZigBee和/或802.15.4的回忆是,一个困的终端设备的父节点只会在困的设备唤醒时保持/排队一个帧 . 请注意,在ZigBee中,它只能保证排队7.5秒 . 您可能需要修改代码以一次发送一个远程AT请求,并在发送另一个之前等待响应 .
This page对MAC层的工作方式有很好的描述:
如果XBee模块支持包含多个AT命令的帧类型会很棒,但据我所知,这不是一个选项 .