uni-app 蓝牙收不到数据
uni-app 蓝牙收不到数据
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
### 示例代码:
```javascript
uni.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
state: true,
success: function(res) {
console.log("监听成功"); //打印监听成功,但实际一直收不到数据
console.log(characteristicId)
uni.onBLECharacteristicValueChange(function(res) {
console.log('value.......')
//这个回调一直没反应
});
},
fail: () => {
// console.log('监听失败')
// console.log(characteristicId)
}
});
操作步骤:
目前测试必然收不到数据,经过小程序“开光”后可以收数据,然后把蓝牙设备重启后又不能收数据
预期结果:
收不到数据
实际结果:
收不到数据
### bug描述:
app连接蓝牙设备后监听成功了但收不到蓝牙设备的数据,只能App发数据给蓝牙设备,但是在小程序中是可以收到数据的,而且小程序收一次数据后再回到app,然后app也可以收数据了
更多关于uni-app 蓝牙收不到数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
自己发现了一个很无聊的解决方法。。。就是uni.notifyBLECharacteristicValueChange监听成功前不要调用uni.readBLECharacteristicValue方法,延迟调用uni.readBLECharacteristicValue,或者这个方法干脆不调用我这边测试也可以,这样监听成功后可以正常监听到特征值变化,如果还不能监听到特征值变化可以在监听成功后先App给蓝牙设备发一条数据,这样就可以监听到了…目前只在安卓测试过有效,ios没测试,希望官方能尽快解决这个问题
更多关于uni-app 蓝牙收不到数据的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个典型的 uni-app 蓝牙通信问题。从你的描述和代码来看,问题可能出现在以下几个方面:
- 时序问题:
uni.onBLECharacteristicValueChange应该在调用notifyBLECharacteristicValueChange之前就设置好监听。你的代码中监听设置在了 success 回调里,这可能导致错过设备推送的初始数据。
建议修改代码顺序:
// 先设置监听
uni.onBLECharacteristicValueChange(function(res) {
console.log('收到数据:', res.value);
});
// 再开启通知
uni.notifyBLECharacteristicValueChange({
deviceId,
serviceId,
characteristicId,
state: true,
success: function(res) {
console.log("监听成功");
},
fail: (err) => {
console.log('监听失败', err);
}
});

