Other Parts Discussed in Thread: Z-STACK
以前使用z-stack协议栈一直使用点播和广播方式。这两个方式没有问题。
现在刚接触z-stack协议栈组播。看了一下《z-stack Developer's Guids.pdf》和《z-stack API.pdf》两个文档。在文档中介绍设备属于哪个组需要使用aps_AddGroup()函数注册。
我按照第一个pdf中的样例将我的终端节点注册到组ID为0x0002的组中。然后我在协调器中使用AF_DataRequest函数发送一个字符串。发送的地址配置如下:
my_DstAddr.addrMode = (afAddrMode_t)AddrGroup; // 无线发送的源地址
my_DstAddr.endPoint = GENERICAPP_ENDPOINT; // 设置端口号
my_DstAddr.addr.shortAddr = 0x0002; // 无线发送的目的地址
按我的理解。协调器发送的方式为组播发送。发送的地址是0x0002,而我的终端几点也将自己注册到了0x0002的组中。那么节点应该能和协调器广播发送数据一样接收到数据。
问题是!!!!!!
我的节点根本没有接收到数据。然后我怀疑协调器没有把字符串发送出去。然后我在协调器的代码中打了个断点调试。发现AF_DataRequest函数返回成功,也就是数据发送出去。接着我用sniffer抓了一下数据包,却发现:
在网络层payload上看这个成功发出去的帧type居然是(cmd)命令帧。可是我明明是在APS层发送的字符串。
请问:我怎么设置能实现组播发送呢?是不是配置错了?
