1..对于设备需要获取本设备的网络地址和MAC地址:

NLME_GetShortAddr()——返回本设备的16位网络地址
NLME_GetExtAddr()——  返回本设备的64位扩展地址
2.使用下面的函数获取该设备的父亲设备的地址:
NLME_GetCoordShortAddr()——返回本设备的父亲设备的16位网络地址
NLME_GetCoordExtAddr()——  返回本设备的父亲设备的64位扩展地址

3.利用ZDP_NwkAddrReq函数获取任意节点的网络地址,这个函数启用的是无线广播的形式

函数原型;afStatus_t ZDP_NwkAddrReq( uint8 *IEEEAddress,  byte ReqType, byte StartIndex,  byte SecurityEnable )

byte ReqType:返回设备的类型  (1):ZDP_NWKADDR_REQTYPE_SINGLE :只返回当前设备的短地址和扩展地址

(2):ZDP_NWKADDR_REQTYPE_SINGLE:返回所有相关联设备的短地址和长地址

具体的用法如下:A发送 nwk address req 给B, B会自动发回nwk address response.

要处理nwk address response命令获取B的地址需要做如下事情在A端:
1. 在XXX_init() 函数中添加 ZDO_RegisterForZDOMsg( zclSampleSw_TaskID, NWK_addr_rsp );//底层的一些事件消息引入到应用层的方法

2.(1)首先这个消息是一个ZDO层的命令,那么这个response消息会从底层传到ZDO层,

首先在数据的传输流程上,NWK_addr_rsp消息首先收到的是在物理层,然后到MAC,再到网络层,再到AF层,AF会根据数据的end point来分发数据。

所有ZDO的数据的end point规定都是0,所以AF层把这个数据交给ZDO层来处理,数据首先来到了ZDApp_event_loop( uint8 task_id, UINT16 events )函数中

的ZDApp_ProcessOSALMsg( (osal_event_hdr_t *)msg_ptr )进行处理。在这个函数进入以后,首先数据被判断为是一个AF的数据,那么进入ZDP_IncomingData( (afIncomingMSGPacket_t *)msgPtr );进行处理,进入这个函数以后会调用到ZDO_SendMsgCBs( &inMsg ); 在这个函数里面,会把ZDO_CB_MSG发送给所有注册了对应处理ZDO消息的callback函数的task中。 那么这边在ZDO层,这个消息是默认注册的,所以会有一个ZDO_CB_MSG发送给ZDO层自己,会发送到ZDApp_event_loop里面,这个时候处理的变成了ZDApp_ProcessMsgCBs( (zdoIncomingMsg_t *)msgPtr );,这个函数就可以对具体的ZDO的消息进行处理了,比方说处理NWK_addr_rsp。 (2)..如果应用层也想得到这个消息。另外有些用户不希望在ZDO层做很多代码的改动,直接希望能够在应用层处理这个ZDO_CB_MSG消息,所以需要在应用层初始化的时候,通过 ZDO_RegisterForZDOMsg( sapi_TaskID, NWK_addr_rsp ); 这样完成注册以后,直接在应用层的event loop里面就可以收到ZDO_CB_MSG,然后同样的方式可以通过switch case的办法去直接处理NWK_addr_rsp消息了。

这个函数里面你可以去做处理了,那么处理的方法,先把数据进行解析,类似于下面的过程。

//解析地址函数的原型:ZDO_NwkIEEEAddrResp_t      *ZDO_ParseAddrRsp( zdoIncomingMsg_t *inMsg );

ZDO_NwkIEEEAddrResp_t *pAddrRsp;

pAddrRsp = ZDO_ParseAddrRsp( inMsg );//拿到pAddrRsp就可以了     parse:解析的意思
if ( pAddrRsp )
{
if ( pAddrRsp->status == ZSuccess )
{
ZDO_UpdateAddrManager( pAddrRsp->nwkAddr, pAddrRsp->extAddr );  //把长短地址都存放在了地址管理器中
}

上面的是两种方法,都可行的。下面是相关的帖子和文库

重邮的应用实列:http://www.doc88.com/p-7973315994736.html

e2e上的帖子:https://e2echina.ti.com/question_answer/wireless_connectivity/zigbee/f/104/t/91221

根据MAC地址获取网络地址及ZDP_NwkAddrReq函数的用法的更多相关文章

  1. 使用 SendARP 获取 MAC 地址(使用SendARP API函数,很多相关文章)

    ARP 协议地址解析协议(ARP)是通过解析网路层地址来找寻数据链路层地址的一个在网络协议包中极其重要的网络传输协议.ARP 最初在 1982 年的 RFC 826 中提出并纳入互联网标准 STD 3 ...

  2. Linux 下PHP获取服务器状态CPU、MEM使用率、磁盘使用率、IP地址获取、MAC地址获取等信息记录

    获取服务器状态记录使用的是SHELL命令方式进行获取输出结果  然后进行字符串拆分处理等方式进行获取到自己有用信息 贴出获取方式以及常用处理方式 <?PHP $fp = popen('执行SHE ...

  3. 获取客户机MAC地址 根据IP地址 获取机器的MAC地址 / 获取真实Ip地址

    [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest, Int32 host, ref ...

  4. MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分

    获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...

  5. ios Mac 地址获取

    //mac address #include <sys/socket.h> // Per msqr #include <sys/sysctl.h> #include <n ...

  6. 【转载】VC获取MAC地址的4种方法

    From:http://blog.csdn.net/pdfmaker/article/details/465748 有需求才有创造,有了问题才会想着去解决,那么我这里的获取MAC地址的第4种方法也是在 ...

  7. 使用ARP获取局域网内设备IP和MAC地址

    根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...

  8. Java获取本机的IP与MAC地址

    有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...

  9. java获取本机IP地址和MAC地址的方法

    // 获取ip地址 public static String getIpAddress() { try { Enumeration<NetworkInterface> allNetInte ...

随机推荐

  1. saltstack通过jinja模板,grains方式将配置的变量值写入到配置文件中?

    需求描述: 在通过saltstack进行jinja模板获取值的时候,可以通过grains的方式,获取一些操作系统相关的信息,比如,OS,ip地址等,在这里演示下,做个记录. 演示: 1.修改sls文件 ...

  2. mybatis batch批量提交大量数据

    转载:https://blog.csdn.net/Java_Mr_Zheng/article/details/50476757 在xml文件配置多条参数同时插入: <insert id=&quo ...

  3. python什么时候加self,什么时候不加self

    1.self是什么,一般都说指对象本身,这样说了没了用,说了后还是很难懂,因为这样说了后,仍然完全搞不清楚,什么时候变量前需要加self,什么时候不需要加self. 造成很多人,已经怕了self,不停 ...

  4. MYSQL中动态行数据转列数据

    最近用到城市矩阵相关 需要将城市与城市距离转化为二维表 通过动态SQL直接实现 贴出来一起学习: 表就三个字段,包含在sql内. SET @sql:=''; SELECT @sql:=GROUP_CO ...

  5. js实现十分钟内在页面无任何操作,页面跳转至登陆页

    // 如果10分钟没有操作,退出到登录页 var timer; function startTimer(){ clearTimeout(timer); timer=setTimeout(functio ...

  6. Windows下安装配置Yaf框架的方法及创建典型合理的Demo目录结构

    Yaf是一个C语言编写的PHP框架,由鸟哥Laruence开发的高性能框架: Yaf官方文档:http://www.laruence.com/manual/index.html 第一步:安装PHP扩展 ...

  7. Python Pandas 时间序列双轴折线图

    时间序列pv-gmv双轴折线图 import numpy as np import pandas as pd import matplotlib.pyplot as plt n = 12 date_s ...

  8. a排兵布阵

    来源hdu1166 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵 ...

  9. php 执行 命令行命令

    PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru().参考:http://www.jb51.net/article/19618.htm 区别: system ...

  10. js中级小知识3

    函数: 函数在调用的时候,会形成一个私有作用域,内部的变量不会被外面访问,这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 有些时候我们不希望他被销毁. 函数归属谁跟它在哪调 ...