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 读取失败
SERVICE_UUID
和 CHARACTERISTIC_UUID
,这有意义吗?我不明白错误是否来自我的代码,或者固件的损坏。
编辑 按照@Michael 的回答,我下载了
nRF Connect
。
调试起来很棒。我认为错误不是来自我在 React Native 中的实现,而是来自设备本身,因为我有这个错误:
经过调查,我发现我的问题与蓝牙固件有关。
丹尼尔在这段视频中解释得很清楚。
https://youtu.be/UuHLPsjp6fM?si=iHAB80aVruJHUDQM&t=895
和Services UUID
来自您的手册或固件工程师。Characteristics UUID
所以,我“只是”需要询问更好的文档。