【发布时间】:2018-03-22 18:19:16
【问题描述】:
我的代码非常简单,我使用我的 esp8266 作为服务器,它应该等待客户端连接从中读取数据并通过串口将其传输到 Arduino。 我还使用 mDNS 来检测网络内 ESP8266 的 IP 地址,代码如下:
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <EEPROM.h>
.....
WiFiServer server(80);
void setup() {
Serial.begin(115200);
delay(10);
if (!MDNS.begin("Device 1")) { //
while (1) { delay(1000); }
}
MDNS.addService("SmartDimmerx2", "tcp", 80);
WiFi.mode(WIFI_STA);
delay(4000);
// Check if WiFi is already connected and if not,
if (WiFi.status() != WL_CONNECTED){
Serial.println("Disconnected");
ConnecStat_Toarduino = false;
}
else {
Serial.println("Connected");
ConnecStat_Toarduino = true;
}
// Start the server
server.begin();
}
void loop() {
MDNS.update();
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Disconnected");
ConnecStat_Toarduino = false;
delay(100);
}
else if ((WiFi.status() == WL_CONNECTED) && (ConnecStat_Toarduino = false)) {
Serial.println("Connected");
ConnecStat_Toarduino = true;
}
if (Serial.available() > 0) {
String incomingChars = Serial.readStringUntil('\n');
if(incomingChars.indexOf("WPS") != -1) {
WPS_fnct();
}
}
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
time_cnx = millis();
return;
}
// Wait until the client sends some data
while (!client.available()) {
if ((millis() - time_cnx)>2000)
{return;}
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
client.flush();
client.stop();
// Match the request
int val;
if (req.indexOf("V=") != -1)
{
Serial.print(req.substring(2,5));
Serial.println(req.substring(7,11));
//Serial.println(char(req.substring(8,10).toInt()));
}
else {
client.stop();
return;
}
}
我使用我的手机应用程序作为客户端,代码运行良好,我扫描“_SmartDimmerx2._tcp.local”。手机会使用其 IP 地址检测 esp。 我能够将数据发送到 ESP,它会正确接收,然后通过串行将其发送回 arduino,
问题是在我连续向 ESP 发送一些数据之后,我再次尝试扫描 ESP 没有响应的 mDNS。 ESP 仍然没有响应 mDNS 扫描大约 30 秒/1 分钟,之后它再次变得可发现。
与此同时,当 mDNS 没有响应时,ESP 仍然能够从手机接收数据并通过串口发送数据而没有任何问题,并显示正确的数据。所以esp没有被窃听。
当我从手机发送大量数据时,我感觉有东西阻止了 mDNS 服务。我的代码有问题吗? 当 mDns 没有响应时,我尝试使用 Zeroconf android 应用程序进行扫描,但直到大约一分钟后它才响应。
【问题讨论】:
标签: esp8266 arduino-esp8266 mdns