Невозможно прочитать данные через Bluetooth успешно - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать приложение, которое может получать данные и отправлять данные на микроконтроллер (ESP32).Но по какой-то причине я не могу успешно получать данные из микроконтроллера.

Приложение написано на Kotlin, и я уже пробовал некоторые примеры, упомянутые в StackOverflow, но на самом деле ни один из них не работает с моим кодом.Я могу успешно отправить данные в микроконтроллер через Bluetooth, но не могу получить данные из Bluetooth.(Метод, который я использовал в микроконтроллере, это просто "ESP_BT.println (" Check ");"

. Во фрагменте кода функция, относящаяся к полученным данным, называется "receiveBluetooth"

* 1006.*

Я ожидаю, что в тексте будет отображаться "Проверка", но вместо этого в моем тексте будет отображаться только начальное значение, которое я присвоил.

1 Ответ

0 голосов
/ 09 мая 2019

Может быть, вам стоит использовать библиотеку. У меня отлично работает RxAndroidBle библиотека:

Gradle

implementation "com.polidea.rxandroidble2:rxandroidble:1.8.1"

Осуществление :

В моем проекте с Android Java и ESP32 , также я прочитал некоторые характеристики или значения с помощью простых реализаций, например:

public void setupNotification() {
    if (isConnected()) {
        final Disposable disposable = connectionObservable
                .flatMap(rxBleConnection -> rxBleConnection.setupNotification(charactSensorDataUuid))
                .doOnNext(notificationObservable -> { notificationHasBeenSetUp(); })
                .flatMap(notificationObservable -> notificationObservable)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(this::onNotificationReceived, this::onNotificationSetupFailure);
        compositeDisposable.add(disposable);
    }
}

public void readSensorConfig(){
    if (isConnected()) {
        final Disposable disposable = connectionObservable
                .firstOrError()
                .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(charactConfigUuid))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(this::onSensorConfigRead, this::onReadFailure);
        compositeDisposable.add(disposable);
    }
}

public void readSensorData(){
    if (isConnected()) {
        final Disposable disposable = connectionObservable
                .firstOrError()
                .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(charactSensorDataUuid))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(this::onSensorDataRead, this::onReadFailure);
        compositeDisposable.add(disposable);
    }
}

Полная реализация Java здесь:

https://github.com/kike-canaries/android-hpma115s0/blob/master/app/src/main/java/hpsaturn/pollutionreporter/common/BLEHandler.java

Переход на Kotlin должен быть простым, также для этой библиотеки основной целью является Bluetooth BLE , и у них есть много образцов на Kotlin

...