我有一个具有以下特征的覆盆子(使用Node.JS和Bleno库):
PrinterCharacteristic.prototype.onWriteRequest = function(data, offset, withoutResponse, callback) {
this._value = data
console.log('onWriteRequest working with "'+ this._value + '"')
}
此外,我的Android设备应该与该设备绑定并向其发送数据。
这是我的Android代码:
BluetoothGatt mBluetoothGatt = device.connectGatt(getActivity(), false, new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
if (status == BluetoothGatt.GATT_SUCCESS) {
Log.d("BLE", "start discover");
gatt.discoverServices();
}
}
@Override
public void onServicesDiscovered(BluetoothGatt gatt, int status) {
Log.d("BLE", "onServicesDiscovered");
if (status == BluetoothGatt.GATT_SUCCESS) {
BluetoothGattService mService = gatt.getServices().get(0);
for (BluetoothGattCharacteristic bgc : mService.getCharacteristics()) {
Log.d("BLE", "characteristic " + bgc.getUuid() + " " + bgc.toString());
bgc.setValue("Hello World");
Log.d("BLE", "writing characteristc");
gatt.writeCharacteristic(bgc);
}
} else {
Log.d("BLE", "onServicesDiscovered error");
}
}
});
这是我的日志:
09-16 13:03:46.769 18585-18585/us.inevent.apps.whiteLabel D/BluetoothGatt: connect() - device: B8:27:EB:98:BE:9D, auto: false
09-16 13:03:46.769 18585-18585/us.inevent.apps.whiteLabel D/BluetoothGatt: registerApp()
09-16 13:03:46.770 18585-18585/us.inevent.apps.whiteLabel D/BluetoothGatt: registerApp() - UUID=9a602983-99db-45fd-a3a3-2eb3ed72989a
09-16 13:03:46.772 18585-18987/us.inevent.apps.whiteLabel D/BluetoothGatt: onClientRegistered() - status=0 clientIf=6
09-16 13:03:47.192 18585-18602/us.inevent.apps.whiteLabel D/BluetoothGatt: onClientConnectionState() - status=0 clientIf=6 device=B8:27:EB:98:BE:9D
09-16 13:03:47.193 18585-18602/us.inevent.apps.whiteLabel D/BLE: start discover
09-16 13:03:47.193 18585-18602/us.inevent.apps.whiteLabel D/BluetoothGatt: discoverServices() - device: B8:27:EB:98:BE:9D
09-16 13:03:47.249 18585-18601/us.inevent.apps.whiteLabel D/BluetoothGatt: onSearchComplete() = Device=B8:27:EB:98:BE:9D Status=0
09-16 13:03:47.249 18585-18601/us.inevent.apps.whiteLabel D/BLE: onServicesDiscovered
09-16 13:03:47.250 18585-18601/us.inevent.apps.whiteLabel D/BLE: characteristic 00002a00-0000-1000-8000-00805f9b34fb android.bluetooth.BluetoothGattCharacteristic@1b258afb
09-16 13:03:47.250 18585-18601/us.inevent.apps.whiteLabel D/BLE: writing characteristc
09-16 13:03:47.250 18585-18601/us.inevent.apps.whiteLabel D/BLE: characteristic 00002a01-0000-1000-8000-00805f9b34fb android.bluetooth.BluetoothGattCharacteristic@3876d718
09-16 13:03:47.250 18585-18601/us.inevent.apps.whiteLabel D/BLE: writing characteristc
09-16 13:03:47.533 18585-18585/us.inevent.apps.whiteLabel D/BluetoothAdapter: stopLeScan()
它找到了两个特征(如预期的那样,WRITE和NOTIFY),并尝试向每个特征发送数据,但我的覆盆子没有收到任何数据。
如果我使用nRF Connect
应用,它会按预期工作。
我做错了什么?我不确定我究竟是怎么理解BLE的。
感谢。
答案 0 :(得分:0)
似乎Bleno正在运行其他服务。为了解决我的问题,我刚刚搜索了所有服务中的所有特征,并确定了UUID应该使用哪一个。