如何使用BLE和`react-native-ble-plx`读取/写入数据?

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

我成功将

react-native-ble-plx
设置到手柄 BLE 设备。

我之前没有任何使用蓝牙的经验。根据我的理解和阅读文档后,我应该如何从蓝牙设备读取一些信息。

// Connect to the device
const connectedDevice = await device.connect();

// Discover all services and characteristics
const servicesAndCharacteristics = await connectedDevice.discoverAllServicesAndCharacteristics();

// let's say I discovered these UUID
const SERVICE_UUID = '0000180a-0000-1000-8000-00805f9b34fb';
const CHARACTERISTIC_UUID = '00002a23-0000-1000-8000-00805f9b34fb';

// Writing command
const characteristic1 = await servicesAndCharacteristics.writeCharacteristicWithResponseForService(SERVICE_UUID, CHARACTERISTIC_UUID, CMD_GET_INFO);

// Reading the response
const response1 = await characteristic1.read();
console.log(response1.value); // Logs the response

我从蓝牙设备的固件开发人员那里收到了此文档。

应用程序和控制器之间建立蓝牙通信后,应用程序可以使用

CMD_GET_INFO
检索设备信息。在此阶段,还无法直接读写设备。应用程序需要发送
CMD_ENTER_PRO
命令并等待控制器响应“成功”,然后才能继续发送其他命令。

我不明白这部分

应用程序可以使用 CMD_GET_INFO 检索设备信息

我认为 BLE 通信使用

Service UUID
Characteristic UUID

在整个文档中,我对
UUID
的提及为零。
仅使用
CMD_GET_INFO
,但如何使用?

我尝试了

SERVICE_UUID
的每一种组合,并且发现
CHARACTERISTIC_UUID
discoverAllServicesAndCharacteristics
,使用纯字符串表示
CMD_GET_INFO
base64.encode

每次遇到这样的错误:

连接失败 设备特征 xxxx-xxxxx-xxxx-xxxx 读取失败

问题:

  • 在设备上“CRUD”数据需要哪些信息? (我有网络背景,所以对我来说,它正在阅读经典的 REST api 文档)。
  • 如果我要求举例说明如何使用
    SERVICE_UUID
    CHARACTERISTIC_UUID
    ,这有意义吗?

我不明白错误是否来自我的代码,或者固件的损坏。


编辑 按照@Michael 的回答,我下载了

nRF Connect

调试起来很棒。我认为错误不是来自我在 React Native 中的实现,而是来自设备本身,因为我有这个错误:

BLE timeout

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

经过调查,我发现我的问题与蓝牙固件有关。

丹尼尔在这段视频中解释得很清楚。
https://youtu.be/UuHLPsjp6fM?si=iHAB80aVruJHUDQM&t=895

Services UUID
Characteristics UUID
来自您的手册或固件工程师。

所以,我“只是”需要询问更好的文档。

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