Files

1.5 KiB
Raw Blame History

模块以 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)完全不感知底层链路差异。