我想从继电器获取电路板上继电器的状态,但我只能得到ACK。
我有两个XBee模块,一个连接到带USB的计算机,充当串行设备,另一个连接到TOSR0X-T继电器。我打算稍后用更多的继电器向网络添加更多的XBee模块,所以我使用的是API模式,而不是简单的AT模式,因为我需要单独解决它们。
我将64位地址的TX帧发送到远程XBee以打开或关闭继电器。这很好,我得到了正确的ACK响应帧。但是,如果我通过发送0x5B发送消息来获取中继状态,我只返回一个ACK,我找不到实际数据返回指示中继状态。
我正在使用node-serialport和X-CTU软件,但无法读取数据,我发现的唯一示例使用了连接到同一台机器的两个XBees - 这就是RX出现在目的地XBee - 但我需要以某种方式远程获取它。
TOSR0X-T文档here只告诉我通过TX消息与它交谈,所以我不知道我是否能用命令实现任何东西(以及如何做到这一点)。
答案 0 :(得分:1)
您看到的ACK可能是网络层ACK,告诉您远程XBee模块收到了您的数据包。你需要使用" AT模式"在连接到TOSR0X-T的XBee上,正确地为该模式寻址TX API帧(端点0xE8的簇0x0011)。
如果您已将计算机上的XBee配置为协调器,则中继的XBee模块上DH
和DL
的默认设置为0将导致所有收到串行字节被转发回计算机上的XBee,并作为RX帧传入。
答案 1 :(得分:0)
经过一些实验,我可以解决我的问题。
考虑到CH(频道)和ID(PAN ID)是匹配的 - 这是能够设置网络的要求,我设置了我的XBees:
协调员XBee(连接到计算机的协调员):
CE = 1 (for being coordinator)
MY = 0001
DH = 0
DL = 0
AP = 1 (in API mode)
第一个终点(连接到TOSR0X-T的终点):
CE = 0 (for being an endpoint)
MY = 000A (whatever you want), use FFFF for 64 bit responses
DH = 0
DL = 0001 (This is one I missed. It should be the Coordinator's MY)
AP = 0 (in AP mode)
所以基本上我做的一切都正确,除了DH / DL寻址。对于端点,DL
必须设置为协调器的MY
。我阅读了一些使用FFFF和FFFE等文章来设置广播的文章,我觉得我对这些信息感到困惑。