używam następujących reagować bibliotekę react-native-ble-managerBle-coraz kod błędu - 128 pisząc do characterstic
Staram się wykonywać operacje odczytu i zapisu na BLE device.I jestem w stanie wykonać pomyślnie operacji odczytu. Ale otrzymuję kod błędu 128 podczas zapisu do urządzenia BLE.
pierwszy, jestem umożliwiając powiadomienie o typowe -
BleManager.startNotification(peripheralId, serviceId, characteristicId)
Pisanie jest tak -
Konwersja 'hex' wartości do base64 String -
const base64String = new Buffer('0x00B00050D0', 'hex').toString('base64');
BleManager.write(peripheralId, serviceId, characteristicId, base64Value)
napisać kod błędu powrót operacja -128
:(
AKTUALIZACJA - Jest to fragment kodu, aby rozpocząć zgłoszenie i napisać value- pełną dokumentację można znaleźć tutaj- BluetoothLeService.java
public void writeCharacteristic(BleCharacteristic bleCharacteristic, String inputValue) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
if (!bleCharacteristic.isNotificationStarted()) {
Log.w(TAG, "Notification not started please start notification");
return;
}
BluetoothGattCharacteristic bluetoothGattCharacteristic = bleCharacteristic.getBluetoothGattCharacteristic();
bluetoothGattCharacteristic.setValue(inputValue);
mBluetoothGatt.writeCharacteristic(bluetoothGattCharacteristic);
}
public void setCharacteristicNotification(BleCharacteristic bleCharacteristic) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
boolean enable = !bleCharacteristic.isNotificationStarted();
Log.d(TAG, "setCharacteristicNotification(device=" + mBluetoothDeviceAddress + ", UUID="
+ bleCharacteristic.getUUID().toString() + ", enable=" + enable + ")");
BluetoothGattCharacteristic characteristic = mBluetoothGatt.getService(bleCharacteristic.getServiceUUID()).getCharacteristic(bleCharacteristic.getUUID());
mBluetoothGatt.setCharacteristicNotification(characteristic, enable);
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString(SampleGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));
descriptor.setValue(enable ? BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE : new byte[]{0x00, 0x00});
boolean result = mBluetoothGatt.writeDescriptor(descriptor);
bleCharacteristic.setNotificationStarted(result);
Log.d(TAG, "setCharacteristicNotification(device=" + mBluetoothDeviceAddress + ", UUID="
+ bleCharacteristic.getUUID().toString() + ", enabled=" + result + ")");
}
Zgodnie [to], (https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.1. 0_r1/stack/include/gatt_api.h # 49) ten błąd oznacza 'GATT_NO_RESOURCES'. Nie jestem pewien, co to oznacza: – Distjubo
Po prostu z ciekawości, co się stanie, gdy użyjesz 'writeWithoutResponse' zamiast' write'? Czy to rozwiązuje twój problem? – Distjubo
@Distjubo Próbowałem go z writeWithoutResponse i nie wyrzucił żadnego błędu, ale problemy są 1. Oczekuję odpowiedzi po napisaniu 2. Typem charakterystycznym jest Zapisywalny, nie pisząc z odpowiedzią – Subham