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

3.0.2 协议栈基于GenericApp例程收发私有数据

3.0.2 协议栈基于GenericApp例程收发私有数据

应用是这样的,协调器收到串口私有数据后发送给终端,终端收到后再通过串口发出去,

反过来也是一样的,终端收到串口私有数据后发送给协调器,协调器收到后再通过串口发出去,

1.这个应用场景:该使用什么API去实现?是用zcl_SendReportCmd互发还是用AF_DataRequest互发,

2.如果是用zcl_SendReportCmd,需要自定义哪些参数?用什么cluster和attribute?有没有例程可以参考?

3.如果是用AF_DataRequest,我不知道该函数的参数如何初始化?有没有相关的例程可以参考?

Alvin Chen:

1.这个应用场景:该使用什么API去实现?是用zcl_SendReportCmd互发还是用AF_DataRequest互发: 取决你自己的想法。 2.zcl_SendReportCmd 去参考: C:\Texas Instruments\Z-Stack Home 1.2.2a.44539\Projects\zstack\HomeAutomation\SampleTemperatureSensor 由于ZigBee3.0例程使用的BDB report, zcl_SendReportCmd可以去参考1.22A 3.AF_DataRequest去看同样的1.22A 此外你搞了这么久最好方式是直接定义函数原型,上面的都有英文注释写的很清楚。

user5367314:

回复 Alvin Chen:

是的,搞了很久,最大的问题就是掉线问题,一直解决不了,
前几天换了峰汇和信驰达测试,还是一样的现象,所以我怀疑是我的软件问题,
但是我都是官方例程,也没改什么啊,只是改了按键和LED,
另外协调器和终端互发我用了下面的函数,收发是没问题,只是终端会频繁的掉线重连(重连能连上),不是距离的问题,我把他们几乎都放在一起了,
但是我把dataType 改为ZCL_DATATYPE_UINT8不知是不是这个原因导致掉线的?
zcl_SendReportCmdzclReportCmd_t *pReportData;pReportData = osal_mem_alloc( sizeof(zclReportCmd_t) + sizeof(zclReport_t) );if ( pReportData != NULL ){pReportData->numAttr = 1;pReportData->attrList[0].attrID = ATTRID_ON_OFF;pReportData->attrList[0].dataType = ZCL_DATATYPE_UINT8;//pReportData->attrList[0].attrData = (void *)(&GenericAppData);//数据类别 zcl_SendReportCmd( GenericApp_ENDPOINT, &GenericApp_DstAddr,ZCL_CLUSTER_ID_GEN_ON_OFF,pReportData, ZCL_FRAME_SERVER_CLIENT_DIR, TRUE, zclSampleLightSeqNum++ );}osal_mem_free( pReportData );

YiKai Chen:

回复 user5367314:

dataType 改为ZCL_DATATYPE_UINT8不會导致掉线的

Alvin Chen:

回复 user5367314:

你测试多久会掉线,你可以直接用SampleTemperatureSensor和SampleThermostat就在按键中触发入网,其他不要修改测试一下。

user5367314:

回复 Alvin Chen:

入网后就开始掉线,我把终端换为2538测试的时候,发现light例程一直无法入网,
基于2538终端,状态一直为DEV_HOLD,触发N次bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING);
还是DISC几秒就又HOLD了,抓包发现2538没有发出一个beacon request,例程默认的就是不能入网的吗?需要修改哪里?

Alvin Chen:

回复 user5367314:

你换了板子了吗?

user5367314:

回复 Alvin Chen:

没换,只是把其中的一个网关2538下载终端的程序,结果根本无法入网

赞(0)
未经允许不得转载:TI中文支持网 » 3.0.2 协议栈基于GenericApp例程收发私有数据
分享到: 更多 (0)