2016-10-07 10 views
1

私はカスタム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; 
    } 

答えて

1

私の問題は、Android OSが受信スレッドを保持していたバックグラウンドタスクを実行していたためだと思います。断続的な問題だけであることが判明したので、複数のパケットを一度に処理するようにデータ受信機を書き直して解決しました。

関連する問題