ESP32常用库之<WiFi.h>库详解

WiFi.CPP


WiFi.printDiag(Print& p)

输出网络设置信息到print接口(比如从串口输出)

参数:


@param p                              端口,如串口Serial

实例:


WiFi.printDiag(Serial);

WiFiAP.cpp


bool softAP(const char* ssid, const char* passphrase = NULL, int channel = 1, int ssid_hidden = 0, int max_connection = 4, bool ftm_responder = false);

设置一个接入点

参数:


    @param ssid                         指向SSID字符串的指针(最大63字节)。
    @param passphrase                   可选,默认 = NULL,用于WPA2加密的WIFI密码,最少8字节,开放WIFI可以用NULL。
    @param channel                      可选,默认 = 1,WIFI频道号码,1-13。
    @param ssid_hidden                  可选,默认 = 0,网络隐藏(0 = 广播SSID,1 = 隐藏SSID)。
    @param max_connection               可选,默认 = 4, 最大同时连接的客户端, 1 - 4。
    @ftm_responder                      可选,默认 = false,一种高速传输模式可以d在高带宽且低延迟的情况下与另一个 ESP32 设备进行通信。
    @return                             成功返回true,不成功返回false

实例:


char* ESP32_SSID = "ESP32";
char* ESP32_PASS = "12345678";
int ESP32_channel = 4;
int ESP32_SSID_HIDDEN = 0;
int ESP32_MAX_CONNECTION = 4;
bool ESP32_FTM_RESPONDER = true;
WiFi.softAP(ESP32_SSID, ESP32_PASS, ESP32_channel, ESP32_SSID_HIDDEN, ESP32_MAX_CONNECTION, ESP32_FTM_RESPONDER);


bool softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dhcp_lease_start = (uint32_t) 0);

配置接入点

参数:


    @param local_ip                配置AP的IP地址
    @param gateway                 配置AP的网关IP地址
    @param subnet                  配置AP的子网掩码
    @dhcp_lease_start              配置AP的DHCP租约开始
    @return                        成功返回true,失败返回false

实例:


IPAddress LOCAL_IP(10,0,250,0);                                    //注意分隔符为逗号(,),不是点号(.)
IPAddress GATEWAY(10,0,250,0);
IPAddress SUBNET(255,255,255,0);
IPAdress DHCP_LEASE_START(10,0,250,10);
WiFi.softAPConfig(LOCAL_IP, GATEWAY, SUBNET, DHCP_LEASE_START);


bool softAPdisconnect(bool wifioff = false);

断开网络连接(关闭AP)

参数:


@param wifioff                       可选,默认= false,是否关闭连接(是 = true,否 = false)
@return                              成功返回true,失败返回false

实例:


WiFi.softAPdisconnect(true);


uint8_t softAPgetStationNum();

获取连接到AP上的设备数量。

参数:


@return                            返回连接到AP上的设备数量


IPAddress softAPIP();

获取AP接口IP地址。

参数:


@return                              返回AP接口IP地址


IPAddress softAPBroadcastIP();

获取AP广播IP地址。

参数:


@return                                返回AP广播IP地址


IPAddress softAPNetworkID();

获取AP网络ID。

参数:


@return                                    返回AP网络ID


uint8_t softAPSubnetCIDR();

获取AP子网CIDR。

参数:


@return                                   返回AP子网CIDR


bool softAPenableIpV6();

在AP接口上开启IPv6

参数:


@return                                  成功返回true,失败返回false


IPv6Address softAPIPv6();

获取AP接口的IPv6地址

参数:


@return                               返回AP接口的IPv6地址


const char * softAPgetHostname();

获取AP接口的主机名

参数:


@return                                返回AP接口的主机名


bool softAPsetHostname(const char * hostname);

设置AP接口的主机名

参数:


@param hostname                    主机名
@return                            成功返回true,失败返回false


uint8_t* softAPmacAddress(uint8_t* mac);

获取AP接口的MAC地址

参数:


@param mac                               指向uint8_t数组的指针,长度为WL_MAC_ADDR_LENGTH
@return                                  返回uint8_t数组的指针


String softAPmacAddress(void);

获取AP接口的MAC地址

参数:


@return                                      返回MAC地址的字符串


String softAPSSID(void) const;

返回与网络关联的当前SSID


@retutn                                         返回SSID

WiFiClient.cpp


int connect(IPAddress ip, uint16_t port);

通过TCP协议连接网络服务器

参数:


@param ip                                  要连接的服务器地址
@param port                                要连的的服务器端口
@return                                    成功返回1,失败返回0


int connect(IPAddress ip, uint16_t port, int32_t timeout);

通过TCP协议连接网络服务器

参数:


@param ip                                  要连接的服务器地址
@param port                                要连的的服务器端口
@param timeout                             超时时间
@return                                    成功返回1,失败返回0


int connect(const char *host, uint16_t port);

通过TCP协议连接网络服务器

参数:


@param host                                  要连接的服务器网址
@param port                                  要连的的服务器端口
@return                                      成功返回1,失败返回0


int connect(const char *host, uint16_t port, int32_t timeout);

通过TCP协议连接网络服务器

参数:


@param host                           要连接的服务器网址
@param port                           要连的的服务器端口
@param timeout                        超时时间
@return                               成功返回1,失败返回0


size_t write(uint8_t data);

发送数据到已连接的服务器

参数:


@param data                          要发送的数据
@return                              发送的字节数


size_t write(const uint8_t *buf, size_t size);

发送数据到已连接的服务器

参数:


@param buf                             要发送的数据缓存指针
@param size                            数据的大小
@return                                发送的字节数


size_t write_P(PGM_P buf, size_t size);

发送数据到已连接的服务器

参数:


@param buf                             要发送的数据缓存指针
@param size                            数据的大小
@return                                发送的字节数


size_t write(Stream &stream);

发送数据以流的方式到已连接的服务器

参数:


@param stream                             要发送的数据缓存指针
@return                                   发送的字节数


int available();

服务器连接是否可用

参数:


@return                                     可用返回1,不可用返回0


int read();

读取服务器发送的数据

参数:


@return                                     可以收到数据返回1,不能收到数返回-1,


int read(uint8_t *buf, size_t size);

读取服务器的数据

参数:


@param buf                             保存收到的数据的指针
@param size                            读取的数据长度
@return                                返回收到的数据长度


int peek();
void flush();
void stop();
uint8_t connected();
virtual int fd() const;
int setSocketOption(int option, char* value, size_t len);
int setSocketOption(int level, int option, const void* value, size_t len);
int setOption(int option, int *value);
int getOption(int option, int *value);
int setTimeout(uint32_t seconds);
int setNoDelay(bool nodelay);
bool getNoDelay();
IPAddress remoteIP() const;
IPAddress remoteIP(int fd) const;
uint16_t remotePort() const;
uint16_t remotePort(int fd) const;
IPAddress localIP() const;
IPAddress localIP(int fd) const;
uint16_t localPort() const;
uint16_t localPort(int fd) const;

WiFiGeneric.cpp


wifi_event_id_t onEvent(WiFiEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
wifi_event_id_t onEvent(WiFiEventFuncCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
wifi_event_id_t onEvent(WiFiEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);

为WIFI事件设定回调函数

参数:


@param cbEvent                      回调函数
@param event                        事件过滤,ARDUINO_EVENT_MAX为所有事件,事件列表:
                                    ARDUINO_EVENT_WIFI_READY = 0,            WIFI准备完成
                                    ARDUINO_EVENT_WIFI_SCAN_DONE,            扫描完成事件
                                    ARDUINO_EVENT_WIFI_STA_START,            STA模式开启事件
                                    ARDUINO_EVENT_WIFI_STA_STOP,             STA模式停止事件
                                    ARDUINO_EVENT_WIFI_STA_CONNECTED,        STA连接成功事件
                                    ARDUINO_EVENT_WIFI_STA_DISCONNECTED,     STA连接断开事件
                                    ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE,  STA加密方式改变事件
                                    ARDUINO_EVENT_WIFI_STA_GOT_IP,           STA获取到IP事件
                                    ARDUINO_EVENT_WIFI_STA_GOT_IP6,          STA获取到IPv6事件
                                    ARDUINO_EVENT_WIFI_STA_LOST_IP,          STA失动IP事件
                                    ARDUINO_EVENT_WIFI_AP_START,             AP模式开启事件
                                    ARDUINO_EVENT_WIFI_AP_STOP,              AP模式停止事件
                                    ARDUINO_EVENT_WIFI_AP_STACONNECTED,      有设备连入事件
                                    ARDUINO_EVENT_WIFI_AP_STADISCONNECTED,   有设备断开事件
                                    ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED,     IP分配事件
                                    ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED,    
                                    ARDUINO_EVENT_WIFI_AP_GOT_IP6,           获取IPv6事件
                                    ARDUINO_EVENT_WIFI_FTM_REPORT,           FTM
                                    ARDUINO_EVENT_ETH_START,
                                    ARDUINO_EVENT_ETH_STOP,
                                    ARDUINO_EVENT_ETH_CONNECTED,
                                    ARDUINO_EVENT_ETH_DISCONNECTED,
                                    ARDUINO_EVENT_ETH_GOT_IP,
                                    ARDUINO_EVENT_ETH_GOT_IP6,
                                    ARDUINO_EVENT_WPS_ER_SUCCESS,
                                    ARDUINO_EVENT_WPS_ER_FAILED,
                                    ARDUINO_EVENT_WPS_ER_TIMEOUT,
                                    ARDUINO_EVENT_WPS_ER_PIN,
                                    ARDUINO_EVENT_WPS_ER_PBC_OVERLAP,
                                    ARDUINO_EVENT_SC_SCAN_DONE,
                                    ARDUINO_EVENT_SC_FOUND_CHANNEL,
                                    ARDUINO_EVENT_SC_GOT_SSID_PSWD,
                                    ARDUINO_EVENT_SC_SEND_ACK_DONE,
                                    ARDUINO_EVENT_PROV_INIT,
                                    ARDUINO_EVENT_PROV_DEINIT,
                                    ARDUINO_EVENT_PROV_START,
                                    ARDUINO_EVENT_PROV_END,
                                    ARDUINO_EVENT_PROV_CRED_RECV,
                                    ARDUINO_EVENT_PROV_CRED_FAIL,
                                    ARDUINO_EVENT_PROV_CRED_SUCCESS,
                                    ARDUINO_EVENT_MAX
@return                            返回事件ID


void removeEvent(WiFiEventCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
void removeEvent(WiFiEventSysCb cbEvent, arduino_event_id_t event = ARDUINO_EVENT_MAX);
void removeEvent(wifi_event_id_t id);

删除事件处理程序



static int getStatusBits();

获取状态位



static int waitStatusBits(int bits, uint32_t timeout_ms);

等待状态位



int32_t channel(void);

获取频道ID号



void persistent(bool persistent);

在SDK flash区存储WiFi配置



void enableLongRange(bool enable);

开启WiFi远程模式



static bool mode(wifi_mode_t);

设置WIFI模式

参数:


@param wifi_mode_t           WIFI模式,模式列表:
        WIFI_OFF             不作定义
        WIFI_STA             定义为STA模式,相当于无线终端,不接受无线的接入
        WIFI_AP              定义为AP模式,提供无线接入服务,允许其它设备通过WIFI接入
        WIFI_AP_STA          定义为STA和AP共存模式

@return                     成功返回1,失败返回0


static wifi_mode_t getMode();

获取WIFI模式



bool enableSTA(bool enable);

开启STA模式



bool enableAP(bool enable);

开启AP模式



bool setSleep(bool enabled);

设置休眠(仅STA)



bool setSleep(wifi_ps_type_t sleepType);

设置休眠(仅STA)



wifi_ps_type_t getSleep();

获取休眠模式



bool setTxPower(wifi_power_t power);

设置TX功率



wifi_power_t getTxPower();

获取TX功率



bool initiateFTM(uint8_t frm_count=16, uint16_t burst_period=2, uint8_t channel=1, const uint8_t * mac=NULL);

启动FTM



static bool setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2, wifi_rx_ant_t rx_mode, wifi_tx_ant_t tx_mode);

设置双天线



static const char * getHostname();

获取主机名



static bool setHostname(const char * hostname);

设置主机名



static void useStaticBuffers(bool bufferMode);
static bool useStaticBuffers();

使用静态缓冲



static int hostByName(const char *aHostname, IPAddress &aResult);

将给定的主机名解析为一个IP地址。如果传递的主机名是一个IP地址,它将被解析为IPAddress结构。



static IPAddress calculateNetworkID(IPAddress ip, IPAddress subnet);

计算网络IP地址



static IPAddress calculateBroadcast(IPAddress ip, IPAddress subnet);

计算广播IP地址



static uint8_t calculateSubnetCIDR(IPAddress subnetMask);

计算子网掩码IP地址


WiFiMulti.cpp


bool addAP(const char* ssid, const char *passphrase = NULL);

设置新的WIFI接口,可以设置多个SSID和密码



uint8_t run(uint32_t connectTimeout=5000);

连接所有addAP函数所设定的WIFI


WiFiScan.cpp


int16_t scanNetworks(bool async = false, bool show_hidden = false, bool passive = false, uint32_t max_ms_per_chan = 300, uint8_t channel = 0, const char * ssid=nullptr, const uint8_t * bssid=nullptr);

开始扫描WIFI

参数:


@param async                可选,默认 = false,是否开启异步扫描
@param show_hidden          可选,默认 = false,是否扫描隐藏WIFI
@param passive              可选,默认 = false,是否开启被动模式
@param max_ms_per_chan      可选,默认 = 300,超时时间
@param channel              可选,默认 = 0,扫描指定频道号的WIFI
@param ssid                 可选,默认 = nullptr,扫描指定SSID的WIFI
@param bssid                可选,默认 = nullptr,扫描指定MAC地址的WIFI
@return                     返回扫描到的WIFI数量


int16_t scanComplete();

获取扫描状态

参数:


@return                  如果未开启扫描返回-2,如果正在扫描中返回-1,如果扫描完成返回扫描到的WIFI数量


void scanDelete();

删除最后扫描到的WIFI信息



bool getNetworkInfo(uint8_t networkItem, String &ssid, uint8_t &encryptionType, int32_t &RSSI, uint8_t* &BSSID, int32_t &channel);

获取网络信息



String SSID(uint8_t networkItem);

获取当前连接WIFI的SSID



wifi_auth_mode_t encryptionType(uint8_t networkItem);

获取WIFI的加密方式



int32_t RSSI(uint8_t networkItem);

获取WIFI的信号强度



uint8_t * BSSID(uint8_t networkItem);

获取WIFI的MAC地址



String BSSIDstr(uint8_t networkItem);

获取WIFI的MAC地址



int32_t channel(uint8_t networkItem);

获取WIFI的频道ID



static void * getScanInfoByIndex(int i);

指定一个索引来设定从哪个网络项目获取信息


WiFiServer.cpp


void listenOnLocalhost();

监听本地主机



WiFiClient available();

WIFI客户端是否可用



WiFiClient accept();

WIFI客户端是否可用



void begin(uint16_t port=0);
void begin(uint16_t port, int reuse_enable);

启动服务端口



void setNoDelay(bool nodelay);

设置无延迟



bool getNoDelay();

获取延时状态



bool hasClient();

检查是否有客户端连接到服务器



void end();
void close();
void stop();

关闭或停止服务器



int setTimeout(uint32_t seconds);

设置超时时间


WiFiSTA.cpp


wl_status_t begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity=NULL, const char* wpa2_username=NULL, const char *wpa2_password=NULL, const char* ca_pem=NULL, const char* client_crt=NULL, const char* client_key=NULL, int32_t channel=0, const uint8_t* bssid=0, bool connect=true);
wl_status_t begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
wl_status_t begin();

连接WIFI



bool config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1 = (uint32_t)0x00000000, IPAddress dns2 = (uint32_t)0x00000000);

配置网络



bool reconnect();

强制断开连接,然后开始重新连接到AP



bool disconnect(bool wifioff = false, bool eraseap = false);

强制断开连接



bool isConnected();

获取连接状态



bool setAutoConnect(bool autoConnect);

设置自动连接



bool getAutoConnect();

获取是否自动连接状态



bool setAutoReconnect(bool autoReconnect);

设置自动重新连接



bool getAutoReconnect();

获取是否自动重新连接状态



uint8_t waitForConnectResult(unsigned long timeoutLength = 60000);

等待连接结果



void setMinSecurity(wifi_auth_mode_t minSecurity);// Default is WIFI_AUTH_WPA2_PSK

设置最小安全性



void setScanMethod(wifi_scan_method_t scanMethod);// Default is WIFI_FAST_SCAN

设置扫描方法



void setSortMethod(wifi_sort_method_t sortMethod);// Default is WIFI_CONNECT_AP_BY_SIGNAL

设置为集合排序方法



IPAddress localIP();

获取本地IP地址



uint8_t * macAddress(uint8_t* mac);

获取MAC地址



String macAddress();

获取MAC地址



IPAddress subnetMask();

获取子网掩码



IPAddress gatewayIP();

获取网关IP地址



IPAddress dnsIP(uint8_t dns_no = 0);

获取DNS地址



IPAddress broadcastIP();

获取广播IP地址



IPAddress networkID();

获取网络ID



uint8_t subnetCIDR();

获取子网掩码的CIDR码



bool enableIpV6();

开启IPv6



IPv6Address localIPv6();

获取IPv6地址



static wl_status_t status();

获取网络状态



String SSID() const;

获取SSID



String psk() const;

获取PSK码



uint8_t * BSSID();

获取BSSID



String BSSIDstr();

获取BSSID



int8_t RSSI();

获取RSSI



bool beginSmartConfig(smartconfig_type_t type = SC_TYPE_ESPTOUCH, char* crypt_key = NULL);

开始智能配置



bool stopSmartConfig();

停止智能配置



bool smartConfigDone();

获取智能配置是否完成状态


相关推荐

  1. ESP32WiFi.h>详解

    2023-12-30 15:26:04       34 阅读
  2. golang-go-figure

    2023-12-30 15:26:04       7 阅读
  3. python

    2023-12-30 15:26:04       11 阅读
  4. Chrome base 详解:工具类和

    2023-12-30 15:26:04       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 15:26:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 15:26:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 15:26:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 15:26:04       20 阅读

热门阅读

  1. linux iptables简介

    2023-12-30 15:26:04       38 阅读
  2. linux C 线程池

    2023-12-30 15:26:04       35 阅读
  3. 在 Python 中跳出嵌套循环的 5 种方法

    2023-12-30 15:26:04       36 阅读
  4. 椋鸟C语言笔记#29:联合体、枚举类型

    2023-12-30 15:26:04       39 阅读
  5. 线上问题复盘记录

    2023-12-30 15:26:04       36 阅读
  6. 如何使用人工智能算法解决实际业务问题?

    2023-12-30 15:26:04       34 阅读
  7. 在ubuntu上挂载QNX 镜像

    2023-12-30 15:26:04       41 阅读
  8. AJAX:整理1: 了解AJAX的相关知识

    2023-12-30 15:26:04       37 阅读