This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

Other Parts Discussed in Thread: Z-STACK

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

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

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

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

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

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

  • 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
    此外你搞了这么久最好方式是直接定义函数原型,上面的都有英文注释写的很清楚。

  • 是的,搞了很久,最大的问题就是掉线问题,一直解决不了,
    前几天换了峰汇和信驰达测试,还是一样的现象,所以我怀疑是我的软件问题,
    但是我都是官方例程,也没改什么啊,只是改了按键和LED,
    另外协调器和终端互发我用了下面的函数,收发是没问题,只是终端会频繁的掉线重连(重连能连上),不是距离的问题,我把他们几乎都放在一起了,
    但是我把dataType 改为ZCL_DATATYPE_UINT8不知是不是这个原因导致掉线的?
    zcl_SendReportCmd
    zclReportCmd_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 );
  • dataType 改为ZCL_DATATYPE_UINT8不會导致掉线的
  • 你测试多久会掉线,你可以直接用SampleTemperatureSensor和SampleThermostat就在按键中触发入网,其他不要修改测试一下。
  • 入网后就开始掉线,我把终端换为2538测试的时候,发现light例程一直无法入网,
    基于2538终端,状态一直为DEV_HOLD,触发N次bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING);
    还是DISC几秒就又HOLD了,抓包发现2538没有发出一个beacon request,例程默认的就是不能入网的吗?需要修改哪里?
  • 你换了板子了吗?
  • 没换,只是把其中的一个网关2538下载终端的程序,结果根本无法入网
x 出现错误。请重试或与管理员联系。