2017-03-07 16 views
0

私たちはBLEデバイスとそれと通信するモバイルアプリケーションの両方を構築しています。モバイルアプリはXamarin/C#で書かれています.Android固有のPCL(Portable Class Library)にはAndroidのものが含まれています。Bluetooth低エネルギー - 非常に遅いパケットを送信する

データを小さなチャンクに分割して、デフォルトの20バイトのBLEパケットサイズに収まるように、私は96バイトのデータブロックを1つ持っているので、6つの16バイトデータパケットとして送信します。私はそれを設定して、最初の5データブロックがWriteTypeをGattWriteType.NoResponseに設定して送信し、最後のデータブロックだけがWriteTypeをGattWriteType.Defaultに設定するようにしました。

最初の5つのデータブロックのそれぞれについて、SetValue()とWriteCharacteristic()を呼び出し、次のデータブロックを書き込む前にOnCharacteristicWrite()通知が来るのを待ちます。これを行うと、最初の5つのデータブロックを約20ミリ秒で書き込むことができます。しかし、6番目のブロック(Write_With_Response)は、WriteCharacteristic()と対応するOnCharacteristicWrite()通知の間に約300ミリ秒かかる。

これは予想される遅延ですか?それはひどく長いようです!

BLE書き込みを高速化するには、調整が必要な設定はありますか?

答えて

0

API 21以上をターゲットに設定している場合は、BluetoothGattでrequestConnectionPriorityを使用してより高い接続優先度を取得して、より速いスピードを得ることができます。

+0

このフラグを設定すると、全体のタイミングに影響を与えないか、送信の問題が発生します。私は驚くことではありません.BLEデバイスとタブレットの両方でBluetoothの会話が1つしかないので、優先順位を上げることは助けにならないようです... –

+0

私たちが使用するたびにスピードが上がったので、それは驚くべきことですそれ。私たちはいつもレスポンスを書いていますが、私たちはレスポンスを使わなかったときに問題に遭遇しました。 – Zomb

関連する問題