HarmonyOS 鸿蒙Next 经典蓝牙socket示例工程

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 经典蓝牙socket示例工程

有没有大佬能给个经典蓝牙的示例工程 或者示例代码   按照官方api写 跑不通 无论配对还是连接 都是报2900099

19 回复
已验证,应该用权限"ohos.permission.ACCESS_BLUETOOTH",而不是"ohos.permission.USE_BLUETOOTH"

这个问题也困扰了我很久,是deviceId的问题,deviceId必须是已配对address。具体代码如下:

getPairedDevices() {
try {
let devices: Array<string> = connection.getPairedDevices();
for (const device of devices) {
console.info('getPairedDevices mac :' + device);
this.mac = devices[0];
console.log('getPairState: ' + JSON.stringify(this.mac));
}
} catch (err) {
console.error('errCode: ' + (err as BusinessError).code + ', errMessage: ' + (err as BusinessError).message);
}
}

希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。

API版本11

改在主线程调用也不行

代码如下,deviceId为3D:69:D9:B7:F0:97

private async sockConn(deviceId: string): Promise<boolean> {

  this.socketID = 0;

  socket.sppConnect(deviceId, {

    uuid: '00001101-0000-1000-8000-00805f9b34fb',

    secure: false,

    type: 0

  }, (code, socketID) => {

    if (code != null) {

      hilog.info(0x0000, My.tag, 'sppConnect error, code = %{public}d', (code as BusinessError).code);

      return;

    }

    this.socketID = socketID;

  })

  return this.socketID != 0;

}

我也是直接连接蓝牙设备socket.sppConnect报错2900099

看日志好像是系统内部的错误,有人解决过类似的问题吗?日志如下

 [nodict][napi_bluetooth_spp_client.cpp(SppConnect:104)]enter

 [nodict][napi_bluetooth_spp_client.cpp(CheckSppConnectParams:34)]enter

 [nodict][napi_bluetooth_spp_client.cpp(GetSppOptionFromJS:85)]uuid is 00001101-0000-1000-8000-00805f9b34fb

 [nodict][napi_bluetooth_spp_client.cpp(GetSppOptionFromJS:90)]secure is 0

 [nodict][napi_bluetooth_spp_client.cpp(GetSppOptionFromJS:98)]uuid: 00001101-0000-1000-8000-00805f9b34fb, secure: 0, type: 0

 [nodict][napi_bluetooth_spp_client.cpp(CheckSppConnectParams:53)]callback mode

[nodict][napi_bluetooth_spp_client.cpp(operator():116)]SppConnect execute

 [nodict][napi_bluetooth_spp_client.cpp(operator():122)]SppConnect client_ constructed

[nodict][napi_bluetooth_spp_client.cpp(operator():132)]SppConnect execute back

[nodict][napi_bluetooth_spp_client.cpp(operator():151)]SppConnect execute back failed

[nodict][napi_bluetooth_spp_client.cpp(operator():156)]SppConnect execute Callback mode

[nodict][napi_bluetooth_utils.cpp(GetCallbackErrorValue:35)]errCode: 2900099

[nodict][bluetooth_socket.cpp(Connect:409)]regitser observer fail, ret = <private>

[nodict][napi_bluetooth_spp_client.cpp(operator():128)]SppConnect failed

[nodict][napi_bluetooth_spp_client.cpp(operator():132)]SppConnect execute back

[nodict][napi_bluetooth_spp_client.cpp(operator():151)]SppConnect execute back failed

[nodict][napi_bluetooth_spp_client.cpp(operator():156)]SppConnect execute Callback mode

[nodict][napi_bluetooth_utils.cpp(GetCallbackErrorValue:35)]errCode: 2900099

请问解决了吗

我也遇到了,请问解决了吗

希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。

你好,解决了吗

示例中 通过socket连接对端设备 只介绍到连接 后续像蓝牙设备发送的步骤没有了 按照api上的示例写了,蓝牙打印机没有任何反应,同时程序也没有报错

请问下这个后面解决了吗?遇到同样的问题了

开发者您好,该问题已反馈给相关人员,请耐心等待。

更换 uuid 为00001101-0000-1000-8000-00805F9B34FB 后 可以连接成功获取到clientNumber 但是 调用 let arrayBuffer = new ArrayBuffer(8); let data = new Uint8Array(arrayBuffer); data[0] = 123; try { socket.sppWrite(this.clientNumber, arrayBuffer); } catch (err) { console.error(“errCode2:” + (err as BusinessError).code + “,errMessage:” + (err as BusinessError).message); } 蓝牙打印机没有任何反应 ,程序也没有报错

楼主您好,请提供一下相关代码以及日志信息

aboutToAppear(): void { try { connection.on(‘bluetoothDeviceFind’, (data: Array<string>)=>{ console.log(‘data length’ + data); if (data.length > 0 && “6A:2C:C8:4A:48:93” === data[0]) { try { connection.stopBluetoothDiscovery(); } catch (err) { console.error('errCode: ’ + (err as BusinessError).code + ', errMessage: ’ + (err as BusinessError).message); } try { let sppOption: socket.SppOptions = { uuid: ‘00001810-0000-1000-8000-00805F9B34FB’, secure: false, type: 0 }; socket.sppConnect(‘6A:2C:C8:4A:48:93’, sppOption, (code: BusinessError, number: number)=>{ if (code.code != 0 || code == null) { console.log('bluetooth serverSocket code: '+code.code +" "+code.message); return; } console.log('bluetooth serverSocket Number: ’ + number); // 获取的clientNumber用作客户端后续读/写操作socket的id。 this.clientNumber = number; }); } catch (err) { console.error('errCode: ’ + (err as BusinessError).code + ', errMessage: ’ + (err as BusinessError).message); } } }); connection.startBluetoothDiscovery(); } catch (err) { console.error('errCode: ’ + (err as BusinessError).code + ', errMessage: ’ + (err as BusinessError).message); } }

以下是打印的日志 I data lengthE0:24:F5:2C:58:E6 I data lengthCE:5D:01:BD:F3:F1 I data length6A:2C:C8:4A:48:93 I data length56:58:45:B1:22:4D I bluetooth serverSocket code: 2900003 BussinessError 2900003: Bluetooth switch is off.

现在错误码变了 蓝牙开关是打开的,扫描是正常的,到连接的时候就报錯了

请问解决了吗

作为IT专家,针对HarmonyOS 鸿蒙Next经典蓝牙socket示例工程,以下是一个简要说明:

在HarmonyOS 鸿蒙Next中,经典蓝牙socket的开发主要依赖于@ohos.bluetooth.socket模块。首先,通过DevEcoStudio创建一个新项目,并确保在entry\src\main\ets目录下创建与蓝牙socket相关的目录和文件。

在开发过程中,需配置worker来处理蓝牙数据的发送和接收,以避免应用冻结。客户端和服务端的交互,通常涉及到socket的建立、数据传输和断开连接等操作。

一个完整的经典蓝牙socket示例,通常包括以下几个步骤:

  1. 客户端和服务端均开启蓝牙,并确保设备间已经成功配对。
  2. 创建服务端socket,并监听来自客户端的连接请求。
  3. 客户端发起连接请求,并等待服务端接受连接。
  4. 连接成功后,客户端和服务端可以进行数据传输。
  5. 监听socket断开事件,并在连接断开后清理资源。

示例代码中,通常会使用BluetoothSocket类来创建和连接socket,并通过捕获IOException来检测连接断开。

此外,在开发过程中,需要关注OpenHarmony不同版本的镜像适配情况,以确保应用的稳定性和兼容性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部