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.

[参考译文] CC2530:短地址和扩展地址

Guru**** 2601555 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/824752/cc2530-short-address-and-extended-address

器件型号:CC2530

你好

我想在接收器节点中看到发送数据的发送器节点的短地址和扩展地址。 我该怎么做????

提前感谢您的任何回复

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通常、我们使用短地址进行通信、当您获取 ZCL_INGING_MSG 时、您可以在 zclIncomingMsg_t 结构的 srcAddr 中获取发件人的短地址。 当设备加入网络时、您可以构建短地址和扩展地址映射表、以便在需要时将源短地址映射到扩展地址。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Betty、

    当设备加入网络时,短地址和 IEEE 地址都包含在广播设备通告消息中,以便您按照 YK 的建议跟踪地址映射。

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢主席先生,  

    实际上、我尝试按如下方式进行实验:

    首先、在温度传感器样片应用中、所有终端设备都被分配了唯一的名称、协调器充当恒温器。

    任何终端设备(加入网络后)发送的第一个数据包包含分配给该设备的名称。

    我希望在加入过程之后立即将加入网络的任何设备的扩展地址、短地址和名称保存在列表中、并通过串行通信在我的 PC 上查看结果。  

    为此、我在我的示例恒温器应用中的"zclSampleThermostat_ProcessInReportCmd"函数中编写了此代码。

    ----------------------------------------

    //全局变量
    int i=0;
    int z=0;
    char * Income 数据=NULL;
    //

    静态空 zclSampleThermost_ProcessInReportCmd (zclIncomingMsg_t *pInMsg)
    {zclReportCmd_t * pInTempSensorReport;
    zclReportCmd_t *pOutDemandReport;
    uint8 outDemandBuffer[sizeof (zclReportCmd_t)+(2 * sizeof (zclReport_t))]];

    pInTempSensorReport =(zclReportCmd_t *) pInMsg->attrCmd;


    uint8 ext_Addrs_list[100][Z_EXTADDR_LEN];
    int8 short_Addrs_list[100];
    char *name_list[100];

    In쫕 죫_data=&pInTempSensorReport->attrList[0].attrData[0];

    if (zclIncomingMsg_t.zclHdr.transSeqNum=0)



    if (ii = 0)


    short_Addrs_list[0]=pInMsg->srcAddr.addr.shortAddr;
    OSAL_memcpy (ext_Addrs_list[0]、pInMsg->srcAddr.addr.extAddr、Z_EXTADDR_LEN);
    NAME_LIST[0]=收入数据;


    其他

    for (ii = 1;ii < 100;ii +)
    if (ext_Addrs_list[i]=pInMsg->srcAddr.addr.extAddr)

    short_Addrs_list[i]=pInMsg->srcAddr.addr.shortAddr;


    否则 if (ext_Addrs_list[i]!=pInMsg->srcAddr.addr.extAddr)
    {z=z+1;

    short_Addrs_list[z]=pInMsg->srcAddr.addr.shortAddr;
    OSAL_memcpy (ext_Addrs_list[z]、pInMsg->srcAddr.addr.extAddr、Z_EXTADDR_LEN);
    name_list[z]=Income _data;
    HalUARTWrite (HAL_UART_PORT_0、name_list[z]、5);
    HalUARTWrite (HAL_UART_PORT_0、&SHORT_Addrs_list[z]、2);
    HalUARTWrite (HAL_UART_PORT_0、ext_Addrs_list[z]、8);


    ----------------------------------------------------

    我在 C 编译器中编写了一个类似的代码、它可以正常工作、但它在堆栈中崩溃。 我尝试根据堆栈标准编写代码、但仍然无法正常工作。 可以帮助我解决问题吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议您准确地跟踪和调试应用崩溃的位置。