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

终端在线却无法收发数据

zstack 3.0.2   ZC:2538,ZED:2530

协调器和终端通过zcl_SendReportCmd函数相互发送私有数据,

工作一个月后,出现了无法发送数据的情况,

但是终端也没掉线,终端的状态还是DEV_END_DEVICE,

此时对终端重启是能恢复正常的,请问如何不重启终端的情况下让网络恢复正常,

能否在出现问题时把网络重新初始化?让终端网络初始化后重新联网,请问是哪个函数?是ZDOInitDeviceEx(0)吗?

因为一个多月才能复现,无法提供抓包文件

zcl_SendReportCmd( SAMPLELIGHT_ENDPOINT, &zclSampleLight_DstAddr,
ZCL_CLUSTER_ID_GEN_ON_OFF,
pReportData, ZCL_FRAME_SERVER_CLIENT_DIR, TRUE, bdb_getZCLFrameCounter() );

Kevin Qiu1:

user5367314能否在出现问题时把网络重新初始化?

不清楚具体何时出现问题,最好还是检查下具体什么原因导致断开连接

重新入网可以参考e2echina.ti.com/…/260851

user5367314:

回复 Kevin Qiu1:

你好,使用SystemReset()复位后是可以重新连上协调器,但是同时也复位了控制引脚,能不能不对系统复位,只初始化网络部分?

YiKai Chen:

此时终端還會做polling嗎?有沒有抓包檔可以分析問題?

user5367314:

回复 YiKai Chen:

polling是正常的,
1.终端不采取任何操作,保持一直上电,把协调器断电一段时间后,终端LED就指示掉线了
然后再把协调器上电,终端连上后就可以正常控制了
2.协调器不采取任何操作,保持一直上电,把终端执行SystemReset()后,重启后连上协调器也可以正常控制了
因为几十天才复现一次,暂无抓包文件
我现在的做法是,协调器会周期性的给终端发心跳包,如果终端很久没有收到心跳包,
终端执行SystemReset是肯定能恢复正常的,但是SystemReset会导致2530的IO有变化(IO连着继电器,会导致继电器断开)
请问如何只对网络部分重新初始化,而不是去执行SystemReset,用哪个API?
如果没有只对网络部分重新初始化的API,请问终端能否自己主动离线,然后重新连接协调器?

YiKai Chen:

回复 user5367314:

或許參考 e2e.ti.com/…/1343379 的作法重新入網看看

user5367314:

回复 YiKai Chen:

3.0.2协议里
下面两个函数是不是已经包含了你上面链接里说的要添加的代码?我对比了一下也不是完全一样,麻烦确认下
ZDApp_LeaveReset
ZDApp_ProcessNetworkJoin
终端发现长时间收不到协调器的心跳包的时候是不是先执行ZDApp_LeaveReset后执行ZDApp_ProcessNetworkJoin,然后再执行bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING);是不是这样一个流程?

YiKai Chen:

回复 user5367314:

應該直接执行ZDApp_LeaveReset(1)就可以了吧

user5367314:

回复 YiKai Chen:

终端再正常入网后,我给协调器断电,此时终端是会掉线的
请问如果不给协调器断电,通过串口给协调器发个指令,让协调器关闭网格,然后实现终端掉线,
3.0.2版本的协调器里有这样的API吗?

YiKai Chen:

回复 user5367314:

沒有API可以让协调器关闭网格

user5367314:

回复 YiKai Chen:

你好,开门狗会影响NV的0x0402存的数据吗?
我打开了看门狗,0x0402里存的数据就变化了,关闭看门狗后就好了,不知道是啥原因
osal_nv_read(0x0402,0,1,(void *)&RestoreCount);

赞(0)
未经允许不得转载:TI中文支持网 » 终端在线却无法收发数据
分享到: 更多 (0)