Ezt az osztályt az Arduino WiFi könyvtárban a scanNetworks() függvény képviseli. Az esp8266 / Arduino mag fejlesztői további módszerekkel és tulajdonságokkal bővítik ezt a funkciót.
Ennek az osztálynak a dokumentációja két részre oszlik. Először az elérhető hálózatok keresésének funkcióit fedi le. A második leírja, hogy milyen információkat gyűjtenek a szkennelési folyamat során, és hogyan lehet hozzáférni.
A hálózatok keresése több száz ezredmásodpercig tart. Ez megtehető egyetlen futtatással, amikor elindítjuk a vizsgálati folyamatot, várunk a befejezésre, és eredményt biztosítunk – mindezt egyetlen funkcióval. Egy másik lehetőség az, hogy ezt lépésekre bontja, mindegyiket külön funkció végzi. Így a szkennelés közben más feladatokat is végrehajthatunk. Ezt aszinkron szkennelésnek hívják. Az alábbiakban mindkét szkennelési módszert dokumentáljuk.
Keressen elérhető Wi-Fi hálózatokat egy futással, és adja vissza a felfedezett hálózatok számát.
WiFi.scanNetworks()
Ez a funkció többarcú, amely két opcionális paramétert is elfogad az aszinkron szkennelés kiterjesztett funkcionalitásának biztosítására, valamint a rejtett hálózatok keresésére.
WiFi.scanNetworks(async, show_hidden)
Mindkét függvényparaméter boolean
típusú. Ezek biztosítják a folyamatos funkcionalitást:
asysnc
- ha true
-ra van állítva, akkor a keresés a háttérben indul, és a funkció az eredmény megvárása nélkül kilép. Az eredmény ellenőrzéséhez használja az élkülönített scanComplete
függvényt, amelyet alább ismertetünk.show_hidden
– állítsa true
-ra, hogy a rejtett SSID-vel rendelkező hálózatok között is keressen.Ellenőrzi az aszinkron szkennelés eredményét.
WiFi.scanComplete()
A vizsgálat befejezésekor a funkció visszaadja a felfedezett hálózatok számát.
Ha a vizsgálat nem történik meg, akkor a visszaadott érték < 0, az alábbiak szerint:
-1
: A vizsgálat még folyamatban-2
: A vizsgálat nem indult elTörli a legutóbbi szkennelés eredményét a memóriából.
WiFi.scanDelete()
Indítsa el az elérhető Wi-Fi hálózatok keresését. Ha végzett, hajtson végre egy másik funkciót.
WiFi.scanNetworksAsync(onComplete, show_hidden)
Funkcióparaméterek:
onComplete
– az eseménykezelő, amely akkor fut le, amikor a vizsgálat befejeződöttshow_hidden
- opcionális boolean
paraméter, állítsa true
-ra a rejtett hálózatok kereséséhez.Példakód:
#include <ESP8266WiFi.h>
void prinScanResult(int networksFound)
{
Serial.printf("%d network(s) found\n", networksFound);
for (int i = 0; i < networksFound; i++)
{
Serial.printf("%d: %s, Ch:%d (%ddBm) %s\n", i + 1, WiFi.SSID(i).c_str(), WiFi.channel(i),
WiFi.RSSI(i), WiFi.encryptionType(i) == ENC_TYPE_NONE ? "open" : "");
}
}
void setup()
{
Serial.begin(115200);
Serial.println();
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
WiFi.scanNetworksAsync(prinScanResult);
}
void loop() {}
A példa kimenete:
5 network(s) found
1: Tech_D005107, Ch:6 (-72dBm)
2: HP-Print-A2-Photosmart 7520, Ch:6 (-79dBm)
3: ESP_0B09E3, Ch:9 (-89dBm) open
4: Hack-4-fun-net, Ch:9 (-91dBm)
5: UPC Wi-Free, Ch:11 (-79dBm)
Az alábbi funkciók hozzáférést biztosítanak a szkennelés eredményéhez. Nem számít, hogy a szkennelés szinkron vagy aszinkron módban történt, a vizsgálati eredmények ugyanazon API használatával érhetők el.
Az egyes eredmények egy "networkItem" megadásával érhetők el, amely azonosítja a felfedezett hálózat indexét (nullától indul).
Adja vissza a vizsgálat során felfedezett hálózat SSID-jét.
WiFi.SSID(networkItem)
A visszaadott SSID String
típusú. A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
Visszaadja a vizsgálat során észlelt hálózat titkosítási típusát.
WiFi.encryptionType(networkItem)
A függvény egy olyan számot ad vissza, amely a következőképpen kódolja a titkosítási típust:
ENC_TYPE_WEP
- WEPENC_TYPE_TKIP
- WPA / PSKENC_TYPE_CCMP
- WPA2 / PSKENC_TYPE_NONE
- nyílt hálózatENC_TYPE_AUTO
- WPA / WPA2 / PSKA networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
Visszaadja a vizsgálat során észlelt hálózat RSSI-jét (Received Signal Strength Indication).
WiFi.RSSI(networkItem)
A visszaküldött RSSI int32_t
típusú. A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
Adja vissza a BSSID-t (Basic Service Set Identification), amely a vizsgálat során felfedezett hálózat MAC-címének másik neve.
WiFi.BSSID(networkItem)
A függvény egy mutatót ad vissza arra a memóriahelyre (6 elemből álló uint8_t
tömb), ahol a BSSID mentésre került.
Ha nem szereti a mutatókat, akkor ennek a függvénynek van egy másik verziója, amely egy String
-et ad vissza.
WiFi.BSSIDstr(networkItem)
A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
Visszaadja a keresés során felfedezett hálózat csatornáját.
WiFi.channel(networkItem)
A visszaadott csatorna int32_t
típusú. A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
A visszaadott információ, hogy a vizsgálat során felfedezett hálózat rejtett vagy sem.
WiFi.isHidden(networkItem)
A visszaadott érték, ha a boolean
típusú, és a true
azt jelenti, hogy a hálózat rejtett. A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe.
A fenti fejezetben tárgyalt összes hálózati információ visszaküldése egyetlen függvényhívásban.
WiFi.getNetworkInfo(networkItem, &ssid, &encryptionType, &RSSI, *&BSSID, &channel, &isHidden)
A networkItem
a vizsgálat során felfedezett hálózat nullától induló indexe. Az összes többi bemeneti paraméter hivatkozással kerül átadásra a függvénynek. Ezért frissítésre kerülnek az adott networkItem
tényleges értékeivel. Maga a függvény true
vagy false
boolean
értéket ad vissza annak megerősítésére, hogy az információ visszakeresése sikeres volt-e vagy sem.
Példakód:
int n = WiFi.scanNetworks(false, true);
String ssid;
uint8_t encryptionType;
int32_t RSSI;
uint8_t* BSSID;
int32_t channel;
bool isHidden;
for (int i = 0; i < n; i++)
{
WiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden);
Serial.printf("%d: %s, Ch:%d (%ddBm) %s %s\n", i + 1, ssid.c_str(), channel, RSSI,
encryptionType == ENC_TYPE_NONE ? "open" : "", isHidden ? "hidden" : "");
}
A példa kimenete:
6 network(s) found
1: Tech_D005107, Ch:6 (-72dBm)
2: HP-Print-A2-Photosmart 7520, Ch:6 (-79dBm)
3: ESP_0B09E3, Ch:9 (-89dBm) open
4: Hack-4-fun-net, Ch:9 (-91dBm)
5: , Ch:11 (-77dBm) hidden
6: UPC Wi-Free, Ch:11 (-79dBm)
A kódmintákért kérjük, olvassa el a külön szakaszt, amely kifejezetten a szkennelési osztályra vonatkozó példákat tartalmaza.