chore: 解决 stash pop 与 device-link 合并冲突并收回本地 WIP
保留 ConnectionHub(deviceLink 导入/ECAT 自启/pmHold 幂等)与主线 WIP(断线清指标、AUTO_POLL=false、boot_ecat 等)。
This commit is contained in:
+18
-9
@@ -17,7 +17,8 @@
|
||||
恢复可靠性(为什么睡不死):ESP32↔GD32 的 SPI 链路与 LAN9252 完全解耦(独立外设/中断),
|
||||
芯片睡得再深 0xA2 命令照样送达 GD32;NRST 硬复位覆盖 LAN9252 的一切软件可达状态
|
||||
(D3 睡死/HBI 假死都在内);GD32 自身挂了还有断电重启兜底(固件 hardwareReset 自动重走
|
||||
受控复位序列)。页面常驻 2s 自动状态轮询,睡没睡一目了然。
|
||||
受控复位序列)。自动状态轮询默认已关(AUTO_POLL=false),仅手动「读状态/唤醒/休眠」,
|
||||
避免持续 /spi/send 0xA2 在 ESP32 串口刷「WEB SPI」日志;需恢复自动刷新改 AUTO_POLL。
|
||||
-->
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
@@ -151,7 +152,7 @@
|
||||
<div>
|
||||
|
||||
<div class="card card--mem">
|
||||
<div class="card-head"><span class="ico">🔋</span> 芯片电源状态 <span style="margin-left:auto;font-size:.68rem;color:var(--text-label);font-weight:400">2s 自动刷新</span></div>
|
||||
<div class="card-head"><span class="ico">🔋</span> 芯片电源状态 <span style="margin-left:auto;font-size:.68rem;color:var(--text-label);font-weight:400">仅手动读状态</span></div>
|
||||
<div class="card-body">
|
||||
<div class="pm-sleep-banner" id="sleepBanner">🌙 芯片处于低功耗档 —— EtherCAT 通信已中断,点「手动唤醒」恢复</div>
|
||||
<div class="pm-grid">
|
||||
@@ -323,10 +324,11 @@
|
||||
$("sleepBanner").className = "pm-sleep-banner show";
|
||||
}
|
||||
|
||||
/* ---- 自动状态轮询:连接后 2s 一次;读到睡眠态即暂停(1.6.24 实测 HBI 读
|
||||
* 事务本身会唤醒睡眠中的芯片,轮询等于不停叫醒它);连败 3 次标红停轮。
|
||||
* pollGen:丢弃 enterMode/唤醒 之后仍在途的过期 1E 响应,避免竞态覆盖 UI。 ---- */
|
||||
var pollFail = 0, pollTimer = null, pollPaused = false, pollGen = 0;
|
||||
/* ---- 自动状态轮询已关闭(默认只手动):此前 2s 轮询会持续打 /spi/send 0xA2,
|
||||
* 在 ESP32 串口刷「WEB SPI」日志。手动「读状态 / 唤醒 / 休眠」仍可用。
|
||||
* 若需恢复自动刷新:把 AUTO_POLL 改 true。 ---- */
|
||||
var AUTO_POLL = false;
|
||||
var pollFail = 0, pollTimer = null, pollPaused = !AUTO_POLL, pollGen = 0;
|
||||
/** 主站看门狗豁免是否已置位(pmHold 幂等,防 2s 轮询刷屏) */
|
||||
var pmHoldOn = false;
|
||||
function bumpPollGen() { return ++pollGen; }
|
||||
@@ -369,6 +371,10 @@
|
||||
}
|
||||
function resumePolling() {
|
||||
if (pollTimer) { clearTimeout(pollTimer); pollTimer = null; }
|
||||
if (!AUTO_POLL) {
|
||||
pollPaused = true;
|
||||
return;
|
||||
}
|
||||
pollPaused = false;
|
||||
bumpPollGen();
|
||||
pollTimer = setTimeout(pollOnce, 2000);
|
||||
@@ -393,8 +399,9 @@
|
||||
.then(function (r) {
|
||||
if (!r.ok) throw new Error("HTTP " + r.status);
|
||||
setConn(true, "已连接");
|
||||
log("设备可达: " + deviceIp(), "ok");
|
||||
pollOnce();
|
||||
log("设备可达: " + deviceIp() +
|
||||
(AUTO_POLL ? "。" : "。自动状态轮询已关闭,请点「读状态」手动查询。"), "ok");
|
||||
if (AUTO_POLL) pollOnce();
|
||||
})
|
||||
.catch(function (e) {
|
||||
setSpiFail("ESP32 探测失败: " + e.message + "(IP " + deviceIp() + ")");
|
||||
@@ -624,7 +631,9 @@
|
||||
pmHold(1);
|
||||
probeEspOnly();
|
||||
} else {
|
||||
log("就绪。状态每 2s 自动刷新;改设备 IP 请到 OTA 中继页(全局共享)。", "warn");
|
||||
log(AUTO_POLL
|
||||
? "就绪。状态每 2s 自动刷新;改设备 IP 请到 OTA 中继页(全局共享)。"
|
||||
: "就绪。自动状态轮询已关闭(避免持续 SPI 诊断流量);需要时点「读状态」。改设备 IP 请到 OTA 中继页。", "warn");
|
||||
probe();
|
||||
}
|
||||
})();
|
||||
|
||||
+543
-193
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user