收藏
回答

wx.setBLEMTU Android14设置失败

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.setBLEMTU 微信安卓客户端 8.0.49 3.3.3
	/*开启监听蓝牙传值*/
			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()
				}


			},




回答关注问题邀请回答
收藏

1 个回答

  • 🇨 🇽
    🇨 🇽
    05-30
    			/*开启监听蓝牙传值*/
    			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);
    				})
    			},
    
    
    05-30
    有用
    回复
登录 后发表内容