每块芯片在出场的时候都固化有一个8字节长的地址,可称为IEEE地址或MAC地址,这是全世界唯一的地址。
这个地址其实也能用来利用
当模块成功变成协调器、路由器、终端时,我们可通过NLMEDE.h头文件内的方法获取到自己的MAC地址和自己的网络地址。
在应用层.c文件中新增#include “NLMEDE.h”
为了存储网络地址和MAC地址,在全局申明2个变量
uint16 NwkAddr=0xFFFF;
uint8 MacAddr[8]={0};
随后在事件处理函数中找到确定模块身份的代码块
if(GenericApp_NwkState == DEV_ZB_COORD)
{//如果本模块成为了协调器,会进入到这来来
LS164_BYTE(11);
NwkAddr = NLME_GetShortAddr();
memcpy(MacAddr,NLME_GetExtAddr(),8);//需要#include为了将第2个参数返回的8个字节拷贝到MacAddr中。是c库的函数
//NLME_GetCoordShortAddr() 获得父节点网络短地址
//NLME_GetCoordExtAddr() 获得父节点MAC地址
}
我们想改变这类通信模式,按先前的经验来说肯定是去看GenericApp_DstAddr这个目标地址描述结构体。
在他的addrMode参数中,我们可以看到它所在的枚举类型
enum
{
AddrNotPresent = 0,
AddrGroup = 1,
Addr16Bit = 2,
Addr64Bit = 3,
AddrBroadcast = 15
};
我们已经用过很多个了。单播时我们用的是Addr16Bit(双字节地址)、广播时我们用的是AddrBroadcast、组播时我们用的是AddrGroup、这次MAC通信,我们将用到Addr64Bit。MAC地址是由8个字节组成的地址,8*8=64,所以MAC地址又可以表示位64比特地址。
GenericApp_DstAddr.addrMode = (afAddrMode_t)Addr64Bit;
uint8 DestMac[8]={0x0F,0x55,0x16,0x07,0x00,0x4B,0x12,0x00};//假设已知对方mac地址为0x00124B000716550F.将mac地址存到数组内
memcpy(GenericApp_DstAddr.addr.extAddr,DestMac,8);//将mac地址拷贝到目标地址参数中去
这样子设置就可以进行MAC地址通信了。当然这根单播雷同,只是单播要基于已知的网络地址。
有时两模块间距离很远,通过mac地址通信可能会失败。为了防止这种现象,通常以mac地址查询他的网络地址。
ZDP_NwkAddrReq(DestMac,ZDP_ADDR_REQTYPE_SINGLE,0,0);//让mac地址对应的模块把自己的网络短地址回复给发送端。收到后会将MAC地址存到地址管理器中
osal_start_timerEx(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,30);//之后再通过消息发送执行发送消息命令
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
https://b2b.baidu.com/s?fr=wwwt&q=%E7%BC%85%E7%94%B8%E7%BB%B4%E5%8A%A0%E6%96%AF%E4%B8%87%E4%B8%B0%E4%B8%BA%E5%95%A5%E3%80%90B2024%C2%B7CN%E6%AC%A2%E8%BF%8E%E6%82%A8%E3%80%91%E6%AD%A6%E5%A8%81%E7%A7%BB%E5%8A%A8%EF%BD%92%EF%BD%92%EF%BC%AC https://www.d1ev.com/search/ask?q=%E7%BC%85%E7%94%B8%E9%87%91%E6%BE%B3%E9%BE%99%E5%AE%A2%E6%9C%8D%E7%BD%91%E5%9D%80TL262.%EF%BC%A3%EF%BC%AF%EF%BC%AD%E8%BE%BD%E6%BA%90%E7%94%9F%E6%B4%BB%EF%BC%A1 https://m.suning.com/search/%E6%B5%B7%E5%8D%97%E4%B8%9C%E6%96%B9%E5%93%AA%E6%9C%89%E7%BD%91%E4%B8%8A%E5%B9%B3%E5%8F%B0%E7%BD%91%E5%9D%80B2024.%EF%BC%A3N%E4%B8%89%E4%BA%9A%E4%BC%81%E4%B8%9A%EF%BD%9E%EF%BD%8A/ http://search.fang.com/news/search.jsp?q=%CC%DA%C1%FA%B9%FA%BC%CA%C6%BD%CC%A8%CD%B6%D7%A2%D6%B1%D3%AA%BF%AA%BB%A7%3AB2024.CN%CB%C4%C6%BD%B5%E7%CC%A8%A3%D6%A3%B3 http://www.800pharm.com/shop/search.html?keyword=%E6%96%B0%E7%99%BE%E8%83%9C%E5%A8%B1%E4%B9%90%E9%9B%86%E5%9B%A2%E4%B8%9A%E5%8A%A1%E3%80%90TL262%C2%B7C%EF%BC%AFM%E3%80%91%E5%AE%81%E5%BE%B7%E4%BA%BA%E6%89%8D%E7%BD%91%EF%BD%88%EF%BC%85
学习了
蓝牙吗
不是6个字节码?
很详细,长知识了