ddpapa
ddpapa
  • 发布:2023-07-03 23:28
  • 更新:2023-08-28 14:05
  • 阅读:388

【报Bug】ble监听设备发来数据的同时向设备write写入数据会失败!!!!

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: windows11

HBuilderX类型: 正式

HBuilderX版本号: 3.8.7

手机系统: Android

手机系统版本号: Android 13

手机厂商: 小米

手机机型: 红米k30sultra

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

1、开启特征值变化监听
2、蓝牙设备5s修改一次特征值
3、app调用write方法

预期结果:

write触发success回调,蓝牙设备收到数据包

实际结果:

write触发success回调,但是蓝牙设备没有收到数据包

bug描述:

1、app先使用uni.onBLECharacteristicValueChange监听蓝牙特征值变化,然后调用uni.notifyBLECharacteristicValueChange开启特征值监听

uni.notifyBLECharacteristicValueChange({  
    deviceId: deviceId, // 设备id  
    serviceId: serviceId, // 监听指定的服务  
    characteristicId: characteristicId, // 监听对应的特征值  
    state: true,  
    success(res) {  
        resolve(res)  
    },  
    fail(err) {  
        reject(err)  
    }  
})

2、蓝牙设备会以5s每条发送notify数据
3、app可以成功监听到特征值变化
4、app使用uni.writeBLECharacteristicValue(这里已经延时1s)发送消息,蓝牙设备出现偶尔可以成功收到数据,大概率数据丢失

uni.writeBLECharacteristicValue({  
    deviceId,  
    serviceId,  
    characteristicId,  
    value: buffer,  
    writeType: 'write',  
    success(res) {  
            resolve(res)  
        console.log(res)  
    },  
    fail(err) {  
        console.log(err)  
        reject(err)  
    }  
})

5、app即使发送了消息,蓝牙设备没有收到,uni.writeBLECharacteristicValue也是走了succes回调

注:蓝牙设备已经主动修改mtu为最大值,且能成功接收到完整数据包

2023-07-03 23:28 负责人:DCloud_Android_zl 分享
已邀请:
1***@qq.com

1***@qq.com

请问解决了吗 我这里也碰到了相同问题

要回复问题请先登录注册