Raspberry Serielle Schnittstelle

Gast #3478063
Lesenswert?

Hey Leute,
ich habe folgendes Problem:
Ich greife per Java mit einem FileWriter auf /dev/ttyAMA0 zu.
Nun rufe ich die .write() Methode auf und übergebe ihr z.B. 112, so 
funktioniert alles normal. Wenn ich nun 255 übergebe, kommen 2 Bytes an, 
nämlich 195 und 191. Hab es dann mit 127 und 128 probiert, also wenn in 
Java das Byte zu Ende geht. Und so ist es, bei 127 sendet er 1 Byte, bei 
128 wieder 2, nämlich 194 und 128.
Bevor ich den Raspberry neu installiert habe ging alles problemlos.. 
Verwendet wird Raspbian Wheezy.
Woran kann das liegen, was müsste ich da umstellen?
#3478077
Lesenswert?

Du solltest zB libRXTX oder die nativen com.sun.serial schnittstellen 
benutzen um solche probleme zu vermeiden. Unter C/C++ geht das öffnen 
von chardev userspace treibern zwar problemlos, unter java und anderen 
hochsprachen kann es jedoch aufgrund von zechenkodierung usw. zu 
unerwarteten problemen kommen.
Gast #3478410
Lesenswert?

Andi D. schrieb:
> Unter C/C++ geht das öffnen
> von chardev userspace treibern zwar problemlos, unter java und anderen
> hochsprachen kann es jedoch aufgrund von zechenkodierung usw. zu
> unerwarteten problemen kommen.

Kann man denn in Java Dateien nicht im Binary-Modus öffnen?
Gast #3478576
Lesenswert?

Hab in die Datei "Testÿ" geschrieben, ÿ ist das Zeichen für den Wert 
255.
So, ankommen tut: 84, 101, 115, 116, 195, 191
Dann scheint es wohl irgendwie ein der Schnittstelle zu hapern...
84 - 116 ist das Wort Test, hinten kommen wieder diese 2 Bytes an, 
anstatt 255..
Gast #3478863
Lesenswert?

Genau so sieht es aus.. ich frag mich aber warum er das jetzt so 
abspeichern :/ In der raspi-config hab ich als Zeichensatz de_DE UTF8 
genommen und damit hatte es bisher, so meine ich jedenfalls, immer 
geklappt. Was muss ich denn nun umstellen dass dort 255 gespeichert 
wird?
Gast #3478898
Lesenswert?

Passt doch eigentlich alles, du schreibst mit einem FileWrite auf die 
Schnittstelle und das System steht auf UTF8. Klar das er Dir die Zeichen 
dann auch in  Unicode codiert.

Wenn Du explizit 255 binär auf die Schnittstelle schreibst funktioniert 
das dann natürlich: "echo -e "\xFF" >> dev/ttyAMA0"

Dein Problem ist also nicht die Schnittstelle sondern die FileWrite 
Funktion die abhängig vom Zeichensatz schreibt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren