我是用uniapp做的app项目,连接低功耗蓝牙接收数据,数据超过20位,所以使用uni.setBLEMTU(OBJECT),经测试努比亚手机可以设置成功。但是红米k30却不行,蓝牙连接成功后执行uni.setBLEMTU(OBJECT),但执行后既不执行成功回调,也不执行失败回调,所以大小没设置成功,导致数据不全。有什么解决方案吗?
- 发布:2020-11-16 10:53
- 更新:2021-11-16 11:24
- 阅读:2863
uni.setBLEMTU(OBJECT)存在兼容性问题吗?
hpp2019 (作者) - 前端开发
我是在uni.createBLEConnection调用成功后调用uni.setBLEMTU(OBJECT)的,按照官方文档进行的,努比亚手机测试通过,但是红米k30测试未通过
hpp2019 (作者) - 前端开发
问题已解决,解决方式是,不要在uni.createBLEConnection调用成功后调用uni.setBLEMTU(OBJECT),顺序应该是,先uni.createBLEConnection调用成功,然后通过uni.writeBLECharacteristicValue向蓝牙设备发送命令,成功后再调用uni.setBLEMTU(OBJECT)修改传输范围。
-
uni.writeBLECharacteristicValue向蓝牙设备发送命令,这个步骤指的是发送什么指令呢,是需要小于20字节的什么指令吗?
2021-11-12 10:57
-
hpp2019 (作者)
回复 L***@126.com: 下面是执行内容,具体代码可以参考我这个博客,希望有帮助【https://blog.csdn.net/qq_42563079/article/details/117961375】
2021-11-16 11:29
hpp2019 (作者) - 前端开发
uni.writeBLECharacteristicValue({
// 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
deviceId:this.deviceId,
// 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
serviceId:this.serviceId,
// 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
characteristicId:this.characteristicId,
// 这里的value是ArrayBuffer类型
value: sgInt,
success:(res)=> {
this.returnMessage = res.errMsg;
console.log('writeBLECharacteristicValue success', res)
console.log(this.characteristicId);
// 放在发送命令成功后执行传输范围修改,连接成功后修改,部分机型无效
this.setBLEMTU();
},
fail:(res)=> {
this.returnMessage = res.errMsg;
console.log('writeBLECharacteristicValue fail', res)
}
})
9***@qq.com
你好解决了吗 我也遇到这个问题了
2021-05-20 15:50