cordova-plugin-bluetooth-serial插
2019-04-26 本文已影响0人
小圈儿33
连接蓝牙获取数据,具体的使用场景是用该插件连接蓝牙秤,然后获取蓝牙秤上面的重量值,在使用该插件的过程中遇到问题以及解决方法总结如下:
1. 插件的标准使用方法参考这里
2. 我的逻辑过程:
- 开启蓝牙-----enable()
- 查看蓝牙是否正常启用-----isEnabled()
- 如果蓝牙正常启用,获取绑定过的蓝牙列表-----list()
- 选择list里面的某个device,参数是设备的物理地址,连接蓝牙-----connectInsecure(macAddress)
- 获取蓝牙秤的数据值-----subscribeRawData()
与read()嵌套调用 - 如果蓝牙启用失败,跳转到系统蓝牙设置的界面-----showBluetoothSettings()
3. 着重说明一下黑色字体部分
一开始不知道哪个方法可以正确的获取到数据,于是把看起来可以获取到数据的方法都放在程序里单独执行了一遍
-
read
与subscribeRawData
方法拿不到返回值
-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