使用writeBLECharacteristicValue接口改变特征值状态
- 发布:2024-06-03 15:04
 - 更新:2024-06-03 19:53
 - 阅读:427
 
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: Windows 10 专业版
HBuilderX类型: 正式
HBuilderX版本号: 4.15
手机系统: Android
手机系统版本号: Android 13
手机厂商: google
手机机型: plxel 4
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
                                    
                                         
                                
                                                                                                预期结果:
                                    
                                    
                                        获取onBLECharacteristicValueChange状态回调
                                     
                                
                                                                                                获取onBLECharacteristicValueChange状态回调
实际结果:
                                    
                                    
                                        没有获取到onBLECharacteristicValueChange回调
                                     
                                
                                                            没有获取到onBLECharacteristicValueChange回调
bug描述:
在调用writeBLECharacteristicValue写入特征值后 ,没有正常回调onBLECharacteristicValueChange。写入特征值之前已经调用了notifyBLECharacteristicValueChange接口。同样的代码,ios、小程序都可以正常回调。
2***@qq.com (作者)
解决了。Android 不要并行调用notifyBLECharacteristicValueChange接口。使用串行延时100毫秒进行调用。
但是最好在程序实现的时候,不要使用多个特征值进行实现。  
  notifyBLECharacteristicValueChange(deviceId) {  
                return new Promise((resolve, reject) => {  
                    uni.notifyBLECharacteristicValueChange({  
                        deviceId: deviceId,  
                        serviceId: serviceId,  
                        characteristicId: characteristicId,  //特征值UUID  
                        state: true,  
                    }).then(res => {  
                        console.log('注册2');  
                        setTimeout(() => {  
                            uni.notifyBLECharacteristicValueChange({  
                                deviceId: deviceId,  
                                serviceId: serviceId,  
                                characteristicId: characteristicId2,  
                                state: true,  
                            }).then(res => {  
                                                  console.log('注册3');  
                                setTimeout(() => {  
                                    uni.notifyBLECharacteristicValueChange({  
                                        deviceId: deviceId,  
                                        serviceId: serviceId,  
                                        characteristicId: characteristicId3,  //特征值UUID  
                                        state: true,  
                                    })  
                                }, 100); // 设置延迟时间,这里是0.1秒(100毫秒)  
                            })  
                        }, 100); // 设置延迟时间,这里是0.1秒(100毫秒)  
                    })  
                })  
            },                                        
            
            
            
            
DaYao
蒸滴6啊,安卓哪哪哪都要延迟一下,真长记性了
2024-09-13 15:06