前言
最近在基于騰訊云的MQTT測試實驗中,發(fā)現(xiàn)需要mac設(shè)備的地址。本文介紹如何通過接口獲取設(shè)備mac的地址。
一、基礎(chǔ)知識
1.mac地址介紹:
mac地址長度為48位(6字節(jié)),通常表示為12位十六進(jìn)制數(shù),如:00-16-EA-AE-3C-40是一個mac地址, 其中前 6 位十六進(jìn)制數(shù)字 00-16-EA 代表網(wǎng)絡(luò)硬件制造商的編號電腦網(wǎng)卡更改mac地址軟件,由 IEEE(電氣和電子工程師協(xié)會)分配,后 6 位十六進(jìn)制數(shù)字 AE-3C-40 代表序列號由制造商制造的網(wǎng)絡(luò)產(chǎn)品(如網(wǎng)卡)。只要你不改變你的mac地址,這個mac地址在世界上是獨一無二的。形象地說,mac地址就像身份證上的身份證號碼,是唯一的。
因此,目前主流的云平臺都要求在設(shè)備連接云端時,將mac地址作為唯一標(biāo)識傳輸?shù)皆品?wù)器電腦網(wǎng)卡更改mac地址軟件,云端永遠(yuǎn)不會使用mac 地址來識別不同設(shè)備的操作。
2.獲取mac地址的API
rt_err_t rt_wlan_get_mac(rt_uint8_t mac[6])
{
rt_err_t err = RT_EOK;
if (_sta_is_null())
{
return -RT_EIO;
}
MGNT_LOCK();
err = rt_wlan_dev_get_mac(STA_DEVICE(), mac);
if (err != RT_EOK)
{
RT_WLAN_LOG_E("get sta mac addr fail");
MGNT_UNLOCK();
return err;
}
RT_WLAN_LOG_D("%s is run mac: x:x:x:x:x:x",
__FUNCTION__, mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
MGNT_UNLOCK();
return err;
}
二、使用示例
1.項目建設(shè)
在bsp/w601//1-base文件夾下創(chuàng)建3個文件夾,然后創(chuàng)建main.c,內(nèi)容如下:
#include
#include
int main(void)
{
rt_err_t ret = RT_EOK;
rt_uint8_t mac[10];
rt_wlan_get_mac(mac);
rt_kprintf("mac is, x:x:x:x:x:x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
return ret;
}
三、下載運行
在ENV控制臺輸入scons命令生成build/Bin目錄下的.FLS,
燒錄運行后,串口調(diào)試工具顯示如下信息:
可以看出設(shè)備的mac地址為:70:50:01:20:00:00