Witam!
Piszę aplikację która ma za zadanie sterować urządzeniem za pomocą bluetooth oraz odbierać dane i prezentować je na wykresie w czasie rzeczywistym. Wysyłanie i prezentowanie na wykresie mam za sobą natomiast potrzebuję pomocy z odbieraniem danych.
Dane przychodzą w takiej formie :
'<' Ch1 Ch2 seq crc '>'
Ch1,Ch2 - uint16
seq, crc, uint8
Całość ma 8 bajtów
Po odebraniu muszę Ch1, Ch2(opcjonalnie) "spakować" do inta i wyświetlić na wykresie.
Tutaj fragment klasy:
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
tmpIn = mmSocket.getInputStream();
tmpOut = mmSocket.getOutputStream();
} catch (IOException e) {
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
byte [] buffer = new byte[8];
while (true) {
try {
/*
if(mInStream.read()=='<'){
mInStream.read(buffer,0,8);
data = ((int) buffer[1] << 8) | ((int) buffer[2] & 0xFF);
}
*/
mmInStream.read(buffer, 0, 8);
data = ((int) buffer[1] << 8) | ((int) buffer[2] & 0xFF);
}catch (IOException e) {
Log.e(TAG, "connection lost", e);
break;
}
}
}
Próbowałem na kilka i niestety dane były nie prawidłowe. Z góry dziękuje za pomoc :)