从与XBee模块远程连接的TOSR0X-T继电器读取响应

从与XBee模块远程连接的TOSR0X-T继电器读取响应,xbee,node-serialport,Xbee,Node Serialport,我想从继电器获取板上继电器的状态,但我只能返回ACK 我有两个XBee模块,一个通过USB连接到计算机,充当串行设备,另一个连接到TOSR0X-T继电器。我计划以后用更多的中继将更多的XBee模块添加到网络中,所以我使用的是API模式,而不是简单的AT模式,因为我需要单独处理它们 我正在向远程XBee发送64位地址的TX帧,以打开或关闭继电器。这很好,我得到了正确的ACK响应帧。但是,如果我通过发送0x5B来发送消息以获取中继状态,我只会返回ACK,并且我无法找到返回指示中继状态的实际数据的方法

我想从继电器获取板上继电器的状态,但我只能返回ACK

我有两个XBee模块,一个通过USB连接到计算机,充当串行设备,另一个连接到TOSR0X-T继电器。我计划以后用更多的中继将更多的XBee模块添加到网络中,所以我使用的是API模式,而不是简单的AT模式,因为我需要单独处理它们

我正在向远程XBee发送64位地址的TX帧,以打开或关闭继电器。这很好,我得到了正确的ACK响应帧。但是,如果我通过发送0x5B来发送消息以获取中继状态,我只会返回ACK,并且我无法找到返回指示中继状态的实际数据的方法

我正在使用和软件,但无法读取数据,我发现的唯一一个例子是使用连接到同一台机器的两个XBee-这样目标XBee上就会出现一个RX-但我需要以某种方式远程获取


TOSR0X-T文档只告诉我如何通过TX消息与它对话,所以我不知道是否可以通过命令实现任何功能(以及如何实现)

您看到的ACK很可能是网络层ACK,告诉您远程XBee模块收到了您的数据包。您需要在连接到TOSR0X-T的XBee上使用“AT模式”,并为该模式正确寻址TX API帧(端点0xE8的集群0x0011)


如果您已将计算机上的XBee配置为协调器,则中继XBee模块上的
DH
DL
的默认设置为0将导致所有接收到的串行字节中继回计算机上的XBee,并作为接收帧通过。

经过一些实验后,我可以解决我的问题

考虑到CH(通道)和ID(PAN ID)是匹配的——这是能够设置网络的一个要求,我将我的XBEE设置为:

协调器XBee(连接到计算机的协调器):

第一个端点(连接到TOSR0X-T的端点):


所以基本上我做了所有正确的事情,除了DH/DL寻址。对于端点,
DL
必须设置为协调器的
MY
。我读过一些文章,其中使用FFFF和FFFE等设置广播,我想我被这些信息弄糊涂了。

但在AT模式下使用两个以上的XBEE是否可能?一个协调器连接到计算机,另外两个连接到继电器。当我发送打开的消息时,我想指定应该打开哪个XBee的中继。在这种情况下,16位或64位寻址的TX数据包可以工作吗?-你能提供更多关于帧寻址的信息吗?或者让我看一些文档吗?是的,你可以在AT模式下使用多个XBee模块。他们会将数据发送回协调器,您会收到包含远程设备地址的帧,这样您就知道是谁发送了数据。您的TX数据包可以使用远程模块的16位或64位地址,就像您现在所做的那样。我相信集群和端点信息只在“transmitexplicit”框架中使用,所以我认为您不需要在协调器端做更多的工作。听起来很棒!我今天晚些时候到家后再去看看。非常感谢。我想我遗漏了一些重要的东西。我不能让它工作。现在,我有一个协调器以API模式连接到计算机,一个端点以AP(而不是API)模式连接到继电器。我正在将TX帧(0x00)发送到64位地址,并使用命令的字节值,同样的情况也会发生。您提到的集群和端点只提供了0x10和0x11类型的帧(传输请求和显式寻址命令帧),但根据XCTU,它们甚至不是802.15.4协议的选项。你能给我一些我应该试试的样品架吗?
CE = 1 (for being coordinator)
MY = 0001
DH = 0
DL = 0
AP = 1 (in API mode)
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)