微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 请问Cooridnator中的回传数据如何透过Router回传给End-device?

请问Cooridnator中的回传数据如何透过Router回传给End-device?

时间:10-02 整理:3721RD 点击:

您好,

我的Zigbee系统原先的设计为:

 

在Cooridnator中先设定要给End-device的data后,再让End-device传某一讯息给Cooridnator,使得Cooridnator中的data可以回传给End-device.

 

现在我想在他们之间增加Router,想要实现双方的讯息能透过Router来传达.

 

经过试验, End-device所传之讯息可透过Router抵达Cooridnator,但Cooridnator内的回传讯息却不能,使用sniffer观察后,发现想要回传之封包根本没出现,请问我该如何实现我想完成的功能呢?

你的协调器收到数据以后是怎么操作的?

你可以在End device发数据时把APS 的ack打开,这个ack就是通过原先的发送路径返回回来的

您好,

我的协调器收到数据后,会发送一笔资料要给End-Device

在没有路由器的状况下,这笔资料会被End-Device以data request取得

 

但在有路由器的状况下, data request将会由End-Device传给路由器,而协调器并没有收到data request,所以这笔数据协调器将无法发出

请问要如何解决呢?

当coordinator通过路由给end device的时候,数据先是直接发给路由器,因为协调器和路由器的rx一直打开着的,所以直接发就可以,路由收到数据以后会把数据buffer,等待end device来data request 时,再把数据发过去。

感谢您的回复,

我使用广播的方式确实能够使coordinator的讯息透过路由器到达End-Device,但单播模式下却不行,请问有解决的方式吗?

首先你要确认你的end device的父设备是路由,路由的父设备是Coordinator,在Coordinator使用单播模式,目的地址选择end device的,

你使用哪个协议栈版本,使用什么函数来发送的

您好,

我使用的是z-stack 2.5.1a中的zcl_SendReportCmd来传送讯息.

ZCL是引用HA profile.

你有用抓包看数据的具体发送情况下吗?

有的使用Sinffer观察过

使用广播的话,会出现coordinator对0xFFFF做出广播,接着Router也会做出广播,而End-Device在正确时间点发送data request的话,则封包会出现由Router传送给End-Device的广播消息.

 

但单播的话,则Sinffer无任何传送的数据,连一开始Coordinator给Router的也没有.

那就说明,你的协调器就没有正确的把数据发送出去,

你是通过AF_Datarequest函数来发送的吗,检查下参数都对不对

这个问题有解没?我也遇到同样问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top