WebSocketsServer.h: No such file or directory
Я пытаюсь использовать веб-сокет NodeMCU.
Я скачал необходимые библиотеки из: https://github.com/Links2004/arduinoWebSockets и вставил их в папку Arduino libraries. Я загрузил свой код, но получил эту ошибку:
WebSocketsServer.h: Такого файла или каталога нет.
Не могли бы вы сказать мне, почему моя Arduino IDE не найдет заголовочный файл WebSocketsServer.h, когда он физически присутствует в моей папке Arduino libraries? Или если есть альтернативный способ использовать веб-сокет NodeMCU?
Вот код:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <WebSocketsServer.h>
#include <Hash.h>
// Замените свои сетевые учетные
const char* ssid = "<WiFi-SSID>";
const char* password = "WiFi-PASSWORD";
WebSocketsServer webSocket = WebSocketsServer(81);
ESP8266WebServer server(80); //создать экземпляр сервера на порту 80 (http-порт)
String page = "";
int LEDPin = D5;
void setup(void){
//HTML веб-страницы
page = "<h1>Simple NodeMCU Web Server</h1><p><a href=\"LEDOn\"><button>ON</button></a> <a href=\"LEDOff\"><button>OFF</button></a></p>";
//сделайте вывод светодиодного контакта и изначально выключите
pinMode(LEDPin, OUTPUT);
digitalWrite(LEDPin, LOW);
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password); //начать подключение Wi-Fi
Serial.println("");
// Подождите подключения
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", [](){
server.send(200, "text/html", page);
});
server.on("/LEDOn", [](){
server.send(200, "text/html", page);
digitalWrite(LEDPin, HIGH);
delay(1000);
});
server.on("/LEDOff", [](){
server.send(200, "text/html", page);
digitalWrite(LEDPin, LOW);
delay(1000);
});
server.begin();
webSocket.begin();
webSocket.onEvent(webSocketEvent);
Serial.println("Web server started!");
}
void loop(void){
webSocket.loop();
server.handleClient();
if (Serial.available() > 0){
char c[] = {(char)Serial.read()};
webSocket.broadcastTXT(c, sizeof(c));
}
}
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length){
if (type == WStype_TEXT){
for(int i = 0; i < length; i++) Serial.print((char) payload[i]);
Serial.println();
}
}
~~~
3 ответа
Лучший ответ:
после того как вы включили zip-файл в библиотеку, вы должны переименовать каталог следующим образом: WebSocketsServer. А затем вы копируете все файлы в каталог "src", а затем вставляете их в его родительский каталог (WebSocketsServer).
не работал со мной ... Ты имеешь в виду вот так:..\OneDrive\Documents\Arduino\libraries\WebSocketServer\src` ?, @R1S8K
ответ неправильный. библиотека имеет структуру спецификаций библиотеки 1.5 с папкой src. https://arduino.github.io/arduino-cli/0.20/library-specification/#15-library-format-rev-22, @Juraj
правильным способом было бы добавить WebSocketsServer.h
в список местоположений, которые ищет gcc. https://gcc.gnu.org/onlinedocs/gcc-2.95.3/cpp_1.html#SEC6
другим способом было бы загрузить WebSocketsServer.zip
от https://www.arduinolibraries.info/libraries/web-sockets перейдите
в свой рабочий каталог и распакуйте его
заменить
#include <WebSocketsServer.h>
с явным местоположением
#include "./WebSockets-2.3.5/src/WebSocketsServer.h"
(обратите внимание, что распакованная версия в данном случае-WebSockets-2.3.5)
относительные пути не работают с Arduino builder. сборка выполняется во временной папке, путь к которой недопустим. с Arduino мы не настраиваем gcc., @Juraj
Правильный способ — добавить библиотеку в вашу среду разработки Arduino IDE, она просто будет работать.
- Откройте IDE Arduino
- Перейдите в раздел
Скетч
>Включить библиотеку
>Управление библиотеками
- Найдите "WebSockets Sattler" и установите библиотеку "WebSockets by Markus Sattler"
- Перезапустите среду разработки Arduino.
ПС
- вы увидите два результата для библиотеки WebSockets от одного автора
- второй "WebSockets_Generic" является более легкой библиотекой и обеспечивает поддержку WebSockets только в клиентском режиме (она предназначена для более эффективного использования памяти)
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- Управление реле 5В с помощью Wemos D1 R1
- Автоматическая веб-страница ESP32 AP
- Получение строкового ввода с веб-страницы NodeMCU и его печать на последовательном мониторе
- Веб-сервер ESP8266 недоступен через 2 минуты после сброса
- Задержка в веб-сокете
- Отправить запрос с помощью NODEMCU при нажатии клавиши
- Команда продолжает повторяться, потому что веб-страница пытается обновить
Какова точная структура, в которой у вас есть файл в папке libraries? Прямо там или во вложенной папке? Как называется подпапка?, @chrisl
Я пытаюсь изменить это с помощью #include «WebSocketsServer.h», а WebSocketsServer.h находится в фактическом каталоге., @daem
в библиотеке есть формальные проблемы, которые должны быть обнаружены Arduino IDE. в library.properties отсутствует ключ headers, @Juraj