完善资料让更多小伙伴认识你,还能领取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模式重新上电组网也可以成功,不过我断电后还是不能组网成功。 |
|
|
|
只有小组成员才能发言,加入小组>>
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
1871 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3613 浏览 4 评论
5019 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1725 浏览 1 评论
9309 浏览 8 评论
CC3100BOOST使用CC3200lunchXL进行烧录
653浏览 2评论
694浏览 1评论
TMS320F28034: 利用C2prog通过SCI给TMS320F28034烧录程序,出现错误提示:Bootloading... failed (invalid echo)!
651浏览 1评论
1178浏览 1评论
求DLPC350 Programmer’s Guide User's Guide 中文版说明书
1174浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 16:19 , Processed in 0.836040 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号