位置导航: ESP8266库 / ESP8266WiFiSTA库 / 本页
说明
利用gatewayIP函数可以获取ESP8266模块的mac地址
语法
WiFi.macAddress(macAddr)
WiFi.macAddress()
简例:
a. 如果输入参数macAddr,那么ESP8266开发板的mac地址将会存储在macAddr中。macAddr必须是一个uint8_t类型的数组,这个数组含有6个元素。
1 2 3 4 5 6 7 |
if (WiFi.status() == WL_CONNECTED) { uint8_t macAddr[6]; WiFi.macAddress(macAddr); Serial.printf("用转存到数组的方式获取MAC地址: %02x:%02x:%02x:%02x:%02x:%02x\n", macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]); //MAC地址会储存在这个数组里面 } |
b.如下示例所示,直接调用WiFi.macAddress()不输入参数,ESP8266的mac地址将以字符串类型返回。
1 2 3 4 5 |
if (WiFi.status() == WL_CONNECTED) { Serial.printf("字符串获取MAC地址: %s\n", WiFi.macAddress().c_str()); //不输入参数直接调用可以直接打印出字符串 } |
参数
macAddr:此参数为可选参数。该参数为uint8_t类型的数组,这个数组含有6个元素。ESP8266的mac地址将会储存在这个数组中。
返回值
若输入参数则会返回储存了MAC地址的数组(uint8_t型)。若没有输入参数则会返回MAC地址字符串(string型)
示例程序
当您将WiFi连接信息修改后并且将本示例程序上传ESP8266开发板后,开发板随即会自动连接WiFi。WiFi连接成功后,您将通过串口监视器看到ESP8266模块的mac地址。在以下示例程序中,我们使用了两种macAddress函数调用方式来获取设备的IP地址。第一种是有参数的第二种是无参数的。这两种方式所获得的mac地址格式不同。有参数调用时,mac地址保存在数组macAddr中。无参数调用时,mac地址将以字符串形式返回。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
/********************************************************************** 项目名称/Project : 零基础入门学用物联网 程序名称/Program name : WiFi.macAddress()演示 团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com) 作者/Author : 小黑 日期/Date(YYYYMMDD) : 20200405 程序目的/Purpose : 此程序使用ESP8266WiFiSTA库来演示在无线终端模式下打印当前无线终端MAC地址 ----------------------------------------------------------------------- 本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。 该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页: http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/ ***********************************************************************/ #include <ESP8266WiFi.h> #define AP_ssid "TaichiMaker" //这里改成你的设备当前环境下要连接的接入点名字 #define password "xxxxxxxxxxx" //这里改成你的设备当前环境下要连接的接入点密码 int i = 0;//用来判定连接是否超时的累加量 void setup(void) { Serial.begin(9600); // 启动串口通讯,波特率设置为9600 Serial.println("开始连接"); //调用 WiFi.begin()函数,开始连接接入点 WiFi.begin(AP_ssid, password); Serial.print("正在连接到"); Serial.print(AP_ssid); //这里的循环用来判断是否连接成功的。连接过程中每隔500毫秒会检查一次是否连接成功,,并打一个点表示正在连接中 //连接成功后会给出提示,但是若60秒后还是没有连接上,则会提示超时 while (WiFi.status() != WL_CONNECTED) { i++; delay(500); Serial.print("."); if (i > 120) { //60秒后如果还是连接不上,就判定为连接超时 Serial.print("连接超时!请检查网络环境"); break; } } Serial.println("网络连接成功"); //这一部分用来输出连接网络的基本信息 Serial.println("500"); // 延时500毫秒 Serial.print("当前工作模式:"); // 告知用户设备当前工作模式 Serial.println(WiFi.getMode()); Serial.print("连接到的接入点名字:"); Serial.println(AP_ssid); // 告知用户建立的接入点WiFi名 Serial.print("连接到的接入点密码:"); Serial.println(password); // 告知用户建立的接入点WiFi密码 Serial.print("无线终端模式成功开启,网络连接成功"); if (WiFi.status() == WL_CONNECTED) { uint8_t macAddr[6]; // 建立保存mac地址的数组。用于以下语句 WiFi.macAddress(macAddr); Serial.printf("通过转存数组获取MAC地址: %02x:%02x:%02x:%02x:%02x:%02x\n", macAddr[0], macAddr[1], macAddr[2], macAddr[3], macAddr[4], macAddr[5]); // 无参数调用macAddress时,ESP8266的mac地址将以字符串形式返回 Serial.printf("字符串获取MAC地址: %s\n", WiFi.macAddress().c_str()); } } void loop() {} |
位置导航: ESP8266库 / ESP8266WiFiSTA库 / 本页