From 873b0b6d215d07a1493b7a05e8e12da5e1565829 Mon Sep 17 00:00:00 2001 From: sjchen <13418980720@163.com> Date: Wed, 8 Jan 2025 20:49:49 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9D=A1=E7=9C=A0=E5=A2=9E=E5=8A=A0=E5=A4=B8?= =?UTF-8?q?=E5=A4=A9=E7=9A=84=E6=95=B0=E6=8D=AE=E6=8B=86=E5=88=86=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index/index.js | 7 +-- utils/ParseDataPacket.js | 92 ++++++++++++++++++++++++++++------------ 2 files changed, 69 insertions(+), 30 deletions(-) diff --git a/index/index.js b/index/index.js index 13b9ce4..1407447 100644 --- a/index/index.js +++ b/index/index.js @@ -80,7 +80,8 @@ Page({ console.log("advertisData: ",hexStr) // 连接指定设备 // if(device.deviceId=="03:02:02:07:65:98"){ - if(device.deviceId=="03:02:02:07:5F:AF"){ + if(device.deviceId=="03:02:02:07:5F:AF"){ + // if(device.deviceId=="03:02:02:07:64:B4"){ this.connectToDevice(device.deviceId); } }); @@ -167,7 +168,7 @@ Page({ wx.onBLECharacteristicValueChange((res) => { const hexStr = this.uint8ArrayToHex(new Uint8Array(res.value)) - // console.log("收到手表端发送的数据>>>>>>:",hexStr); + console.log("收到手表端发送的数据>>>>>>:",hexStr); const dataView = new DataView(res.value); // 获取第一个字节 let cmdType = dataView.getUint8(0); @@ -334,7 +335,7 @@ Page({ sendHealthCommand(){ // 指令依次是:心率,血氧、血压、体温、睡眠、步数 // 0x55,0x66,0x56,0x65,0x53,0x52 - const commands = [0x55,0x66,0x56,0x65,0x53,0x52]; + const commands = [0x53]; // 递归发送命令并加上 5 秒延迟 function sendNextCommand(index = 0) { if (index >= commands.length) return; // 所有命令发送完毕,结束 diff --git a/utils/ParseDataPacket.js b/utils/ParseDataPacket.js index 2bcfc13..b2fc171 100644 --- a/utils/ParseDataPacket.js +++ b/utils/ParseDataPacket.js @@ -345,34 +345,72 @@ const parseDataPacket = { let time = this.dateFormat(year,month,day,hour,minute,second); // 获取当天00:00:00的时间戳 const midnight = this.dateFormat(year,month,day,0,0,0); - let startMinutesOfDay = Math.floor((time - midnight) / 60); // 计算从当天00:00:00开始到当前时间的分钟数 - - // 用于存储转换后的结果 - let result = []; - let currentMinute = startMinutesOfDay; // 起始分钟(418分钟) - - // 开始循环遍历 sleepData 数据 - for (let i = 0; i < sleepData.length; i++) { - const status = sleepData[i]; - let m = currentMinute + 1 - - if(m > 660 && m < 1200){ - break; + let startMinutesOfDay = Math.floor((time - midnight) / 60); // 计算从当天00:00:00开始到当前时间的分钟数 + console.log("midnight:",midnight) + console.log("startMinutesOfDay:",startMinutesOfDay) + + // 1天最后1分钟是1440 + let maxLastminute = 1440; + let deff = maxLastminute - startMinutesOfDay; + + // 用于存储转换后的结果 + let result = []; + let currentMinute = startMinutesOfDay; // 起始分钟(418分钟) + if(deff < sleepData.length){ + // 将sleepData拆分为两个数组 + let firstPart = sleepData.slice(0, deff); // 截取前deff个数据 + let secondPart = sleepData.slice(deff); // 从deff开始到数组结尾的数据 + // 开始循环遍历 sleepData 数据 + for (let i = 0; i < firstPart.length; i++) { + const status = firstPart[i]; + // 处理每分钟的睡眠数据 + result.push({ + minute: currentMinute + 1, // 分钟递增 + status: this.mapSleepStatus(status), // 映射睡眠状态 + yyyyMMdd: `${parseInt(year) + 2000}${month}${day}`, // 格式化为yyyyMMdd + }); + // 递增分钟数 + currentMinute++; } - // 处理每分钟的睡眠数据 - result.push({ - minute: currentMinute + 1, // 分钟递增 - status: this.mapSleepStatus(status), // 映射睡眠状态 - yyyyMMdd: `${parseInt(year) + 2000}${month}${day}`, // 格式化为yyyyMMdd - // dateTime: `${parseInt(year)}-${month}-${day} ${hour}:${minute}:${second}`, // 格式化为yyyyMMdd - // time: time - }); - - // 递增分钟数 - currentMinute++; - } - return result; - + + currentMinute = 0; + // 开始循环遍历 sleepData 数据 + for (let i = 0; i < secondPart.length; i++) { + const status = secondPart[i]; + // 处理每分钟的睡眠数据 + result.push({ + minute: currentMinute + 1, // 分钟递增 + status: this.mapSleepStatus(status), // 映射睡眠状态 + yyyyMMdd: `${parseInt(year) + 2000}${month}${(parseInt(day) + 1).toString().padStart(2, '0')}`, // 格式化为yyyyMMdd + + }); + // 递增分钟数 + currentMinute++; + } + return result; + } else { + + // 开始循环遍历 sleepData 数据 + for (let i = 0; i < sleepData.length; i++) { + const status = sleepData[i]; + let m = currentMinute + 1 + if(m > 660 && m < 1200){ + break; + } + // 处理每分钟的睡眠数据 + result.push({ + minute: currentMinute + 1, // 分钟递增 + status: this.mapSleepStatus(status), // 映射睡眠状态 + yyyyMMdd: `${parseInt(year) + 2000}${month}${day}`, // 格式化为yyyyMMdd + // dateTime: `${parseInt(year)}-${month}-${day} ${hour}:${minute}:${second}`, // 格式化为yyyyMMdd + // time: time + }); + + // 递增分钟数 + currentMinute++; + } + return result; + } }, /**