Как читать значения из двух сервисов одновременно - PullRequest
0 голосов
/ 16 апреля 2019

Я работаю над проектом, использующим BLE, и хочу прочитать значения сразу из двух сервисов, но я получаю значение только из первого

Мой код onServicesDiscovered -

public void onServicesDiscovered(BluetoothGatt gatt, int status) 
{
        for (BluetoothGattService service : gatt.getServices()) {
            if ((service == null) || (service.getUuid() == null)) {
                continue;
            }

            if (BleUuid.SERVICE_DEVICE_INFORMATION.equalsIgnoreCase(service
                    .getUuid().toString())) 
            {  
              mConnGatt.readCharacteristic(service.getCharacteristic(UUID.fromString(BleUuid.CHAR_MANUFACTURER_NAME_STRING)));
            }
            if (BleUuid.CHAR_ALERT_LEVEL.equalsIgnoreCase(service
                    .getUuid().toString())) 
            {
              mConnGatt.readCharacteristic(service.getCharacteristic(UUID.fromString(BleUuid.CHAR_SERIAL_NUMBEAR_STRING)));
            }

}

1 Ответ

1 голос
/ 16 апреля 2019

Одновременно может быть только одна ожидающая операция GATT (readCharacteristic, writeCharacteristic, readDescriptor, writeDescriptor, requestMtu).Вам нужно дождаться соответствующего обратного вызова (onCharacteristicRead и т. Д.), Пока вы не сможете выполнить новый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...