请教一个问题,请帮忙看下:
zigbee网络里有1个协调器和18个router子节点(灯光控制),接连控制(50ms时间间隔)18个节子点(全开全关模式),有时会丢一到两个数据(灯光没变化),通过
sniffer抓包发现是协调器没发出来,附件里是抓的协调器发出来的数据截图和原始数据,图中APS Couter直接从29到31,对应18个子节点有一个没能控制到
Harris Ren:
附件是抓包的原始数据,可用sniffer打开
Harris Ren:
大神呢? vv 呢?
天空:
我这边也遇见了这样的问题。
Harris Ren:
回复 天空:
谢谢回复!请问您怎么解决这个问题的?我现在在尝试在应用层加反馈
天空:
回复 Harris Ren:
是你发送数据的速度过快、导致的丢包。
延长2次数据的间隔试一下,比如500ms。
1秒的话,性能就好多了。
VV:
回复 天空:
抓包来看,发送数据的间隔太短了,有好几条数据包都是重发成功的。
Harris Ren:
回复 天空:
500ms也试过的,也有丢包,从做产品的角度,丢包用户体验很差,发送时间过慢,响应慢,体验也不好,我们现在做的是智能家居场景控制里的全开全关模式,不知道你们做什么应用,这方面要求高不高
Harris Ren:
回复 VV:
终于等来VV了,发数据给CC2530串口的时间间隔比较固定,刚开始是50ms,后来改为500ms也能测到丢数据现象,没发送成功的话APS Counter为什么会加1呢?我现在在应用层加了反馈,如果50ms内协调器没收到终端的返回数据,再发一次,(串口发过来的数据时间间隔改为80ms),这样有点效果,但还是能测到丢包,请问还有什么建议呢?看您抓的图,Time Deta一栏时间不固定,也跟我串口发过来的时间不太一样,什么原因呢?您用的工具是Packet Sniffer吗?跟我用的不太一样,网上可以下到吗?
VV:
回复 Harris Ren:
@Harries Ren,
你的意思是你的host每隔50ms发送串口数据CC2530,然后CC2530通过无线发送出去,对吗?
有没有测试过串口给CC2530发送一条命令,然后CC2530自己控制每隔50ms发送数据。 另外如果你要实现全开全关的功能的话,那直接发送广播不可以吗?
APS Counter增加是应用调用发送函数就会增加上去的。
我用的是Ubiqua,是一个收费的抓包软件,你可以下载试用版的30天试用期。
谢谢!
Harris Ren:
回复 VV:
谢谢您的回复!
是这样的,是host每隔50ms发送串口数据CC2530,然后CC2530通过无线发送出去。
有测过,串口时间方面是没问题的,用示波器量了是对的。用广播的话有点限制,还有其他场景,只控制部分设备。
现在的问题好像在于:调用AF_DataRequest 函数后,协调器这时在接收数据(协调器发送完终端有返回数据),数据处理不过来,这时如果又有要发送的数据下来,就把原来的数据覆盖掉了,这样似乎可以解释抓包数据里APS Couter跳了一个数字(比如从22跳到24),同事没抓到相应APS Couter的数据。
还有AF_DataRequest函数的返回值似乎不大准确,发送失败也返回0,是不是因为我的协议栈(zstack-cc2530-2.3.0-1.4.0)太老了,还是本来就不准呢?