ESP8266 Webserver ESP8266WebS сервер перемещает функцию обработчика в отдельный файл .h .c
План состоит в том, чтобы создать более крупный проект и разделить код веб-сервера ESP8266 на несколько модулей (файлы .h .c). Основная проблема заключается в том, что сервер ESP8266WebServer не объявлен в файлах index.h и index.c.
Что я пытался сделать:
Контент main.c
#include <ESP8266WiFi.h>
#include "ESP8266WebServer.h"
#include "index.h"
ESP8266WebServer server(80);
const char* ssid = "test";
const char* password = "12345678";
void setup()
{
WiFi.softAP(ssid, password);
server.on("/", handleRoot(server)); // <-- использование удаленной функции 'esp8266webserver::ESP8266WebServerTemplate<WiFiServer>::ESP8266WebServerTemplate(const esp8266webserver::ESP8266WebServerTemplate<WiFiServer>&)'
server.begin();
}
void loop()
{
server1.handleClient();
}
Содержание index.h:
void handleRoot(ESP8266WebServer server);
const char htmlIndex[] PROGMEM = R"=====(
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Test</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>
)=====";
Индекс содержания.c:
#include "webpages/index.h"
void handleRoot(ESP8266WebServer server)
{
Serial.println("GET /");
server.send(200, "text/html", htmlIndex);
}
Как я могу использовать сервер ESP8266WebServer, созданный в main.c в index.c?
@kimliv, 👍1
1 ответ
Лучший ответ:
▲ 1
Переместите веб-сервер в index.c и укажите тип веб-сервера:
ESP8266WebServer server(80);
Добавьте внешнюю ссылку в index.h и включите ее:
#include "ESP8266WebServer.h"
extern ESP8266WebServer server;
Index.h включен как в main.c, так и в index.c, поэтому он будет знать, что сервер относится к типу ESP8266WebServer, но не выделяет для него память; это делается в index.c
Это называется прямой ссылкой.
,
@Michel Keijzers
Смотрите также:
- HTML-страница переменной ESP8266 Webserver ESP8266WebServer (не как один постоянный символ)
- Wemos D1 mini зависает через несколько минут
- esp8266 WiFi не может подключиться к PHP- серверу
- Несколько клиентских серверов через Wi-Fi
- Esp8266 Vin контакт
- Как получить параметры запроса от ESPAsyncWebServer?
- контент» не захватывается
- Получение ошибки ets 8 января 2013,rst cause:4,boot mode(1,6) wdt reset
я перешел
#include "ESP8266WebServer.h" extern ESP8266WebServer server;
в main.h и включил его в index.c, но, в конце концов, это ваша идея. спасибо., @kimlivДа, в принципе, неважно, где вы размещаете внешнюю переменную, лишь бы она не находилась в заголовочном файле (или, по крайней мере, не в том, который включается дважды). Удачи с вашим проектом., @Michel Keijzers