1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
协议栈:Z-Stack Home 1.2.2a
CPU:CC2530 使用情况: 1.终端节点,使能NV_RESTORE和HOLD_AUTO_START; 2.希望节点在未加入过网络时保持devState=DEV_HOLD; 3.希望节点在加入过网络,断电重启或软复位后,恢复至先前网络状态且devState=DEV_END_DEVICE。 问题: 上面描述的第3点,网络环境能够恢复,但是devState依然为DEV_HOLD,导致应用层无法处理ZDO_STATE_CHANGE为DEV_END_DEVICE的事件,请问如何解决? 谢谢 |
|
相关推荐
7个回答
|
|
可以通过定时器,设置一个中断函数,定时检测这些,如果没满足要求,就调用初始化函数,初始化到想要的状态。如果满足要求了,就继续等待下次中断
|
|
|
|
@gaoyang9992006 我理解你说的意思是我在应用层自己定时判断devState然后改变他? 可是这样就达不到我的目的了呀,这个应该协议栈干的事情(断电重启后恢复到之前的状态),不是么 |
|
|
|
你解决了没有,我也出现了同样的问题
|
|
|
|
@Tianhao Wang 我解决了。 if ( networkStateNV == ZDO_INITDEV_NEW_NETWORK_STATE ) [ ... ] else if( networkStateNV == ZDO_INITDEV_RESTORED_NETWORK_STATE ) [ startDelay = 0; ] 这是我的方法,你试试行不行 |
|
|
|
夜空城33 发表于 2017-7-11 14:57 谢谢你的回答,我也解决了不过我是在入网前加了 if(devState == DEV_HOLD ) [ devState = DEV_INIT; ] |
|
|
|
我认为你这种做法不妥, 那如果设备出厂后第一次上电呢?即它没有加入过网络,一上来就你将它设置DEV_INIT? 我觉得最好是在应用程序上 加一个bool 变量,入网后将其写入NV flash 中, 下次上电前判断一下, 如果是入过网的, 则调用ZDOstartdevice |
|
|
|
bungalow 发表于 2017-7-12 09:43 恩,确实,我的设计是出厂使用NLME_RestoreFromNV()函数查询终端是否在网络内 如果不在网络内就调用ZDApp_StopJoiningCycle();函数让他不自动组网。 只有通过串口收到组网命令才调用ZDApp_StartJoiningCycle();函数组网。组网前改变网络模式为DEV_INIT 我以前帖子问过这个问题,TI工程师说的就算进入了HOLD模式重新上电组网也可以成功,不过我断电后还是不能组网成功。 |
|
|
|
只有小组成员才能发言,加入小组>>
336 浏览 1 评论
529 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
774 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
651 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1130 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
60浏览 29评论
155浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
253浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
202浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
59浏览 13评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 17:45 , Processed in 0.967731 second(s), Total 91, Slave 75 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号