繁体   English   中英

扫描网络时是否可以获取mac地址? ESP32

[英]Is it possible to get mac addresses when scanning networks? ESP32

我需要获取 .networks 的 RSSI 和它们的 MAC 地址到 IPS(室内 position 系统)程序。 我能够使用示例代码获取 ssid、信号强度和安全性,但不能获取 mac 地址。 我尝试使用它,但它不起作用:

void loop() {
  int n = WiFi.scanNetworks();

  if(n == 0){
    Serial.println("no networks found");
  }
  else{
      for (int i = 0; i < n; ++i) {
        Serial.print(i + 1);
        Serial.print(": ");
        Serial.print(WiFi.SSID(i));
        Serial.print(" (");
        Serial.print(WiFi.RSSI(i));
        Serial.print(")");
        Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
        Serial.println(WiFi.macAddress(i));
        delay(10);
      }
  }
  delay(10000);
}

@Tarmo 的回答是正确的,但 Arduino 内核确实提供了一个更简单的接口来获取 AP 的接入点,而无需直接调用 ESP-IDF 函数。

使用BSSID方法获取基站wifi电台的MAC地址。

您可以调用BSSID()方法获取指向六字节 MAC 地址的指针,或BSSIDstr()获取字符串形式的 MAC 地址。

例如:

        Serial.print(WiFi.BSSIDstr(i));

将 MAC 地址打印为字符串。

当您遇到此类问题时,参考库的源代码可以帮助您找到比文档和教程更多的信息。

也许 Arduino 框架不会轻易放弃这些信息,但底层 ESP IDF 框架肯定会。 AP-s MAC 称为 BSSID。 改编这个例子 scan.c

#include "esp_wifi.h"

#define DEFAULT_SCAN_LIST_SIZE 10

void wifi_scan(void) {
    uint16_t ap_count = 0;
    uint16_t number = DEFAULT_SCAN_LIST_SIZE;
    wifi_ap_record_t ap_info[DEFAULT_SCAN_LIST_SIZE];

    esp_wifi_scan_start(NULL, true);
    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&number, ap_info));
    ESP_ERROR_CHECK(esp_wifi_scan_get_ap_num(&ap_count));
    printf("Total APs scanned = %u", ap_count);
    for (int i = 0; (i < DEFAULT_SCAN_LIST_SIZE) && (i < ap_count); i++) {
        printf("SSID \t\t%s", ap_info[i].ssid);
        printf("RSSI \t\t%d", ap_info[i].rssi);
        printf("BSSID \t\t%02X%02X%02X%02X%02X%02X\n", 
            ap_info[i].bssid[0], ap_info[i].bssid[1], ap_info[i].bssid[2], 
            ap_info[i].bssid[3], ap_info[i].bssid[4], ap_info[i].bssid[5]);
    }
}

查看struct wifi_ap_record_t的官方文档,了解还有哪些其他信息可用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM