如何使用react native BLE plx在react natives中读取BLE外围特性



我正在开发一个应用程序,该应用程序扫描BLE设备(外围设备(,然后连接到它们,读取它们的服务和特性。目前,我可以连接到iPhone,它可以作为具有某些特性的外围设备,还可以连接到Fitbit Versa手表读取心脏传感器数据。虽然我能够发现他们的服务,但我无法从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外围设备,我有两个可变的特性,我应该能够读写。我如何从服务到特征再到真正的价值来解读它们?

非常感谢您的帮助/建议。

谢谢。

您缺少方法characteristicsForService。

循环所有服务,通过获取其特征

await device.discoverAllServicesAndCharacteristics();
const services = await device.services();
services.forEach(async service => {
const characteristics = await device.characteristicsForService(service.uuid);
characteristics.forEach(console.log);
});

最新更新