You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native对接HK85智能手表:BLE数据接收异常求助

React Native 对接HK85智能手表BLE数据接收问题
  • 设备连接与数据写入均正常,但notify和read操作无法生效,查看特性参数发现isNotifiable和isReadable均为false。

特性参数详情

"_activePromises": {},  "_activeSubscriptions": {}, "deviceID":"8E:75:D1:20:6A:2B", "id":4, "isIndicatable":false, "isNotifiable":false, "isNotifying":false, "isReadable":false, "isWritableWithResponse":true, "isWritableWithoutResponse":true, "serviceID":3, "serviceUUID":"6e400001-b5a3-f393-e0a9-e50e24dcca9e", "uuid":"6e400002-b5a3-f393-e0a9-e50e24dcca9e"

Android SDK获取电池数据的逻辑日志

Android SDK中获取电池数据时,先向设备写入数据,再通过onCharacteristicChanged接收返回包,日志如下:

BleConnector sendData -> 0x0203_POWER, 0x10_READ
V/BaseBle: BleMessenger enqueueMessage -> WriteMessage(service='6e400001-b5a3-f393-e0a9-e50e24dcca9e', characteristic='6e400002-b5a3-f393-e0a9-e50e24dcca9e', data=0xAB, 0x01, 0x00, 0x03, 0xFC, 0xA0, 0x02, 0x03, 0x10
V/BaseBle: MessageTask -> try(1), WriteMessage(service='6e400001-b5a3-f393-e0a9-e50e24dcca9e', characteristic='6e400002-b5a3-f393-e0a9-e50e24dcca9e', data=0xAB, 0x01, 0x00, 0x03, 0xFC, 0xA0, 0x02, 0x03, 0x10
V/BaseBle: BleMessenger enqueueWritePackets -> WriteMessage(service='6e400001-b5a3-f393-e0a9-e50e24dcca9e', characteristic='6e400002-b5a3-f393-e0a9-e50e24dcca9e', data=0xAB, 0x01, 0x00, 0x03, 0xFC, 0xA0, 0x02, 0x03, 0x10
I/BaseBle: AbsBleConnector onCharacteristicWrite -> 0 SUCCESS, 6e400002-b5a3-f393-e0a9-e50e24dcca9e, 0xAB, 0x01, 0x00, 0x03, 0xFC, 0xA0, 0x02, 0x03, 0x10
V/BaseBle: BleMessenger dequeueWritePacket
I/BaseBle: AbsBleConnector onCharacteristicChanged -> 6e400003-b5a3-f393-e0a9-e50e24dcca9e, 0xAB, 0x11, 0x00, 0x04, 0x87, 0xFD, 0x02, 0x03, 0x10, 0x54
V/BaseBle: BleParser -> data length=10, received=10

当前React Native代码问题

使用react-native-ble-plx库尝试实现,代码如下,但monitor从未触发,仅在设备断开时返回undefined,怀疑写入的数据格式有误:

deviceConnection.monitorCharacteristicForService(
        SERVICE_UUID,
        TX_CHARACTERISTIC,
        (error, char) => {
          console.log("Last data: " + char?.value);
        },
      );
      
      deviceConnection.writeCharacteristicWithResponseForService(
        SERVICE_UUID,
        RX_CHARACTERISTIC,
        "0xAB, 0x01, 0x00, 0x03, 0xFC, 0xA0, 0x02, 0x03, 0x10"
      ).then((data) => {
        console.log(data?.value)
      })

已完成的解码工作

已成功将React Native接收的Base64字符串解码为大端字节数组,例如解码qxEABK19AgMQMg==得到:
0x32, 0x10, 0x03, 0x02, 0x7D, 0xAD, 0x04, 0x00, 0x11, 0xAB
其中0x32转为十进制为50,正是手表剩余电量百分比。

疑问点

不清楚需向设备写入何种格式的数据才能触发返回,是否需要将字节数组转为Base64,或调整读写方式?


内容的提问来源于stack exchange,提问作者lauren_d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:59:59