[英]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.