www.mikrocontroller.net

Forum: PC-Programmierung Ausgangserweiterung für den COM-Port mit Java ansteuern


Autor: Jan H. (derbastelfreund)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Da das hier ist mein erster Beitrag im Forum ist, schlagt mir bitten 
nicht gleich alle den Kopf ein falls die Lösung hier schon X-Mal 
beschrieben wurde.
(Ich habe aber die Forensuche benutzt.)

Also, da Ich schon Erfahrungen im Bereich der Elektronik habe und ein 
wenig Java kann dachte Ich mir Ich steuere mal den Com Port an.
Für alle die jetzt denken Ich will wissen wie man den ansteuert:
Bitte weiterlesen!

Mein Problem ist jetzt, dass mir die drei Ausgänge nicht reichen.
Daher dachte Ich mir, ich Bastele mir eine Ausgangserweiterung wie auf 
http://www.skilltronics.de/versuch/elektronik_pc/4094.html nach.
Da dort nur ein Beispiel in Quick Basic ist, Ich aber mit Java darauf 
zugreifen will,ist nun meine Frage:
Wie kriege ich das geforderte Data Signal aus dem TXD Ausgang raus, ohne 
mit einer Baudrate von 9600 arbeiten zu müssen?

Helft mir bitte!!
Ansonsten muss ich mit primitiven Sprachen wie Quick Basic arbeiten :(
PS: An C/C++ bin ich weniger Interessiert.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird so (auch unter C/C++ und Basic) auf modernen Betriebssystemen 
(Win2k+) nicht ohne weiteres funktionieren.
Ich kann dir nur empfehlen da einen uC zu nutzen dem du dann einfach 
Befehle per Serielle Schnittstelle zusendest.
Dann kanst du z.B. die RXTX Lib verwenden.

> Wie kriege ich das geforderte Data Signal aus dem TXD Ausgang raus,
> ohne mit einer Baudrate von 9600 arbeiten zu müssen?
Mit der Baudrate hat das erstmal garnix zu tun ;)

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

Bewertung
0 lesenswert
nicht lesenswert
Zunächst mal ist die Lösung Pfusch, weil sie die serielle Schnittstelle 
auf eine nicht vorgesehene Art und Weise nutzt, was daran zu erkennen 
ist, daß dauerhaft definierte Signalpegel auf der TX-Leitung ausgegeben 
werden sollen.

Retten kann man die Situation aber trotzdem, indem zwei der Leitungen 
vertauscht werden, nämlich DTR und TxD.

TxD hat per Definition dauerhaften High-Pegel, wird das Byte 0xFF 
übertragen und ist die Schnittstelle auf keine Parität konfiguriert, 
lässt sich damit recht schön ein Rechtecksignal generieren, das als Takt 
vom Schieberegister ausgewertet werden kann:

-----+   +----------------------------+   +-------
     | S | 0  1  2  3  4  5  6  7  S  | S | 0  1  2 ...
     +---+                            +---+

Das Startbit erzeugt sowohl eine fallende als auch eine steigende 
Flanke, alle anderen Bits (8 Daten- und mindestens ein Stopbit) bleiben 
auf High-Pegel.

Die Dauer des Startbits ist eine Bitzeit und folglich direkt von der 
Baudrate abhängig.

Um diese Variante zu betreiben, muss jegliches Handshake deaktiviert 
werden (Hard- und Software, also auch kein XON/XOFF) und die 
Schnitstelle auf 8 Datenbits ohne Parität und beliebig viele Stopbits 
konfiguriert werden.


Je nach Aufbau der Schaltung (mit oder ohne Pegelkonverter) kommt es zu 
invertierten Pegeln.

Autor: Jan H. (derbastelfreund)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnellen Antworten echt super!!

@ Läubi ..
Deine Idee ist gut, aber könntest du mir bitte genauer erklären,
wie das mit dem uC geht??Ggf. mit Schaltplan?
Übrigens habe ich schon mal mit RXTX versucht zu arbeiten, aber Ich
bevorzuge die API von Sun, würde aber zur Not umsteigen.

@ Rufus t. Firefly
Deine Idee gefällt mir auch, nur das mit der Baudrate ist ärgerlich aber
noch akzeptabel.
Nur eine Sache verstehe Ich noch nicht ganz, muss der Takt nicht 
gleichmäßig
(gleichlange high;gleichlange low)sein?

Ich bin gespannt auf eure Antworten :)

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

Bewertung
0 lesenswert
nicht lesenswert
Jan H. schrieb:
> nur das mit der Baudrate ist ärgerlich aber noch akzeptabel.

Was ist das Problem? Eine serielle Schnittstelle hat nun mal eine 
Baudrate, das ist grundlegendes Prinzip.


> Nur eine Sache verstehe Ich noch nicht ganz, muss der Takt nicht
> gleichmäßig (gleichlange high;gleichlange low)sein

Warum sollte er das? Sieh Dir das Datenblatt des CD4094 an, wird da ein 
bestimmtes Puls/Pauseverhältnis (duty cycle) gefordert?
Entscheidend ist die steigende Flanke des CLK-Einganges, mehr nicht.

Autor: Jan H. (derbastelfreund)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit dem duty cicle habe Ich aus bem Datenblatt interpretiert, weil 
da nur gleichmäßige duty cicles waren, ist jetzt aber OK.
Mir stellt sich nun ein neues Problem.
Wie generiere Ich das Data und Strobe Signal?
Ich stellte mir das so vor:

Pin 1 High:

T:|____1____|____2____|____3____|____4____|____5____|____6____|____7____ 
|____8____|_... 
C:S01234567SS01234567SS01234567SS01234567SS01234567SS01234567SS01234567S 
S01234567SS0...
D:__H_I_G_H____L_O_W_____L_O_W_____L_O_W_____L_O_W_____L_O_W_____L_O_W__ 
__L_O_W___...
S:___L_O_W_____L_O_W_____L_O_W_____L_O_W_____L_O_W_____L_O_W_____L_O_W__ 
_H_I_G_H__...

T->Takt
C->Clock  mit TxD (in Java : ??)
D->Data   mit DTR (in Java : setDTR(boolean))
S->Strobe mit RTS (in Java : setRTS(boolean))

Ist diese Überlegung richtig oder muss Ich mir etwas anderes überlegen?

Freue mich wie immer auf Antworten ;)

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

Bewertung
0 lesenswert
nicht lesenswert
Jan H. schrieb:
> C->Clock  mit TxD (in Java : ??)

Schrieb ich doch: Senden eines Bytes mit dem Wert 0xFF.

Autor: Jan H. (derbastelfreund)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gut.
Danke Rufus!
Das war 'ne echt große Hilfe für mich.

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.