Hallo zusamen
Ich steh mal wieder auf dem Schlauch in einem kleinen privat Projekt. Ich habe ein USB-Modul, schicke an diesen einen Befehl und erhalte über einen virtuellen COM Port das Ergebnis zurück.
Das Modul schickt 3 Bytes. Ein High-Byte, ein Low-Byte und die Prüfsumme. Das packe ich in ein Byte-Array[], wandle es dann nach hex, setze High- und Low-Byte zusammen und muss es noch mit 2 multiplizeren.
Jetzt ist mir aber aufgefallen das diese Werte gar nicht stimmen ???:L
Nach der Kontrolle, musste ich feststellen das die Prüfsumme die ich probehalber auch ausgebe nicht mit dem High- und Low-Byte übereinstimmt. Leider habe ich noch nie zuvor etwas mit Hex-Umwandlungen zu tun gehabt. Kann mir vielleicht jemand von euch sagen an was dies liegen könnte?
Hier ein Beispiel:
High-Byte: 02
Low-Byte: 09
Prüfsumme angezeigt :0a
Gruss und danke zum voraus
Ich steh mal wieder auf dem Schlauch in einem kleinen privat Projekt. Ich habe ein USB-Modul, schicke an diesen einen Befehl und erhalte über einen virtuellen COM Port das Ergebnis zurück.
Das Modul schickt 3 Bytes. Ein High-Byte, ein Low-Byte und die Prüfsumme. Das packe ich in ein Byte-Array[], wandle es dann nach hex, setze High- und Low-Byte zusammen und muss es noch mit 2 multiplizeren.
Jetzt ist mir aber aufgefallen das diese Werte gar nicht stimmen ???:L
Nach der Kontrolle, musste ich feststellen das die Prüfsumme die ich probehalber auch ausgebe nicht mit dem High- und Low-Byte übereinstimmt. Leider habe ich noch nie zuvor etwas mit Hex-Umwandlungen zu tun gehabt. Kann mir vielleicht jemand von euch sagen an was dies liegen könnte?
Hier ein Beispiel:
High-Byte: 02
Low-Byte: 09
Prüfsumme angezeigt :0a
Gruss und danke zum voraus
Code:
class InCom extends Thread {
public void run() {
try {
if(in12.available() > 2){
byte[] ReaderArray = new byte[3];
while (in12.available() > 0){
int numBytes = in12.read(ReaderArray); //in12 ist der InputStream
}
StringBuilder low = new StringBuilder(ReaderArray.length * 2);
StringBuilder high = new StringBuilder(ReaderArray.length * 2);
low.append(( "00" + Integer.toHexString(0xff & ReaderArray[0])).substring(1, 3));
low.append(( "00" + Integer.toHexString(0xff & ReaderArray[1])).substring(1, 3));
high.append(("00" + Integer.toHexString(0xff & ReaderArray[1])).substring(1, 3));
int ch1 = Integer.parseInt(low.toString(),16) * 2;
System.out.println(ch1);
//zum prüfen ausgeben des ganzen Arrays in hex
StringBuilder temp = new StringBuilder(ReaderArray.length * 2);
for(int x = 0 ; x < ReaderArray.length ; x++){
temp.append(( "00" + Integer.toHexString(0xff & ReaderArray[x])).substring(1, 3));
}
System.out.println(temp);
System.out.println(high);
}
}
catch (IOException e) { System.out.println("Fehler: "+e); }
}
}