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.

zigbee 怎么通过mac地址获得网络中节点的短地址

各位大神:

            新年好,请问zigbee 怎么通过mac地址获得网络中挂在路由下的节点的短地址,APSME_LookupNwkAddr得到短地址时,只能查找协调器儿子节点,对孙子节点不可访问,

afStatus_t ZDP_NwkAddrReq( byte *IEEEAddress, byte ReqType,

                           byte StartIndex, byte SecurityEnable )

根据已知网络地址查询远程设备物理地址,作为一个广播信息发送给网络中的所有设备:这个函数也是知道IEEE地址,对短地址进行寻找,这个不存在上面所说的限制,但是这个短地址放在那里呢,我怎么获得这个短地址呢?

  • @bo fu,

    请使用 

    afStatus_t ZDP_NwkAddrReq( uint8 *IEEEAddress, byte ReqType,
    byte StartIndex, byte SecurityEnable )

  • 谢谢vv:

    请问调用这个函数获得的地址放在那里呢?

  • 会有callback函数上来的,对应的处理事件是

    #define NWK_addr_rsp            (NWK_addr_req | ZDO_RESPONSE_BIT)

    void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg )

    的switch case下面做添加就可以,然后去处理获得的地址


     

  • 谢谢VV,真的很感谢

  • VV大神 我尝试了ZDP_NwkAddrReq()查询终端的短地址,可是没效果啊。

     uint8 pDestination[] ={0x00,0x12,0x4B,0x00,0x04,0x3E,0xCB,0x41};

    ZDP_NwkAddrReq(pDestination,ZDP_ADDR_REQTYPE_SINGLE,0,0);

    void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg )

    {

    switch ( inMsg->clusterID )
    {
    #if defined ( ZDO_NWKADDR_REQUEST ) || defined ( ZDO_IEEEADDR_REQUEST ) || defined ( REFLECTOR )
    case NWK_addr_rsp:
    {
         printf("inMsg = %s\n",inMsg);
        ZDO_NwkIEEEAddrResp_t *My_pAddrRsp;
        My_pAddrRsp = ZDO_ParseAddrRsp( inMsg );
        Sure_nwkAddr = My_pAddrRsp->nwkAddr;
        break;
    }

    }

  • 1. Do you add the following?

    ZDO_RegisterForZDOMsg( zclGateway_TaskID, NWK_addr_rsp );

    2. byte order, little endian?

    uint8 pDestination[] ={0x00,0x12,0x4B,0x00,0x04,0x3E,0xCB,0x41};

  • 你好,请问这个问题解决了吗?
  • 這個帖子很舊了,建議你開個新的帖子具體描述你使用的硬件及軟件版本還有問題,讓大家比較容易幫你找出問題的解決方案