1、初始化蓝牙模块
2、搜索蓝牙设备
3、连接蓝牙设备
4、选择设备服务
5、获取服务的特征值
以上步骤与官网相同,详细文档请查看uni-app蓝牙API
6、订阅特征值
只有订阅特征值以后设备的特征值变化才能触发uni.onBLECharacteristicValueChange 回调
/**
* 订阅操作成功后需要设备主动更新特征值的 value,才会触发 uni.onBLECharacteristicValueChange 回调。
*/
notifyBLECharacteristicValueChange() {
let deviceId = this.equipment[0].deviceId;
uni.notifyBLECharacteristicValueChange({
state: true, // 启用 notify 功能
// 这里的 deviceId 需要已经通过 createBLEConnection 与对应设备建立链接
deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId: this.serviceId,
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
characteristicId: this.characteristicNotifyId,
success(res) {
console.log('notifyBLECharacteristicValueChange success:' + res.errMsg);
console.log(JSON.stringify(res));
uni.onBLECharacteristicValueChange(characteristic => {
console.log('监听低功耗蓝牙设备的特征值变化事件成功');
var array = new Uint8Array(characteristic.value);
console.log('包' + array);
});
}
});
}
其中this.characteristicNotifyId必须支持notify 操作
7、发送数据
sendData(buffer) {
let deviceId = this.equipment[0].deviceId;
uni.writeBLECharacteristicValue({
deviceId,
serviceId: this.serviceId,
characteristicId: this.characteristicWriteId,
value: buffer,
success: res => {
console.log('writeBLECharacteristicValue success', res.errMsg)
},
fail: res => {
console.log(res);
},
complete: res => {
console.log(res);
}
})
}
其中this.characteristicWriteId必须支持write 操作,value类型为ArrayBuffer,更多详情请查看uni-app低功耗蓝牙
8、发送成功
发送成功后,设备特征值变化就会触发uni.onBLECharacteristicValueChange 回调