uniapp连接蓝牙相关问题

设备蓝牙连接成功, 获取不到设备蓝牙服务列表?

这种情况一般会接收到uniapp的错误码(10004), 我们可以前往uniapp官网API模块查看错误码信息,查看后可以得知错误码10004是没有找到指定服务.
我们可以详细看下获取所有服务的api -----uni.getBLEDeviceServices(OBJECT)
在这里插入图片描述

示例代码:

uni.getBLEDeviceServices({
  // 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
  deviceId,
  success(res) {
    console.log('device services:', res.services)
  }
})

这句话很重要(需要确认一下是否已经建立连接):

这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接

下面说出现10004错误码的原因:

  1. 连接的蓝牙设备是否正确, deviceId 是否正确
  2. 使用uni.getBLEDeviceServices(OBJECT)方法的时候,需要加上一个延时器,根据情况自己设定延时时间, 我这边设置的2000毫秒,差不多就是100%能够获取到了.

正确代码样例:

重要的事情说三遍:

记得加延时器!!! 记得加延时器!!! 记得加延时器!!!

//获取蓝牙设备所有服务(service)
	getBLEDeviceServices() {
		let _serviceList = [];
		let deviceId = uni.getStorageSync("deviceId");
		let self = this;
		return new Promise((resolve, reject) => {
			setTimeout(() => {
				uni.getBLEDeviceServices({
					deviceId: deviceId,
					success: res => {
						console.log('################################# deviceId:'+ deviceId +' #########################################')
						
						console.log('########################### 获取到蓝牙设备所有服务: '+ JSON.stringify(res)+' ####################')
						for (let service of res.services) {
							if (service.isPrimary) {
								_serviceList.push(service);
							}
						}
						uni.hideLoading();
						// console.log("_serviceList: " + JSON.stringify(_serviceList));
						resolve(_serviceList)
					},
					fail: err => {
						uni.hideLoading();
						self.showToast(`获取设备Services` + JSON.stringify(err));
						console.log('################################# deviceId:'+ deviceId +' #########################################')
						
						console.log('####################################### 获取蓝牙设备服务失败: '+ JSON.stringify(err) +' ###################################')
						
						reject(err);
					},
				})
			}, 2000);
		});
	}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微微一笑满城空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值