HarmonyOS开发中蓝牙连接后获取GATT服务失败的问题?

蓝牙gatt连接用以下方式获取gattService失败:

let device: ble.GattClientDevice = ble.createGattClientDevice('XX:XX:XX:XX:XX:XX'); 
device.connect(); 
device.getServices().then((result: Array<ble.GattService>) => { 
  console.info('getServices successfully:' + JSON.stringify(result)); 
});

返回错误信息:BussinessError 2900099: Operation failed。

阅读 754
1 个回答

getServices接口需要gatt成功连接后才会调用成功,可以通过注册连接回调,当回调中返回成功连接状态后,再调用getServices接口获取服务信息。首先,想询问一下是否使用双端设备进行测试连接?ble模块设计服务端和客户端,需要使用双端设备才可以成功连接测试。单设备内同时创建createGattClientDevice和createGattServer是没法进行服务端和客户端连接测试的。其次,.on(‘connectionStateChange’)方法是服务端的方法,您这里可以改成on(‘BLEConnectionStateChange’)客户端的方法,判断连接成功后在其中调用服务发现接口。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进