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.
WinXP??? da bist du mir rxtx nich gut beraten.. suche nach der "communications api"... google oder so...
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.
> 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).
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..
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?
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.