繁体   English   中英

ESP32 无法识别任何设备已连接到其接入点

[英]ESP32 not recognising that any device is connected to its access point

我已经让我的 ESP32 创建一个无线接入点。 然而,无论我尝试连接什么设备(iPhone 6s、iPhone 8、Windows 桌面),它在任何设备上都显示良好,ESP32 只是说没有连接设备。 我的代码是:

#include <WiFi.h>
#include <WiFiClient.h>
#include <WiFiAP.h>

const char *ssid = "testAP";
const char *password = "0000000000";

WiFiServer server(48899);


void setup() {

  Serial.begin(115200);
  delay(5000);
  Serial.println();
  Serial.println("Configuring access point...");

  WiFi.softAP(ssid, password);
  IPAddress myIP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(myIP);
  server.begin();

  Serial.println("Server started");
}

void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {
    Serial.println(client);// if you get a client,
    Serial.println("New Client.");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        //Serial.write(c);                    // print it out the serial monitor
      }
    }
  }
  // close the connection:
  //client.stop();
  Serial.println(client); //this will print "0" no matter how many clients are connected

  }

现在,它会一遍又一遍地打印“0”,因为那是连接的客户端数量。 如果我连接一个设备,它应该增加到 1 但它没有。

仅在详细 output 上默认安装 ESP32 板(来自板管理器),我得到的“错误”是:

dhcps: send_offer>>udp_sendto 结果 0

谷歌搜索这带来了很多问题,主要提到这个github 问题。 该问题早在 2019 年 1 月 7 日就已打开。最近的回复是几周前。 直到今天,还没有发布修复程序。 很多人说从 github(不是板管理器)更新到最新的 ESP32 版本会起作用,所以我试了一下。 我从板管理器中删除了一个并安装了最新的 github 版本。 即使在详细的 output 上,它也不再给我“dhcps:send_offer>>udp_sendto result 0”消息,但它仍然无法识别任何设备已连接。

在我的代码中,我尝试使用 Arduino 库版本: #include <Wifi.h>以及 ESP 库版本: #include "Wifi.h"那里也没有运气。

谁能指出我如何解决这个问题的正确方向?

这不是它的工作原理。 您的程序运行正常; 你的期望是错误的。

WiFiServer的名字很糟糕。 它与连接到softAP创建的 wifi 网络的客户端无关。 相反,它会创建一个服务器,侦听您在创建 object 时提供的 TCP 端口号(在本例中为 48899)。 它真的应该被称为TCPServer ,但遗憾的是,它不是,我们都只能忍受它。

如果我连接一个设备,它应该增加到 1 但它没有。

这是不正确的。 如果您将设备连接到 wifi 网络,则与连接到WiFiServer

为了使您的代码正常工作,连接到您的 ESP32 提供的 wifi 网络的每个设备必须在其上运行一个程序,该程序打开一个 TCP 连接到 ESP32 上的端口 48899。 否则循环将永远不会看到可用的客户端,因为将没有可用的客户端。

如果您想知道是否有任何设备连接到 WiFi 接入点,您可以使用WiFi.softAPgetStationNum() - 它会返回当前连接的设备数量。

例如,

Serial.println(WiFi.softAPgetStationNum());

将打印连接了多少设备。

暂无
暂无

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

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