/*开启监听蓝牙传值*/
notifyEquip() {
let _ = this;
console.log('*************************')
if (uni.getSystemInfoSync().platform === 'android') {
uni.setBLEMTU({
deviceId: _.deviceId, // 设备ID,在【4】里获取到
mtu: 512, // 服务UUID,在【6】里能获取到
success(res) {
console.log('设置mtu成功')
_.notifyBLECharacter()
},
fail(err) {
console.error(err)
}
})
} else {
_.notifyBLECharacter()
}
},
/*开启监听蓝牙传值*/ notifyEquip() { let _ = this; console.log('*************************') if (uni.getSystemInfoSync().platform === 'android') { uni.setBLEMTU({ deviceId: _.deviceId, // 设备ID,在【4】里获取到 mtu: 512, // 服务UUID,在【6】里能获取到 success(res) { console.log('设置mtu成功') wx.getBLEMTU({ deviceId: _.deviceId, writeType: 'write', success (res) { console.log(res) } }) _.notifyBLECharacter() }, fail(err) { console.error(err) _.setAndroidMTU() // 重要代码如果失败继续往下连接然后重复设置 } }) } else { _.notifyBLECharacter() } }, /*处理设置失败安卓协商低功耗最大传输单元*/ setAndroidMTU() { let _ = this; console.log('处理安卓协商低功耗最大传输单元失败的方法') _.notifyBLECharacter() _.mtuTimer = setInterval(() =>{ console.log('开始循环设置MTU值') uni.setBLEMTU({ deviceId: _.deviceId, // 设备ID,在【4】里获取到 mtu: 512, // 服务UUID,在【6】里能获取到 success(res) { console.log('设置mtu成功') }, fail(err) { console.error(err) }, complete() { wx.getBLEMTU({ deviceId: _.deviceId, writeType: 'write', success(res) { console.log(res) clearInterval(_.mtuTimer) _.mtuTimer = null; } }) } }) },1500) }, notifyBLECharacter() { let _ = this; console.log('进入了开始监听的函数里面') uni.notifyBLECharacteristicValueChange({ deviceId: _.deviceId, // 设备ID,在【4】里获取到 serviceId: _.serviceId, // 服务UUID,在【6】里能获取到 characteristicId: _.readCharacteristicId, // 特征值,在【7】里能获取到 state: true, success(res) { console.log('notifyBLECharacteristicValueChange成功监听') _.hasConnectBTFlag = true; _.restFlag = false; uni.hideLoading() uni.setStorageSync('hasConnectBTFlag', true) // 下发获取充电桩状态数据 _.listenValueChange(); // 接受消息的方法 _.writePileStatusCode() _.looperGetPileStatusFun() }, fail(err) { _.connectErrorFun(); } }) }, /*处理桩返回的值*/ listenValueChange() { console.log('vHHHHHHHHHHHHH') let _ = this; uni.onBLECharacteristicValueChange(res => { console.log('!!!!!!!!!!!桩返回的16进制值!!!!!!!!!!') console.log(res.value) console.log('!!!!!!!!!!!桩返回的16进制值!!!!!!!!!!') // 结果里有个value值,该值为 ArrayBuffer 类型,所以在控制台无法用肉眼观察到,必须将该值转换为16进制 let resHex = _.ab2hex(res.value); _.handleEquipNotifyBackCode(resHex); }) },