feat: 测试操作页非在线状态禁止发送指令

- 新增 currentDeviceState 变量跟踪设备状态
- refreshDeviceStatus 同步更新 currentDeviceState
- sendCmd/manual cmds(B0/B1/BA/BB/BC) 调用前检查在线状态
- startAuto(自动化开始) 调用前检查在线状态
- 非在线时弹窗提示「设备当前状态为「离线/通信不良」,无法发送指令」
This commit is contained in:
wangfq
2026-06-10 13:55:48 +08:00
parent d3b6d79a03
commit f2e9cc9345

View File

@@ -8,6 +8,7 @@ let autoRemaining = 0;
let autoStartTime = "";
let localSinceStr = "";
let currentTestMode = null; // 0=灵敏度, 1=波动, null=未加载
let currentDeviceState = null; // 当前设备状态 (0=离线 1=在线 2=通信不良 null=未加载)
let pollInterval = null;
let nextCmdTimer = null; // 间隔等待定时器
@@ -18,9 +19,22 @@ let cmdSentAt = 0; // 最近一次发送 0xB0 时间
let intervalMs = 10000; // 默认 10s
let timeoutMs = 5000; // 默认 5s
// ─── 设备在线检查 ──────────────────────────────
function checkDeviceOnline() {
if (currentDeviceState !== 1) {
const stateName = currentDeviceState === 2 ? '通信不良' :
currentDeviceState === 0 ? '离线' : '未知';
alert(`设备当前状态为「${stateName}」,无法发送指令`);
return false;
}
return true;
}
// ─── 手动指令 ─────────────────────────────────
async function sendCmd(cmd) {
if (!checkDeviceOnline()) return;
try {
const resp = await fetch("/api/command", {
method: "POST",
@@ -47,6 +61,7 @@ async function toggleAuto() {
}
async function startAuto() {
if (!checkDeviceOnline()) return;
const count = parseInt(document.getElementById("test-count").value) || 10;
if (count < 1) return;
@@ -309,6 +324,7 @@ async function refreshDeviceStatus() {
const resp = await fetch(`/api/devices/${DNT_ID}/status`);
const data = await resp.json();
if (data.ok) {
currentDeviceState = data.state;
const el = document.getElementById("device-status-text");
if (el) {
el.textContent = data.state_name;