uniapp低功耗蓝牙接收
时间: 2023-12-10 14:02:55 浏览: 111
以下是基于uni-app的低功耗蓝牙接收数据的步骤:
1.打开蓝牙连接设备并扩大传输MTU。
2.获取蓝牙服务并获取蓝牙设备某个服务中所有特征值(characteristic)。
3.当找到同时有读、写、订阅权限的特征值时,启用低功耗蓝牙设备特征值变化时的notify功能。
4.订阅特征值并开启成功后,写入指令。
5.写入成功后,读取二进制数据值(此时开启的notify功能就会监听并返回设备响应数据)。
6.接收设备响应数据。
以下是一个基于uni-app的低功耗蓝牙接收数据的代码示例:
```javascript
// 连接蓝牙设备
uni.createBLEConnection({
deviceId: '设备ID',
success: function (res) {
console.log('连接成功')
// 扩大传输MTU
uni.requestMTU({
deviceId: '设备ID',
mtu: 512,
success: function (res) {
console.log('MTU扩大成功')
// 获取蓝牙服务
uni.getBLEDeviceServices({
deviceId: '设备ID',
success: function (res) {
console.log('获取蓝牙服务成功')
// 获取蓝牙设备某个服务中所有特征值(characteristic)
uni.getBLEDeviceCharacteristics({
deviceId: '设备ID',
serviceId: '服务ID',
success: function (res) {
console.log('获取特征值成功')
// 遍历特征值,找到同时有读、写、订阅权限的特征值
for (var i = 0; i < res.characteristics.length; i++) {
var item = res.characteristics[i]
if (item.properties.read && item.properties.write && item.properties.notify) {
console.log('找到特征值')
// 启用低功耗蓝牙设备特征值变化时的notify功能
uni.notifyBLECharacteristicValueChange({
deviceId: '设备ID',
serviceId: '服务ID',
characteristicId: item.uuid,
state: true,
success: function (res) {
console.log('notify功能启用成功')
// 订阅特征值
uni.onBLECharacteristicValueChange(function (res) {
console.log('接收到数据')
// 接收设备响应数据
var value = new Uint8Array(res.value)
console.log('接收到的数据为:' + value)
})
// 写入指令
uni.writeBLECharacteristicValue({
deviceId: '设备ID',
serviceId: '服务ID',
characteristicId: item.uuid,
value: '指令',
success: function (res) {
console.log('指令写入成功')
// 读取二进制数据值
uni.readBLECharacteristicValue({
deviceId: '设备ID',
serviceId: '服务ID',
characteristicId: item.uuid,
success: function (res) {
console.log('读取数据成功')
}
})
}
})
}
})
break
}
}
}
})
}
})
}
})
}
})
```
阅读全文