1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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<number | null>(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);
- });
- };
|