uni-app 蓝牙onBLECharacteristicValueChange 没有响应
uni-app 蓝牙onBLECharacteristicValueChange 没有响应
产品分类
uniapp/App
| 属性 | 值 |
|---|---|
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.3.8 |
| 手机系统 | Android |
| 手机系统版本号 | Android 10 |
| 手机厂商 | 华为 |
| 手机机型 | meta20 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤
function ab2hex(buffer) {
const hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function (bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('')
}
uni.onBLECharacteristicValueChange(function (ress) {
console.log(`characteristic ${ress.characteristicId} has changed, now is ${ress.value}`)
console.log(ab2hex(ress.value))
})
更多关于uni-app 蓝牙onBLECharacteristicValueChange 没有响应的实战教程也可以访问 https://www.itying.com/category-93-b0.html
IOS 可以正常写入和监听,安卓就不行!
更多关于uni-app 蓝牙onBLECharacteristicValueChange 没有响应的实战教程也可以访问 https://www.itying.com/category-93-b0.html
同样情况,问题解决了么?
我刚好相反,安卓能正常读写,但是ios只能写 缺监听不到任何数据。。
回复 Azikou: 问题解决了吗?我这边也是安卓能正常读写,但是ios有时会会调用不了
onBLECharacteristicValueChange 能监听到,就是不返回数据。
根据你提供的信息,onBLECharacteristicValueChange 没有响应的最常见原因是没有先调用 uni.notifyBLECharacteristicValueChange 来启用特征值通知(notify)或指示(indicate)。
关键步骤缺失:
在连接设备、获取服务(getBLEDeviceServices)、获取特征值(getBLEDeviceCharacteristics)之后,必须对该特征值执行 notifyBLECharacteristicValueChange 并设置 state 为 true,才能触发 onBLECharacteristicValueChange 的回调。
典型流程示例(简化):
// 1. 连接设备
uni.createBLEConnection(deviceId);
// 2. 获取服务
uni.getBLEDeviceServices({ deviceId, success: (res) => {
// 找到你的服务
const serviceId = res.services[0].uuid;
// 3. 获取特征值
uni.getBLEDeviceCharacteristics({ deviceId, serviceId, success: (res) => {
// 找到需要监听的通知特征值
const characteristicId = res.characteristics[0].uuid;
// 4. ★ 启用通知(必须调用,否则不会触发回调)
uni.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
state: true, // 启用
success() {
console.log('notify enabled');
// 5. 现在监听才有用
uni.onBLECharacteristicValueChange((res) => {
console.log('值变了', res.value);
});
}
});
}});
}});

