From f09decc127e18d470ae6896dde16bed111f1dce1 Mon Sep 17 00:00:00 2001 From: cbb <2625274797@qq.com> Date: Thu, 3 Sep 2026 21:42:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(server):=20CANFD=20=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=94=B6=E5=8F=91=E5=8C=BA=20+=20=E7=94=B5=E6=9C=BA=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E5=90=8E=E7=AB=AF=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PDO 布局扩展(与 GD32 1.5.56 对齐): 段2 [48..383] CANFD 批量发送区 —— 多帧共用一个 seq 沿, 从站在同一次 processOutput 里先发单帧再发批量, 9 帧 DLC32 由原来 9 个 周期压缩到 1 个周期。 段4 [360..639] CANFD 批量接收区 —— 一周期回收多帧, 支持 DLC64 满长 CANFD, 带 lost/pending 计数。 单帧区 [0..47] 布局不动, 批量区 count=0 时逐字节兼容 1.5.55, 老主站与 CAN 调试页行为不变。 新增 API: /api/can/{send,state} 与 /api/motor/{start,stop,state,send,rx}; 电机 PDO 后台循环靠滚动窗口扫 27 个槽, 命令走队列按 seq 沿下发。 ecat.html 加「电机控制台」入口与「CAN 转发」标签页。 test_motor_backend.py 8 项全通过(不接硬件, 假从站模拟 GD32 buildInput/ processOutput): DLC32 不截断、滚动窗口扫全槽、STATUS 32B 完整回传、 队列不互相覆盖、循环可干净停止、批量同步下发、DLC64 回收、1.5.55 兼容。 --- ecat.html | 127 ++++++++- ecat_server.py | 760 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 864 insertions(+), 23 deletions(-) diff --git a/ecat.html b/ecat.html index c365724..59af331 100644 --- a/ecat.html +++ b/ecat.html @@ -5,7 +5,7 @@