2016-08-29 18 views
0

私は現在、Bluetooth Low Energyを使用してBLEデバイスと通信するアプリケーションを開発しています。問題は、プロジェクトが作業のために高いデータの連続交換を必要としていることです。BLE、同じデバイスからの書き込みと読み取り、スループットと時間の損失なし

現在、私は同じBluetoothGatt機能と同じデータ配列を共有する4つのフラグメントを開発しました。私は、BLEデバイスに接続するとき、私は接続の優先順位を高く設定し、次にデータを書き込みループを開始、通常わずか4バイト、50 mlsごとに書き込みます。

同時に私は読書を開始し、自分のインターフェースを更新します。 私は書き込みを停止すると50mlごとにデータパケットを受け取るが、書き込みループが読み取り時間を50mlから100に増やすようにすると気づいた。 これは本当に大きな問題ではありませんが、すべてのシステムのパフォーマンスを低下させます。

私は解決策を探していましたが、すでに多くの助けをしていた接続優先度を除いて、何も見つかりませんでした。誰かがこのような問題を管理していないかどうか、ありがとう

+0

「特性」に「書込み」と「読取り」を使用するのは、データ転送を確認するために複数の無線信号交換が必要なため、何らかの形で重い作業です**。データを頻繁に送信する必要がある場合や、大量のデータを送信する必要がある場合は、**特性通知システムを使用する必要があります。非常に時折の交換のために読み書きするのではなく、データを転送することを意図しています。温度計のビーコンを:手動で読み取るのではなく温度の変化を通知したいと思うでしょうが、F°とC°の間で切り替える特性に書きたいとします。それでおしまい ! – Mackovich

+0

ドキュメントを探した後、使用する方法は次のとおりです:[BluetoothGattServer#notifyCharacteristicChanged](https://developer.android.com/reference/android/bluetooth/BluetoothGattServer.html) – Mackovich

+0

あなたは、 Characteristic値を設定し、値を設定する代わりに変更を通知し、書き込みを呼び出しますか?申し訳ありませんが私はちょうど誤解したくない、あなたの助けをありがとう! –

答えて

1

あなたが使用しているデバイスには、「接続間隔」と呼ばれるものがあります。デバイスのファームウェアに設定されます。最小値は7.5msですが、通常は30ms以上に設定されています(iOSは20〜30ms以下の間隔でも機能しません。

したがって、BLEデバイスのファームウェアを設計するとき、接続間隔は安全でほとんどのモバイルデバイスで動作するいくつかの値に設定され、バッテリを節約するためにも非常に重要です。

Alこれは、接続間隔ごとに1回、読み取り、書き込み、または通知があった場合は、デバイスとの間で転送できないことを意味します。

一部のデバイスでは、接続間隔を変更できる設定がありますが、何が起こったのかを知りたければ、それはそれです。

+0

私はこのコンセプトを理解しています。私はすでに私のAndroidデバイスの接続の間隔の設定 "接続の優先度を高め"を減らしました。私はちょうど私が読んで同時に書くときに接続間隔の時間が増えるのを避ける方法を知りたいのです –

+0

これはあなたのAndroidデバイスでやったことですが、ファームウェアはまだそれ自身の価値があります。とにかく、価値のあるものはなく、この場合にはインターバル時間が長くなるのを避けることはできません。 1回の接続間隔で読み書きができます。書き込みを開始すると、次の空いている時間帯(接続間隔)に読み込みが延期され、その逆もあります。 –

+0

@ L.Gangemi私は好奇心が強いです、どのようにして優先順位を高く設定しましたか?興味ある ! – Mackovich

関連する問題