HarmonyOS 鸿蒙Next 经典蓝牙socket示例工程
HarmonyOS 鸿蒙Next 经典蓝牙socket示例工程
这个问题也困扰了我很久,是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示例,通常包括以下几个步骤:
- 客户端和服务端均开启蓝牙,并确保设备间已经成功配对。
- 创建服务端socket,并监听来自客户端的连接请求。
- 客户端发起连接请求,并等待服务端接受连接。
- 连接成功后,客户端和服务端可以进行数据传输。
- 监听socket断开事件,并在连接断开后清理资源。
示例代码中,通常会使用BluetoothSocket类来创建和连接socket,并通过捕获IOException来检测连接断开。
此外,在开发过程中,需要关注OpenHarmony不同版本的镜像适配情况,以确保应用的稳定性和兼容性。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。