韩飘飘
韩飘飘
  • 发布:2020-11-16 10:53
  • 更新:2021-11-16 11:24
  • 阅读:2281

uni.setBLEMTU(OBJECT)存在兼容性问题吗?

分类:uni-app

我是用uniapp做的app项目,连接低功耗蓝牙接收数据,数据超过20位,所以使用uni.setBLEMTU(OBJECT),经测试努比亚手机可以设置成功。但是红米k30却不行,蓝牙连接成功后执行uni.setBLEMTU(OBJECT),但执行后既不执行成功回调,也不执行失败回调,所以大小没设置成功,导致数据不全。有什么解决方案吗?

2020-11-16 10:53 负责人:无 分享
已邀请:
韩飘飘

韩飘飘 (作者) - 前端开发

我是在uni.createBLEConnection调用成功后调用uni.setBLEMTU(OBJECT)的,按照官方文档进行的,努比亚手机测试通过,但是红米k30测试未通过

  • 9***@qq.com

    你好解决了吗 我也遇到这个问题了

    2021-05-20 15:50

韩飘飘

韩飘飘 (作者) - 前端开发

问题已解决,解决方式是,不要在uni.createBLEConnection调用成功后调用uni.setBLEMTU(OBJECT),顺序应该是,先uni.createBLEConnection调用成功,然后通过uni.writeBLECharacteristicValue向蓝牙设备发送命令,成功后再调用uni.setBLEMTU(OBJECT)修改传输范围。

  • 张馨

    你好 请问你现在设置的蓝牙传输单元是成功的吗,我现在测试的手机是华为 安卓10版本 设置传输单元没有生效

    2020-12-25 17:24

  • 韩飘飘 (作者)

    回复 张馨: 华为P30是可以成功的

    2021-03-25 16:49

  • 谭小谭

    回复 韩飘飘: 我也是p30,在写入成功了,在设置mtu已经没有意义了吧

    2021-05-26 11:00

  • L***@126.com

    uni.writeBLECharacteristicValue向蓝牙设备发送命令,这个步骤指的是发送什么指令呢,是需要小于20字节的什么指令吗?

    2021-11-12 10:57

  • 韩飘飘 (作者)

    回复 L***@126.com: 下面是执行内容,具体代码可以参考我这个博客,希望有帮助【https://blog.csdn.net/qq_42563079/article/details/117961375】

    2021-11-16 11:29

韩飘飘

韩飘飘 (作者) - 前端开发

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)  
}  

})

该问题目前已经被锁定, 无法添加新回复