l***@qq.com
l***@qq.com
  • 发布:2020-06-11 10:15
  • 更新:2020-06-11 15:12
  • 阅读:1365

H5+ ble5.0订阅特征值问题!(蓝牙使用的是汇承HC42)

分类:HTML5+
// 蓝牙设备id,可通过onBluetoothDeviceFound方法获取  
var deviceId = '';  
// 蓝牙服务id,可通过getBLEDeviceServices方法获取  
var serviceId = '';  
// 蓝牙特征值id,可通过getBLEDeviceCharacteristics方法获取  
var characteristicId = '';  
// 启用低功耗蓝牙设备特征值变化时的notify功能  
function startCharacteristicsNotify(){  
    // 监听低功耗蓝牙设备的特征值变化   
    plus.bluetooth.onBLECharacteristicValueChange(function(e){  
        console.log('onBLECharacteristicValueChange: '+JSON.stringify(e));  
        var value=new Uint8Array(characteristicId.value);  
                var t='';  
        for(var i in value){  
            t += '0x'+value[i].toString(16)+' ';  
        }  
               document.getElementById('readvalue').value = t; //界面显示函数  
    });  
    // 启用notify功能  
    plus.bluetooth.notifyBLECharacteristicValueChange({  
        deviceId:deviceId,  
        serviceId:serviceId,  
        characteristicId:characteristicId,  
        success:function(e){  
            var characteristics = e.characteristics;  
            console.log('get characteristics success: '+characteristics.length);  
            for(var i in characteristics){  
                console.log(i+': '+JSON.stringify(characteristics[i]));  
            }  
        },  
        fail:function(e){  
            console.log('get characteristics failed: '+JSON.stringify(e));  
        }  
    });  
}

详细问题描述
[内容]
***notifyBLECharacteristicValueChange
启用低功耗蓝牙设备特征值变化时的notify功能,订阅特征值

重现步骤
[步骤] 连接蓝牙(createBLEConnection) → 获取设备服务(getBLEDeviceServices) → 订阅特征值(notifyBLECharacteristicValueChange,特征值写在配置文件中直接订阅) → 监听数据变化(onBLECharacteristicValueChange)

[结果] onBLECharacteristicValueChange 可以获取支持notify特征值的变化,但是界面显示速度很慢与蓝牙传输速度不匹配!!!实测在控制台打印速度很快,但是界面显示很慢!!!

[其他]
苹果系统运行HC42不存在该问题。安卓原生开发不存在该问题。使用HC08(ble4.0)苹果和安卓都不存在问题。因此怀疑封装函数在安卓端与ble5.0不兼容引起该问题!!!!

2020-06-11 10:15 负责人:DCloud_Android_zl 分享
已邀请:
DCloud_Android_zl

DCloud_Android_zl

没太理解,是回调不及时还是回调及时但是界面更新不及时?

  • l***@qq.com (作者)

    界面更新不及时,就是打印控制台看起来速度很快,但是界面就是不更新数据。

    2020-06-11 17:25

  • l***@qq.com (作者)

    我自己回复一下,我测试了uni-app,H5+app,发现该问题可能是该类app的缺陷就是不能快速响应吧,如果线程做太多事情估计界面会产生阻塞。而且界面响应速度明显低于android原生。

    2020-06-11 19:32

  • DCloud_Android_zl

    回复 l***@qq.com: 有没有估算一下,一秒钟大约响应多少次会出现你所说的问题?

    2020-06-15 15:08

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