TI中文支持网
TI专业的中文技术问题搜集分享网站

关于 zclGeneral_SendOnOff_CmdToggle 函数的使用

        控制端使用 ZStatus_t zclGeneral_SendOnOff_CmdToggle( uint16 srcEP, afAddrType_t *dstAddr, uint8 disableDefaultRsp, uint8 seqNum ); 

        这个函数控制某个灯,灯有时候会连续动作(即灯开了后立马又关了),基本控制30次左右会出现一次此现象,严重的一次灯连续闪了4次。

        原因应该是控制端发出数据后,没有收到ACK,触发重发机制,但是灯那边实际已经动作了,并且也发出ACK了,只不过控制端没收到。抓包看,确实是连续发送了无线数据,而且间隔很短,在10ms之内。

        实际在开始的时候就发现这个隐患了,采取的办法是不用Toggle指令,直接使用ON或者OFF指令。现在需要用按键来控制灯,只能使用Toggle指令,要不灯那边手动改变状态后,会出现ON/OFF不同步。

        处理过程中,我把disableDefaultRsp这个参数,由false改为true,灯连续动作的几率会少了点,但是还是会出问题。

        请问下大家还有什么别的处理方法么?

        测试环境:现场中有50多个路由设备。

Susan Yang:

请问能否给出完整抓包?

user5020974:

回复 Susan Yang:

感谢Susan Yang回复~~

上边那条是正常的。

下边圈起来的那条就是发完以后,灯连续动作两次的。

user5020974:

回复 user5020974:

大神们都没遇到过这种情况么?

miffy:

回复 user5020974:

toggle是什么意思? 这个得搞明白。

zigbee的确会在MAC层没有ACK时重发,你那边得加个定时器,比如1S,如果1S以内连续收到几个,你就只处理一个

user5020974:

回复 miffy:

@hold li,多谢

实际最开始就考虑改灯那边的程序,不过那个设备时另外的同事开发的,万不得已不想让别人做改动

赞(0)
未经允许不得转载:TI中文支持网 » 关于 zclGeneral_SendOnOff_CmdToggle 函数的使用
分享到: 更多 (0)