HarmonyOS 鸿蒙Next BLE蓝牙写特征值出现{"code":-3,"message":"Inner error."该如何处理?

HarmonyOS 鸿蒙Next BLE蓝牙写特征值出现{“code”:-3,“message”:"Inner error."该如何处理?

writeCharacteristicValue failed{“code”:-3,“message”:“Inner error.”}

代码如下,已知Characteristic是可写的

this.gattClientDevice.writeCharacteristicValue(cha,ble.GattWriteType.WRITE, (code:BusinessError) => {
  if (code != null) {
    console.info(`BLE writeCharacteristicValue failed${JSON.stringify(code)}`);
    return;
  }
  console.info('BLE writeCharacteristicValue success - writeWithResponseWithNeedAuth');
})
catch (err) {
  console.info(`BLE writeCharacteristicValue failed catch ${JSON.stringify(err)}`);
}

更多关于HarmonyOS 鸿蒙Next BLE蓝牙写特征值出现{"code":-3,"message":"Inner error."该如何处理?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
# GattWriteType

枚举,表示gatt写入类型。

**元服务API**:从API version 12开始,该接口支持在元服务中使用。

**系统能力**:SystemCapability.Communication.Bluetooth.Core。

| 名称                  | 值              | 说明                                 |
|-----------------------|-----------------|--------------------------------------|
| WRITE                 | 1               | 表示写入特征值,需要对端设备的回复。  |
| WRITE_NO_RESPONSE     | 2               | 表示写入特征值,不需要对端设备的回复。|

【WRITE】需要对端回复;

用【WRITE_NO_RESPONSE】也报错吗?

更多关于HarmonyOS 鸿蒙Next BLE蓝牙写特征值出现{"code":-3,"message":"Inner error."该如何处理?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我们的这个特征值支持写入并需要设备端回复,因此使用的是WRITE。使用WRITE_NO_RESPONSE是没报错,

在HarmonyOS鸿蒙Next中,BLE蓝牙写特征值出现{"code":-3,"message":"Inner error."}错误,通常是由于内部操作异常或参数错误引起的。可能的原因包括:

  • 特征值不可写:确保目标特征值具有写权限,检查特征值的属性是否为WRITE或WRITE_WITHOUT_RESPONSE。
  • 数据长度超限:写入的数据长度可能超过了特征值的最大长度限制,需确认数据长度是否符合规范。
  • 设备未连接或连接不稳定:确保蓝牙设备已正确连接,并且连接状态稳定,避免在断开或连接不稳定的情况下进行操作。
  • GATT操作顺序错误:检查GATT操作的执行顺序,确保在正确的状态下执行写操作。
  • 系统资源不足:设备资源可能被占用或不足,导致内部操作失败。
  • 权限问题:确认应用已获取必要的蓝牙权限,如ACCESS_FINE_LOCATION等。
  • 服务或特征值未发现:确保目标服务和特征值已成功发现,且在有效范围内。
  • 设备兼容性问题:某些蓝牙设备可能存在兼容性问题,导致写操作失败。

处理步骤如下:

  • 确认特征值的写权限和数据长度。
  • 检查蓝牙连接状态是否稳定。
  • 确保GATT操作顺序正确。
  • 验证应用权限是否齐全。
  • 重新扫描并发现服务和特征值。

若问题仍未解决,建议查阅相关日志或调试信息以进一步排查原因。

回到顶部