蓝牙连接获取数据插件的使用心得

连接蓝牙获取数据,具体的使用场景是用该插件连接蓝牙秤,然后获取蓝牙秤上面的重量值,在使用该插件的过程中遇到问题以及解决方法总结如下:

1. 插件的标准使用方法参考这里
2. 我的逻辑过程:
  • 开启蓝牙-----enable()
  • 查看蓝牙是否正常启用-----isEnabled()
  • 如果蓝牙正常启用,获取绑定过的蓝牙列表-----list()
  • 选择list里面的某个device,参数是设备的物理地址,连接蓝牙-----connectInsecure(macAddress)
  • 获取蓝牙秤的数据值-----subscribeRawData()
    与read()嵌套调用
  • 如果蓝牙启用失败,跳转到系统蓝牙设置的界面-----showBluetoothSettings()
3. 着重说明一下黑色字体部分

一开始不知道哪个方法可以正确的获取到数据,于是把看起来可以获取到数据的方法都放在程序里单独执行了一遍

  • readsubscribeRawData方法拿不到返回值
    -subscribe(".")可以拿到返回值,但是每次数值都是第一次的数值,并不会刷新变更,看方法的注释,说是从缓存里面读取的数据
  • 尝试在每次调用subscribe(".")方法之前调用clear方法清除缓存,非常棒,又啥也读不到了

最后查看资料,发现是在subscribeRawData方法中嵌套调用read方法,贴代码

this.bluetoothSerial.subscribeRawData().subscribe((res) => {
    this.bluetoothSerial.read().then((data) => {
        console.log("data:"+data);
       }
    });
});

缓存中收到数据时会执行subscribeRawData的回调方法(订阅的通知),然后调用read方法读取缓存中的值即可
我之前都是单独调用各个方法,而各个方法都是异步方法,所以不能在准确的时间点读取数据。

参考: (蓝牙串口)Bluetooth Serial
Ionic Bluetooth serial SubscribeRawData update UI

你可能感兴趣的:(蓝牙连接获取数据插件的使用心得)