Bytes (Wertebereich 0-255) über BLE empfangen,lesen und speichern

Hallo zusammen.
Mein Android empfängt Daten über Bluetooth (Messwerte, Rohformat), bei dem Versuch diese korrekt zu lesen/speichern drehe ich mich leider im Kreis.

Code:
   byte[] readBuf = (byte[]) msg.obj;


                           int[] ret = new int[readBuf.length];
                            for (short i = 0; i < readBuf.length; i++)
                        {
                              ret[i] = (readBuf[i]&255);
                           }


                        String strIncom = new String(ret, 0, msg.arg1);                 // erstelle String aus Bytes Array
                            sb.append(strIncom);                                                // String anhängen
                            int endOfLineIndex;
                            String path = "sdcard/" + dateipfad.getText().toString() + ".txt";  //Environment.getExternalStorageDirectory().getPath()

                            while ((endOfLineIndex = sb.indexOf("|0|")) >= 0) {                  // wenn end-of-line,
                                String sbprint;                                                 // extrahiere String
                                sbprint = sb.substring(0, endOfLineIndex);
                                sb.delete(0, sb.length());                                      // und löschen

                                try {
                                    File myFile = new File(path);
                                    myFile.createNewFile();
                                    FileOutputStream fOut = new FileOutputStream(myFile, true);
                                    OutputStreamWriter myOutWriter =
                                            new OutputStreamWriter(fOut);
                                    myOutWriter.append(sbprint);
                                    myOutWriter.close();
                                    fOut.close();
Ich hab versucht jedes Element in meinem Input-stream mit 0&FF zu
erweitern... die untere Hälfte des Wertebereichs ist alles richtig, aber
statt einer 0x80 erhalte ich dann eine: c2 80,

für 0x81 eine c2 81, für 0x82 c2 82, usw.... Durch meine String-konvertierung läuft was falsch. Diese dient mir als Index um den Buffer richtig auszulesen.


Code:
           byte[] readBuf = (byte[]) msg.obj;

                                try {
                                    File myFile = new File(path);
                                    myFile.createNewFile();
                                    FileOutputStream fOut = new FileOutputStream(myFile, true);
                                  
                                    fOut.write(readBuf);
                                    fOut.close();

Speichert die Werte richtig, dh. ich bekomme 0xFF aber der Buffer wird willkürlich gelesen, da der Index fehlt.

Es gelingt mir aber nicht diesen ohne Stringkovertierung richtig auszulesen...

Mein Ansatz wäre..
Code:
for (int i = 0; i < readBuf.length - 2; i++) {
  if (readBuf[i] == '|' && readBuf[i+1] == '0' && readBuf[i+2] == '|') {
    endePos = i;
    break
  }
}

Weiß jemand wie das richtig geht. Ohne eine String-konvertierung den Bitstream richtig auszulesen? mir, als Java-Neuling,gehen die Ideen aus... Danke im Voraus.
 
Zuletzt bearbeitet:

buggy84

Bekanntes Mitglied
Bei BLE muss man die Specs vom Chip beachten. Hier geht es darum, dass man maximal in 20Byte Paketen schicken oder empfangen kann. geht es schneller, kann es durchaus sein, dass der BLE Controller einfach irgendwas abschneidet, und Du dann einen totalen Mist bekommst.
Zuerst musst Du also feststellen, ob die Bytes, die Du bekommst, auch die sind, die zu erwartest. Wenn nicht, dann kann der Fehler auch in der BLE Hardware liegen.
Ich benutze z.B. einen Chip, der alle 40ms 20Byte Pakete geschickt bekommen kann (Mobile -> Chip). In die andere Richtung kann ich deutlich mehr, da arbeitet der Controller die Daten in 20Byte Pakete um, der Puffer ist an dieser Stelle also deutlich größer.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Variable Anzahl von Bytes aus einer Datei lesen Android & Cross-Platform Mobile Apps 2
K Null-Pointer-Exception in ListView - wird über Datenbank gefüllt Android & Cross-Platform Mobile Apps 1
M Einfache Rechenoperation über TCP Server Android & Cross-Platform Mobile Apps 15
H Android Anklickbare Region über RadioButton zentrieren Android & Cross-Platform Mobile Apps 1
B Android TCP-Verbindung zum Server über welche Prozess auslagerung nutzen? Android & Cross-Platform Mobile Apps 1
S Android Absoluter Neuling: EditText zur Laufzeit verändern bzw. über Button Android & Cross-Platform Mobile Apps 2
L Android SQLite mit HSQLDB über Android synchronisieren Android & Cross-Platform Mobile Apps 13
Florum Android FTP Upload über Android Android & Cross-Platform Mobile Apps 15
T Musik über Bluetooth streamen Android & Cross-Platform Mobile Apps 2
B Android Mehrer Hexwerte über outputstream senden, und empfangen (Bluetoth) Android & Cross-Platform Mobile Apps 9
R W-Lan Problem über Sockets Android & Cross-Platform Mobile Apps 1
R Android App mit ausgeschaltetem Display über Volume-Tasten steuern Android & Cross-Platform Mobile Apps 0
A Android Login über Serveranbindung Android & Cross-Platform Mobile Apps 3
B Datei downloaden über DialogBox? Android & Cross-Platform Mobile Apps 4
T Android Druckauftrag über Mobiles Internet Android & Cross-Platform Mobile Apps 2
L Android Android über Java Code connecten? Android & Cross-Platform Mobile Apps 2
N Java ME Server-Client Verbindung über Wifi Android & Cross-Platform Mobile Apps 6
D Android JMS über Android Android & Cross-Platform Mobile Apps 4
S DTMF-Töne über MIDlet senden Android & Cross-Platform Mobile Apps 3
Kidao Wie schließt man ein Midlet über Tasten? Android & Cross-Platform Mobile Apps 3
G SMS über Handy SMS Interface versenden Android & Cross-Platform Mobile Apps 5
B RFCOMM über serielle Schnittstelle RS 232 MIDLET Android & Cross-Platform Mobile Apps 1
T Installation über WAP Android & Cross-Platform Mobile Apps 3
J Bücher über Java-Spiele-Programmierung Android & Cross-Platform Mobile Apps 3
B Kann man bei Nokia-Handy's über Java die IR ansteuern? Android & Cross-Platform Mobile Apps 6

Ähnliche Java Themen

Neue Themen


Oben