100J增加蓝牙封装,在api层直接优先蓝牙拦截逻辑-待验证

This commit is contained in:
微微一笑
2026-03-11 14:02:17 +08:00
parent 64b7914d23
commit 5428ead05e
3 changed files with 226 additions and 16 deletions

View File

@ -229,8 +229,12 @@
deviceStrobeFrequency,
deviceLightAdjustment,
deviceUpdateVolume,
deviceVoiceBroadcast
deviceVoiceBroadcast,
updateBleStatus,
parseBleData
} from '@/api/100J/HBY100-J.js'
import BleHelper from '@/utils/BleHelper.js';
var bleTool = BleHelper.getBleTool();
var these = null;
import Common from '@/utils/Common.js'
const pagePath = "/pages/100/HBY100";
@ -591,11 +595,37 @@
});
this.createThrottledFunctions();
// 注册蓝牙相关事件
bleTool.addReceiveCallback(this.bleValueNotify, "HBY100J");
bleTool.addDisposeCallback(this.bleStateBreak, "HBY100J");
bleTool.addRecoveryCallback(this.bleStateRecovry, "HBY100J");
bleTool.addStateBreakCallback(this.bleStateBreak, "HBY100J");
bleTool.addStateRecoveryCallback(this.bleStateRecovry, "HBY100J");
// 尝试连接蓝牙
if (data.data.deviceMac) {
// 假设 deviceMac 是蓝牙的 deviceId
bleTool.LinkBlue(data.data.deviceMac).then(() => {
console.log("100J 蓝牙连接成功");
this.bleStateRecovry({deviceId: data.data.deviceMac});
}).catch(err => {
console.log("100J 蓝牙连接失败将使用4G", err);
});
}
},
onHide: function() {
this.Status.pageHide = true;
},
onUnload() {
// 移除蓝牙事件监听
bleTool.removeReceiveCallback("HBY100J");
bleTool.removeDisposeCallback("HBY100J");
bleTool.removeRecoveryCallback("HBY100J");
bleTool.removeStateBreakCallback("HBY100J");
bleTool.removeStateRecoveryCallback("HBY100J");
},
onShow() {
this.Status.pageHide = false;
},
@ -949,13 +979,26 @@
deviceRecovry(res) {},
deviceDispose(res) {},
bleStateBreak() {},
bleStateRecovry() {},
bleStateBreak() {
updateBleStatus(false, '', this.deviceInfo.deviceId);
},
bleStateRecovry(res) {
let bleDeviceId = res ? res.deviceId : '';
updateBleStatus(true, bleDeviceId, this.deviceInfo.deviceId);
},
previewImg(img) {},
bleValueNotify: function(receive, device, path, recArr) { //订阅消息
if (receive.deviceId !== this.formData.deviceId) {
return;
// 注意:这里 receive.deviceId 是蓝牙的 MAC 地址,而 this.formData.deviceId 是 4G 的 ID
// 所以这里需要修改判断逻辑,或者不判断直接解析
// 尝试解析蓝牙上报的数据
if (receive.bytes) {
const parsedData = parseBleData(receive.bytes);
if (parsedData && parsedData.batteryPercentage !== undefined) {
this.deviceInfo.batteryPercentage = parsedData.batteryPercentage;
}
}
if (this.deviceInfo.batteryPercentage <= 20) {
this.showMsg("设备电量低");
}