0

我正在开发一个扫描 BLE 设备(外围设备)的应用程序,然后连接到它们,读取它们的服务和特性。目前,我能够连接到充当具有某些特性的外围设备的 iPhone,并且还能够连接到 Fitbit Versa Watch 以读取心脏传感器数据。虽然我能够发现他们的服务,但我无法从 ServiceUUId 及其特征等服务中提取更多信息。

下面是我的代码是用 react native 编写的。

scanAndConnect() {
console.log("Scanning Started");
this.manager.startDeviceScan(null, null, (error, device) => {
  if (error) {
    // Handle error (scanning will be stopped automatically)
    console.log("Error in scanning devices:", error);
    return
  }
  // Check if it is a device you are looking for based on advertisement data
  // or other criteria.
  console.log("Detected Device Details:", device.id, device.name);
  // ||device.localName === 'BLEPeripheralApp') 
  if (device.name === 'Versa Lite'){ //
    // Stop scanning as it's not necessary if you are scanning for one device.
    console.log("Device Found, Stopping the Scan.");
    console.log("Connecting to:",device.name)
    this.manager.stopDeviceScan();
    device.connect()
      .then((device) => {
        // this.info("Discovering services and characteristics")
        console.log("Connected...Discovering services and characteristics");
        return device.discoverAllServicesAndCharacteristics()
      })
      .then((device) => {
        console.log('Services and characteristics discovered');
        //return this.testChar(device)
        const services = device.services()
        console.log(services);
        return device.readCharacteristicForService(services)
        // device.readCharacteristicForService("abbaff00-e56a-484c-b832-8b17cf6cbfe8")
        // this.info("Setting notifications")
        //return this.setupNotifications(device)
      })
      .then(() => {
        const characteristicsData =  device.readCharacteristicForService();
        console.log(characteristicsData);
        //this.info("Listening...")
      }, (error) => {
        console.warn(error.message);
        // this.error(error.message)
      })
    }
  });
 }

如何从 Service 方法中提取 serviceUUId 并读取该服务的特征?对于我的 iPhone 外围设备,我有两个我应该能够读写的可变特征。我如何从服务到特性再到真正的价值来解读它们?

非常感谢任何帮助/建议。

谢谢。

4

1 回答 1

0

您缺少方法featuresForService

遍历所有服务,通过

await device.discoverAllServicesAndCharacteristics();
const services = await device.services();
services.forEach(async service => {
   const characteristics = await device.characteristicsForService(service.uuid);
   characteristics.forEach(console.log);
});
于 2020-09-16T22:18:19.933 回答