私はカスタムPCBからブルートゥース経由で約10 kbpsのSPPデータを受信するXamarinアプリを手に入れようとしています。 PCBのBC127モジュールは255バイトの最大パケットサイズを送信できるので、アプリは〜25msごとにパケットを受信する必要があります。私はデータを分離するためにパケットを使用しているので、一度に1つずつ受信する必要があります。Xamarin AndroidでSPPスループットを向上させる方法は?
テストアプリケーションは常にデータを受信しようとしますが、受信メソッドの開始時に到着したときに、受信ストリームで2つ以上のパケットが待機していることがあります。私の質問は、私のブルートゥースの受信方法の巨大な遅延の原因は何ですか?私は以下の方法を付けました。 Bluetoothモジュールに接続した後、アプリはwhile(true)ループでこのメソッドを実行するだけです。
public byte[] ReadBluetoothPacket()
{
int bytesAvailable = 0;
while (bytesAvailable == 0) // Wait for packet to arrive
{
bytesAvailable = stream.BaseInputStream.Available(); // Find out how big the packet is
}
byte[] result = new byte[bytesAvailable];
_socket.InputStream.Read(result, 0, bytesAvailable); // Add the bytes to the buffer
return result;
}