正常情况下,这一步可以实现
wx.createBLEConnection({
success: (res) => {
},
fail: function(err) {
wx.showToast({
title: '接连失败',
icon: 'none',
duration: 2000
})
// 断开
that.DisconnectBle(deviceId);
// 关闭蓝牙
that.closeBluetoothAdapter();
})
但当我退出小程序,再次进入却提示10006,这个经我多次测试是设备并没有断开,要在小程序界面上手动关闭蓝牙才能再次连接,在手机桌面手动关闭蓝牙,也没用...一定要在小程序界面上手动关闭蓝牙才可以..希望有人解决一下问题,
楼主,你这边解决了吗
并没有
我也遇到了这个问题,请问有什么解决方案?
是小程序进入了后台把,并没有被关闭
您好,这个大概会怎么样子的过程??我问了下后台,他说并没有作任何处理只是停止了广播
that.DisconnectBle(deviceId);
that.closeBluetoothAdapter();
这个没用的吗,瑟瑟发抖
可以把代码贴全一点吗
稍等一会
大佬!!!我遇到更严重的问题了:
IOS:16个数字(正常发送) 指的是下面的var test;
20个数字(正常发送)
22个数字(可以发送,串口收到数据然没有返回数据)
24个数字(wx.writeBLECharacteristicValue回调函数成功执行,表示已发送成功,但串口收到数据,也没有返回数据)
// 向蓝牙设备发送一个0x00的16进制数据
writeBLECharacteristicValue(deviceId, serviceId, characteristicId) {
var that = this;
// 向蓝牙设备发送一个0x00的16进制数据
var test = '12345678123456781234';
let buffer = hexStringToArrayBuffer(test)
console.log("开始向蓝牙设备发送一个0x00的16进制数据", buffer)
//向低功耗蓝牙设备特征值中写入二进制数据。注意:必须设备的特征值支持write
wx.writeBLECharacteristicValue({
deviceId: deviceId,
serviceId: serviceId,
characteristicId: characteristicId,
value: buffer,
success: function(res) {
setTimeout(function() {
wx.hideLoading()
}, 2000)
console.log(res)
console.log("成功向低功耗蓝牙设备特征值中写入二进制数据")
},
fail: function(err) {
console.log('写入二进制数据--失败')
console.log(err.errCode);
}
})
}
// 十六进制字符串===>ArrayBuffer
function hexStringToArrayBuffer(str) {
if (!str) {
return new ArrayBuffer(0);
}
var buffer = new ArrayBuffer(str.length); //创建str.length字节的内存
let dataView = new DataView(buffer)
let ind = 0;
for (var i = 0, len = str.length; i < len; i += 2) {
let code = parseInt(str.substr(i, 2), 16)
dataView.setUint8(ind, code)
ind++
}
return buffer;
}
有米有开启notify
你好,这边没有复现,请详细描述问题复现的路径
我也遇到了这个问题,请问有什么解决方案?