【发布时间】:2020-04-01 18:50:29
【问题描述】:
我正在尝试将节点 mcu 设置为具有静态 IP 的接入点。我能够使用 tcp 套接字连接到 AP 并接收来自它的响应。
但是,如果客户端在一定时间内没有连接到它,节点 MCU 根本不会响应。
如果 1 小时作为空闲时间过去,则节点 mcu 允许客户端连接到 AP,但它不响应查询。
这是我的代码。
#include <ESP8266WiFi.h>
WiFiServer server(8080);
IPAddress IP(192,168,4,15);
IPAddress mask = (255, 255, 255, 0);
//byte ledPin = 16;
byte ledPin = 2;
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_AP);
WiFi.softAP("PRAKASH", "1234567890");
WiFi.softAPConfig(IP, IP, mask);
server.begin();
pinMode(ledPin, OUTPUT);
Serial.println();
Serial.println("Server started.");
Serial.print("IP: "); Serial.println(WiFi.softAPIP());
Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress());
}
void loop(void) {
WiFiClient client = server.available();
if (client) {
Serial.println("Client connected.");
while (client.connected()) {
if (client.available()) {
String request = client.readStringUntil('\r');
Serial.println("____NEW_COMMAND_____");
if (request == "LED_ON") {
digitalWrite(ledPin, LOW);
Serial.println("LED is now on.");
} else if (request == "LED_OFF") {
digitalWrite(ledPin, HIGH);
Serial.println("LED is now off.");
} else {
Serial.println("Invalid command:");
Serial.println(request);
}
Serial.println("From the station: " + request);
client.flush();
Serial.print("Byte sent to the station: ");
Serial.println(client.println(request + "ca" + "\r"));
Serial.println("*____COMMAND_COMPLETED____*");
}
}
Serial.println("Client disconnected.");
client.stop();
}
}
我正在使用 Arduino ide 来刷代码。
Arduino 版本:1.8.10 板:节点 MCU 1.0 12E 上传速度:115200 CPU频率:80Mhz (董事会经理) Esp8266 : 2.6.2
在空闲期之后总结一下,节点 mcu 让我使用 tcp 套接字进行连接,但它不会关闭/打开 LED,也不会发回任何响应。如果我重置节点 mcu 然后它会再次工作。
我无法弄清楚为什么会这样。任何帮助表示赞赏。
【问题讨论】:
-
只允许连接AP或者8080端口的TCP连接也成功?它是否打印“客户端已连接”?
-
是的。它也响应了一段时间。后来它确实允许使用 tcp 套接字进行连接,但没有响应。
-
我询问了它没有响应时的状态。那么它会打印“客户端已连接”吗?
-
我没有测试它。我今天会这样做。
标签: esp8266 nodemcu arduino-esp8266 esp8266wifi