帖子
帖子
用户
博客
课程
显示全部楼层
57
帖子
1
勋章
406
Y币

[插件使用] ble的connect使用跨页面传递的uuid连接,连接不上

[复制链接]
发表于 2023-3-16 13:56:52
做了两个页面,用户需要先在连接设备页面里连接上设备,然后跳转到实时数据页面以后看数据,设备就显示是未连接状态,于是我在实时数据页面重连,在蓝牙页面连接成功以后就将uuid放到本地缓存里了,然后实时数据页面使用就一直没有反应,是不能直接连接吗?求解答谢谢!
var uuid = $api.getStorage('connectuuid');
api.confirm({
          title: '提示',
          msg: '上次连接设备为'+serviceName+',是否连接?',
          buttons: ['确定', '取消']
      }, function(ret, err) {
          var index = ret.buttonIndex;
          if(index == 1){
            console.log(uuid);
            var layerindex = layer.open({
               type: 2,
               content: '正在连接...',
               shadeClose: false
             });
            ble.connect({
                peripheralUUID: uuid
            }, function(ret, err) {
                if (ret) {
                  layer.close(layerindex);
                  if(ret.status == true){
                    console.log(JSON.stringify(ret));
                    api.toast({
                        msg: '连接成功',
                        duration: 2000,
                        location: 'bottom'
                    });
                    //获取服务UUID
                    ble.discoverService({
                       peripheralUUID: uuid
                   }, function(ret) {
                       if (ret) {
                         console.warn(JSON.stringify(ret));
                         if(ret.status == true){
                           var services = ret.services;
                           for(var i = 0;i < services.length;i++){
                             var service = services[i];
                             if (service.indexOf('0000ffe0') != -1) {
                               console.warn(service);
                               $api.setStorage('connectserviceuuid',service);
                             }else{
                               console.log('不包含该设备');
                             }
                           }
                           var serviceUUID =  $api.getStorage('connectserviceuuid');
                           //获取特征uuid
                           ble.discoverCharacteristics({
                               peripheralUUID: uuid,
                               serviceUUID:serviceUUID
                           }, function(ret) {
                               if (ret) {
                                 var chartuuids = ret.characteristics;
                                 for(var i = 0;i<chartuuids.length;i++){
                                   var chartuuid = chartuuids[i].uuid;
                                   if (chartuuid.indexOf('0000ffe1') != -1) {
                                     console.warn(chartuuid);
                                     $api.setStorage('connectchartuuid',chartuuid);
                                   }else{
                                     console.log('不包含该设备');
                                   }
                                 }
                                 var chartUUID =  $api.getStorage('connectchartuuid');
                                 // 获取所有描述符
                                 ble.discoverDescriptorsForCharacteristic({
                                     peripheralUUID: uuid,
                                     serviceUUID: serviceUUID,
                                     characteristicUUID: chartUUID
                                 }, function(ret) {
                                     if (ret.status == true) {
                                       console.log(JSON.stringify(ret));
                                       var value = '0903083B0002B6EE';
                                       var typevalue = '090317770008F0EA';//类型
                                       getvalue(uuid,serviceUUID,chartUUID,value);
                                       //延迟加载
                                      //  setTimeout(function(){
                                      //    getdevicevalue(uuid,serviceUUID,chartUUID,typevalue)
                                      //  },2000)
                                     }
                                 });
                               }else{
                                 console.warn(JSON.stringify(err));
                               }
                           });
                         }

                       }
                   });
                  }else{
                    $('.deviceconnect').hide();
                    api.toast({
                        msg: '连接失败',
                        duration: 2000,
                        location: 'bottom'
                    });
                  }
                } else {
                  layer.close(layerindex);
                  api.toast({
                      msg: JSON.stringify(err.msg),
                      duration: 2000,
                      location: 'bottom'
                  });
                  console.log(JSON.stringify(err));
                }
            });
            console.warn(uuid);

          }
      });

0
帖子
1
勋章
2524
Y币
不能跨界面使用
0
帖子
0
勋章
9
Y币
老哥是怎么解决的
您需要登录后才可以回帖 登录

本版积分规则