已知網路位址查詢mac位址
1、實驗內容: 協調器上電後建立網路,路由器自動加入網路。然後路由器呼叫呼叫相關的api函式獲得某一網路號節點的mac位址,然後通過串列埠將其傳送到pc端的串列埠除錯助手
2、知識補充:獲得某一網路號節點的mac位址的api函式。
zdp_ieeeaddrreq(uint16 shortaddr,byte reqtype,byte startindex,byte securtyenable);除了shortaddr這個引數外,其他均填0即可
3、程式設計
協調器程式設計(同1-11 實驗9 網路管理實驗1 獲取自身的和父節點網路位址、mac位址 的coordinator.c。
路由器程式設計(在同1-11 實驗9 網路管理實驗1
獲取自身的和父節點網路位址、mac位址 的enddevice.c的基礎上新增、修改**
)。如下:
[cpp]view plain
copy
#include "osal.h"
#include "af.h"
#include "zdobject.h"
#include "zdprofile.h"
#include
#include "coordinator.h"
#include "debugtrace.h"
#if !defined(win32)
#include "onboard.h"
#endif
#include "hal_lcd.h"
#include "hal_led.h"
#include "hal_key.h"
#include "hal_uart.h"
#define show_info_event 0x01
; //初始化埠描述符
; void showinfo(void);
void to_string(uint8* dest,char* src,uint8 length);
//增加這個函式的目的是對zdo_cb_msg訊息響應
typedef
struct rftxbuf
rftx;
//任務初始化函式
//訊息處理函式
break;
default:
break;
} osal_msg_deallocate((uint8*)msgpkt);
} return (events^sys_event_msg);
} if(events&show_info_event)
return 0;
} ;
switch(inmsg->clusterid)
osal_mem_free(prsp);//呼叫該函式釋放資料報緩衝區
}
} break;
} }
void showinfo(void)
; uint16 nwk;
nwk=nlme_getshortaddr();
to_string(rftx.mynwk,(uint8*)&nwk,2); //uint8*4 uint16=uint8*2
to_string(rftx.mymac,nlme_getextaddr(),8);//uint8*16 byte*8
nwk=nlme_getcoordshortaddr();
to_string(rftx.pnwk,(uint8*)&nwk,2);
nlme_getcoordextaddr(buf);
to_string(rftx.pmac,buf,8);
haluartwrite(0,"nwk:",osal_strlen("nwk:"));
haluartwrite(0,rftx.mynwk,4);
haluartwrite(0," mac:",osal_strlen(" mac:"));
haluartwrite(0,rftx.mymac,16);
haluartwrite(0," p-nwk:",osal_strlen(" p-nwk:"));
haluartwrite(0,rftx.pnwk,4);
haluartwrite(0," p-mac:",osal_strlen(" p-mac:"));
haluartwrite(0,rftx.pmac,16);
haluartwrite(0,changline,2);
} void to_string(uint8 *dest,char* src,uint8 length)//二進位制書轉化為十六進製制數
} 新增**有:
1、呼叫zdp_ieeeaddrrsp()函式傳送位址請求。
[cpp]view plain
copy
zdp_ieeeaddrreq(0x0000,0,0,0);//請求協調器ieee位址
2、等待協調器傳送自身的ieee位址(協議棧自動完成,無需新增**)
3、新增zdo_cb_msg訊息相應函式,並呼叫zdo_parseaddrrsp()函式對資料報進行解析得到所需的ieee位址。
[cpp]view plain
copy
新增zdo_cb_msg訊息相應函式
[cpp]view plain
copy
while(msgpkt)
; switch(inmsg->clusterid)
osal_mem_free(prsp);//呼叫該函式釋放資料報緩衝區
}
} break;
} }
上面的[cpp]view plain
copy
zdo_nwkieeeaddrresp_t* prsp=zdo_parseaddrrsp(inmsg);//對接受到的資料報進行解析,解析完後prsp指向資料報的存放位址
該函式的返回值型別為
zdo_nwkieeeaddrresp_t,該結構體如下:
// filename: zdobject.h
typedef struct
zdo_nwkieeeaddrresp_t;
4、實驗結果
網路位址與主機位址
小竅門 子網的計算 在思科網路技術學院ccna教學和考試當中,不少同學在進行ip位址規劃時總是很頭疼子網和掩碼的計算。現在給大家乙個小竅門,可以順利的解決這個問題。首先,我們看乙個ccna考試中常見的題型 乙個主機的ip位址是202.112.14.137,掩碼是255.255.255.224,要求計...
IEEE位址和網路位址
zigbee2007協議棧中提到64位ieee位址 長位址 和16位網路位址 短位址 ieee位址是64位,在裝置進入網路之前就分配好了的,應該在全球是唯一的,而網路位址是在網路建立後,裝置加入網路時,它的父節點給它分配的,在裝置通訊時,首先由ieee位址找到裝置的網路位址,然後根據網路位址實現裝置...
網路位址劃分
網路位址可以分為網路號和主機號,主機號又可以分為子網號和子網主機號。ip位址分為五類,a類保留給 機構,b類分配給中等規模的公司,c類分配給任何需要的人,d類用於組播,e類用於實驗,各類可容納的位址數目不同。1 特徵 a 0 b 10xx c 110x d 1110 e 11110 2 各類位址的劃...