Frage deutsch
~~~~~~~~~~~~~~~~
Wie steuere ich LEDs, Relais usw.über den Parallelport an?
Wie gebe ich elektrische Signale an den Druckerport aus?
 
 

Question English
~~~~~~~~~~~~~~~~
How to control LEDs, relays etc. via the parallel port?
 

Antwort 1
~~~~~~~~~~~~~~~~
[ von Skilltronic (
skillfinger*gmx.de ) im QB-Forum, 24.6.2004 ]
 
Die 8 Datenleitungen D0 - D7 stehen für die 8 Bit des ausgegebenen Wertes (Pin 2-9 des Drucker-Ports 888). Wenn Du die über die Zahlentasten von 1-8 steuern willst, dann z.B. so:
 
eingabe:
taste$ = INKEY$
IF taste$ = "" THEN GOTO eingabe
taste = ASC(taste$)
IF taste = 27 THEN END ' Abbruch mit ESC
bit = taste - 49
IF bit < 0 OR bit > 7 THEN GOTO eingabe
bitwert = 2 ^ bit
bytewert = bytewert XOR bitwert
OUT(888), bytewert
GOTO eingabe
 
So kannst Du jedes Bit einzeln an- und ausschalten. Das mit dem
bit = taste-49 funktioniert wie folgt: Der ASCII-Wert des Zeichens "1" ist 49, das von "2" ist 50 usw. Den Wert bekommt man mit taste=ASC(taste$). Davon dann eben 49 abgezogen ergibt die Zahlen von 0-7.
 
Für die Steuerleitungen (Strobe, Auto Feed, Init und Slkt In) gilt ein anderes Vorgehen, da diese bidirektional ausglegt sind. Das ist nichts schmutziges, sondern bedeutet nur, dass über sie sowohl Daten ausgegeben als auch eingelesen werden können. Im unbeschalteten Zustand werden sie intern durch einen 3,3k-Widerstand auf High gezogen. Sind sie allerdings über Leuchtdioden mit der Masse verbunden, sind sie auf Low.
 
Die 4 Steuerleitungen liegen im Steuerregister 890 auf den Bits:
Bit 0 - Strobe
Bit 1 - Auto Feed
Bit 2 - Init
Bit 3 - Slkt In
 
Die Bits 4-7 im selben Register stehen für was Anderes.
 
Wenn Du jetzt also mit INP(890) dieses Register abfragst, erhälst Du irgendeinen Wert, der von diesen unbestimmten oberen Bits und der Beschaltung der 4 Leitungen abhängt.
 
Erschwerend kommt noch dazu, dass die Signale Strobe, Auto Feed und SI sowohl bei der Ein- als auch der Ausgabe invertiert werden. Das kannst Du aber auch mit einer XOR-Verknüpfung kompensieren.
 
Die invertierten Leitungen liegen ja auf den Bits 0,1 und 3. Bei der Dezimalzahl 11 sind genau diese Bits gesetzt ( 1 + 2 + 8). wenn Du ein Bit über XOR mit einer 1 vrknüpfst, wird es ja sozusagen "umgedreht". Schreibst Du also OUT(890), ausgabewert XOR 11 ,
 
Ist das Problem erledigt. Übertragen auf das obige Beispiel, müssten sich so die 4 Leitungen mit den Tasten 1-4 an- und ausschalten lassen:
...
IF bit < 0 OR bit > 3 THEN GOTO eingabe
bitwert = 2 ^ bit
bytewert = bytewert XOR bitwert
OUT(890), bytewert XOR 11
...
 
Ich hoffe das funktioniert .
 
Übrigens hat sich Sebastian Steiner(
www.sebastian-steiner.de ) nach einem Plan von mir eine 24-Kanal Relaisplatine für den COM-Port gebaut. Wenn dir also mal die Leitungen ausgehen.
 
Und hier noch eine Warnung: Leuten mit nicht sehr ausgeprägten Kenntnisse im Bereich Elektrotechnik würde ich zum ersten Experimentieren den COM-Port empfehlen. Der ist nicht so leicht kaputtzumachen wie der Druckerport, bei dem eine Überspannung ausreicht, den ganzen Computer abzufackeln.
 
Weitere detaillierte Infos über die Ansteuerung externer Hardware über die Druckerschnittstelle erhältst Du auf folgenden Webseiten:
 
www.franksteinberg.de - Gute Seite zur Ansteuerung externer Hardware über Parall- und seriellen Port mit QBasic
www.skilltronics.de -meine eigene Webseite
www.icc-software.de/e_lptint.htm
www.woeste.org/intface.htm - Beschreibung eines einfachen Interfacesystems - von Klaus Schreiber vom Friedrich Leopold Woeste Gymnasium in Hemer mit einem Tutorial zur Ansteuerung das Parallel Ports über QBasic zur Verwendung
der Daten- und Steuerleitung als Hardware Ein-/Ausgänge
www.activevb.de - Gute Seite zu Visual Basic mit Tutorial zur Parallelport-Ansteuerung. Genaue Internetadresse des Parallport-Tutorials: www.activevb.de/tutorials/tut_parallel/parallel.html


[ The QBasic-MonsterFAQ --- Start Page: www.antonis.de/faq ]