使用 Polidea/react-native-ble-plx 从 ble 设备获取所有服务和特性时出错

问题描述 投票:0回答:1

您好,我正在尝试使用 Polidea/react-native-ble-plx 库连接蓝牙设备。

首先我进行扫描,效果很好:

scanAndConnect() {
console.log('scanAndConnect');
this.manager.startDeviceScan(null, null, (error, device) => {
//console.log('Scanning...' + error);
if (error) {
// Handle error (scanning will be stopped automatically)
console.log('Scanning ERROR');
return;
}
if ((device.id=== '54:6C:0E:A0:7B:6D') 
{
console.log('device found: ' + device.name + '(' + device.id + ')');
this.manager.stopDeviceScan();
}
}

第二步我尝试连接。而且它也有效!

device.connect().then((dev) => {
          console.log("try to connect")          
        }).then((dev) => {
          console.log("success to connect")
        }).catch((error) => {
          console.log("connect error:" + error)
          throw error
        });

所以,现在我想让所有服务和特性从设备读取一些信息,但这个功能对我不起作用。

我正在使用这个方法 device.discoverAllServicesAndCharacteristics();

我总是收到错误。

有时我收到以下错误消息: 1) WARN 可能的未处理的 Promise 拒绝 (id: 0): BleError:设备 54:6C:0E:A0:7B:6D 未连接

第一个我没看懂,因为我已经连接了设备。

var status = this.manager.isDeviceConnected(device.id).then((status)=>console.log('status1: '+status))

上面的行在我调用 connect 方法之前返回 false,在调用 connect 方法之后返回 true。

但是当我尝试获取服务和特征时,我收到设备未连接的消息

react-native bluetooth-lowenergy android-bluetooth react-native-ble-plx
1个回答
0
投票

当您有连接的设备时,会出现 BleError:设备 54:6C:0E:A0:7B:6D 未连接。但如果使用 isDeviceConnected(deviceID) 检查状态是否已连接,则会返回 false。我也在寻找这个问题的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.