4

カスタムメイドのハードウェアからデータを送受信するAndroid Bluetoothプロジェクトに取り組んでいます。SDK のBluetooth チャット サンプルを基礎として使用しました。

クライアント(Androidフォン)でボーレートを変更する方法はなく、ボーレートはハードウェアに依存することに気付きました。ハードウェアでさまざまなボーレートを設定しようとしましたが、どれも期待どおりではありませんでした。

私が得ることができる最速は91Kbpsです(ボーレートが2.7Mbps〜910Kbpsに設定されている場合)。最小ボーレート (115Kbps) を使用すると、43Kbps になります。別の電話を使用してみましたが、同じです。毎秒 170KB のデータをハードウェアに転送する必要があります。


仕様
プロトコル: 同期または生成されたデータは、最大 520 バイト サイズのパッケージを使用してハードウェアに送信されます。各パッケージが受信および承認されると、ハードウェアは検証コマンドを送信し、電話機は次のデータ パッケージを送信します。
クライアント: Android 2.3.3、Samsung galaxy w i8150、Bluetooth v3.0、RFCOMM
ハードウェア: カスタム、Bluetooth v2.1 BlueGiga WT11i


私は完全に混乱しています..おそらく、電話のAndroidまたはBluetoothデバイスによって引き起こされた問題でしょうか? 最大ボーレートはいくつですか?送信を高速化する方法はありますか (最大パッケージ サイズを増やす、ハードウェア検証コマンドを待たずにすべてのパッケージを送信するなど)。


編集
パッケージ サイズを 4160 バイトに変更した後、スループットは 254Kbps に増加しました。1.5Mbps に到達するための最適なパッケージ サイズを見つけようとしています。提案をいただければ幸いです

4

1 に答える 1

5

まず、Bluetooth RFCOMM / シリアル ポート プロトコルのボー レートを変更しても違いはありません。実際のシリアル ポートではなく単なるエミュレーションであるためです。(特定のメーカーはそれで何か特別なことをすることができますが、Bluetoothは一般的に、またはAndroidはエアビットレートを制御するためにパラメータを使用しません)

SPP経由のデータ レートに影響を与える要因は、パケットのサイズ、 Bluetooth 経由で取得できる実際の最大データ レート、受信側の読み取り速度、および送信側の送信頻度です。パケット サイズについては、内部ドキュメントを参照するか、さまざまなサイズを試して、アプリケーションに最適な数に達することができます。また、ストリームが連続してデータを送信し、同様に連続して読み取ることができるようになるまで、複数のパケット(またはすべて)を送信することをお勧めします。

ここでの主な問題は、Bluetooth で達成できる実用的なスループットのようです。質問で述べたように非EDRバージョンを使用している場合、非常に低いレベルでの理論上の速度は720Kbpsであり、プロトコルとアプリケーションのオーバーヘッドとRFCOMMプロトコルのオーバーヘッドを追加すると、最大で約450-500 Kbpsになる可能性があります。

+ EDR、つまりBluetooth バージョン 2.0 以上 + EDR の両方のデバイスにアクセスできる場合、1.2 から 1.5 Mbps のオーダーでアプリケーションのスループットを期待できます(理論の無線ビット レートは 2.0 または 3.0 Mbps です)。

于 2013-01-26T17:16:44.260 に答える