1.5 KiB
1.5 KiB
模块以 main.js 为 ES Module 入口(由 motor.html 外提),集中维护全局 state(连接态、刷新间隔、解码缓存、命令序列、版本缓存等)并通过工具栏在 wifi / ecat 两条链路之间切换。
内部按职责分层:
- 传输选择层
transport.js导出createTransport(id, ctx)工厂,根据 id 创建具体实现,并以ctx注入getBaseUrl、recordSlow、isTransient避免循环依赖。 - 两路传输独立实现同一契约(见
transport-ecat.js头注释列出的接口表):transport-wifi.js调用 ESP32 的 HTTP API(/system/status、/motor/state?bin=1、/can/send_batch等);transport-ecat.js经本地页面服务器/ecat/api/*反向代理到tools/ecat的 C 守护进程,完成全自动接入(自动拉起服务、打开网卡、进入 OP、起 PDO 循环)并将 EtherCAT 过程数据形状补齐为 WiFi 契约(config_data、version seq、nodeIdReport)。 refresh-rate.js抽离为纯函数库,按链路各自管理默认值/最小值/钳制/旧键迁移,使刷新策略可脱离 DOM 自测。tick.worker.js是一个 Dedicated Worker,仅负责按指定 interval 持续投递tick消息,规避浏览器后台标签页对 setTimeout/setInterval ≥1s 节流。
依赖方向单向收敛于 main.js → transport.*;上层解码器、节点列表、STATUS 面板、波形、命令序列和全部流控策略(互斥/退避/冷却/latest-wins)完全不感知底层链路差异。