2

我一直在尝试让XBee传输按钮是向上还是向下。

为此,我将电路中的电线连接到 XBee 上的 DIO4。我使用X-CTU将 DIO4 设置为数字输入模式。没有其他任何东西被启用。

现在,传感器 XBee 正在传输一个ZigBee I/O 数据样本 Rx 指示器数据包。我使用“构建无线传感器网络”一书来帮助解析数据包。它表示数据包始终包含模拟样本值,并且如果配置了数字引脚,则仅包含数字样本值。我收到了一个 21 字节的数据包,这意味着不包括数字位样本。数字掩码显示 IO4 已启用,所有模拟输入均已禁用。但是,数字值似乎已放入模拟样本中。

这是我的困惑。为什么数字样本被填充到模拟样本中?或者,如果没有配置模拟输入(与书上所说的相反),模拟样本是否会被忽略?

4

1 回答 1

2

简短回答:是的,如果在模拟通道掩码中设置了位,则有效负载中只有模拟样本。

长答案:XBee S2B 文档在第 114 页的 ZigBee IO 数据样本 Rx 指示器部分中描述了数据包的详细信息。

总之,有效载荷以样本数(始终为 0x01)开始,然后是 16 位数字通道掩码和 8 位模拟通道掩码。掩码指示后面的数据。如果在数字通道掩码中设置了任何位,则将有一个 16 位值保存数字样本。然后是模拟通道掩码中指示的每个模拟样本的 16 位值,从 AD0 到 AD3,然后是电源电压。

Digi 的开源 XBee Host C 库中有一些代码,include/xbee/io.h用于src/xbee/xbee_io.c演示这些帧的解析。

于 2013-02-12T16:23:06.113 回答