feat(can): 添加跨通道CAN突发发送功能支持多电机同步驱动
- 新增 /can/send_burst HTTP接口,支持一次SPI事务批量发送多帧CAN消息 - 实现canFdSendBurst函数,通过0xC7 SPI类型实现背靠背装载各通道邮箱 - 添加canBurstCapacity函数计算单次突发最大帧数限制 - 突发发送期间暂停can_feedback_task避免SPI抢占冲突 refactor(can_feedback_task): 改造为周期查询+事件消费模式 - 0xC4/0xC5从GD32主动推送改为ESP32周期查询(250ms/1s) - 0xC6/0xD2仍保留事件驱动推送模式,由任务消费处理 - 消除OTA期间GD32悬空按铃导致的超时刷屏问题 - 电机OTA期间也暂停任务避免与0xD1抢夺SPI资源 perf(ota_relay): 增加重发次数上限提升传输可靠性 - 将kMaxDataSends从3次增加到5次,提高数据包传输成功率 chore(version): 更新固件版本号至0.3.78 - 版本查询checkVersionWait移到tickInFlight释放后异步触发 - 避免/motor/version请求拖长tick导致tickStuck误报通道闪黄
This commit is contained in:
@@ -193,7 +193,7 @@ function updateBootInitUi(data) {
|
||||
/* ==================== 状态任务列表:增量渲染 ====================
|
||||
* innerHTML 全量重建会重解析 HTML、重建每条 .status-task-bar(其 ::after 微光
|
||||
* 动画随之重启、合成层反复创建销毁),是主页每秒掉帧的主要来源之一。
|
||||
* 这里按 key(任务名)缓存行节点:集合不变时只改数字/宽度,排序变了仅移动节点。
|
||||
* 这里按 key(任务名)缓存行节点:集合不变时只改数字/宽度,排序变了仅更新 CSS order。
|
||||
* 行结构统一:head(名称/占比) + bar + 3 项 meta。
|
||||
* items: [{ key, rowCls, pctText, width, fillCls, metaLabels[3], metas[3] }]
|
||||
*/
|
||||
@@ -264,11 +264,15 @@ function renderStatusTaskList(listEl, items) {
|
||||
return;
|
||||
}
|
||||
if (keyStr !== cache.keys) {
|
||||
/* 集合相同仅排序变化:按新顺序移动既有节点,不重建、不解析 HTML */
|
||||
for (var m = 0; m < keys.length; m++) listEl.appendChild(cache.rows[keys[m]]);
|
||||
/* 集合相同仅排序变化:保留节点位置,避免带动画的光泽伪元素重启 */
|
||||
cache.keys = keyStr;
|
||||
}
|
||||
for (var u = 0; u < items.length; u++) updateStatusTaskRow(cache.rows[keys[u]], items[u]);
|
||||
for (var u = 0; u < items.length; u++) {
|
||||
var row = cache.rows[keys[u]];
|
||||
var order = String(u);
|
||||
if (row.style.order !== order) row.style.order = order;
|
||||
updateStatusTaskRow(row, items[u]);
|
||||
}
|
||||
}
|
||||
|
||||
/* 原始 JSON 折叠面板:收起时跳过 JSON.stringify + 大段文本重排;
|
||||
@@ -359,7 +363,7 @@ export function updateHeapAndTaskStatusUi(data) {
|
||||
var sampleMs = Number(cpuData.sample_ms) || 0;
|
||||
var tasks = Array.isArray(cpuData.tasks) ? cpuData.tasks.slice() : [];
|
||||
/* 按占用率降序;占比相同再按任务号,保证排序稳定。
|
||||
* renderStatusTaskList 在集合不变时只 appendChild 调序,不重建 DOM。 */
|
||||
* renderStatusTaskList 在集合不变时只更新 CSS order,不移动或重建 DOM。 */
|
||||
tasks.sort(function (a, b) {
|
||||
var d = (Number(b.usage_pct) || 0) - (Number(a.usage_pct) || 0);
|
||||
if (d !== 0) return d;
|
||||
|
||||
Reference in New Issue
Block a user