//获取设备特征
const getBLEDeviceServices = (deviceId) => {
console.log('🚀 ~ 获取设备特征:')
setTimeout(() => {
wx.getBLEDeviceServices({
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId,
success: (res) => {
console.log('🚀 ~ setTimeout ~ res:', res)
serviceId.value = res.services[2].uuid //选择支持的uuid
if (deviceId && serviceId.value && res.services[2].uuid) {
getBLEDeviceCharacteristics(deviceId, serviceId.value) //获取设备特征
}
},
fail: (res) => {
console.log('🚀 ~ setTimeout ~ res:', res)
}
})
}, 1000)
}
//进入特征
const getBLEDeviceCharacteristics = (deviceId, service) => {
setTimeout(() => {
wx.getBLEDeviceCharacteristics({
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId: service,
success: (res) => {
for (let i = 0; i < res.characteristics.length; i++) {
if (res.characteristics[i].properties.notify === true) {
//可通知
characteristicId.value = res.characteristics[i].uuid
}
if (res.characteristics[i].properties.write === true) {
//可写 notify也要true
writeId.value = res.characteristics[i].uuid
}
}
setTimeout(() => {
if (characteristicId.value) {
notifyBLECharacteristicValueChange(deviceId)
}
}, 3000)
},
fail: (res) => {
console.log(res)
}
})
}, 2000)
}这个代码我在app就可以获取特征值,到微信小程序就一直报错,getBLEDeviceCharacteristics "errCode":10005这是什么情况?10005对应没有找到指定特征。这是什么情况求路过大佬帮忙查看一下
你测试下这个集合下的所有UUID都getBLEDeviceCharacteristics下看看是否报错。
获取蓝牙低功耗设备所有服务 你直接获取的数组第二个 这个是你要获取的服务么。
一般通过要遍历到主服务( isPrimary ) 再获取主服务的所有特征
你打印下res.services[2].uuid 看看 这个是你们约定的服务uuid么
wx.getBLEDeviceServices({
deviceId: this.globalData.deviceId,
success: (res) => {
console.log("获取蓝牙低功耗设备所有服务", res.services);
let items = {};
for (let i = 0; i < res.services.length; i++) {
// 注意uuid的大小写
//UUID_SERVICE_MAIN 约定好的服务uuid
if (
res.services[i].isPrimary &&
res.services[i].uuid.toLowerCase() ==
UUID_SERVICE_MAIN
) {
items = res.services[i];
break;
}
}
if (items.uuid) {
that.getBLEDeviceCharacteristics(items.uuid);
} else {
wx.showToast({
title: "未找到可连接蓝牙服务~",
icon: "none",
});
}
},
fail: (res) => {
console.log("服务获取失败------------->", res.errMsg);
},
});