Forum: Mikrocontroller und Digitale Elektronik UART- Empfang zerstückelt?!


von Fred (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.