Kłaniam się nisko i witam wszystkich forumowiczów jako nowy użytkownik (od 5 minut) tego forum :-)
Do sedna.
Zacznę od tego, że implementuję komunikację zgodnie z tym:
https://developer.android.com/guide/topics/connectivity/bluetooth#java
Mam problem z tym w jakiej formie podawać dane do "wypychania" z urządzenia nadającego oraz jakich mechanizmów używać po odebraniu bajtów, aby dane nie były w formie "krzaczków" czyli totalnie niezrozumiałe.
Urządzenie nr 1 używa tej funkcji:
public void write(byte[] bytes) {
try {
mmOutStream.write(bytes);
} catch (IOException e) {}
}
natomiast urządzenie nr 2 odbiera bajty stąd:
public void run() {
mmBuffer = new byte[1024];
int numBytes; // bytes returned from read()
// Keep listening to the InputStream until an exception occurs.
while (true) {
try {
// Read from the InputStream.
numBytes = mmInStream.read(mmBuffer);
String str = new String(mmBuffer,0,numBytes,"UTF-8");
Log.d("BLUTU", "Odczytałem coś nawet: "+str);
} catch (IOException e) {
break;
}
}
}
Teraz tak: Chcę wysłać z urządzenia nr 1 dajmy na to takie cztery bajty danych:
0xFF oraz 0x01.
Funkcja do wysyłki przyjmuje tablicę bajtów więc muszę tak:
byte[] ciagbajtow= {
(byte) 0xFF;
(byte) 0x01;
};
a później wywołać funkcję:
write(ciagbajtow);
Po wysłaniu czegoś takiego po stronie odbiornika dostaję takie coś, czyli "krzaki" o których mówiłem(załącznik).
Zastanawiam się, czy dobrze formuję tablicę bajtów danych wpisując wartości heksadecymalne do niej.