AndroidフォンとAndroid Thingsを使用したRaspberry Piの両方で実行されているrxBleAndroidを使用して、BLEデータロガー/センサーと通信しようとしています。
ただし、現在、最初の通知の約 5 件までがアプリで受信されないという問題があります。
BLE デバイスが実際に期待されるすべての通知を正常に送信していることを確認しました。私は nRF Connect アプリを介してそれを行いましたが、そこではすべてが期待どおりに機能します。
nRF Connect アプリを使用して行うときは、次の手順を実行します。
- デバイスのロックを解除するためのパスワード特性への書き込み
- デバイスを正しいモードにするためのモード特性への書き込み
- 通知を購読する (通知はすぐに機能し始めます)
RxAndroidBle を介して行う場合、.subscribe() のセットアップが十分に高速ではない可能性があると思われます。
setupNotification() を実行し、デバイスに通知の送信を開始するように指示する特性を書き込む方法はありますか?
これが私の現在のコードです:
rxBleClient = RxBleClient.create(this);
RxBleDevice device = rxBleClient.getBleDevice(mac_address);
device.establishConnection(false)
.flatMap(rxBleConnection -> rxBleConnection.writeCharacteristic(pword_uuid, pword)
.flatMap(ignored1 -> rxBleConnection.writeCharacteristic(mode_uuid, mode))
.flatMap(ignored2 -> rxBleConnection.setupNotification(log_uuid))
)
.flatMap(notificationObservable -> notificationObservable)
.subscribe(
bytes -> {
System.out.println(">>> data from device " + bytesToHex(bytes));
},
throwable -> {
System.out.println("error");
System.out.println(throwable);
});