Files
ESP32_COMM/.zcode/plans/plan-sess_b0c54f72-18b6-47ed-b0ed-a2f89c313dc6.md
T

58 lines
3.0 KiB
Markdown
Raw Normal View 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:应清零失败计数并提示"恢复在线"