d2c86c425aee0e71e1ac54f53b646601d50bbc3a
纯前端上位机界面 + esp32_server.py 静态服务/桌面窗口外壳, 不含固件、 不直接访问硬件; 业务 API 由 ESP32_COMM 固件 80 端口跨域提供。 - tabs.html 单窗口多标签外壳, iframe 承载各功能页 - index.html OTA 中继(ESP32 WiFi / GD32 relay / BLE), js/ota + js/ble - can.html / can_monitor.html CAN 通信与接收监控, js/can - motor.html 电机 CAN FD 控制台, js/motor - continuity_test.html LAN9252 通断测试, spi_test.html SPI 测速(临时, 自包含) - 三入口: esp32_app.vbs 桌面窗口 / esp32_web.vbs 浏览器 / serve.bat 控制台调试 - 补 README(页面与目录约定、?v= 缓存版本等改动须知)、.gitignore、 .gitattributes(* -text 保持 Windows 换行原样)
DCU ESP32 调试控制台(Web 前端 + 本地页面服务)
G:\Robot_v2\DCU\tools\ESP32 —— ESP32-C3(DCU/ESP32_COMM 固件)的上位机调试界面。
本目录不含固件代码,也不直接访问硬件:HTML/CSS/JS 是纯前端,页面本体由
esp32_server.py 以静态文件方式提供(同源相对路径),而所有业务 API 由 ESP32
固件的 80 端口跨域提供。设备 IP 存在浏览器 localStorage 的 dcu_esp_ip
(默认 192.168.31.127,见 js/common/base-url.js)。
启动方式
| 入口 | 形态 | 说明 |
|---|---|---|
esp32_app.vbs |
桌面窗口 | pywebview + WebView2,无控制台窗口;服务跑在独立子进程 |
esp32_web.vbs |
默认浏览器标签页 | 无控制台窗口 |
serve.bat |
控制台模式 | 端口 8080,窗口内可见服务器日志,用于调试 |
窗口模式为何拆两个进程:pythonw + pythonnet(pywebview 依赖)环境下 Python
后台线程会被静默杀死,把 HTTP 服务放进独立子进程可规避,与 tools/ecat/ecat_server.py
同款结构。pywebview 窗口没有地址栏与刷新按钮,因此服务器会向 HTML 响应注入
_reload.html(右下角 ⟳ 悬浮按钮 + F5/Ctrl+R 拦截)。
build_mem.bat 是从 Git Bash 调用 ESP-IDF 构建 DCU/ESP32_COMM 的辅助脚本
(会先清掉 MSYS 环境变量绕过 IDF 的 MSys 检测)。
页面
tabs.html 是单窗口多标签外壳,用 iframe 承载下列功能页,激活标签记忆在
localStorage 的 dcu_tab:
| 页面 | 用途 | 主要脚本 |
|---|---|---|
index.html |
OTA 中继控制台(ESP32 WiFi OTA / GD32 relay / BLE OTA) | js/app.js、js/ota/*、js/ble_ota.js、js/ble/* |
can.html |
CAN 通信(DBC 解析、消息编辑与批量发送) | js/can.js、js/can/* |
can_monitor.html |
CAN 接收监控 | js/can_monitor.js |
motor.html |
电机控制台(CAN FD) | js/motor/main.js、js/motor/tick.worker.js |
continuity_test.html |
LAN9252 通断测试(自包含,含 WebGL 液态玻璃效果) | 内联 |
spi_test.html |
【临时功能 SPI-SPEEDTEST】SPI 链路测速,完全自包含,删文件即可移除 | 内联 |
目录约定
css/——base(变量/基础)、layout、components、can、motor、responsive。js/common/—— 跨页公用:base-url(设备 IP)、connection、polling、log、toast、utils、heap-low-history。js/ota/、js/ble/、js/can/、js/motor/—— 按功能域拆分的 ES module。- 子系统配色:ESP32 = 青绿 · GD32 = 琥珀 · BLE = 蓝 · CAN = 绿 · 内存/调试 = 紫。
改动须知
- 改 CSS/JS 后必须 bump 引用处的
?v=缓存版本,否则浏览器会加载旧代码。 - OTA 流程以设备端为真相来源:WiFi OTA 由设备回读分区算 SHA-256 后自动重启;
BLE OTA 由前端发
0xF8 + 32B SHA-256、设备端比较并通过 FINISH 事件报结果 (前端不做 SHA 预比较);GD32 relay 状态以/system/status为准。 - 监控 UI 需区分
valid(通信是否成功)与count > 0(是否有数据), 以便分辨「正常空闲」和「真实通信错误」。 - 响应式 grid 表隐藏列用
0fr宽度实现,不要改变 grid track 数量。 - 新增 CAN 工作模式时,需在页面上显式补按钮与说明文字。
- DBC 文件常为 GBK/GB2312:先按 UTF-8(
{fatal: true})尝试,失败回退 GB18030,并去 BOM。
相关仓库
DCU/ESP32_COMM—— ESP32-C3 固件(OTA、SPI Link v2、CAN FD bridge)。DCU/DCU_APP、DCU/GD32E50X_BOOT—— GD32 侧应用与 bootloader。DCU/tools/ecat—— LAN9252 EtherCAT 主站工具集(同类结构的姊妹工具)。
Languages
JavaScript
58.3%
HTML
18.1%
Python
13.2%
CSS
10.2%