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

React Native蓝牙BLE设备认证GATT异常问题求助

解决React Native BLE认证写入失败的问题

你的核心问题是十六进制字符串转Base64的方式错误,导致发送给设备的字节数据和NRF Connect测试时的正确数据不一致,触发GATT异常。

错误原因

当前代码Buffer.from(loginString)是把"12000000000000000000000000"按UTF-8字符编码转成Buffer,比如字符"1"对应字节0x31、字符"2"对应0x32,这和设备需要的0x12开头、后续全0x00的字节数组完全不符。

修正方案

需要将十六进制字符串解析为字节数组后再转Base64,修改代码如下:

const Buffer = require("buffer").Buffer;
const loginHex = "12000000000000000000000000";
// 关键:第二个参数指定为'hex',解析十六进制字符串为对应字节
const byteBuffer = Buffer.from(loginHex, "hex");
const base64Data = byteBuffer.toString("base64");

// 执行写入操作
characteristics[0].writeWithResponse(base64Data)
  .then(() => console.log("认证指令发送成功"))
  .catch(err => console.error("写入失败:", err));

额外检查项

  • 确认characteristics[0]是设备要求的认证特征值,和NRF Connect测试时选择的特征完全一致
  • 检查该特征值的属性是否包含Write或Write Without Response,如果设备支持无响应写入,可尝试替换为writeWithoutResponse
  • 确保设备处于已连接且稳定的状态,避免在连接初始化未完成时执行写入操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:15:32