0

AndroidスマートフォンとPICマイクロコントローラーの間で簡単なデータを転送しようとしています。このコードを使用して送信すると、すべてが機能します。

try { 
    mBluetoothOut.write(new byte[] { 
            StartByte,                  // Start byte
            //(byte)(x1Distance & 0xFF),            // x1 -> LSB
            //(byte)((x1Distance >> 8) & 0xFF), // x1 -> MSB
            (byte)(y1Distance & 0xFF),          // y1 -> LSB
            (byte)((y1Distance >> 8) & 0xFF),   // y1 -> MSB
            (pad1.isYNegative()) ? (byte)1 : (byte)0,
            //(byte)(x2Distance & 0xFF),            // x2 -> LSB
            //(byte)((x2Distance >> 8) & 0xFF), // x2 -> MSB
            (byte)(y2Distance & 0xFF),          // y2 -> LSB
            (byte)((y2Distance >> 8) & 0xFF),   // y2 -> MSB
            (pad2.isYNegative()) ? (byte)1 : (byte)0,
            (byte)(servo1Angle & 0xFF),     // servo 1 -> LSB
            (byte)(servo2Angle & 0xFF)          // servo 2 -> LSB
    });
 } catch (IOException e) { 
    e.printStackTrace(); 
 }

問題は、Androidデバイスがデータを送信する速度が速すぎて、マイクロコントローラーが混乱することです。送信される各バイトの間に約2〜3ミリ秒の遅延を設定する方法はありますか?または、バイトごとに送信しpostExecute()、ハンドラーなどでを使用する必要がありますか?

ありがとうございました

4

1 に答える 1

0

SPP のような標準の Bluetooth プロファイルを使用してデータを送信していると仮定すると、受信側では、必要な速度で受信できるはずです (一度に 1 バイトずつ、遅延の後に次のバイト)。Bluetooth は内部的にバッファリングするか、フロー制御を適用します。速すぎる場合に送信者を停止します。適切な Bluetooth スタックを使用している場合、データがどのように台無しになるかわかりません

于 2013-02-15T00:55:20.203 に答える