接上一篇(原生微信小程序蓝牙开发(五))
上一篇说到,我们把蓝牙所有服务获取以后,就能获取到该蓝牙设备的 uuid 了,下面进行下一步操作
第六步:查看蓝牙特征值(wx.getBLEDeviceCharacteristics)
获取蓝牙低功耗设备某个服务中所有特征 (characteristic)。
参数
Object object
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
deviceId | string | 是 | 蓝牙设备 id。需要已经通过 wx.createBLEConnection 建立连接 | |
serviceId | string | 是 | 蓝牙服务 UUID。需要先调用 wx.getBLEDeviceServices 获取 | |
success | function | 否 | 接口调用成功的回调函数 | |
fail | function | 否 | 接口调用失败的回调函数 | |
complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
object.success 回调函数
参数
Object res
属性 | 类型 | 说明 |
---|---|---|
characteristics | Array.<Object> | 设备特征列表 |
characteristics的结构属性又分为
结构属性 | 类型 | 说明 |
---|---|---|
uuid | string | 蓝牙设备特征的 UUID |
properties | Object | 该特征支持的操作类型 |
properties的结构属性又分为
结构属性 | 类型 | 说明 |
---|---|---|
read | boolean | 该特征是否支持 read 操作 |
write | boolean | 该特征是否支持 write 操作 |
notify | boolean | 该特征是否支持 notify 操作 |
indicate | boolean | 该特征是否支持 indicate 操作 |
writeNoResponse | boolean | 该特征是否支持无回复写操作 |
writeDefault | boolean | 该特征是否支持有回复写操作 |
官方文档:wx.getBLEDeviceCharacteristics(Object object)
下面上代码:
// 查看蓝牙特征值
getCharacteId() {
wx.getBLEDeviceCharacteristics({
deviceId: this.data.deviceId,
serviceId: this.data.services,
success: (res) => {
// console.log("查看蓝牙特征值", res.characteristics);
for (var i = 0; i < res.characteristics.length; i++) {
//2个值
var model = res.characteristics[i];
if (model.properties.notify == true) {
this.setData({
notifyId: model.uuid, //监听的值
"setInfo.notify": "监听值为 true",
});
this.startNotice(model.uuid); //7.0
}
if (model.properties.write == true && model.properties.read == true) {
this.setData({
writeId: model.uuid, //用来读写入的值
"setInfo.write": "读写值为 true",
});
}
}
},
fail: () => {
this.setData({
"setInfo.notify": "查看特征值失败",
});
},
});
},
注意:
- 我这里需要在这个蓝牙设备里面读取和写入数据,所有要判断设备的 read、write、notify 的值为 true
有不懂可以直接评论区提问,我们一起学习探索,欢迎大家评论。