Files

1.5 KiB
Raw Blame History

模块按职责拆分为五个 ES Module,依赖方向单向收敛于 dbc.js:

  • dbc.js 为基础设施层,导出共享 state/el、IP 工具、字节格式化工具,以及 DBC 文本读取(UTF-8 / GB18030/BOM 自动回退)和 DBC 解析器(BO_/SG_/CM_/VAL_ 行 → { messages, nodeNames, messageMap }),不依赖其他 can 子模块。
  • messages.js 负责报文列表渲染、关键字与发送节点筛选、节点过滤面板 UI 及批量选择。
  • signals.js 基于 DBC 信号定义生成内联信号表格,维护 signalValues bag,处理 Motorola/Intel 位序、有符号/无符号、枚举、因子/偏移编解码,并维护当前选中报文的编码预览。
  • send.js 作为 HTTP 出口,统一通过 fetch(getBaseUrl() + '/can/send_batch') 发原始帧或构造后的批量帧,封装错误码映射(CAN_SEND_ERR_DESC / GD32_ERR_DESC),维护发送历史与剪贴板复制。
  • persist.js 将多 DBC 原文、signalValues、checkedKeys/expandedKeys、transmitterFilter、history、表单状态序列化到 localStorage(键 dcu_can_session_v1),并以防抖 scheduleCanPersist() + 失败时逐步砍历史/信号值的方式保证写入安全;恢复时逆向重建 DBC。
  • can_monitor.js 是独立的 1Hz 轮询入口,调用 /can/feedback 获取 3 路 CAN 通道 RX/TX/Drop/Err/TEC/REC/bus_state/entries,渲染三卡片及 ID snap 表,可被 can.html 右侧抽屉复用。 模块间通过 ES Module live binding 共享 state 与 el,避免重复缓存 DOM 与状态副本。