www.mikrocontroller.net

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


Autor: Lukas R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
WinXP???
da bist du mir rxtx nich gut beraten.. suche nach der

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: D. H. (slyd)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lukas R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Wolfram (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lukas R. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.