import { ref } from 'vue' import { requestNew } from "@/utils/network/request.js"; const bluetoothUtil = require("../../static/etcUtil/index.js"); const datas = require("../../static/etcUtil/datas.js"); // ====================== 心跳机制 ====================== // ====================== 心跳相关状态 ====================== const heartbeatInterval = ref(null); // 心跳定时器ID const heartbeatDelay = 10000; // 心跳间隔 (5秒) const heartbeatTimeout = 60000; // 心跳超时时间 (20秒) const heartbeatTimer = ref(null); // 心跳超时定时器ID const heartbeatData = ['00A40000023F00']; // 心跳数据 (根据设备协议定义) export const startHeartbeat = () => { stopHeartbeat(); // 先停止可能存在的旧定时器 // 启动心跳定时器 heartbeatInterval.value = setInterval(() => { sendHeartbeat(); }, heartbeatDelay); // 立即发送一次心跳 // sendHeartbeat(); // setTimeout(() => { // stopHeartbeat(); // }, heartbeatTimeout) }; export const stopHeartbeat = () => { if (heartbeatInterval.value !== null) { clearInterval(heartbeatInterval.value); heartbeatInterval.value = null; } if (heartbeatTimer.value !== null) { clearTimeout(heartbeatTimer.value); heartbeatTimer.value = null; } }; const sendHeartbeat = () => { console.log('执行时间'+ new Date()) bluetoothUtil.transCmd(heartbeatData, '20', function (res) { console.log('心跳执行成功!' + new Date()) }, (err) => { console.log("结束心跳", err) stopHeartbeat(); // errorLog(heartbeatData, JSON.stringify(err) + '心跳执行失败!', '---') }); }; const errorLog = (cmd, error, step) => { console.log('激活异常提交') const options = { type: 2, data: { cardId: '1', obuId: '1', orderType: "1", factory: datas.getData("deviceName") + "_" + datas.getData("deviceNameZW"), orderNo: '1', cmd, error, step }, method: "POST", showLoading: false, }; requestNew('/iaw/api/active/errorLog/add', options).then((res) => { console.log("错误提交成功", res); }); };