Hi, ich habe ein kleines problem, ich versuche eine einfache Kommunikation zwischen einem ARM-Board und den PC herzustellen. Auf dem PC läuft ein java thread (java.comm). Wenn ich etwas vom Board zum PC sende und es mir über Hyperterminal ausgeben lasse, ist alles korrekt empfangen worden. Wenn ich es über den java thread empfange und über console ausgebe, wird jedes Zeichen (so denke ich) in 20er päckchen zerhackt. z.b. hallo-> hxxxxxxxxxxxxxxxxxxxaxxxxxxxxxxxxxxxxxxxlxxxxxxxxxxxxxxxxxxxl xxxxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxx wobei das x ein kästchen ist, also das symbol eines kästchen(ascii?!). Baudrate, stoppbits ,parity_none, ist beim sender und empfänge gleich. Habt ihr eine Idee, woran es liegen kann? Java code liegt im Anhang.
Für mich als Laie sieht das... byte[] readBuffer = new byte[20]; try { while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer); } System.out.print(new String(readBuffer)); } catch (IOException e) { ... so aus, als ob numBytes nicht beachtet wird und kein "Stringende" im readBuffer gesetzt wird. new String(readBuffer) erzeugt deshalb einen String für den kompletten 20 Byte grossen readBuffer. Du hast Glück, dass du in JAVA programmierst. In C hättest du einen sauberen Bufferoverflow produziert, die new String(readBuffer) analoge Anweisung könnte im Extremfall versuchen den kompletten Speicher zu kopieren (in der Praxis wird ein zufälliges Nullbyte das verhindern)!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.