@moshenguo/ms-data-sdk 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/sdk/bleConst.d.ts +0 -2
- package/build/sdk/bleConst.d.ts.map +1 -1
- package/build/sdk/bleConst.js +0 -2
- package/build/sdk/bleConst.js.map +1 -1
- package/build/sdk/bleSDK.d.ts +283 -14
- package/build/sdk/bleSDK.d.ts.map +1 -1
- package/build/sdk/bleSDK.js +284 -155
- package/build/sdk/bleSDK.js.map +1 -1
- package/build/sdk/models.d.ts +75 -0
- package/build/sdk/models.d.ts.map +1 -1
- package/build/sdk/models.js.map +1 -1
- package/build/sdk/resolveUtil.d.ts +2 -2
- package/build/sdk/resolveUtil.js +2 -2
- package/build/sdk/resolveUtil.js.map +1 -1
- package/docs/.nojekyll +1 -0
- package/docs/assets/hierarchy.js +1 -0
- package/docs/assets/highlight.css +36 -0
- package/docs/assets/icons.js +18 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +60 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1633 -0
- package/docs/classes/BleSDK.html +263 -0
- package/docs/classes/ResolveUtil.html +74 -0
- package/docs/hierarchy.html +1 -0
- package/docs/index.html +13 -0
- package/docs/modules.html +1 -0
- package/docs/types/ChangeEventPayload.html +2 -0
- package/docs/types/MsDataSdkModuleEvents.html +2 -0
- package/docs/types/MsDataSdkViewProps.html +4 -0
- package/docs/types/OnLoadEventPayload.html +2 -0
- package/docs/variables/DeviceConst.html +1 -0
- package/docs/variables/DeviceKey.html +1 -0
- package/docs/variables/default.html +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveUtil.js","sourceRoot":"","sources":["../../src/sdk/resolveUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeviceConst, BleConst, DeviceKey } from './bleConst';\n\n// 字节操作工具类\nexport class ResolveUtil {\n // CRC 校验\n static crcValue(value: number[]): void {\n let crc = 0;\n for (let i = 0; i < value.length - 1; i++) {\n crc += value[i];\n }\n value[value.length - 1] = crc & 0xff;\n }\n\n private static hexByte2Int(b: number, count: number): number {\n return (b & 0xff) * Math.pow(256, count);\n }\n\n // BCD 码时间解析\n private static bcd2String(bytes: number): string {\n const a = (bytes & 0xf0) >> 4;\n const b = bytes & 0x0f;\n return `${a}${b}`;\n }\n\n // 字节数组转十六进制字符串\n static intList2String(bytes: number[]): string {\n return bytes.map(b => b.toString(16).padStart(2, '0').toUpperCase()).join(' ');\n }\n\n // 字节数组转十六进制字符串(小写)\n static intList3String(bytes: number[]): string {\n return bytes.map(b => b.toString(16).padStart(2, '0').toLowerCase()).join(' ');\n }\n static setMacSuccessful(): { [key: string]: any } {\n return {\n [DeviceKey.DataType]: BleConst.CMD_Set_Mac,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n private static intBitToDouble(value: number): number {\n const buffer = new ArrayBuffer(8);//4\n const view = new DataView(buffer);\n view.setInt32(0, value, false); // big-endian\n return view.getFloat32(0, false);\n }\n // 设备时间解析\n static getDeviceTime(value: number[]): any {\n const date = `20${this.bcd2String(value[1])}-${this.bcd2String(value[2])}-${this.bcd2String(value[3])} ${this.bcd2String(value[4])}:${this.bcd2String(value[5])}:${this.bcd2String(value[6])}`;\n const gpsDate = `${this.bcd2String(value[9])}.${this.bcd2String(value[10])}.${this.bcd2String(value[11])}`;\n\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceTime,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceTime]: date,\n [DeviceKey.GPSTime]: gpsDate\n }\n };\n }\n // int转ASCII\n private static int2Ascll(value: number): string {\n if (value < 0 || value > 255) {\n throw new Error(\"Value must be between 0 and 255\");\n }\n return String.fromCharCode(value);\n }\n // GPS 时间解析\n static getGpsTime(value: number[]): string {\n return `${this.bcd2String(value[9])}.${this.bcd2String(value[10])}.${this.bcd2String(value[11])}`;\n }\n\n // 用户信息解析\n static getUserInfo(value: number[]): any {\n const userInfo = new Array(6).fill(0);\n for (let i = 0; i < 5; i++) {\n userInfo[i] = this.hexByte2Int(value[i + 1], 0);\n }\n\n let userId = '';\n for (let i = 6; i < 12; i++) {\n if (value[i] === 0) continue;\n userId += String.fromCharCode(this.hexByte2Int(value[i], 0));\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetPersonalInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Gender]: userInfo[0],\n [DeviceKey.Age]: userInfo[1],\n [DeviceKey.Height]: userInfo[2],\n [DeviceKey.Weight]: userInfo[3],\n [DeviceKey.Stride]: userInfo[4],\n [DeviceKey.KUserDeviceId]: userId\n }\n };\n }\n\n // 设备信息解析\n static getDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DistanceUnit]: this.hexByte2Int(value[1], 0).toString(),\n [DeviceKey.TimeUnit]: this.hexByte2Int(value[2], 0).toString(),\n [DeviceKey.StatusOfTheRaisedHandOnscreen]: this.hexByte2Int(value[3], 0).toString(),\n [DeviceKey.TempUnit]: this.hexByte2Int(value[4], 0).toString(),\n [DeviceKey.NightMode]: this.hexByte2Int(value[5], 0).toString(),\n [DeviceKey.KBaseHeart]: this.hexByte2Int(value[9], 0).toString(),\n [DeviceKey.ScreenBrightness]: this.hexByte2Int(value[11], 0).toString(),\n [DeviceKey.Dialinterface]: this.hexByte2Int(value[12], 0).toString(),\n [DeviceKey.SocialDistancedwitch]: this.hexByte2Int(value[13], 0).toString(),\n [DeviceKey.ChineseOrEnglish]: this.hexByte2Int(value[14], 0).toString()\n }\n };\n }\n\n // 实时计步信息解析\n static getActivityData(value: number[]): any {\n let step = 0;\n let cal = 0;\n let distance = 0;\n let time = 0;\n let exerciseTime = 0;\n\n for (let i = 1; i < 5; i++) {\n step += this.hexByte2Int(value[i], i - 1);\n }\n\n for (let i = 5; i < 9; i++) {\n cal += this.hexByte2Int(value[i], i - 5);\n }\n\n for (let i = 9; i < 13; i++) {\n distance += this.hexByte2Int(value[i], i - 9);\n }\n\n for (let i = 13; i < 17; i++) {\n time += this.hexByte2Int(value[i], i - 13);\n }\n\n for (let i = 17; i < 21; i++) {\n exerciseTime += this.hexByte2Int(value[i], i - 17);\n }\n\n const heart = this.hexByte2Int(value[21], 0);\n let temp = 0;\n let spo2 = 0;\n\n if (value.length > 22) {\n temp = this.hexByte2Int(value[22], 0) + this.hexByte2Int(value[23], 1);\n if (value.length > 24) {\n spo2 = this.hexByte2Int(value[24], 0);\n }\n }\n\n return {\n [DeviceKey.DataType]: BleConst.RealTimeStep,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Step]: step.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(1),\n [DeviceKey.Distance]: (distance / 100).toFixed(1),\n [DeviceKey.ExerciseMinutes]: (time / 60).toString(),\n [DeviceKey.HeartRate]: heart.toString(),\n [DeviceKey.ActiveMinutes]: exerciseTime.toString(),\n [DeviceKey.TempData]: temp.toFixed(1),\n [DeviceKey.Blood_oxygen]: spo2.toString()\n }\n };\n }\n\n // 步数目标解析\n static getGoal(value: number[]): any {\n let goal = 0;\n let distance = 0;\n let calorie = 0;\n let sleepTime = 0;\n\n for (let i = 0; i < 4; i++) {\n goal += this.hexByte2Int(value[i + 1], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n distance += this.hexByte2Int(value[i + 7], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n calorie += this.hexByte2Int(value[i + 9], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n sleepTime += this.hexByte2Int(value[i + 11], i);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetStepGoal,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.StepGoal]: goal.toString(),\n [DeviceKey.DistanceGoal]: distance.toString(),\n [DeviceKey.CalorieGoal]: calorie.toString(),\n [DeviceKey.SleepTimeGoal]: sleepTime.toString()\n }\n };\n }\n\n // 设备电量解析\n static getDeviceBattery(value: number[]): any {\n const battery = this.hexByte2Int(value[1], 0);\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceBatteryLevel,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.BatteryLevel]: battery.toString()\n }\n };\n }\n\n // 设备 MAC 地址解析\n static getDeviceAddress(value: number[]): any {\n if (value.length === 0) return {};\n\n const addressParts: string[] = [];\n for (let i = 1; i < 7; i++) {\n const mac = value[i].toString(16).padStart(2, '0');\n addressParts.push(mac);\n }\n\n const macAddress = addressParts.join(':');\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceMacAddress,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.MacAddress]: macAddress\n }\n };\n }\n\n // 设备版本号解析\n static getDeviceVersion(value: number[]): any {\n if (value.length === 0) return {};\n\n const versionParts: string[] = [];\n for (let i = 1; i < 5; i++) {\n versionParts.push(value[i].toString(16));\n }\n\n const version = versionParts.join('.');\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceVersion,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceVersion]: version\n }\n };\n }\n\n // 恢复出厂设置\n static Reset(): any {\n return {\n [DeviceKey.DataType]: BleConst.CMD_Reset,\n [DeviceKey.End]: true\n };\n }\n\n // MCU 软复位指令\n static MCUReset(): any {\n return {\n [DeviceKey.DataType]: BleConst.CMD_MCUReset,\n [DeviceKey.End]: true\n };\n }\n\n // 第三方提醒命令\n static Notify(): any {\n return {\n [DeviceKey.DataType]: BleConst.Notify,\n [DeviceKey.End]: true\n };\n }\n\n // 设备名称解析\n static getDeviceName(value: number[]): any {\n let name = \"\";\n for (let i = 1; i < 15; i++) {\n const charValue = this.hexByte2Int(value[i], 0);\n if (charValue === 0 || charValue > 127) continue;\n name += String.fromCharCode(charValue);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceName,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceName]: name\n }\n };\n }\n // 自动测量心率时间段解析\n static getAutoHeart(value: number[]): any {\n const time = this.hexByte2Int(value[7], 0) + this.hexByte2Int(value[8], 1);\n return {\n [DeviceKey.DataType]: BleConst.GetAutomaticHRMonitoring,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.WorkMode]: this.hexByte2Int(value[1], 0).toString(),\n [DeviceKey.StartTime]: this.bcd2String(value[2]),\n [DeviceKey.KHeartStartMinter]: this.bcd2String(value[3]),\n [DeviceKey.EndTime]: this.bcd2String(value[4]),\n [DeviceKey.KHeartEndMinter]: this.bcd2String(value[5]),\n [DeviceKey.Weeks]: this.getByteString(value[6]),\n [DeviceKey.IntervalTime]: time.toString()\n }\n };\n }\n // 周解析工具\n static getWeekInt(ar: number[]): number {\n let week = 0;\n for (let i = 0; i < ar.length; i++) {\n if (ar[i] === 1) {\n week += Math.pow(2, i);\n }\n }\n return week;\n }\n\n // 字节转字符串\n static getByteString(b: number): string {\n const array: number[] = new Array(8).fill(0);\n const parts: string[] = [];\n\n for (let i = 0; i <= 6; i++) {\n array[i] = b & 1;\n b = b >> 1;\n parts.push(array[i].toString());\n }\n\n return parts.join('-');\n }\n\n // 字节数组解析\n static getByteArray(b: number): string {\n const array: number[] = new Array(8).fill(0);\n let result = '';\n\n for (let i = 0; i <= 7; i++) {\n array[i] = b & 1;\n b = b >> 1;\n result += array[i];\n }\n\n return result;\n }\n\n /**\n * 字节转整数(对应原 _hexByte2Int)\n * @param byte 字节值\n * @param shift 位移量(用于多字节拼接)\n */\n private static _hexByte2Int(byte: number, shift: number): number {\n return byte << (8 * shift);\n }\n\n /**\n * BCD编码转字符串(对应原 _bcd2String)\n * BCD编码:每个字节表示2位十进制数(如0x12 → \"12\")\n */\n private static _bcd2String(byte: number): string {\n const high = (byte >> 4) & 0x0F; // 高4位\n const low = byte & 0x0F; // 低4位\n return `${high}${low}`;\n }\n\n /**\n * 久坐提醒\n */\n static getActivityAlarm(value: number[]): object {\n const mapData = {\n [DeviceKey.StartTimeHour]: this._bcd2String(value[1]),\n [DeviceKey.StartTimeMin]: this._bcd2String(value[2]),\n [DeviceKey.EndTimeHour]: this._bcd2String(value[3]),\n [DeviceKey.EndTimeMin]: this._bcd2String(value[4]),\n [DeviceKey.Week]: this.getByteString(value[5]),\n [DeviceKey.IntervalTime]: this._hexByte2Int(value[6], 0).toString(),\n [DeviceKey.LeastSteps]: this._hexByte2Int(value[7], 0).toString(),\n [DeviceKey.OpenOrClose]: this._hexByte2Int(value[8], 0).toString()\n };\n\n return {\n [DeviceKey.DataType]: BleConst.GetSedentaryReminder,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: mapData\n };\n }\n\n\n /**\n * 总运动数据解析\n */\n static getTotalStepData(value: number[]): object {\n console.log('total:',value);\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetTotalActivityData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n const count = 27;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n const flag = 1 + (i + 1) * count;\n if (flag < length && value[flag] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期\n const date = `20${this._bcd2String(value[2 + i * count])}.${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}`;\n\n // 解析步数\n let step = 0;\n for (let j = 0; j < 4; j++) {\n step += this._hexByte2Int(value[5 + j + i * count], j);\n }\n\n // 解析运动时间\n let time = 0;\n for (let j = 0; j < 4; j++) {\n time += this._hexByte2Int(value[9 + j + i * count], j);\n }\n\n // 解析距离\n let distance = 0;\n for (let j = 0; j < 4; j++) {\n distance += this._hexByte2Int(value[13 + j + i * count], j);\n }\n\n // 解析卡路里\n let cal = 0;\n for (let j = 0; j < 4; j++) {\n cal += this._hexByte2Int(value[17 + j + i * count], j);\n }\n\n // 解析目标值\n let goal = this._hexByte2Int(value[21 + i * count], 0) + this._hexByte2Int(value[22 + i * count], 1);\n\n // 解析活跃时间\n let exerciseTime = 0;\n for (let j = 0; j < 4; j++) {\n exerciseTime += this._hexByte2Int(value[count - 4 + j + i * count], j);\n }\n\n // 组装数据\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Step]: step.toString(),\n [DeviceKey.ExerciseMinutes]: time.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(1),\n [DeviceKey.Distance]: (distance / 100).toFixed(1),\n [DeviceKey.Goal]: goal.toString(),\n [DeviceKey.ActiveMinutes]: exerciseTime\n });\n }\n\n return maps;\n }\n\n /**\n * 详细运动数据解析\n */\n static getDetailData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDetailActivityData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 25;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * 25])}.${this._bcd2String(value[4 + i * 25])}.${this._bcd2String(value[5 + i * 25])} ${this._bcd2String(value[6 + i * 25])}:${this._bcd2String(value[7 + i * 25])}:${this._bcd2String(value[8 + i * 25])}`;\n\n // 解析步数\n let step = 0;\n for (let j = 0; j < 2; j++) {\n step += this._hexByte2Int(value[9 + j + i * 25], j);\n }\n\n // 解析卡路里\n let cal = 0;\n for (let j = 0; j < 2; j++) {\n cal += this._hexByte2Int(value[11 + j + i * 25], j);\n }\n\n // 解析距离\n let distance = 0;\n for (let j = 0; j < 2; j++) {\n distance += this._hexByte2Int(value[13 + j + i * 25], j);\n }\n\n // 解析步数数组\n const arraySteps: string[] = [];\n for (let j = 0; j < 10; j++) {\n arraySteps.push(this._hexByte2Int(value[15 + j + i * 25], 0).toString());\n }\n\n // 组装数据\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.KDetailMinterStep]: step.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(2),\n [DeviceKey.Distance]: (distance / 100).toFixed(2),\n [DeviceKey.ArraySteps]: arraySteps.join(' ')\n });\n }\n\n return maps;\n }\n\n\n /**\n * 睡眠数据解析\n */\n static getSleepData(value: number[]): object {\n const length = value.length;\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDetailSleepData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n // 检查是否结束\n const end = value[value.length - 1] === 0xff && value[value.length - 2] === DeviceConst.CMD_Get_SleepData;\n if (end) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析130字节或132字节格式\n if (length === 130 || (end && length === 132)) {\n const date = `20${this._bcd2String(value[3])}-${this._bcd2String(value[4])}-${this._bcd2String(value[5])} ${this._bcd2String(value[6])}:${this._bcd2String(value[7])}:${this._bcd2String(value[8])}`;\n\n const sleepLength = this._hexByte2Int(value[9], 0);\n const arraySleep: string[] = [];\n for (let j = 0; j < sleepLength; j++) {\n arraySleep.push(this._hexByte2Int(value[10 + j], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArraySleep]: arraySleep.join(' '),\n [DeviceKey.sleepUnitLength]: '1'\n });\n } else {\n // 解析34字节格式\n const count = 34;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n const date = `20${this._bcd2String(value[3 + i * 34])}-${this._bcd2String(value[4 + i * 34])}-${this._bcd2String(value[5 + i * 34])} ${this._bcd2String(value[6 + i * 34])}:${this._bcd2String(value[7 + i * 34])}:${this._bcd2String(value[8 + i * 34])}`;\n\n const sleepLength = this._hexByte2Int(value[9 + i * 34], 0);\n const arraySleep: string[] = [];\n for (let j = 0; j < sleepLength; j++) {\n arraySleep.push(this._hexByte2Int(value[10 + j + i * 34], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArraySleep]: arraySleep.join(' '),\n [DeviceKey.sleepUnitLength]: '5'\n });\n }\n }\n\n return maps;\n }\n\n\n /**\n * 自动血氧数据解析\n */\n static getAutoBloodOxygen(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.AutoBloodOxygen,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析血氧值\n const bloodOxygen = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Blood_oxygen]: bloodOxygen\n });\n }\n\n return maps;\n }\n\n\n /**\n * 历史血氧数据解析(与自动血氧逻辑一致,复用代码)\n */\n static getBloodoxygen(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.Blood_oxygen,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析血氧值\n const bloodOxygen = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Blood_oxygen]: bloodOxygen\n });\n }\n\n return maps;\n }\n\n\n /**\n * 历史心率数据解析\n */\n static getHeartData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDynamicHR,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 24;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析心率数组\n const arrayHR: string[] = [];\n for (let j = 0; j < 15; j++) {\n arrayHR.push(this._hexByte2Int(value[9 + j + i * count], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArrayDynamicHR]: arrayHR.join(' ')\n });\n }\n\n return maps;\n }\n\n\n /**\n * 单次历史心率数据解析\n */\n static getOnceHeartData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetStaticHR,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n // 检查是否结束\n if (size === 0 || (size === 1 && value[1] === 0x99)) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * 10])}.${this._bcd2String(value[4 + i * 10])}.${this._bcd2String(value[5 + i * 10])} ${this._bcd2String(value[6 + i * 10])}:${this._bcd2String(value[7 + i * 10])}:${this._bcd2String(value[8 + i * 10])}`;\n\n // 解析心率值\n const heartRate = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.StaticHR]: heartRate\n });\n }\n\n return maps;\n }\n // resolveUtil.tsx\n\n // HRV测试数据解析\n static getHrvTestData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetHRVData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 15;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n if (value[value.length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n for (let i = 0; i < size; i++) {\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const hrv = this.hexByte2Int(value[9 + i * count], 0).toString();\n const blood = this.hexByte2Int(value[10 + i * count], 0).toString();\n const heart = this.hexByte2Int(value[11 + i * count], 0).toString();\n const tired = this.hexByte2Int(value[12 + i * count], 0).toString();\n const moodValue = this.hexByte2Int(value[13 + i * count], 0).toString();\n const breathRate = this.hexByte2Int(value[14 + i * count], 0).toString();\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.HRV]: hrv,\n [DeviceKey.VascularAging]: blood,\n [DeviceKey.HeartRate]: heart,\n [DeviceKey.Stress]: tired,\n [DeviceKey.highBP]: moodValue,\n [DeviceKey.lowBP]: breathRate\n });\n }\n\n return result;\n }\n\n // 闹钟数据解析\n static getClockData(value: number[]): any {\n console.log(\"getClockData:\", value);\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetAlarmClock,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 41;\n const length = value.length;\n var isDele = false;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n if (value[1] == 0x99 && length == 16) {\n isDele = true;\n }\n result[DeviceKey.IsDeleteData] = isDele;\n for (let i = 0; i < size; i++) {\n const flag = 1 + (i + 1) * count;\n if (flag < length && value[flag] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const id = this.hexByte2Int(value[4 + i * count], 0).toString();\n const enable = this.hexByte2Int(value[5 + i * count], 0).toString();\n const type = this.hexByte2Int(value[6 + i * count], 0).toString();\n const hour = this.bcd2String(value[7 + i * count]);\n const min = this.bcd2String(value[8 + i * count]);\n const week = this.hexByte2Int(value[9 + i * count], 0);\n const lengthS = this.hexByte2Int(value[10 + i * count], 0);\n\n let content = \"\";\n for (let j = 0; j < lengthS; j++) {\n const charValue = value[11 + j + i * count];\n if (charValue === 0) continue;\n content += this.int2Ascll(this.hexByte2Int(charValue, 0));\n }\n\n result[DeviceKey.Data].push({\n [DeviceKey.KAlarmId]: id,\n [DeviceKey.OpenOrClose]: enable,\n [DeviceKey.ClockType]: type,\n [DeviceKey.ClockTime]: hour,\n [DeviceKey.KAlarmMinter]: min,\n [DeviceKey.Week]: week,\n [DeviceKey.KAlarmContent]: content,\n [DeviceKey.KAlarmLength]: lengthS.toString()\n });\n }\n\n return result;\n }\n\n // 腋下温度数据解析\n static getTempDataer(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetAxillaryTemperatureDataWithMode,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 11;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0 || value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const tempValue = this.hexByte2Int(value[9 + i * count], 0) +\n this.hexByte2Int(value[10 + i * count], 1);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.axillaryTemperature]: (tempValue * 0.1).toFixed(1)\n });\n }\n\n return result;\n }\n\n // 二维码相关功能\n static getQrCode(value: number[], flag: boolean): any {\n if (flag) {\n return {\n [DeviceKey.DataType]: BleConst.EnterQrCode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n } else {\n if (value[1] === 0x80 || value[1] === 0x81) {\n return {\n [DeviceKey.DataType]: BleConst.QrCodeBandBack,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Band]: value[1] === 0x81 ? \"1\" : \"0\"\n }\n };\n } else {\n return {\n [DeviceKey.DataType]: BleConst.ExitQrCode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n }\n }\n\n // 温度历史数据解析\n static getTempData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.Temperature_history,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 11;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0 ||\n value[length - 1] === 0xff ||\n (size === 1 && value[1] === 0x99)) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const tempValue = this.hexByte2Int(value[9 + i * count], 0) +\n this.hexByte2Int(value[10 + i * count], 1);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.temperature]: (tempValue * 0.1).toFixed(1)\n });\n }\n\n return result;\n }\n\n // 运动模式数据解析\n static getExerciseData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetActivityModeData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 25;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n const flag = 1 + (i + 1) * count;\n if (flag < length && i === size - 1 && value[flag] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const mode = this.hexByte2Int(value[9 + i * count], 0).toString();\n const heartRate = this.hexByte2Int(value[10 + i * count], 0).toString();\n\n const periodTime = this.getData(2, 11 + i * count, value);\n const steps = this.getData(2, 13 + i * count, value);\n\n const speedMin = this.hexByte2Int(value[15 + i * count], 0);\n const speedS = this.hexByte2Int(value[16 + i * count], 0);\n\n const valueCal = new Array(4).fill(0);\n for (let j = 0; j < 4; j++) {\n valueCal[3 - j] = value[17 + j + i * count];\n }\n\n const valueDistance = new Array(4).fill(0);\n for (let j = 0; j < 4; j++) {\n valueDistance[3 - j] = value[21 + j + i * count];\n }\n\n const cal = this.getFloat(valueCal, 0);\n const distance = this.getFloat(valueDistance, 0);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ActivityMode]: mode,\n [DeviceKey.HeartRate]: heartRate,\n [DeviceKey.ActiveMinutes]: periodTime.toString(),\n [DeviceKey.Step]: steps.toString(),\n [DeviceKey.Pace]: `${speedMin.toString(16)}'${speedS.toString(16)}`,\n [DeviceKey.Distance]: distance.toFixed(2),\n [DeviceKey.Calories]: cal.toFixed(1)\n });\n }\n\n return result;\n }\n\n // 活动运动数据解析\n static getActivityExerciseData(value: number[]): any {\n let steps = 0;\n let time = 0;\n\n const valueCal = new Array(4).fill(0);\n\n for (let i = 0; i < 4; i++) {\n steps += this.hexByte2Int(value[i + 2], i);\n valueCal[3 - i] = value[i + 6];\n time += this.hexByte2Int(value[i + 10], i);\n }\n\n const heartRate = this.hexByte2Int(value[1], 0);\n const kcal = this.getFloat(valueCal, 0);\n\n return {\n [DeviceKey.DataType]: BleConst.EnterActivityMode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HeartRate]: heartRate.toString(),\n [DeviceKey.Step]: steps.toString(),\n [DeviceKey.Calories]: kcal.toFixed(1),\n [DeviceKey.ActiveMinutes]: time.toString()\n }\n };\n }\n\n // 设置时间成功响应\n static setTimeSuccessful(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SetDeviceTime,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KPhoneDataLength]: this.hexByte2Int(value[1], 0).toString()\n }\n };\n }\n\n // 辅助方法:获取数据块\n private static getData(length: number, start: number, value: number[]): number {\n let data = 0;\n for (let j = 0; j < length; j++) {\n data += this.hexByte2Int(value[j + start], j);\n }\n return data;\n }\n // 字节转浮点\n private static getFloat(arr: number[], index: number): number {\n return this.intBitToDouble(this.getInt(arr, index));\n }\n\n private static getInt(arr: number[], index: number): number {\n return (\n ((arr[index] & 0xff) << 24) |\n ((arr[index + 1] & 0xff) << 16) |\n ((arr[index + 2] & 0xff) << 8) |\n (arr[index + 3] & 0xff)\n );\n }\n // 设置成功响应\n static setMethodSuccessful(dataType: string): any {\n return {\n [DeviceKey.DataType]: dataType,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // ECG数据解析\n static getEcgHistoryData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.ECGdata,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: {}\n };\n\n const length = value.length;\n if (\n length === 3 ||\n (value[length - 3] === 0x71 &&\n value[length - 2] === 0xff &&\n value[length - 1] === 0xff)\n ) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n const id = this.hexByte2Int(value[1], 0) + this.hexByte2Int(value[2], 1);\n let offset = 3;\n\n if (id === 0) {\n const date = `20${this.bcd2String(value[3])}-${this.bcd2String(value[4])\n }-${this.bcd2String(value[5])} ${this.bcd2String(value[6])\n }:${this.bcd2String(value[7])}:${this.bcd2String(value[8])\n }`;\n const hrv = this.hexByte2Int(value[11], 0).toString();\n const heart = this.hexByte2Int(value[12], 0).toString();\n const moodValue = this.hexByte2Int(value[13], 0).toString();\n\n result[DeviceKey.Data][DeviceKey.Date] = date;\n result[DeviceKey.Data][DeviceKey.HRV] = hrv;\n result[DeviceKey.Data][DeviceKey.HeartRate] = heart;\n result[DeviceKey.Data][DeviceKey.ECGMoodValue] = moodValue;\n\n offset = 27;\n }\n\n const tempValue = value.slice(offset, length);\n const ecgData = this.getEcgDataString(tempValue);\n result[DeviceKey.Data][DeviceKey.ECGValue] = ecgData;\n\n return result;\n }\n\n private static getEcgDataString(value: number[]): string {\n const points: string[] = [];\n const length = Math.floor(value.length / 2) - 1;\n\n for (let i = 0; i < length; i++) {\n let ecgValue = this.hexByte2Int(value[i * 2 + 1], 1) +\n this.hexByte2Int(value[i * 2 + 2], 0);\n\n if (ecgValue >= 32768) ecgValue -= 65536;\n points.push(ecgValue.toString());\n }\n\n return points.join(',');\n }\n // resolveUtil.tsx\n\n // ECG数据解析\n static ecgData(value: number[]): any {\n const index = this.hexByte2Int(value[1], 0);\n return {\n [DeviceKey.DataType]: BleConst.EcgppGstatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.EcgStatus]: index.toString()\n }\n };\n }\n\n // PPG数据解析\n static PPGData(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.EcgppGstatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.PPGValue]: value\n }\n };\n }\n\n // ECG结果解析\n static ECGResult(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetEcgPpgStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n\n const resultValue = this.hexByte2Int(value[1], 0);\n if (resultValue === 3) {\n const date = `20${this.bcd2String(value[10])}.${this.bcd2String(value[11])\n }.${this.bcd2String(value[12])} ${this.bcd2String(value[13])\n }:${this.bcd2String(value[14])}:${this.bcd2String(value[15])\n }`;\n\n result[DeviceKey.Data] = {\n [DeviceKey.Date]: date,\n [DeviceKey.ECGHrvValue]: this.hexByte2Int(value[2], 0).toString(),\n [DeviceKey.ECGAvBlockValue]: this.hexByte2Int(value[3], 0).toString(),\n [DeviceKey.ECGHrValue]: this.hexByte2Int(value[4], 0).toString(),\n [DeviceKey.ECGStreesValue]: this.hexByte2Int(value[5], 0).toString(),\n [DeviceKey.ECGhighBpValue]: this.hexByte2Int(value[6], 0).toString(),\n [DeviceKey.ECGLowBpValue]: this.hexByte2Int(value[7], 0).toString(),\n [DeviceKey.ECGMoodValue]: this.hexByte2Int(value[8], 0).toString(),\n [DeviceKey.ECGBreathValue]: this.hexByte2Int(value[9], 0).toString()\n };\n }\n\n return result;\n }\n\n // 进入ECG模式\n static enterEcg(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.ENTERECG,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // 测量类型处理\n static measurementWithType(flag: boolean, value: number[]): any {\n if (flag) {\n switch (value[1]) {\n case 1: // HRV\n return {\n [DeviceKey.DataType]: BleConst.MeasurementHrvCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HRV]: this.hexByte2Int(value[4], 0)\n }\n };\n\n case 2: // 心率\n return {\n [DeviceKey.DataType]: BleConst.MeasurementHeartCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HeartRate]: this.hexByte2Int(value[2], 0)\n }\n };\n\n case 3: // 血氧\n return {\n [DeviceKey.DataType]: BleConst.MeasurementOxygenCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Blood_oxygen]: this.hexByte2Int(value[3], 0)\n }\n };\n\n case 4: // 体温\n const tempValue = this.hexByte2Int(value[8], 0) +\n this.hexByte2Int(value[9], 1);\n return {\n [DeviceKey.DataType]: BleConst.MeasurementTempCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.temperature]: (tempValue * 0.1).toFixed(1)\n }\n };\n }\n } else {\n\n const callbacks: { [key: number]: string } = {\n 1: BleConst.StopMeasurementHrvCallback,\n 2: BleConst.StopMeasurementHeartCallback,\n 3: BleConst.StopMeasurementOxygenCallback,\n 4: BleConst.StopMeasurementTempCallback\n };\n if (callbacks[value[1]]) {\n return this.setMethodSuccessful(callbacks[value[1]]);\n }\n }\n\n return {};\n }\n\n // 手环表盘设置\n static braceletdial(isruning: boolean, value: number[]): any {\n if (isruning) {\n return {\n [DeviceKey.DataType]: BleConst.Braceletdial,\n [DeviceKey.End]: true\n };\n } else {\n return {\n [DeviceKey.DataType]: BleConst.Braceletdialok,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n index: value[1].toString()\n }\n };\n }\n }\n\n // 获取运动模式\n static getSportMode(value: number[]): any {\n const length = this.hexByte2Int(value[1], 0);\n const types: string[] = [];\n\n for (let i = 0; i < length; i++) {\n types.push(this.hexByte2Int(value[i + 2], 0).toString());\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetSportMode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: types.join(\",\")\n };\n }\n\n // GPS控制命令解析\n static gPSControlCommand(value: number[]): any {\n const date = `20${this.bcd2String(value[1])}-${this.bcd2String(value[2])\n }-${this.bcd2String(value[3])} ${this.bcd2String(value[4])\n }:${this.bcd2String(value[5])}:${this.bcd2String(value[6])\n }`;\n\n const valueLatitude = new Array(4).fill(0);\n const valueLongitude = new Array(4).fill(0);\n\n for (let j = 0; j < 4; j++) {\n valueLatitude[3 - j] = value[9 + j];\n valueLongitude[3 - j] = value[14 + j];\n }\n\n const latitude = this.getFloat(valueLatitude, 0).toString();\n const longitude = this.getFloat(valueLongitude, 0).toString();\n const count = this.hexByte2Int(value[18], 0);\n\n return {\n [DeviceKey.DataType]: BleConst.GPSControlCommand,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KActivityLocationTime]: date,\n [DeviceKey.KActivityLocationLatitude]: latitude,\n [DeviceKey.KActivityLocationLongitude]: longitude,\n [DeviceKey.KActivityLocationCount]: count.toString()\n }\n };\n }\n\n // 设置社交距离\n static setSocial(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SocialdistanceGetting,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n scanInterval: this.hexByte2Int(value[2], 0).toString(),\n scanTime: this.hexByte2Int(value[3], 0).toString(),\n signalStrength: value[4].toString()\n }\n };\n }\n\n // ECG质量数据\n static eCGQuality(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.EcgppG,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n heartValue: this.hexByte2Int(value[1], 0).toString(),\n hrvValue: this.hexByte2Int(value[2], 0).toString(),\n Quality: this.hexByte2Int(value[3], 0).toString()\n }\n };\n }\n\n // 进入照片模式返回\n static enterPhotoModeback(value: number[]): any {\n let type = \"\";\n\n switch (value[1]) {\n case 1:\n type = value[2] === 0 ? \"0\" : \"1\";\n break;\n case 2:\n type = \"2\";\n break;\n case 3:\n switch (value[2]) {\n case 1: type = \"3\"; break;\n case 2: type = \"4\"; break;\n case 3: type = \"5\"; break;\n case 4: type = \"6\"; break;\n case 5: type = \"7\"; break;\n }\n break;\n case 4:\n type = \"8\";\n break;\n }\n\n return {\n [DeviceKey.DataType]: BleConst.DeviceSendDataToAPP,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n type\n }\n };\n }\n\n // 设置新设备信息\n static setNewDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SetNewDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // 获取新设备信息\n static getNewDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetNewDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n KEcg: this.hexByte2Int(value[1], 0).toString()\n }\n };\n }\n\n // 更新闹钟成功\n static updateClockSuccessful(value: number[]): any {\n console.log('updateClockSuccessful:', value);\n return {\n [DeviceKey.DataType]: BleConst.SetAlarmClockWithAllClock,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KClockLast]: this.hexByte2Int(value[value.length - 1], 0).toString()\n }\n };\n }\n\n // 设置血糖状态\n static setBoolSugarStatus(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.BoolsugarStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.EcgStatus]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n\n // 设置血糖值\n static setBoolSugarValue(value: number[]): any {\n const tempValue = value.slice(3);\n const datas: number[] = [];\n\n for (let i = 0; i < Math.floor(tempValue.length / 3); i++) {\n const val = this.hexByte2Int(tempValue[3 * i], 2) +\n this.hexByte2Int(tempValue[3 * i + 1], 1) +\n this.hexByte2Int(tempValue[3 * i + 2], 0);\n datas.push(val);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.BoolsugarValue,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n timestamp: Math.floor(Date.now() / 1000),\n ppg: datas\n }\n };\n }\n\n // 设置方法错误\n static setMethodError(dataType: string): any {\n return {\n [DeviceKey.DataType]: dataType,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: {}\n };\n }\n\n // 读取怀孕周期数据\n static readPregnancyCycle(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetPregnancyCycle,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Date]: `20${this.bcd2String(value[3])}-${this.bcd2String(value[4])\n }-${this.bcd2String(value[5])}`,\n [DeviceKey.Week]: this.hexByte2Int(value[1], 0),\n [DeviceKey.DayOfWeek]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n // 女性健康数据解析\n static readWomenHealth(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetWomenHealth,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Date]: `${this.bcd2String(value[1])}-${this.bcd2String(value[2])}`,\n [DeviceKey.WomenHealthPeriod]: this.hexByte2Int(value[3], 0),\n [DeviceKey.WomenHealthLength]: this.hexByte2Int(value[4], 0)\n }\n };\n }\n\n // 温度校正值解析\n static getTemperatureCorrectionValue(value: number[]): any {\n const tempValue = [value[3], value[2]];\n const temperatureCorrectionValue = this.byteArrayToInt(tempValue);\n\n return {\n [DeviceKey.DataType]: BleConst.CMD_Set_TemperatureCorrection,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.TemperatureCorrectionValue]: temperatureCorrectionValue.toString()\n }\n };\n }\n\n private static byteArrayToInt(arr: number[]): number {\n return ((arr[0] << 8) & 0xff00) | (arr[1] & 0xff);\n }\n // resolveUtil.ts\n\n // 获取历史GPS数据\n static getHistoryGpsData(value: number[]): any {\n const list: any[] = [];\n const result: any = {\n [DeviceKey.DataType]: BleConst.Gps,\n [DeviceKey.End]: false\n };\n\n const count = 59;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n return result;\n }\n\n // 检查是否结束\n if (value[value.length - 1] === 0xff && value[value.length - 2] === 0x5a) {\n result[DeviceKey.End] = true;\n }\n\n for (let i = 0; i < size; i++) {\n const hashMap: any = {};\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const latitudeParts: string[] = [];\n const longitudeParts: string[] = [];\n\n for (let k = 0; k < 6; k++) {\n const valueLatitude = new Array(4).fill(0);\n const valueLongitude = new Array(4).fill(0);\n\n for (let j = 0; j < 4; j++) {\n valueLatitude[3 - j] = value[9 + j + i * count + k * 8];\n valueLongitude[3 - j] = value[13 + j + i * count + k * 8];\n }\n\n const latitude = this.getFloat(valueLatitude, 0).toString();\n const longitude = this.getFloat(valueLongitude, 0).toString();\n\n latitudeParts.push(latitude);\n longitudeParts.push(longitude);\n }\n\n hashMap[DeviceKey.Date] = date.length === 17 ? date : \"2019.01.01 00:00:00\";\n hashMap[DeviceKey.Latitude] = latitudeParts.join(\",\");\n hashMap[DeviceKey.Longitude] = longitudeParts.join(\",\");\n\n list.push(hashMap);\n }\n\n result[DeviceKey.Data] = list;\n return result;\n }\n\n // PPI测试数据解析\n static getPPITestData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetPPIData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 123;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n if (value[value.length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const arraySize = 56;\n\n for (let i = 0; i < size; i++) {\n const hashMap: any = {};\n\n // 数据编号\n const numList = new Array(2).fill(0);\n for (let k = 0; k < 2; k++) {\n numList[1 - k] = value[1 + k + i * count];\n }\n\n const numCode = this.getInt(numList, 0);\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n // 数据条数\n const totalId = this.hexByte2Int(value[9 + i * count], 0);\n const ID = this.hexByte2Int(value[10 + i * count], 0).toString();\n\n const startFrame = 11;\n const ppiList: number[] = [];\n\n for (let j = 0; j < arraySize; j++) {\n const tempFrame = startFrame + j * 2;\n const valueCal = new Array(2).fill(0);\n\n for (let n = 0; n < 2; n++) {\n valueCal[1 - n] = value[tempFrame + n + i * count];\n }\n\n const PII = this.getFloat(valueCal, 0);\n\n if (PII === 0.0) {\n break;\n }\n\n ppiList.push(PII);\n }\n\n hashMap[DeviceKey.TOTAL_ID] = totalId.toString();\n hashMap[DeviceKey.PPI_ID] = ID;\n hashMap[DeviceKey.DeviceTime] = date;\n hashMap[DeviceKey.PPI_LIST] = ppiList;\n hashMap[DeviceKey.PPI_NUM] = numCode;\n\n result[DeviceKey.Data].push(hashMap);\n }\n\n return result;\n }\n\n // 获取HRV测量时间数据\n static getHrvTimeData(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetHrvTimeValue,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HRV_TIME_MODE]: this.hexByte2Int(value[1], 0),\n [DeviceKey.HRV_TIME_Value]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n\n // 断开蓝牙连接\n static closeDevices(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.CloseDevices,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.RESULT]: true\n }\n };\n }\n\n // 脱手检测状态上报\n static getOffCheckStatus(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetOffCheckStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.GET_OFF_TAG]: this.hexByte2Int(value[1], 0),\n [DeviceKey.GET_OFF_STATE]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n};"]}
|
|
1
|
+
{"version":3,"file":"resolveUtil.js","sourceRoot":"","sources":["../../src/sdk/resolveUtil.ts"],"names":[],"mappings":"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","sourcesContent":["import { DeviceConst, BleConst, DeviceKey } from './bleConst';\n\n// 字节操作工具类\nexport class ResolveUtil {\n // CRC 校验\n static crcValue(value: number[]): void {\n let crc = 0;\n for (let i = 0; i < value.length - 1; i++) {\n crc += value[i];\n }\n value[value.length - 1] = crc & 0xff;\n }\n\n private static hexByte2Int(b: number, count: number): number {\n return (b & 0xff) * Math.pow(256, count);\n }\n\n // BCD 码时间解析\n private static bcd2String(bytes: number): string {\n const a = (bytes & 0xf0) >> 4;\n const b = bytes & 0x0f;\n return `${a}${b}`;\n }\n\n // 字节数组转十六进制字符串\n static intList2String(bytes: number[]): string {\n return bytes.map(b => b.toString(16).padStart(2, '0').toUpperCase()).join(' ');\n }\n\n // 字节数组转十六进制字符串(小写)\n static intList3String(bytes: number[]): string {\n return bytes.map(b => b.toString(16).padStart(2, '0').toLowerCase()).join(' ');\n }\n static setMacSuccessful(): { [key: string]: any } {\n return {\n [DeviceKey.DataType]: BleConst.CMD_Set_Mac,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n private static intBitToDouble(value: number): number {\n const buffer = new ArrayBuffer(8);//4\n const view = new DataView(buffer);\n view.setInt32(0, value, false); // big-endian\n return view.getFloat32(0, false);\n }\n // 设备时间解析\n static getDeviceTime(value: number[]): any {\n const date = `20${this.bcd2String(value[1])}-${this.bcd2String(value[2])}-${this.bcd2String(value[3])} ${this.bcd2String(value[4])}:${this.bcd2String(value[5])}:${this.bcd2String(value[6])}`;\n const gpsDate = `${this.bcd2String(value[9])}.${this.bcd2String(value[10])}.${this.bcd2String(value[11])}`;\n\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceTime,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceTime]: date,\n [DeviceKey.GPSTime]: gpsDate\n }\n };\n }\n // int转ASCII\n private static int2Ascll(value: number): string {\n if (value < 0 || value > 255) {\n throw new Error(\"Value must be between 0 and 255\");\n }\n return String.fromCharCode(value);\n }\n // GPS 时间解析\n static getGpsTime(value: number[]): string {\n return `${this.bcd2String(value[9])}.${this.bcd2String(value[10])}.${this.bcd2String(value[11])}`;\n }\n\n // 用户信息解析\n static getUserInfo(value: number[]): any {\n const userInfo = new Array(6).fill(0);\n for (let i = 0; i < 5; i++) {\n userInfo[i] = this.hexByte2Int(value[i + 1], 0);\n }\n\n let userId = '';\n for (let i = 6; i < 12; i++) {\n if (value[i] === 0) continue;\n userId += String.fromCharCode(this.hexByte2Int(value[i], 0));\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetPersonalInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Gender]: userInfo[0],\n [DeviceKey.Age]: userInfo[1],\n [DeviceKey.Height]: userInfo[2],\n [DeviceKey.Weight]: userInfo[3],\n [DeviceKey.Stride]: userInfo[4],\n [DeviceKey.KUserDeviceId]: userId\n }\n };\n }\n\n // 设备信息解析\n static getDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DistanceUnit]: this.hexByte2Int(value[1], 0).toString(),\n [DeviceKey.TimeUnit]: this.hexByte2Int(value[2], 0).toString(),\n [DeviceKey.StatusOfTheRaisedHandOnscreen]: this.hexByte2Int(value[3], 0).toString(),\n [DeviceKey.TempUnit]: this.hexByte2Int(value[4], 0).toString(),\n [DeviceKey.NightMode]: this.hexByte2Int(value[5], 0).toString(),\n [DeviceKey.KBaseHeart]: this.hexByte2Int(value[9], 0).toString(),\n [DeviceKey.ScreenBrightness]: this.hexByte2Int(value[11], 0).toString(),\n [DeviceKey.Dialinterface]: this.hexByte2Int(value[12], 0).toString(),\n [DeviceKey.SocialDistancedwitch]: this.hexByte2Int(value[13], 0).toString(),\n [DeviceKey.ChineseOrEnglish]: this.hexByte2Int(value[14], 0).toString()\n }\n };\n }\n\n // 实时计步信息解析\n static getActivityData(value: number[]): any {\n let step = 0;\n let cal = 0;\n let distance = 0;\n let time = 0;\n let exerciseTime = 0;\n\n for (let i = 1; i < 5; i++) {\n step += this.hexByte2Int(value[i], i - 1);\n }\n\n for (let i = 5; i < 9; i++) {\n cal += this.hexByte2Int(value[i], i - 5);\n }\n\n for (let i = 9; i < 13; i++) {\n distance += this.hexByte2Int(value[i], i - 9);\n }\n\n for (let i = 13; i < 17; i++) {\n time += this.hexByte2Int(value[i], i - 13);\n }\n\n for (let i = 17; i < 21; i++) {\n exerciseTime += this.hexByte2Int(value[i], i - 17);\n }\n\n const heart = this.hexByte2Int(value[21], 0);\n let temp = 0;\n let spo2 = 0;\n\n if (value.length > 22) {\n temp = this.hexByte2Int(value[22], 0) + this.hexByte2Int(value[23], 1);\n if (value.length > 24) {\n spo2 = this.hexByte2Int(value[24], 0);\n }\n }\n\n return {\n [DeviceKey.DataType]: BleConst.RealTimeStep,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Step]: step.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(1),\n [DeviceKey.Distance]: (distance / 100).toFixed(1),\n [DeviceKey.ExerciseMinutes]: (time / 60).toString(),\n [DeviceKey.HeartRate]: heart.toString(),\n [DeviceKey.ActiveMinutes]: exerciseTime.toString(),\n [DeviceKey.TempData]: temp.toFixed(1),\n [DeviceKey.Blood_oxygen]: spo2.toString()\n }\n };\n }\n\n // 步数目标解析\n static getGoal(value: number[]): any {\n let goal = 0;\n let distance = 0;\n let calorie = 0;\n let sleepTime = 0;\n\n for (let i = 0; i < 4; i++) {\n goal += this.hexByte2Int(value[i + 1], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n distance += this.hexByte2Int(value[i + 7], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n calorie += this.hexByte2Int(value[i + 9], i);\n }\n\n for (let i = 0; i <= 1; i++) {\n sleepTime += this.hexByte2Int(value[i + 11], i);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetStepGoal,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.StepGoal]: goal.toString(),\n [DeviceKey.DistanceGoal]: distance.toString(),\n [DeviceKey.CalorieGoal]: calorie.toString(),\n [DeviceKey.SleepTimeGoal]: sleepTime.toString()\n }\n };\n }\n\n // 设备电量解析\n static getDeviceBattery(value: number[]): any {\n const battery = this.hexByte2Int(value[1], 0);\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceBatteryLevel,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.BatteryLevel]: battery.toString()\n }\n };\n }\n\n // 设备 MAC 地址解析\n static getDeviceAddress(value: number[]): any {\n if (value.length === 0) return {};\n\n const addressParts: string[] = [];\n for (let i = 1; i < 7; i++) {\n const mac = value[i].toString(16).padStart(2, '0');\n addressParts.push(mac);\n }\n\n const macAddress = addressParts.join(':');\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceMacAddress,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.MacAddress]: macAddress\n }\n };\n }\n\n // 设备版本号解析\n static getDeviceVersion(value: number[]): any {\n if (value.length === 0) return {};\n\n const versionParts: string[] = [];\n for (let i = 1; i < 5; i++) {\n versionParts.push(value[i].toString(16));\n }\n\n const version = versionParts.join('.');\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceVersion,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceVersion]: version\n }\n };\n }\n\n // 恢复出厂设置\n static Reset(): any {\n return {\n [DeviceKey.DataType]: BleConst.CMD_Reset,\n [DeviceKey.End]: true\n };\n }\n\n // MCU 软复位指令\n static MCUReset(): any {\n return {\n [DeviceKey.DataType]: BleConst.CMD_MCUReset,\n [DeviceKey.End]: true\n };\n }\n\n // 第三方提醒命令\n static Notify(): any {\n return {\n [DeviceKey.DataType]: BleConst.Notify,\n [DeviceKey.End]: true\n };\n }\n\n // 设备名称解析\n static getDeviceName(value: number[]): any {\n let name = \"\";\n for (let i = 1; i < 15; i++) {\n const charValue = this.hexByte2Int(value[i], 0);\n if (charValue === 0 || charValue > 127) continue;\n name += String.fromCharCode(charValue);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetDeviceName,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.DeviceName]: name\n }\n };\n }\n // 自动测量心率时间段解析\n static getAutoHeart(value: number[]): any {\n const time = this.hexByte2Int(value[7], 0) + this.hexByte2Int(value[8], 1);\n return {\n [DeviceKey.DataType]: BleConst.GetAutomaticHRMonitoring,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.WorkMode]: this.hexByte2Int(value[1], 0).toString(),\n [DeviceKey.StartTime]: this.bcd2String(value[2]),\n [DeviceKey.KHeartStartMinter]: this.bcd2String(value[3]),\n [DeviceKey.EndTime]: this.bcd2String(value[4]),\n [DeviceKey.KHeartEndMinter]: this.bcd2String(value[5]),\n [DeviceKey.Weeks]: this.getByteString(value[6]),\n [DeviceKey.IntervalTime]: time.toString()\n }\n };\n }\n // 周解析工具\n static getWeekInt(ar: number[]): number {\n let week = 0;\n for (let i = 0; i < ar.length; i++) {\n if (ar[i] === 1) {\n week += Math.pow(2, i);\n }\n }\n return week;\n }\n\n // 字节转字符串\n static getByteString(b: number): string {\n const array: number[] = new Array(8).fill(0);\n const parts: string[] = [];\n\n for (let i = 0; i <= 6; i++) {\n array[i] = b & 1;\n b = b >> 1;\n parts.push(array[i].toString());\n }\n\n return parts.join('-');\n }\n\n // 字节数组解析\n static getByteArray(b: number): string {\n const array: number[] = new Array(8).fill(0);\n let result = '';\n\n for (let i = 0; i <= 7; i++) {\n array[i] = b & 1;\n b = b >> 1;\n result += array[i];\n }\n\n return result;\n }\n\n /**\n * 字节转整数(对应原 _hexByte2Int)\n * @param byte 字节值\n * @param shift 位移量(用于多字节拼接)\n */\n private static _hexByte2Int(byte: number, shift: number): number {\n return byte << (8 * shift);\n }\n\n /**\n * BCD编码转字符串(对应原 _bcd2String)\n * BCD编码:每个字节表示2位十进制数(如0x12 → \"12\")\n */\n private static _bcd2String(byte: number): string {\n const high = (byte >> 4) & 0x0F; // 高4位\n const low = byte & 0x0F; // 低4位\n return `${high}${low}`;\n }\n\n /**\n * 久坐提醒\n */\n static getActivityAlarm(value: number[]): object {\n const mapData = {\n [DeviceKey.StartTimeHour]: this._bcd2String(value[1]),\n [DeviceKey.StartTimeMin]: this._bcd2String(value[2]),\n [DeviceKey.EndTimeHour]: this._bcd2String(value[3]),\n [DeviceKey.EndTimeMin]: this._bcd2String(value[4]),\n [DeviceKey.Week]: this.getByteString(value[5]),\n [DeviceKey.IntervalTime]: this._hexByte2Int(value[6], 0).toString(),\n [DeviceKey.LeastSteps]: this._hexByte2Int(value[7], 0).toString(),\n [DeviceKey.OpenOrClose]: this._hexByte2Int(value[8], 0).toString()\n };\n\n return {\n [DeviceKey.DataType]: BleConst.GetSedentaryReminder,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: mapData\n };\n }\n\n\n /**\n * 总运动数据解析\n */\n static getTotalStepData(value: number[]): object {\n console.log('total:',value);\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetTotalActivityData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n const count = 27;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n const flag = 1 + (i + 1) * count;\n if (flag < length && value[flag] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期\n const date = `20${this._bcd2String(value[2 + i * count])}.${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}`;\n\n // 解析步数\n let step = 0;\n for (let j = 0; j < 4; j++) {\n step += this._hexByte2Int(value[5 + j + i * count], j);\n }\n\n // 解析运动时间\n let time = 0;\n for (let j = 0; j < 4; j++) {\n time += this._hexByte2Int(value[9 + j + i * count], j);\n }\n\n // 解析距离\n let distance = 0;\n for (let j = 0; j < 4; j++) {\n distance += this._hexByte2Int(value[13 + j + i * count], j);\n }\n\n // 解析卡路里\n let cal = 0;\n for (let j = 0; j < 4; j++) {\n cal += this._hexByte2Int(value[17 + j + i * count], j);\n }\n\n // 解析目标值\n let goal = this._hexByte2Int(value[21 + i * count], 0) + this._hexByte2Int(value[22 + i * count], 1);\n\n // 解析活跃时间\n let exerciseTime = 0;\n for (let j = 0; j < 4; j++) {\n exerciseTime += this._hexByte2Int(value[count - 4 + j + i * count], j);\n }\n\n // 组装数据\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Step]: step.toString(),\n [DeviceKey.ExerciseMinutes]: time.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(1),\n [DeviceKey.Distance]: (distance / 100).toFixed(1),\n [DeviceKey.Goal]: goal.toString(),\n [DeviceKey.ActiveMinutes]: exerciseTime\n });\n }\n\n return maps;\n }\n\n /**\n * 详细运动数据解析\n */\n static getDetailData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDetailActivityData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 25;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * 25])}.${this._bcd2String(value[4 + i * 25])}.${this._bcd2String(value[5 + i * 25])} ${this._bcd2String(value[6 + i * 25])}:${this._bcd2String(value[7 + i * 25])}:${this._bcd2String(value[8 + i * 25])}`;\n\n // 解析步数\n let step = 0;\n for (let j = 0; j < 2; j++) {\n step += this._hexByte2Int(value[9 + j + i * 25], j);\n }\n\n // 解析卡路里\n let cal = 0;\n for (let j = 0; j < 2; j++) {\n cal += this._hexByte2Int(value[11 + j + i * 25], j);\n }\n\n // 解析距离\n let distance = 0;\n for (let j = 0; j < 2; j++) {\n distance += this._hexByte2Int(value[13 + j + i * 25], j);\n }\n\n // 解析步数数组\n const arraySteps: string[] = [];\n for (let j = 0; j < 10; j++) {\n arraySteps.push(this._hexByte2Int(value[15 + j + i * 25], 0).toString());\n }\n\n // 组装数据\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.KDetailMinterStep]: step.toString(),\n [DeviceKey.Calories]: (cal / 100).toFixed(2),\n [DeviceKey.Distance]: (distance / 100).toFixed(2),\n [DeviceKey.ArraySteps]: arraySteps.join(' ')\n });\n }\n\n return maps;\n }\n\n\n /**\n * 睡眠数据解析\n */\n static getSleepData(value: number[]): object {\n const length = value.length;\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDetailSleepData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n // 检查是否结束\n const end = value[value.length - 1] === 0xff && value[value.length - 2] === DeviceConst.CMD_Get_SleepData;\n if (end) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析130字节或132字节格式\n if (length === 130 || (end && length === 132)) {\n const date = `20${this._bcd2String(value[3])}-${this._bcd2String(value[4])}-${this._bcd2String(value[5])} ${this._bcd2String(value[6])}:${this._bcd2String(value[7])}:${this._bcd2String(value[8])}`;\n\n const sleepLength = this._hexByte2Int(value[9], 0);\n const arraySleep: string[] = [];\n for (let j = 0; j < sleepLength; j++) {\n arraySleep.push(this._hexByte2Int(value[10 + j], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArraySleep]: arraySleep.join(' '),\n [DeviceKey.sleepUnitLength]: '1'\n });\n } else {\n // 解析34字节格式\n const count = 34;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n const date = `20${this._bcd2String(value[3 + i * 34])}-${this._bcd2String(value[4 + i * 34])}-${this._bcd2String(value[5 + i * 34])} ${this._bcd2String(value[6 + i * 34])}:${this._bcd2String(value[7 + i * 34])}:${this._bcd2String(value[8 + i * 34])}`;\n\n const sleepLength = this._hexByte2Int(value[9 + i * 34], 0);\n const arraySleep: string[] = [];\n for (let j = 0; j < sleepLength; j++) {\n arraySleep.push(this._hexByte2Int(value[10 + j + i * 34], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArraySleep]: arraySleep.join(' '),\n [DeviceKey.sleepUnitLength]: '5'\n });\n }\n }\n\n return maps;\n }\n\n\n /**\n * 自动血氧数据解析\n */\n static getAutoBloodOxygen(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.AutoBloodOxygen,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析血氧值\n const bloodOxygen = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Blood_oxygen]: bloodOxygen\n });\n }\n\n return maps;\n }\n\n\n /**\n * 历史血氧数据解析(与自动血氧逻辑一致,复用代码)\n */\n static getBloodoxygen(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.Blood_oxygen,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析血氧值\n const bloodOxygen = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.Blood_oxygen]: bloodOxygen\n });\n }\n\n return maps;\n }\n\n\n /**\n * 历史心率数据解析\n */\n static getHeartData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetDynamicHR,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 24;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n // 检查是否结束\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * count])}.${this._bcd2String(value[4 + i * count])}.${this._bcd2String(value[5 + i * count])} ${this._bcd2String(value[6 + i * count])}:${this._bcd2String(value[7 + i * count])}:${this._bcd2String(value[8 + i * count])}`;\n\n // 解析心率数组\n const arrayHR: string[] = [];\n for (let j = 0; j < 15; j++) {\n arrayHR.push(this._hexByte2Int(value[9 + j + i * count], 0).toString());\n }\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ArrayDynamicHR]: arrayHR.join(' ')\n });\n }\n\n return maps;\n }\n\n\n /**\n * 单次历史心率数据解析\n */\n static getOnceHeartData(value: number[]): object {\n const maps: any = {\n [DeviceKey.DataType]: BleConst.GetStaticHR,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 10;\n const length = value.length;\n const size = Math.floor(length / count);\n\n // 检查是否结束\n if (size === 0 || (size === 1 && value[1] === 0x99)) {\n maps[DeviceKey.End] = true;\n return maps;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n maps[DeviceKey.End] = true;\n }\n\n // 解析日期时间\n const date = `20${this._bcd2String(value[3 + i * 10])}.${this._bcd2String(value[4 + i * 10])}.${this._bcd2String(value[5 + i * 10])} ${this._bcd2String(value[6 + i * 10])}:${this._bcd2String(value[7 + i * 10])}:${this._bcd2String(value[8 + i * 10])}`;\n\n // 解析心率值\n const heartRate = this._hexByte2Int(value[9 + i * 10], 0).toString();\n\n maps[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.StaticHR]: heartRate\n });\n }\n\n return maps;\n }\n // resolveUtil.tsx\n\n // HRV测试数据解析\n static getHrvTestData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetHRVData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 15;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n if (value[value.length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n for (let i = 0; i < size; i++) {\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const hrv = this.hexByte2Int(value[9 + i * count], 0).toString();\n const blood = this.hexByte2Int(value[10 + i * count], 0).toString();\n const heart = this.hexByte2Int(value[11 + i * count], 0).toString();\n const tired = this.hexByte2Int(value[12 + i * count], 0).toString();\n const moodValue = this.hexByte2Int(value[13 + i * count], 0).toString();\n const breathRate = this.hexByte2Int(value[14 + i * count], 0).toString();\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.HRV]: hrv,\n [DeviceKey.VascularAging]: blood,\n [DeviceKey.HeartRate]: heart,\n [DeviceKey.Stress]: tired,\n [DeviceKey.highBP]: moodValue,\n [DeviceKey.lowBP]: breathRate\n });\n }\n\n return result;\n }\n\n // 闹钟数据解析\n static getClockData(value: number[]): any {\n console.log(\"getClockData:\", value);\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetAlarmClock,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 41;\n const length = value.length;\n var isDele = false;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n if (value[1] == 0x99 && length == 16) {\n isDele = true;\n }\n result[DeviceKey.IsDeleteData] = isDele;\n for (let i = 0; i < size; i++) {\n const flag = 1 + (i + 1) * count;\n if (flag < length && value[flag] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const id = this.hexByte2Int(value[4 + i * count], 0).toString();\n const enable = this.hexByte2Int(value[5 + i * count], 0).toString();\n const type = this.hexByte2Int(value[6 + i * count], 0).toString();\n const hour = this.bcd2String(value[7 + i * count]);\n const min = this.bcd2String(value[8 + i * count]);\n const week = this.hexByte2Int(value[9 + i * count], 0);\n const lengthS = this.hexByte2Int(value[10 + i * count], 0);\n\n let content = \"\";\n for (let j = 0; j < lengthS; j++) {\n const charValue = value[11 + j + i * count];\n if (charValue === 0) continue;\n content += this.int2Ascll(this.hexByte2Int(charValue, 0));\n }\n\n result[DeviceKey.Data].push({\n [DeviceKey.KAlarmId]: id,\n [DeviceKey.OpenOrClose]: enable,\n [DeviceKey.ClockType]: type,\n [DeviceKey.ClockTime]: hour,\n [DeviceKey.KAlarmMinter]: min,\n [DeviceKey.Week]: week,\n [DeviceKey.KAlarmContent]: content,\n [DeviceKey.KAlarmLength]: lengthS.toString()\n });\n }\n\n return result;\n }\n\n // 腋下温度数据解析\n static getTempDataer(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetAxillaryTemperatureDataWithMode,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 11;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0 || value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const tempValue = this.hexByte2Int(value[9 + i * count], 0) +\n this.hexByte2Int(value[10 + i * count], 1);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.axillaryTemperature]: (tempValue * 0.1).toFixed(1)\n });\n }\n\n return result;\n }\n\n // 二维码相关功能\n static getQrCode(value: number[], flag: boolean): any {\n if (flag) {\n return {\n [DeviceKey.DataType]: BleConst.EnterQrCode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n } else {\n if (value[1] === 0x80 || value[1] === 0x81) {\n return {\n [DeviceKey.DataType]: BleConst.QrCodeBandBack,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Band]: value[1] === 0x81 ? \"1\" : \"0\"\n }\n };\n } else {\n return {\n [DeviceKey.DataType]: BleConst.ExitQrCode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n }\n }\n\n // 温度历史数据解析\n static getTempData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.Temperature_history,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 11;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0 ||\n value[length - 1] === 0xff ||\n (size === 1 && value[1] === 0x99)) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n if (value[length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const tempValue = this.hexByte2Int(value[9 + i * count], 0) +\n this.hexByte2Int(value[10 + i * count], 1);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.temperature]: (tempValue * 0.1).toFixed(1)\n });\n }\n\n return result;\n }\n\n // 运动模式数据解析\n static getExerciseData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetActivityModeData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 25;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n for (let i = 0; i < size; i++) {\n const flag = 1 + (i + 1) * count;\n if (flag < length && i === size - 1 && value[flag] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const mode = this.hexByte2Int(value[9 + i * count], 0).toString();\n const heartRate = this.hexByte2Int(value[10 + i * count], 0).toString();\n\n const periodTime = this.getData(2, 11 + i * count, value);\n const steps = this.getData(2, 13 + i * count, value);\n\n const speedMin = this.hexByte2Int(value[15 + i * count], 0);\n const speedS = this.hexByte2Int(value[16 + i * count], 0);\n\n const valueCal = new Array(4).fill(0);\n for (let j = 0; j < 4; j++) {\n valueCal[3 - j] = value[17 + j + i * count];\n }\n\n const valueDistance = new Array(4).fill(0);\n for (let j = 0; j < 4; j++) {\n valueDistance[3 - j] = value[21 + j + i * count];\n }\n\n const cal = this.getFloat(valueCal, 0);\n const distance = this.getFloat(valueDistance, 0);\n\n result[DeviceKey.Data].push({\n [DeviceKey.Date]: date,\n [DeviceKey.ActivityMode]: mode,\n [DeviceKey.HeartRate]: heartRate,\n [DeviceKey.ActiveMinutes]: periodTime.toString(),\n [DeviceKey.Step]: steps.toString(),\n [DeviceKey.Pace]: `${speedMin.toString(16)}'${speedS.toString(16)}`,\n [DeviceKey.Distance]: distance.toFixed(2),\n [DeviceKey.Calories]: cal.toFixed(1)\n });\n }\n\n return result;\n }\n\n // 活动运动数据解析\n static getActivityExerciseData(value: number[]): any {\n let steps = 0;\n let time = 0;\n\n const valueCal = new Array(4).fill(0);\n\n for (let i = 0; i < 4; i++) {\n steps += this.hexByte2Int(value[i + 2], i);\n valueCal[3 - i] = value[i + 6];\n time += this.hexByte2Int(value[i + 10], i);\n }\n\n const heartRate = this.hexByte2Int(value[1], 0);\n const kcal = this.getFloat(valueCal, 0);\n\n return {\n [DeviceKey.DataType]: BleConst.EnterActivityMode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HeartRate]: heartRate.toString(),\n [DeviceKey.Step]: steps.toString(),\n [DeviceKey.Calories]: kcal.toFixed(1),\n [DeviceKey.ActiveMinutes]: time.toString()\n }\n };\n }\n\n // 设置时间成功响应\n static setTimeSuccessful(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SetDeviceTime,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KPhoneDataLength]: this.hexByte2Int(value[1], 0).toString()\n }\n };\n }\n\n // 辅助方法:获取数据块\n private static getData(length: number, start: number, value: number[]): number {\n let data = 0;\n for (let j = 0; j < length; j++) {\n data += this.hexByte2Int(value[j + start], j);\n }\n return data;\n }\n // 字节转浮点\n private static getFloat(arr: number[], index: number): number {\n return this.intBitToDouble(this.getInt(arr, index));\n }\n\n private static getInt(arr: number[], index: number): number {\n return (\n ((arr[index] & 0xff) << 24) |\n ((arr[index + 1] & 0xff) << 16) |\n ((arr[index + 2] & 0xff) << 8) |\n (arr[index + 3] & 0xff)\n );\n }\n // 设置成功响应\n static setMethodSuccessful(dataType: string): any {\n return {\n [DeviceKey.DataType]: dataType,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // ECG数据解析\n static getEcgHistoryData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.ECGdata,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: {}\n };\n\n const length = value.length;\n if (\n length === 3 ||\n (value[length - 3] === 0x71 &&\n value[length - 2] === 0xff &&\n value[length - 1] === 0xff)\n ) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n const id = this.hexByte2Int(value[1], 0) + this.hexByte2Int(value[2], 1);\n let offset = 3;\n\n if (id === 0) {\n const date = `20${this.bcd2String(value[3])}-${this.bcd2String(value[4])\n }-${this.bcd2String(value[5])} ${this.bcd2String(value[6])\n }:${this.bcd2String(value[7])}:${this.bcd2String(value[8])\n }`;\n const hrv = this.hexByte2Int(value[11], 0).toString();\n const heart = this.hexByte2Int(value[12], 0).toString();\n const moodValue = this.hexByte2Int(value[13], 0).toString();\n\n result[DeviceKey.Data][DeviceKey.Date] = date;\n result[DeviceKey.Data][DeviceKey.HRV] = hrv;\n result[DeviceKey.Data][DeviceKey.HeartRate] = heart;\n result[DeviceKey.Data][DeviceKey.ECGMoodValue] = moodValue;\n\n offset = 27;\n }\n\n const tempValue = value.slice(offset, length);\n const ecgData = this.getEcgDataString(tempValue);\n result[DeviceKey.Data][DeviceKey.ECGValue] = ecgData;\n\n return result;\n }\n\n private static getEcgDataString(value: number[]): string {\n const points: string[] = [];\n const length = Math.floor(value.length / 2) - 1;\n\n for (let i = 0; i < length; i++) {\n let ecgValue = this.hexByte2Int(value[i * 2 + 1], 1) +\n this.hexByte2Int(value[i * 2 + 2], 0);\n\n if (ecgValue >= 32768) ecgValue -= 65536;\n points.push(ecgValue.toString());\n }\n\n return points.join(',');\n }\n // resolveUtil.tsx\n\n // ECG数据解析\n static ecgData(value: number[]): any {\n const index = this.hexByte2Int(value[1], 0);\n return {\n [DeviceKey.DataType]: BleConst.EcgppGstatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.EcgStatus]: index.toString()\n }\n };\n }\n\n // PPG数据解析\n static ppgData(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.EcgppGstatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.PPGValue]: value\n }\n };\n }\n\n // ECG结果解析\n static ecgResult(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetEcgPpgStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n\n const resultValue = this.hexByte2Int(value[1], 0);\n if (resultValue === 3) {\n const date = `20${this.bcd2String(value[10])}.${this.bcd2String(value[11])\n }.${this.bcd2String(value[12])} ${this.bcd2String(value[13])\n }:${this.bcd2String(value[14])}:${this.bcd2String(value[15])\n }`;\n\n result[DeviceKey.Data] = {\n [DeviceKey.Date]: date,\n [DeviceKey.ECGHrvValue]: this.hexByte2Int(value[2], 0).toString(),\n [DeviceKey.ECGAvBlockValue]: this.hexByte2Int(value[3], 0).toString(),\n [DeviceKey.ECGHrValue]: this.hexByte2Int(value[4], 0).toString(),\n [DeviceKey.ECGStreesValue]: this.hexByte2Int(value[5], 0).toString(),\n [DeviceKey.ECGhighBpValue]: this.hexByte2Int(value[6], 0).toString(),\n [DeviceKey.ECGLowBpValue]: this.hexByte2Int(value[7], 0).toString(),\n [DeviceKey.ECGMoodValue]: this.hexByte2Int(value[8], 0).toString(),\n [DeviceKey.ECGBreathValue]: this.hexByte2Int(value[9], 0).toString()\n };\n }\n\n return result;\n }\n\n // 进入ECG模式\n static enterEcg(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.ENTERECG,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // 测量类型处理\n static measurementWithType(flag: boolean, value: number[]): any {\n if (flag) {\n switch (value[1]) {\n case 1: // HRV\n return {\n [DeviceKey.DataType]: BleConst.MeasurementHrvCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HRV]: this.hexByte2Int(value[4], 0)\n }\n };\n\n case 2: // 心率\n return {\n [DeviceKey.DataType]: BleConst.MeasurementHeartCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HeartRate]: this.hexByte2Int(value[2], 0)\n }\n };\n\n case 3: // 血氧\n return {\n [DeviceKey.DataType]: BleConst.MeasurementOxygenCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Blood_oxygen]: this.hexByte2Int(value[3], 0)\n }\n };\n\n case 4: // 体温\n const tempValue = this.hexByte2Int(value[8], 0) +\n this.hexByte2Int(value[9], 1);\n return {\n [DeviceKey.DataType]: BleConst.MeasurementTempCallback,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.temperature]: (tempValue * 0.1).toFixed(1)\n }\n };\n }\n } else {\n\n const callbacks: { [key: number]: string } = {\n 1: BleConst.StopMeasurementHrvCallback,\n 2: BleConst.StopMeasurementHeartCallback,\n 3: BleConst.StopMeasurementOxygenCallback,\n 4: BleConst.StopMeasurementTempCallback\n };\n if (callbacks[value[1]]) {\n return this.setMethodSuccessful(callbacks[value[1]]);\n }\n }\n\n return {};\n }\n\n // 手环表盘设置\n static braceletdial(isruning: boolean, value: number[]): any {\n if (isruning) {\n return {\n [DeviceKey.DataType]: BleConst.Braceletdial,\n [DeviceKey.End]: true\n };\n } else {\n return {\n [DeviceKey.DataType]: BleConst.Braceletdialok,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n index: value[1].toString()\n }\n };\n }\n }\n\n // 获取运动模式\n static getSportMode(value: number[]): any {\n const length = this.hexByte2Int(value[1], 0);\n const types: string[] = [];\n\n for (let i = 0; i < length; i++) {\n types.push(this.hexByte2Int(value[i + 2], 0).toString());\n }\n\n return {\n [DeviceKey.DataType]: BleConst.GetSportMode,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: types.join(\",\")\n };\n }\n\n // GPS控制命令解析\n static gPSControlCommand(value: number[]): any {\n const date = `20${this.bcd2String(value[1])}-${this.bcd2String(value[2])\n }-${this.bcd2String(value[3])} ${this.bcd2String(value[4])\n }:${this.bcd2String(value[5])}:${this.bcd2String(value[6])\n }`;\n\n const valueLatitude = new Array(4).fill(0);\n const valueLongitude = new Array(4).fill(0);\n\n for (let j = 0; j < 4; j++) {\n valueLatitude[3 - j] = value[9 + j];\n valueLongitude[3 - j] = value[14 + j];\n }\n\n const latitude = this.getFloat(valueLatitude, 0).toString();\n const longitude = this.getFloat(valueLongitude, 0).toString();\n const count = this.hexByte2Int(value[18], 0);\n\n return {\n [DeviceKey.DataType]: BleConst.GPSControlCommand,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KActivityLocationTime]: date,\n [DeviceKey.KActivityLocationLatitude]: latitude,\n [DeviceKey.KActivityLocationLongitude]: longitude,\n [DeviceKey.KActivityLocationCount]: count.toString()\n }\n };\n }\n\n // 设置社交距离\n static setSocial(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SocialdistanceGetting,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n scanInterval: this.hexByte2Int(value[2], 0).toString(),\n scanTime: this.hexByte2Int(value[3], 0).toString(),\n signalStrength: value[4].toString()\n }\n };\n }\n\n // ECG质量数据\n static eCGQuality(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.EcgppG,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n heartValue: this.hexByte2Int(value[1], 0).toString(),\n hrvValue: this.hexByte2Int(value[2], 0).toString(),\n Quality: this.hexByte2Int(value[3], 0).toString()\n }\n };\n }\n\n // 进入照片模式返回\n static enterPhotoModeback(value: number[]): any {\n let type = \"\";\n\n switch (value[1]) {\n case 1:\n type = value[2] === 0 ? \"0\" : \"1\";\n break;\n case 2:\n type = \"2\";\n break;\n case 3:\n switch (value[2]) {\n case 1: type = \"3\"; break;\n case 2: type = \"4\"; break;\n case 3: type = \"5\"; break;\n case 4: type = \"6\"; break;\n case 5: type = \"7\"; break;\n }\n break;\n case 4:\n type = \"8\";\n break;\n }\n\n return {\n [DeviceKey.DataType]: BleConst.DeviceSendDataToAPP,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n type\n }\n };\n }\n\n // 设置新设备信息\n static setNewDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.SetNewDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {}\n };\n }\n\n // 获取新设备信息\n static getNewDeviceInfo(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetNewDeviceInfo,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n KEcg: this.hexByte2Int(value[1], 0).toString()\n }\n };\n }\n\n // 更新闹钟成功\n static updateClockSuccessful(value: number[]): any {\n console.log('updateClockSuccessful:', value);\n return {\n [DeviceKey.DataType]: BleConst.SetAlarmClockWithAllClock,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.KClockLast]: this.hexByte2Int(value[value.length - 1], 0).toString()\n }\n };\n }\n\n // 设置血糖状态\n static setBoolSugarStatus(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.BoolsugarStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.EcgStatus]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n\n // 设置血糖值\n static setBoolSugarValue(value: number[]): any {\n const tempValue = value.slice(3);\n const datas: number[] = [];\n\n for (let i = 0; i < Math.floor(tempValue.length / 3); i++) {\n const val = this.hexByte2Int(tempValue[3 * i], 2) +\n this.hexByte2Int(tempValue[3 * i + 1], 1) +\n this.hexByte2Int(tempValue[3 * i + 2], 0);\n datas.push(val);\n }\n\n return {\n [DeviceKey.DataType]: BleConst.BoolsugarValue,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n timestamp: Math.floor(Date.now() / 1000),\n ppg: datas\n }\n };\n }\n\n // 设置方法错误\n static setMethodError(dataType: string): any {\n return {\n [DeviceKey.DataType]: dataType,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: {}\n };\n }\n\n // 读取怀孕周期数据\n static readPregnancyCycle(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetPregnancyCycle,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Date]: `20${this.bcd2String(value[3])}-${this.bcd2String(value[4])\n }-${this.bcd2String(value[5])}`,\n [DeviceKey.Week]: this.hexByte2Int(value[1], 0),\n [DeviceKey.DayOfWeek]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n // 女性健康数据解析\n static readWomenHealth(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetWomenHealth,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.Date]: `${this.bcd2String(value[1])}-${this.bcd2String(value[2])}`,\n [DeviceKey.WomenHealthPeriod]: this.hexByte2Int(value[3], 0),\n [DeviceKey.WomenHealthLength]: this.hexByte2Int(value[4], 0)\n }\n };\n }\n\n // 温度校正值解析\n static getTemperatureCorrectionValue(value: number[]): any {\n const tempValue = [value[3], value[2]];\n const temperatureCorrectionValue = this.byteArrayToInt(tempValue);\n\n return {\n [DeviceKey.DataType]: BleConst.CMD_Set_TemperatureCorrection,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.TemperatureCorrectionValue]: temperatureCorrectionValue.toString()\n }\n };\n }\n\n private static byteArrayToInt(arr: number[]): number {\n return ((arr[0] << 8) & 0xff00) | (arr[1] & 0xff);\n }\n // resolveUtil.ts\n\n // 获取历史GPS数据\n static getHistoryGpsData(value: number[]): any {\n const list: any[] = [];\n const result: any = {\n [DeviceKey.DataType]: BleConst.Gps,\n [DeviceKey.End]: false\n };\n\n const count = 59;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n return result;\n }\n\n // 检查是否结束\n if (value[value.length - 1] === 0xff && value[value.length - 2] === 0x5a) {\n result[DeviceKey.End] = true;\n }\n\n for (let i = 0; i < size; i++) {\n const hashMap: any = {};\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n const latitudeParts: string[] = [];\n const longitudeParts: string[] = [];\n\n for (let k = 0; k < 6; k++) {\n const valueLatitude = new Array(4).fill(0);\n const valueLongitude = new Array(4).fill(0);\n\n for (let j = 0; j < 4; j++) {\n valueLatitude[3 - j] = value[9 + j + i * count + k * 8];\n valueLongitude[3 - j] = value[13 + j + i * count + k * 8];\n }\n\n const latitude = this.getFloat(valueLatitude, 0).toString();\n const longitude = this.getFloat(valueLongitude, 0).toString();\n\n latitudeParts.push(latitude);\n longitudeParts.push(longitude);\n }\n\n hashMap[DeviceKey.Date] = date.length === 17 ? date : \"2019.01.01 00:00:00\";\n hashMap[DeviceKey.Latitude] = latitudeParts.join(\",\");\n hashMap[DeviceKey.Longitude] = longitudeParts.join(\",\");\n\n list.push(hashMap);\n }\n\n result[DeviceKey.Data] = list;\n return result;\n }\n\n // PPI测试数据解析\n static getPPITestData(value: number[]): any {\n const result: any = {\n [DeviceKey.DataType]: BleConst.GetPPIData,\n [DeviceKey.End]: false,\n [DeviceKey.Data]: []\n };\n\n const count = 123;\n const length = value.length;\n const size = Math.floor(length / count);\n\n if (size === 0) {\n result[DeviceKey.End] = true;\n return result;\n }\n\n if (value[value.length - 1] === 0xff) {\n result[DeviceKey.End] = true;\n }\n\n const arraySize = 56;\n\n for (let i = 0; i < size; i++) {\n const hashMap: any = {};\n\n // 数据编号\n const numList = new Array(2).fill(0);\n for (let k = 0; k < 2; k++) {\n numList[1 - k] = value[1 + k + i * count];\n }\n\n const numCode = this.getInt(numList, 0);\n const date = `20${this.bcd2String(value[3 + i * count])}.${this.bcd2String(value[4 + i * count])\n }.${this.bcd2String(value[5 + i * count])} ${this.bcd2String(value[6 + i * count])\n }:${this.bcd2String(value[7 + i * count])}:${this.bcd2String(value[8 + i * count])\n }`;\n\n // 数据条数\n const totalId = this.hexByte2Int(value[9 + i * count], 0);\n const ID = this.hexByte2Int(value[10 + i * count], 0).toString();\n\n const startFrame = 11;\n const ppiList: number[] = [];\n\n for (let j = 0; j < arraySize; j++) {\n const tempFrame = startFrame + j * 2;\n const valueCal = new Array(2).fill(0);\n\n for (let n = 0; n < 2; n++) {\n valueCal[1 - n] = value[tempFrame + n + i * count];\n }\n\n const PII = this.getFloat(valueCal, 0);\n\n if (PII === 0.0) {\n break;\n }\n\n ppiList.push(PII);\n }\n\n hashMap[DeviceKey.TOTAL_ID] = totalId.toString();\n hashMap[DeviceKey.PPI_ID] = ID;\n hashMap[DeviceKey.DeviceTime] = date;\n hashMap[DeviceKey.PPI_LIST] = ppiList;\n hashMap[DeviceKey.PPI_NUM] = numCode;\n\n result[DeviceKey.Data].push(hashMap);\n }\n\n return result;\n }\n\n // 获取HRV测量时间数据\n static getHrvTimeData(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetHrvTimeValue,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.HRV_TIME_MODE]: this.hexByte2Int(value[1], 0),\n [DeviceKey.HRV_TIME_Value]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n\n // 断开蓝牙连接\n static closeDevices(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.CloseDevices,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.RESULT]: true\n }\n };\n }\n\n // 脱手检测状态上报\n static getOffCheckStatus(value: number[]): any {\n return {\n [DeviceKey.DataType]: BleConst.GetOffCheckStatus,\n [DeviceKey.End]: true,\n [DeviceKey.Data]: {\n [DeviceKey.GET_OFF_TAG]: this.hexByte2Int(value[1], 0),\n [DeviceKey.GET_OFF_STATE]: this.hexByte2Int(value[2], 0)\n }\n };\n }\n};"]}
|
package/docs/.nojekyll
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
window.hierarchyData = "eJyrVirKzy8pVrKKjtVRKkpNy0lNLsnMzytWsqqurQUAmx4Kpg=="
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--light-hl-0: #001080;
|
|
3
|
+
--dark-hl-0: #9CDCFE;
|
|
4
|
+
--light-hl-1: #000000;
|
|
5
|
+
--dark-hl-1: #D4D4D4;
|
|
6
|
+
--light-code-background: #FFFFFF;
|
|
7
|
+
--dark-code-background: #1E1E1E;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@media (prefers-color-scheme: light) { :root {
|
|
11
|
+
--hl-0: var(--light-hl-0);
|
|
12
|
+
--hl-1: var(--light-hl-1);
|
|
13
|
+
--code-background: var(--light-code-background);
|
|
14
|
+
} }
|
|
15
|
+
|
|
16
|
+
@media (prefers-color-scheme: dark) { :root {
|
|
17
|
+
--hl-0: var(--dark-hl-0);
|
|
18
|
+
--hl-1: var(--dark-hl-1);
|
|
19
|
+
--code-background: var(--dark-code-background);
|
|
20
|
+
} }
|
|
21
|
+
|
|
22
|
+
:root[data-theme='light'] {
|
|
23
|
+
--hl-0: var(--light-hl-0);
|
|
24
|
+
--hl-1: var(--light-hl-1);
|
|
25
|
+
--code-background: var(--light-code-background);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:root[data-theme='dark'] {
|
|
29
|
+
--hl-0: var(--dark-hl-0);
|
|
30
|
+
--hl-1: var(--dark-hl-1);
|
|
31
|
+
--code-background: var(--dark-code-background);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.hl-0 { color: var(--hl-0); }
|
|
35
|
+
.hl-1 { color: var(--hl-1); }
|
|
36
|
+
pre, code { background: var(--code-background); }
|