这一段是开启服务器 的 这些都不是重点 重点是那个R_update ,没猜错的话应该是升级的功能
直接索引到定义看看 ,很明显这里是设置了一个 web 访问地址
那就只有换个思路往后查找 handleUpdate 找到这个函数定义
void WiFiManager::handleUpdate() {#ifdef WM_DEBUG_LEVELDEBUG_WM(WM_DEBUG_VERBOSE,F("<- Handle update"));#endifif (captivePortal()) return; // 如果强制门户重定向而不是显示页面String page = getHTTPHead(_title); //获取现在http的 标题名String str = FPSTR(HTTP_ROOT_MAIN);//打开内置网页 str.replace(FPSTR(T_t), _title);str.replace(FPSTR(T_v), configPortalActive ? _apName : (getWiFiHostname() + " - " + WiFi.localIP().toString()));// 如果 ap 未激活航向,则使用 ippage += str;page += FPSTR(HTTP_UPDATE);page += FPSTR(HTTP_END);HTTPSend(page);}
第一个定义是传输一些信息到串口,帮助调试的
WM_DEBUG_SILENT = 0, // 调试关闭,但仍为运行时编译
WM_DEBUG_ERROR = 1, // 仅错误
WM_DEBUG_NOTIFY = 2, // 默认稳定,INFO
WM_DEBUG_VERBOSE = 3, // 移动详细信息
WM_DEBUG_DEV = 4, // 开发有用的调试信息
WM_DEBUG_MAX = 5 // MAX 额外开发审核、var 转储等(MAX+1 将打印计时、内存和碎片信息)
HTTP_ROOT_MAIN 一些设置 根据html 编写规范{t} 和 {v} 应该是用来插入标题名 的
果然 他把值 重定义了
replace
函数的主要功能是将字符串中的某些子字符串替换为其他子字符串
configPortalActive
是 WiFiManager
库中的一个变量,用于表示配置门户(Configuration Portal)是否处于活动状态。
他这里的意思是问网络有没有连接,如果链接,就输出后面的ip地址啥的,不然输出no-net提示
下面一个就是页面的叠加了
page += str;
把标题叠加在内置网页 前
page += FPSTR(HTTP_UPDATE);
把后面的上传网页也叠加上去
page += FPSTR(HTTP_END);
HTTPSend(page); 发送组装好的页面给 客户端
一个表单 选择文件 用post 模式传输
accept=".bin,application/octet-stream"
:限制用户只能选择
.bin
文件或application/octet-stream
类型的文件。
这个页面我们一般不需要去动.但是因为我们要修改 认证起始页 所以需要了解
// 添加自定义路由
wifiManager.addParameter("custom_param", "Custom Parameter"); wifiManager.setSaveParamsCallback(saveParamsCallback);
//返回调用函数saveParamsCallback
// 处理Web服务器请求
wifiManager.handleClient(); //或者说监听 一般放在loop中
server->stop(); //停止
server.reset();//重启
最简单就是直接更改认证页面 也就是这一个关键词 handleRoot
分两种改变方法, 第一种直接替换法
第二种 改变指定法
找到他内置网页,修改其中内容.把网页放在这 " " 中
编辑一个简单的网页
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><p>测试一下</p>
</body>
</html>
使用工具转换一下
放入其中