我一直在玩XBee来传输按钮是上升还是下降。
为此,我将电路连接到XBee上连接到DIO4的电路。我使用X-CTU将DIO4设置为数字输入模式。没有其他功能启用。
现在,传感器XBee正在发送ZigBee I / O数据样本Rx指示符包。我使用“建立无线传感器网络”一书来帮助解析数据包。它表示数据包总是包含模拟样本值,如果配置了数字引脚,则只包含数字样本值。我收到一个21字节的数据包,这意味着不包括数字位样本。数字掩码表示IO4已启用,所有模拟输入均被禁用。但是,似乎数字值被放入模拟样本中。
这是我的困惑。为什么数字样本被塞入模拟样本?或者,如果没有配置模拟输入,模拟样本就会被忽略(与本书所说的相反)?
答案 0 :(得分:2)
简答:是的,如果在模拟通道掩码中设置了位,则有效载荷中只有模拟样本。
答案很长: XBee S2B documentation描述了第114页的ZigBee IO数据采样Rx指示符部分中的数据包详细信息。
总之,有效载荷以采样数(始终为0x01),然后是16位数字通道掩码和8位模拟通道掩码开始。掩码表示后面的数据。如果在数字通道掩码中设置了任何位,则将存在保持数字样本的16位值。然后,模拟通道掩码中指示的每个模拟采样的16位值,从AD0到AD3,然后是电源电压。
Digi的Open Source XBee Host C Library在include/xbee/io.h
和src/xbee/xbee_io.c
中有一些代码可以解析这些帧。