uni-app uni.writeBLECharacteristicValue蓝牙写入在小程序端运行正常,在APP端写入回调suceess,但是设备没有反应,而且写入错误数据也回调sucess

uni-app uni.writeBLECharacteristicValue蓝牙写入在小程序端运行正常,在APP端写入回调suceess,但是设备没有反应,而且写入错误数据也回调sucess

1 回复

更多关于uni-app uni.writeBLECharacteristicValue蓝牙写入在小程序端运行正常,在APP端写入回调suceess,但是设备没有反应,而且写入错误数据也回调sucess的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个典型的平台差异问题。在uni-app中,蓝牙API在小程序和App端的底层实现不同,导致行为不一致。

问题分析:

  1. App端需要正确的serviceId和characteristicId:App端对蓝牙服务的校验比小程序更严格,必须确保写入的特征值属于正确的服务。

  2. 数据格式要求:App端通常要求写入ArrayBuffer类型的数据,而小程序可能更宽松。请确认数据转换是否正确:

    // 正确示例
    const buffer = new ArrayBuffer(1)
    const dataView = new DataView(buffer)
    dataView.setUint8(0, 1)
    
  3. 时序问题:App端蓝牙操作可能需要更长的处理时间,建议在写入操作间加入适当延迟。

解决方案:

  1. 验证服务UUID:确保serviceIdcharacteristicId与设备文档完全匹配,注意大小写。

  2. 检查数据格式

    // 文本转ArrayBuffer
    function stringToArrayBuffer(str) {
      const buffer = new ArrayBuffer(str.length)
      const view = new Uint8Array(buffer)
      for (let i = 0; i < str.length; i++) {
        view[i] = str.charCodeAt(i)
      }
      return buffer
    }
回到顶部