Zigbee学习日记(十二)MAC地址通信
goJhou 发布于2018-01 浏览:13691 回复:5
0
收藏

每块芯片在出场的时候都固化有一个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
个赞
共5条回复 最后由用户已被禁言回复于2022-04
#29用户已被禁言回复于2022-04

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

0
#7O国殇O回复于2021-07

学习了

0
#6O国殇O回复于2021-07

蓝牙吗

0
#5头头头pai回复于2021-06

不是6个字节码?

1
#3我还曾经的回复于2018-01

很详细,长知识了

0
TOP
切换版块