Files
ESP32_COMM/.zcode/plans/plan-sess_b0c54f72-18b6-47ed-b0ed-a2f89c313dc6.md
小龙虾 76782349a9 添加了SPI链接V2支持文件,重构OTA协调器的存储准备流程,
统一WiFi/BLE传输路径的收尾处理逻辑。
feat(ota): 优化OTA性能并增强系统监控功能

- 修改RSSI警告阈值从-75dBm调整为-80dBm,更新相关文档说明
- 增加HTTP服务器任务栈大小至10240字节,解决栈溢出问题
- 将OTA块大小从4096字节降至2048字节以降低峰值堆内存占用
- 实现按需擦除机制替代预擦除,在GD32 OTA中按扇区动态擦除
- 添加任务栈水位主动巡检功能,监控栈使用情况并告警
- 集成FreeRTOS栈溢出钩子,提供栈溢出检测和告警
- 优化ESP32 OTA实现使用顺序写入模式,消除长时间擦除阻塞
- 改进堆内存不足告警机制,添加限流避免刷屏
- 移除不必要的调试日志输出,精简健康监控模块
2026-07-13 03:12:21 +08:00

3.0 KiB
Raw Permalink Blame History

删除"断线后切换慢速轮询"机制

文件: G:\Robot_v2\DCU\ESP32_COMM\tools\app.js

范围: 只删除"降速到 10s"的行为,保留 5 次失败触发的网络诊断(diagnoseNetwork)和断线 UI 提示。删除后断线时保持 1s 轮询,仅显示"未连接"并按需做网络诊断。

改动点

  1. 删除变量 pollSlowMode(1600 行)

    • 移除 var pollSlowMode = false; // 降速模式(10s 一次)
  2. 删除函数 slowDownPolling()(1671-1681 行)

    • 整个函数移除
  3. 删除函数 restorePolling()(1682-1695 行)

    • 整个函数移除(保留 startPolling、pausePollingForUpload、resumePollingAfterUpload)
  4. 简化 startPolling()(1662-1670 行)

    • 删除 pollSlowMode = false; 这一行(其余保留)
  5. 简化 resumePollingAfterUpload()(1714 行)

    • statusPollIntervalMs = pollSlowMode ? 10000 : 1000; → statusPollIntervalMs = 1000;
  6. 简化 pollStatus() 成功分支(1738-1747 行)

    • 移除 wasSlow / restorePolling() 调用,仅保留 consecutivePollFailures = 0;(保留"恢复在线"的 toast 体验需要另判断;改为:若 consecutivePollFailures > 0 则提示已恢复并清零)
  7. 简化 pollStatus() 失败分支的 5-fail 块(1789-1800 行)

    • 删除 !pollSlowMode 条件判断中的 pollSlowMode 部分
    • 删除 slowDownPolling(); 调用和"已切换为慢速轮询"日志
    • 保留 diagnoseNetwork() 诊断、updateConnectionUi(false, '未连接')、applyDisconnectedRuntimeState() 和诊断文本显示
  8. 简化 pollStatus() 失败分支末尾(1828 行)

    • } else if (!pollSlowMode) { → } else {(该 else 分支总是显示未连接状态)
  9. 清理 testConnection()(817-820 行)

    • 删除 if (pollSlowMode) { addLog(...); restorePolling(); } 块
  10. 清理 refreshSystemStatusNow()(874 行)

    • 删除 if (pollSlowMode) restorePolling();
  11. 清理 visibilitychange 监听(1854-1855 行)

    • 删除 // 之前若在慢速模式... 注释和 if (pollSlowMode) restorePolling();
  12. 清理 IP 输入 change 监听(1887-1892 行)

    • 简化为:IP 变化时清零失败计数并立即拉一次状态(不再依赖 restorePolling)
    • 或直接移除 if (pollSlowMode) { ... restorePolling(); } 块,保留监听器做基本的失败计数清零

不删除的部分

  • consecutivePollFailures 变量及其计数逻辑(诊断仍需要)
  • diagnoseNetwork() 网络诊断函数
  • lastDiagTime / diagResult 诊断状态变量
  • applyDisconnectedRuntimeState() 断线 UI 更新
  • statusPollIntervalMs 变量(被 upload 暂停/恢复机制复用,保持 1000 默认值)

验证

  • 浏览器打开 tools/index.html,确认页面加载无 JS 错误
  • 模拟 ESP32 断线:连续 5 次失败后应仍触发网络诊断并显示"未连接",但轮询间隔保持 1s
  • 恢复 ESP32:应清零失败计数并提示"恢复在线"