Mam aplikację, która używa bluetooth do odbioru niektórych danych (bajtów) z innego urządzenia. wszystko idzie dobrze, ale mam mały problem z otrzymaniem wszystkich bajtów. Po otrzymaniu bajtów pokazuję je na toście, aby je przetestować. Kiedy drugie urządzenie wysyła razem 10 bajtów (na przykład: "ABCDEFGHIJ"), program pobiera tylko pierwszy bajt "A" i pokazuje go na toście, następnie przechodzi do drugiej iteracji i odczytuje pozostałe 9 bajtów i pokazuje " BCDEFGHIJ "na grzance. Tu jest mój kodu:Jak czytać wszystkie bajty razem przez Bluetooth?
byte[] buffer = new byte[1024]; // Read 1K character at a time.
int bytes = 0; // Number of bytes.
while(true)
{
try
{
// Read from the InputStream.
bytes = bInStream.read(buffer);
// Send the obtained bytes to the MainActivity.
mainActivityHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
}
catch(IOException e)
{
connectionLost();
break;
}
}
W główną działalność, mam:
// The Handler that gets information back from the BluetoothManager.
private final Handler handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch(msg.what)
{
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer.
String readMessage = new String(readBuf, 0, msg.arg1);
Toast.makeText(MainActivity.this, readMessage, Toast.LENGTH_SHORT).show();
break;
// ...
}
}
};
Jak mogę odbierać wszystkie bajty razem ?!
Mogę zobaczyć jak jesteś wysyłanie wiadomości? Czy robisz coś takiego jak bOutStream.write ("ABCDEFGHIJ" .getBytes()) lub czy wypisujesz znaki po jednym na raz? – broody
Moduł bluetooth jest podłączony do arduino, więc używam monitora szeregowego oprogramowania arduino do wysłania wiadomości. –