Browse Source

v2.5.1 增加了对心率带新版BLE广播协议的支持

wzx 3 năm trước cách đây
mục cha
commit
40e59415e7
2 tập tin đã thay đổi với 17 bổ sung5 xóa
  1. 1 1
      src/Mock/index.js
  2. 16 4
      src/ble.js

+ 1 - 1
src/Mock/index.js

@@ -430,7 +430,7 @@ if (t == 1) {
     // }
 
     // 0: 下课 团课/私教/PK 的排名
-    let LessonClass = 1;
+    let LessonClass = 0;
     let LessonDp = 0;
     // 1:团课/私教
     // 2:竞技课2PK

+ 16 - 4
src/ble.js

@@ -179,6 +179,8 @@ export function listenerDeviceFound() {
         let devices = e.devices;
         // console.log('device found: ' + devices.length);
 
+        let VendorID = 0;   // 厂商标识ID
+        let DevType = 0;    // 设备数据类型
         let Power = 0;
         let HeartRate = 0;
         let Sn = 0;
@@ -195,11 +197,21 @@ export function listenerDeviceFound() {
                 // console.log('localName: ' + devices[i].localName);
                 // console.log('advertisData: ' + buf2hex(devices[i].advertisData));
                 // console.log('serviceData: ' + buf2hex(devices[i].serviceData));
+
+                VendorID = parseInt(new Uint16Array(devices[i].advertisData, 0, 2));
+                DevType = parseInt(new Uint8Array(devices[i].advertisData, 2, 1));
                 
-                Power = parseInt(new Uint8Array(devices[i].advertisData, 3, 1));
-                HeartRate = parseInt(new Uint8Array(devices[i].advertisData, 5, 1));
-                Sn = parseInt(devices[i].localName.substr(6,devices[i].localName.length));
-                // console.log('Sn: ' + Sn + '  localName: ' + devices[i].localName + '  HeartRate: ' + HeartRate + '  Power: ' + Power + '  advertisData: ' + buf2hex(devices[i].advertisData));
+                if (VendorID == 0xff04 && DevType == 0xa1) {    // [新版] CL831 中性版本 RSP 广播
+                    Power = parseInt(new Uint8Array(devices[i].advertisData, 8, 1));
+                    HeartRate = parseInt(new Uint8Array(devices[i].advertisData, 7, 1));
+                    Sn = parseInt(devices[i].localName.substr(6, devices[i].localName.length));
+                }
+                else {  // [老版]
+                    Power = parseInt(new Uint8Array(devices[i].advertisData, 3, 1));
+                    HeartRate = parseInt(new Uint8Array(devices[i].advertisData, 5, 1));
+                    Sn = parseInt(devices[i].localName.substr(6, devices[i].localName.length));
+                }
+                // console.log('VendorID: ' + VendorID + ' DevType: ' + DevType + ' Sn: ' + Sn + '  localName: ' + devices[i].localName + '  HeartRate: ' + HeartRate + '  Power: ' + Power + '  advertisData: ' + buf2hex(devices[i].advertisData));
 
                 now = new Date().getTime(); //毫秒
                 lastRcvTime = now;  // 最近接收心率带数据时间