作为一名微信小程序初学者,在工作中总是遇到各种坑,把这些易犯的错误整理到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',
})
}
这里如果用
navigateTo
或
redirectTo
跳转就无法实现,在蓝牙通讯中
wx.onBLECharacteristicValueChange中的跳转必须用
wx.reLaunch那是因为
navigateTo
,redirectTo
只能打开非 tabBar 页面。switchTab
只能打开 tabBar 页面。
reLaunch
可以打开任意页面。 大概是如此吧。如果有错误,请一定告诉我哦。