Ausgangserweiterung für den COM-Port mit Java ansteuern

OP #1702296
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.
Persönliche Seite #1702595
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 ;)
Persönliche Seite #1702743
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:
1
-----+   +----------------------------+   +-------
2
     | S | 0  1  2  3  4  5  6  7  S  | S | 0  1  2 ...
3
     +---+                            +---+

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.
OP #1703036
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 :)
Persönliche Seite #1703088
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.
OP #1703438
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 ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.