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.
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.
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..
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.
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();
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: