uni-app uni.setBLEMTU设置蓝牙最大传输单元无效

qco9c6ql  于 2022-11-19  发布在  uni-app
关注(0)|答案(2)|浏览(1067)

问题描述
uni.setBLEMTU设置mtu为128,像蓝牙设备发送32字节的数据包,但蓝牙设备只能收到20字节,mtu不管设置多少发送超过20字节,设备端只能收到20字节,更换手机测试也一样。写了个原生App的demo设置mtu后发送46字节的数据包,蓝牙设备能接收1帧46字节。

复现步骤
[复现问题的步骤]

uni.setBLEMTU({
  deviceId: deviceId,  
  mtu: 128,  
  success: (res) => {
    console.log(res)
   },
   fail: (error) => {
      console.log(error)
   }
})
const uint8Arr = new Uint8Array([1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5])
const buffer = uint8Arr.buffer
uni.writeBLECharacteristicValue({
    // 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取
    deviceId: deviceId,
    // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取
    serviceId: writeService,
    // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取
    characteristicId: writeCharacteristic,
    // 这里的value是ArrayBuffer类型
    value: buffer,
    success: res => {
      console.log('writeBLECharacteristicValue success', Array.prototype.slice.call(new Uint8Array(buffer)))
    },
    fail: error => {
      console.log(error)
      reject(error)
    }
 })

预期结果
[使用简洁清晰的语言描述你希望生效的预期结果]

实际结果
writeBLECharacteristicValue success, [Object] [1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3,4,5]

系统信息:

  • 发行平台: uni-app 安卓端
  • 操作系统 Android 10.0 Android 9.0
  • HBuilderX版本 HBuilderX 2.8.8
  • uni-app版本 [如使用Vue-cli创建/运行项目,则提供 npm run info 的运行结果]
  • 设备信息 荣耀v20

补充信息
[可选]
setBLEMTU返回{"errMsg":"setBLEMTU:ok"}了
原生app正常排除蓝牙设备的限制

bvhaajcl

bvhaajcl1#

类似问题,uni.setBLEMTU设置了128,但是在 notifyBLECharacteristicValueChange ==》onBLECharacteristicValueChange 方法中监听消息通知也是只能收到20个字节,实际不止; 希望能尽快更新处理,谢谢

bgtovc5b

bgtovc5b2#

经过测试:发现安卓6的手机正常,安卓10、安卓9不行,不清楚具体怎么配置

相关问题