微信小程序蓝牙通讯中的路由bug

作为一名微信小程序初学者,在工作中总是遇到各种坑,把这些易犯的错误整理到CSDN上是一个两全其美的选择。今天我就说说在蓝牙通讯中路由不能调转的问题。

首先看代码:

  lanya9: function (e) {
    var that = this;
    // wx.showLoading({
    //   title: '连接中',
    //   mask:true,
    // })
    this.setData({
      hiddenmodalput: true,
    })
    console.log(that.data.index)
    var BSSIDaccount = that.data.wifilist[that.data.index].BSSID;
    var wifiPsd = that.data.mypsd;
    console.log("账户" + BSSIDaccount)
    console.log("密码" + wifiPsd)
    // 传输WiFi账号和密码
    var mywrite = new Array();
    mywrite[0] = "start"
    mywrite[1] = BSSIDaccount.substring(0, 9);
    mywrite[2] = BSSIDaccount.substring(9, 18);
    var time = parseInt(wifiPsd.length / 10);
    var lasttime = wifiPsd.length % 10;
    for (var i = 0; i < time; i++) {
      mywrite[i + 3] = wifiPsd.substring(0 + i * 10, 10 + i * 10);
    };
    if (lasttime > 0) {
      mywrite[time + 3] = wifiPsd.substring(0 + time * 10, wifiPsd.length);
      mywrite[time + 4] = "end";
    } else {
      mywrite[time + 3] = "end";
    }
    console.log("发送的WIFI账号密码" + mywrite)
    wx.onBLECharacteristicValueChange(function (characteristic) {
      let hex = Array.prototype.map.call(new Uint8Array(characteristic.value), x => ('00' + x.toString(16)).slice(-2)).join('');
      console.log("反馈数据为" + hex)
      var hexx = parseInt(hex);
      console.log("反馈数据为" + hexx)
      switch (hexx) {
        case 0: wx.showToast({
          title: '连接失败',
          icon: 'none',
          duration: 2000
        });
          break;
        case 1:
          wx.showToast({
            title: '连接成功',
            icon: 'success',
            duration: 2000
          });
          break;
        case 2: wx.showLoading({
          title: '连接中',
        })
          setTimeout(function () {
            wx.hideLoading()
          }, 2000)
          break;
        case 3: wx.showToast({
          title: '未找到此WIFI设备',
          icon: 'warn',
          duration: 2000
        });
          break;
      }
      if (hexx == 1) {
        console.log("链接成功,跳转到个人主页")
        wx.reLaunch({
          url: '/pages/mine/mine',
        })
      }
    })
    var j = 0;
    for (j = 0; j < mywrite.length; j++) {
      var buf = new ArrayBuffer(mywrite[j].length * 2);
      var u16a = new Uint16Array(buf);
      var strs = mywrite[j].split("");
      for (var i = 0; i < strs.length; i++) {
        u16a[i] = strs[i].charCodeAt();
      }
      wx.writeBLECharacteristicValue({
        deviceId: mydeviceId,
        serviceId: myservicesUUID,
        characteristicId: mywritecharacteristicsuuid,
        value: buf,
        success: function (res) {
          console.log('发送WiFi账号密码成功', res.errMsg)
        },
        fail: function (res) {
          console.log('发送WiFi账号密码失败,将重新发送', res.errMsg)
          j = 0;
        },
      })
    }
    that.lanya10();
  },
 if (hexx == 1) {
        console.log("链接成功,跳转到个人主页")
        wx.reLaunch({
          url: '/pages/mine/mine',
        })
      }
这里如果用 navigateToredirectTo
跳转就无法实现,在蓝牙通讯中wx.onBLECharacteristicValueChange中的跳转必须用
 wx.reLaunch那是因为
  • navigateTo, redirectTo 只能打开非 tabBar 页面。
  • switchTab 只能打开 tabBar 页面。
reLaunch 可以打开任意页面。 大概是如此吧。如果有错误,请一定告诉我哦。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值