readCharacteristic вернул true, но onCharacteristicRead не вызывается - PullRequest
0 голосов
/ 05 марта 2019

После подключения к устройству BLE и обнаружения его сервисов я проверяю, что определенная характеристика доступна для чтения, затем я вызываю readCharacteristic. Этот вызов возвращает true, но обратный вызов onCharacteristicRead не вызывается.
Всего через 30 секунд onCharacteristicRead вызывается с характеристикой == ноль, а onDeviceDisconnected вызывается с кодом состояния, равным 22.

Я протестировал nRF Connecte, чтобы прочитать ту же характеристику, и она работала нормально.

Что может быть не так?

1 Ответ

0 голосов
/ 06 марта 2019

Тот факт, что время ожидания истекает через 30 секунд и отключается с ошибкой 22 (локальное устройство разорвало соединение) указывает на то, что периферийное устройство не ответило в течение 30 секунд, как того требует стандарт GATT. Вы должны отладить периферийное устройство, чтобы найти причину.

Причина, по которой он работает в nRF Connect, может заключаться в том, что предыдущий отправленный / полученный GATT перевел периферийное устройство в другое состояние.

Вы можете проверить журнал HCI в Android, чтобы увидеть все необработанные пакеты, чтобы, возможно, выяснить, что происходит.

...