wzx hace 1 año
padre
commit
77d441f021
Se han modificado 2 ficheros con 18 adiciones y 6 borrados
  1. 1 1
      package.json
  2. 17 5
      src/ble.js

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "GoAllOut",
-  "version": "0.1.0",
+  "version": "1.1.0",
   "private": true,
   "scripts": {
     "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",

+ 17 - 5
src/ble.js

@@ -85,6 +85,16 @@ function shortToast(msg) {
     Toast.makeText(activity, msg, Toast.LENGTH_SHORT).show();
 }
 
+//3byte数组转换为int整数
+function threeBytesToInt(bytes, off) {
+    // var b0 = 0x00;
+    var b0 = new Uint8Array(bytes, off, 1);
+    var b1 = new Uint8Array(bytes, off + 1, 1);
+    var b2 = new Uint8Array(bytes, off + 2, 1);
+    // console.log('threeBytesToInt: ' + '' + buf2hex(b0) + '' + buf2hex(b1) + '' + buf2hex(b2))
+    return (b0 << 16) | (b1 << 8) | b2;
+}
+
 // 监听状态变化
 // 回调函数参数event对象包括以下属性: 
 // available - Boolean,蓝牙适配器是否可用; 
@@ -183,6 +193,7 @@ export function listenerDeviceFound() {
         let DevType = 0;    // 设备数据类型
         let Power = 0;
         let HeartRate = 0;
+        let StepNum = 0;
         let Sn = 0;
         let now = 0;
         let waitTime = 0;
@@ -207,11 +218,13 @@ export function listenerDeviceFound() {
                     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));
+                    StepNum = threeBytesToInt(devices[i].advertisData, 9);
                 }
                 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));
+                    StepNum = 0;    // 老版无步数
                 }
                 // console.log('VendorID: ' + VendorID + ' DevType: ' + DevType + ' Sn: ' + Sn + '  localName: ' + devices[i].localName + '  HeartRate: ' + HeartRate + '  Power: ' + Power + '  advertisData: ' + buf2hex(devices[i].advertisData));
 
@@ -230,7 +243,8 @@ export function listenerDeviceFound() {
                     data = {
                         "sn": Sn,
                         "hr": HeartRate,
-                        "pw": Power
+                        "pw": Power,
+                        "sts": StepNum
                     };
                     dataRcvArr.push(data);
                 }                
@@ -252,10 +266,8 @@ export function uploadBleData() {
     // console.log("[uploadBleData] Data (len: " + upData.length+ "): " + upData);
     upData = dealUpData(upData);
     // console.log("[uploadBleData] Data GZip len: " + upData.length);
-    if (ws.getWsState()) {
-        ws.sendData(upData);
-    }
-    else {
+    if (! ws.sendData(upData)) {
+        ws.disconnect();
         ws.connect(store.state.wsUrl, store.state.eqSn);
     }
 }