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