2016-05-15 4 views
0
konvertieren

Mein Android-Programm muss Int-Werte von Arduino Analogsensor über USB erhalten und drucken sie auf Echtzeit-Grafik, ich erhalte byte[] von Rückruffunktion.Unbekannte Eingangsbyte Länge in Int

i viele Möglichkeiten versucht, aus byte[] bespannen oder int zu konvertieren umfassen new Stringnew IntegerBigIntegerparseInt und einige Code-Methode, die ich in anderen Themen zu finden, aber ich nichts Arbeit erhalten nur die Hälfte der korrekten Werte, andere Werte zu viel Scheiß oder kleiner.

Die byte [] Länge von 1 bis 4 geändert, ihr ist einige leere Bytes, es so aussehen (log):

enter image description here

Wie ich es umwandeln kann Werte zu korrigieren? Wo ist das Problem?

In ideal brauche ich int Werte zwischen 230 bis 300 von Sensor.

Antwort

0

Arduino-Codesegment? Erraten schlecht: Int ist ein 16-Bit-Wert Byte ist 8 Bit. Int_8 ist -128 bis 127. Uint8_t 0-255 nicht von Java unterstützt, soweit ich weiß, aber Sie können den Char-Typ unsigned 16-Bit verwenden (müssen Sie es umwandeln).

1

Es scheint, dass Ihr Sensor Textprotokoll verwendet. Wenn ich Ihre Bytes in ASCII-Zeichen zu konvertieren, wird es sein:

.. 
10-LF 
50-2 
53-5 
56-8 
.. 
13-CR 
10-LF 
50-2 
53-5 
.. 
54-6 
13-CR 
10-LF 
etc. 

Interpretiert als

258 
256 

so, ich, was die beste Lösung ist, empfangenen Bytes als Zeichen zu sammeln und wenn CRLF reveived ist, lesen Sie ganze Zeichenfolge (mit abgestreiftem CRLF) als int - wahrscheinlich über parseInt.