HarmonyOS鸿蒙Next中蓝牙订阅问题

HarmonyOS鸿蒙Next中蓝牙订阅问题

let descriptors: Array<BLEDescriptor> = [];
let arrayBuffer = new ArrayBuffer(8);
let descV = new Uint8Array(arrayBuffer);
descV[0] = 11;
let descriptor: BLEDescriptor = {
  serviceUuid: this.myServiceUuid,
  characteristicUuid: this.myCharacteristicUuid,
  descriptorUuid: this.myFirstDescriptorUuid,
  descriptorValue: arrayBuffer
};

descriptors[0] = descriptor;

let arrayBufferC = new ArrayBuffer(8);
let characteristic: BLECharacteristic = {
  serviceUuid: this.myServiceUuid,
  characteristicUuid: this.myCharacteristicUuid,
  characteristicValue: arrayBufferC,
  descriptors: descriptors
};

Logger.error(TAG, 'readCharacteristicValue' + JSON.stringify(characteristic));
try {
  this.gattClient?.setBLEMtuSize(247)
  this.gattClient?.setCharacteristicChangeNotification(characteristic, true, (err: BusinessError) => {
    if (err) {
      Logger.error('notifyCharacteristicChanged callback failed' + JSON.stringify(err));
    } else {
      Logger.error('notifyCharacteristicChanged callback successful' + JSON.stringify(err));
    }
  });

  this.gattClient?.on('BLECharacteristicChange', (characteristicChangeReq: BLECharacteristic) => {
    Logger.error(TAG + "readCharacteristicValue then = ", JSON.stringify(characteristicChangeReq));
  });

} catch (err) {
  Logger.error(TAG, 'errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}

更多关于HarmonyOS鸿蒙Next中蓝牙订阅问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我在readCharacteristicValue的时候,遇到报错

  • errCode: -21
  • errMessage: Inner error.

也没有表可以看着报错到底是怎么回事。

更多关于HarmonyOS鸿蒙Next中蓝牙订阅问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


2900007错误码表示接口调用超时,在接口调用超时失败时会报此错误。连接超时的原因有很多,如:

1、BLE设备状态问题:如果BLE设备未开启蓝牙功能、电量不足、固件版本过旧或存在其他问题,可能导致连接操作超时。确保BLE设备已开启并处于可连接状态,且其固件版本与所使用的软件兼容。

2、连接问题:BLE连接可能不稳定,导致写入操作失败或超时。这可能是由于蓝牙信号强度不足、设备间干扰或蓝牙协议栈的问题造成的。确保设备之间的连接稳定,并尝试优化连接参数,如增加重试次数或调整连接超时时间。

3、软件问题:在某些情况下,软件错误或缺陷可能导致BLE蓝牙写入特征值接口超时。确保所使用的软件已更新到最新版本,并尝试重新安装或更新软件以解决问题。

在HarmonyOS鸿蒙Next中,蓝牙订阅问题通常涉及设备发现、连接和数据传输。首先,确保设备已开启蓝牙并处于可发现状态。使用BluetoothAdapter类进行设备扫描,并通过BluetoothDevice类获取设备信息。连接时,使用BluetoothGatt类建立GATT连接,并通过BluetoothGattCallback处理连接状态和数据传输。若订阅失败,检查权限设置、设备兼容性及蓝牙协议栈日志,确保代码逻辑正确。

回到顶部