完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
在我的 ESP8266 上验证了基本的 ESP8266WebServer 功能后,我想将一些设置方法重构到一个自己的类中(基本上是 ESP8266WebServer 类的抽象层)。因此,我创建了一个 ESP8266WebServer 指针作为类“Webserver”的成员(参见附加代码“Webserver.h”和“Webserver.cpp”)。
我现在想配置服务器根路由(“/”)以提供来自 SPIFFS 的静态 HTML 文件“index.html”。但是,当我使用“Webserver.cpp”中所示的“serveStatic”方法时,我的 esp 在通过浏览器访问它时返回一个空响应(ERR_EMPTY_RESPONSE)(这在以前有效,因此它必须重构为一个单独的类)。 在调查这个问题后发现其他人也有类似的问题(例如 和 ) 在封装的 ESP8266WebServer 实例中使用“server.on()”方法时。当我使用“server.on()”(参见“Webserver.cpp”中的评论)时,我验证了该修复程序是否有效。但是,出于我的目的,我无法应用建议的修复(使用 std::bind)。 我感谢任何建议和反馈。 最好的问候, GuyWithCookies Webserver.h 代码:全选/** * Class that handles webserver initalization **/ #ifndef WEBSERVER_H #define WEBSERVER_H #include #include class Webserver { public: Webserver(); bool setup(); void handleClient(); void handleRoot(); private: ESP8266WebServer* server; void setupWebserverRoutes(); bool setupFileSystem(); }; #endif 网络服务器.cpp 代码:全选#include "Webserver.h" #include #include #include #include Webserver::Webserver() { std::cout << "Create webserver instance" << std::endl; this->server = new ESP8266WebServer(); } void Webserver::handleRoot(){ char content[] = "Hello world"; this->server->send(200, "text/plain", content); } void Webserver::setupWebserverRoutes() { // Using "server.on" works (hello world is displayed in browser). // However I need to serve the index.html instead which uses serveStatic and produces the aforementioned // issue //this->server->on("/", std::bind(&Webserver::handleRoot, this)); this->server->serveStatic("/", SPIFFS, "/index.html"); }; bool Webserver::setupFileSystem() { if (!SPIFFS.begin()) { Serial.println("SPIFFS Mount failed"); return false; } else { Serial.println("SPIFFS Mount successfull"); return true; } }; bool Webserver::setup() { // Setup all routes for the website Webserver::setupWebserverRoutes(); if (!Webserver::setupFileSystem()) { return false; } this->server->begin() return true; } void Webserver::handleClient() { this->server->handleClient(); } |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
468 浏览 0 评论
984 浏览 0 评论
1707 浏览 0 评论
请问一下我想用ESP8685直接替换ESP8266而不用写程序,可以让ESP8685直接通过之前ESP8266的外挂的flash运行程序吗
1364 浏览 1 评论
1253 浏览 1 评论
为blufi_device设置自定义名称,但是无法修改,为什么?
1286浏览 4评论
请问ESP32-S2-WROOM怎么获得ESP32-S2外接FLASH的唯一序列号?
943浏览 3评论
2378浏览 3评论
ESP-IDF的VScode插件的build按钮点击会报错的原因?
2565浏览 3评论
ESP-Jumpstart例程中第5个工程:5_cloud连接报错是哪里的问题?
1071浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 03:30 , Processed in 0.607770 second(s), Total 70, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
511
