如何解决React Native 和 react-native-ble-plx
首先我想说我刚开始连接蓝牙和 BLE,所以我的问题是为了了解它是如何工作的。
我正在开发一个 React Native APP,我必须在其中连接到 BLE 设备。
我使用 react-native-ble-plx 来管理连接。
现在,我可以连接到我的设备、读取服务并获取特征和描述符。
我需要从 BLE 控制器接收 JSON 字符串(我认为这些特性应该可以完成这项工作,但我不确定)并且我还需要发送 JSON 以与 BLE 对话。
所以,我以这种方式连接我的设备:
this.manager.stopDeviceScan();
mDevice = await device.connect();
然后,我获得所有服务:
mDevice = await mDevice.discoverAllServicesAndcharacteristics();
const discoveredServices = await mDevice.services();
我可以找到我需要实现的服务及其特点:
const mainService = discoveredServices.filter(service => service.uuid === MY_SERVICE)[0];
const characteristics = await mDevice.characteristicsForService(mainService.uuid);
从这一点来看,一切都是黑色的......我的意思是,我可以读取字符描述符,其中一些有一个值,例如,AAA= 或 AQA=,假设它是 base64,但解码什么也没给我。
我想做的是从某个地方读取一个 JSON 字符串,但我找不到它。
我尝试了很多东西,最后一个:
// FOREACH CHaraCTERISTIC
for (let i = 0; i < characteristics.length; i++) {
const char = characteristics[i];
let value = '';
// GET DESCRIPTORS
const descriptors = await char.descriptors();
for (let e = 0; e < descriptors.length; e++) {
const descriptor = descriptors[e];
// READING THE DESCRIPTOR
const descRead = await descriptor.read();
if (descRead) {
// GET VALUE
value += 'ORIGINAL: ' + descRead.value + '; DECODED: ' + base64.decode(descRead.value);
}
}
// VALUES ARE ALWAYS: AAA= OR AQA=
Alert.alert('Valor',value);
...
}
所以在描述符中我找不到我需要的信息,所以我尝试使用监视和写入特性以使用 BLE 登录。
// TRYING TO GET NOTIFICATIONS OR I DONT KNow...
const monitor = char.monitor((error,characteristic) => {
if (error) {
console.warn(error);
monitor.remove();
return;
}
// THERES NO VALUES...
console.log('MONITOR: ' + characteristic?.value);
});
// TRYING TO WRITE JSON LOGIN STRING TO CHAR
const status = await this.manager
.writeCharacteristicWithResponseForDevice(
mDevice.id,char.serviceUUID,char.uuid,JSON.stringify(MY_LOGIN_DATA),)
.catch(err => console.log(err));
// norMALLY EMPTY BUT SOMETIMES HAS A CHAR OBJECT AS A VALUE
if (status) {
const read = await char.read().catch(err => console.log(err));
}
}
我认为我真正的问题是我不明白它是如何工作的,我认为这就像将数据发送到 REST 服务或类似的东西,但我很迷茫......
我查看了 GATT 文档,那里很清楚,但实践让我很痛苦。
有什么好的教程吗?有什么推荐吗?
提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。