Forum: PC-Programmierung JAVA <> WinXP <> AVR


von Lukas R. (Gast)


Lesenswert?

Ich muss mich notgedrungen (Projekt) mit JAVA herumplagen und mit
mehreren ATmega48 im Multi-processor Communication Mode kommunizieren,
d.h. ich brauche 9 Bit und zuverlässige 115,5kBaud.
Ich habe aber Probleme, das serielle Interface zu benutzen.
http://rxtx.org/ oder was von Sun?
Gibt's irgendwo ein Beispiel?
Ohne Administratorrechte sollte das Ganze auch noch funktionieren.

von bone (Gast)


Lesenswert?

WinXP???
da bist du mir rxtx nich gut beraten.. suche nach der

"communications api"... google oder so...

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die in PCs verbaute serielle Schnittstelle (8250/16450/16550 etc.)
unterstützt keinen 9-Bit-Betrieb. Ebensowenig wird ein 9-Bit-Betrieb
von externen USB-Seriell-Adaptern unterstützt, auch kennt die übliche
Schnittstelle für serielle Schnittstellen der
Windows-Treiber-Architektur keine 9-Bit-Betriebsart, so daß die sich
nur mit spezieller Hardware (keine Ahnung, wer sowas herstellt) und
dazu passenden speziellen Treibern realisieren lässt. Die aber dürften
sich aus Java heraus vermutlich nur mit sehr ausführlichen Verrenkungen
überhaupt ansprechen lassen.

Ein 9-Bit-Betrieb lässt sich allerdings -sehr langsam- in Software
emulieren, in dem vor jedem einzelnen zu sendenden Byte von 8M1 zu 8S1
umgeschaltet wird; das so erzeugte Paritätsbit entspricht dem 9.
Datenbit.

Eine Datenrate von 115200 Baud ist damit mit an Wahrscheinlichkeit
grenzender Sicherheit nicht erreichbar.

von D. H. (slyd)


Lesenswert?

> WinXP???
> da bist du mir rxtx nich gut beraten.. suche nach der

Warum?

Funkt bei mir ohne Probleme und ist sehr einfach zu benutzten
(Kompatibel zur Sun Comm API! Und die wird ja nicht weiterentwickelt
soweit ich weiss).

von bone (Gast)


Lesenswert?

ok,

ich kannte die rxtx nur als linux-pendant der comm-api, die auf allem
ausser linux lief...

erst vor einem monat kamen neue comm-api versionen auf die sun-hp...
...weiss aber nicht, ob auch ne win-version dabei ist

@ Rufus:
>Die aber dürften
sich aus Java heraus vermutlich nur mit sehr ausführlichen
Verrenkungen
überhaupt ansprechen lassen.

mittels JNI ist es nichtmal all zu umständlich. allerdings bindet man
die java-applikation dann leider an die plattform..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Ob JNI oder was auch immer ist solange irrelevant, wie das grundlegende
Hardwareproblem nicht gelöst ist.

Das muss dann schon eine recht spezielle PCI-Seriell-Karte sein, bei
der die verbauten UARTs nicht zum 8250/16450/16550-Standard kompatibel
sein dürfen, sondern im Gegensatz dazu eine Hardwareunterstützung für
die hier geforderte 9-Bit-Betriebsart aufweisen.

Kennt wer sowas?

von Lukas R. (Gast)


Lesenswert?

Es könnte auch auf den 9Bit Modus verzichtet werden.
Aber Terminalprogramme, z.B. hterm, können 9Bit Frames versenden.
Wichtiger als 9Bit wären aber stabile 8Bit ohne Adminrechte

von Wolfram (Gast)


Lesenswert?

Auf dem PC mit standard serieller Schnittstelle sind deine 9Bit
DatenFrame nur mit 8Bit Daten + Paritätsbit machbar. D.h. du
manipulierst die Daten und den Paritätsmodus so das du die gewünschte
Bitabfolge erhältst. Eine Pufferung auf PC Seite wird da aber sehr
wahrscheinlich hinfällig. Das Problem ist eigentlich nicht das
Senden,sondern das Empfangen, da du hier mit Paritätsfehlern leben
musst und diese in Datenbytes zurückkonverieren darfst. Dürfte sehr
interessant sein, in wieweit eine abgehobene Sprache wie java dazu in
der Lage ist.
Der zugriff auf die serielle Schnittstelle ohne Adminrechte sollte kein
Problem darstellen, zumindest in anderen Programmiersprachen ist dies
keines.
Wenn du unbedingt deinen Multiprozessormod mit 9 Bit nutzen musst, was
hindert dich daran einen Mikrocontroller mit 2 Uarts per USB FTDI als
Umsetzer an den PC zu hängen. Da kannst du höhere Datenraten zum PC hin
verwenden (bis 3 MBaud). Da du das Programm schreibst, kannst du das
Protokoll zwischen PC und Umsetzer bestimmen und mit normalen 8Bit
kommunizieren. Auf der anderen UART des Mikrocontrollers kommunizierst
du mit den ATMega48 im 9Bit Modus. Lies dir aber bitte vor Benutzung
des Adapters auf der FTDI Seite den Abschnitt über Übertragungsraten
und Latenzzeiten durch.

von Lukas R. (Gast)


Lesenswert?

USB ist für das kleine Projekt überdimensioniert.
Ich habe einige Details geändert, sodass ich auch mit 8Bit und einem MC
auskomme.
Also wie verwende ich die serielle Schnittstelle mit Java unter XP?

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.