Die Community zu .NET und Classic VB.
Menü

Parallelportansteuerung unter VB

 von Julian Habigt

Nutzen 

Der Parallelport des Computers bietet die Möglichkeit, externe Geräte durch gezielte Stromimpulse anzusteuern. Wie, das erfahrt ihr in diesem Tutorial!

Viel Spass
Julian Habigt

Was ist der Parallelport?  

Aufgabe

Der Parallelport wird meistens auch als Druckerport bezeichnet, da an ihn in den Anfängen der Computer meist nur der Drucker angeschlossen wurde. Heutzutage wird er Dank seiner Flexibilität und einigermaßen aktzeptablen Geschwindigkeit, auch bei anderen Peripheriegeräten, wie z.B. Scannern, externen Massenspeichern, Netzwerken (oder auch anderer Datenübertragungen), verwendet.

Aufbau

Er besitzt 8 digitale Ausgänge und 5 digitale Eingänge. Die Signalpegel werden durch High- oder Lowzustände angegeben (5 und 0 Volt). Die Ausgänge sind mit max. 20 mA (je nach Gerätetyp) belastbar (bei grösseren Lasten müssen Leistungstransistoren oder Relais nachgeschaltet werden). Alle Ausgänge sind vollkommen unabhängig voneinander ansteuerbar.

Ansicht

Der Parallelport ist an der Computerseite meist mit einer 25 poligen Sub-D Buchsenleiste vertreten, an vielen Druckerkabeln befinden sich an deren Ende oft 36 polige Centronicstecker. Hier die Pinbelegung:


Abbildung 1: Vorderansicht

Pin Belegung
1 Strobe
2 Ausgang 0
3 Ausgang 1
4 Ausgang 2
5 Ausgang 3
6 Ausgang 4
7 Ausgang 5
8 Ausgang 6
9 Ausgang 7
10 .
11 Busy
12 Papiermangel
13 Bereit/Online
Pin Belegung
14 Automatische Papierzufuhr (Auto Feed)
15 Fehler/Error
16 Init
17 Slct in
18 Masse
19 Masse
20 Masse
21 Masse
22 Masse
23 Masse
24 Masse
25 Masse

Grundlagen der Parallelportprogrammierung unter VB  

Die InpOut32.dll

Wie für so viele Dinge gibt es auch für die Ansteuerung des Parallelportes unter VB keine Funktion. Während sich bei QBasic die Programme für den Parallelport mit dem Befehl OUT [Adr.], [Wert] sehr einfach und schnell realisieren ließen, sucht man diesen Befehl unter Visual-Basic vergeblich.

Eine Dll muss also wieder einmal dafür herhalten. Besonders gut geeignet zur Druckerportansteuerung aber auch zur Ansteuerung eines jeden anderen Ports ist die Datei "input32.dll" geeignet. Ich habe dazu schon einmal ein Modul vorbereitet, mit dem man einfach in seinem Hauptprogramm mit den Befehlen INP und OUT (wie unter QBasic) den Port ansteuern kann.

Deklaration

'inpout32.bas
'Inp und Out Deklarationen

Public Declare Function Inp Lib "inpout32.dll"Alias _
       "Inp32" (ByVal PortAddress As Integer) As Integer

Public Declare Sub Out Lib "inpout32.dll"Alias "Out32" _
       (ByVal PortAddress As Integer, ByVal Value As Integer)

Parallelport ansprechen

Die Adresse des Parallelports hat bei LTP1 den Hexadezimalwert h378. Der Wert gibt die Zustände der Datenleitungen an, so wird z.B. Datenleitung 0 mit dem Wert 1 angesteuert, Leitung 2 hat den Wert 4. Also immer 2^n (n=Datenleitung 0 - 7) . Um mehrere Datenleitungen anzusteuern kann man einfach die Werte addieren. Um alle auszuschalten ist es der Wert 0. Beim Einlesen funktioniert das ganze eigentlich ebenso, nur wird dazu der Befehl Wert = INP [Adr.] verwendet.

Parallelport-Adressen  

Stefan Maag hat sich mit den möglichen Adressen näher beschäftigt und eine Klasse zum einfacheren Handling und zur Überprüfung des Parallelports zur Verfügung gestellt.

Als Quellen dienten ihm:

Download Beispielprojekt und Anleitung 

Problemfall Windows 2000 / NT  

Für die Betriebssysteme Windows 2000 und Windows NT gibt es nun eine spezielle Version der "Inpout32.dll". Diese Dynamic Link Library wurde uns freundlicherweise zur Verfügung gestellt von http://www.logix4u.cjb.net/.

Beispiele zum Download finden sie hier:

Beispiel + inpout32.dll als Download [24277 Bytes]

Sourcecode inpout32.dll (C++) als Download [125737 Bytes]

Eine Beispielschaltung  

Wir haben nun schon einige Programme gesehen und kennen die Grundeigenschaften des Parallelports. Doch was bringen uns die tollsten Programme und Codes, wenn wir sie nicht ausprobieren und testen können? Deshalb nehmen wir uns in diesem Kapitel einige Schaltungen vor.

Zunächst wollen wir einmal eine sehr einfache Schaltung aufbauen, damit wir unsere Programme testen und damit auch schon kleinere Lasten betreiben können. Wie wir im oberen Kapitel gelesen haben, halten die Ausgänge des Parallelports eine maximale Strombelastbarkeit von 20 mA aus. Das reicht uns schon einmal um eine LED damit zu betreiben.

Dazu schliessen wir einfach einmal eine Leuchtdiode an den ersten Ausgang des Parallelports an. Wir haben oben aber gelesen, dass der Hi Pegel eines Ausgangs bei 5V liegt. Dies ist für eine normale Leuchtdiode mit einer Stromaufnahme von 20mA und einer Betriebsspannung von 2V zu viel. Also rechnen wir mit Hilfe des Ohm'schen Gesezes den Wert des Widerstands aus, den wir vor die LED schalten müssen damit diese nicht zerstört wird. Wir rechnen nun (wer des Ohmsche Gesetz nicht kann, der kann ja mal seine alten Physikbücher zu Hilfe ziehen oder den großen Bruder fragen ;-)):
3V (wegen 5V-2V=3V Unterschied) / 0,02 A = 150 Ohm
Die fertige Schaltung sieht demnach so aus:


Abbildung 2: Schaltschema

Der Befehl zum Ansteuern des Ports (im Beispiel die Dateinleitung 0) würde dann so aussehen:

'inpout32.bas
'&h378 ist die Hexadezimaladresse des Parallelports
'1 steht für Datenleitung 0

Out &H378, 1

Wem die 20mA des Ports nicht ausreichen, weil er z.B. einen größeren Motor betreiben will oder mit dem Laptop die Nachttischlampe steuern will, der kann Anstatt der LED auch ein Relais anschliessen (Strohmaufnahme des Relais beachten und eventuell eine Schutzdiode wegen der Rückspannungen vorsehen!!!).

Dass man mit dem Parallelport auch durchaus größerer Projekte realisieren kann, soll dieses Foto einer Schaltung, die ich einmal gebaut habe, zeigen.


Abbildung 3: Beispiel

Abschliessend bleibt nur noch zu sagen: Probiert einfach ein bisschen herum!

Weiteres Beispiel  

Ingo Schick hat sich ebenfalls mit dieser Thematik befasst und ein Projekt geschrieben.

Download Beispiel 

Weitere Informationsquellen  

Christof Rueß gibt auf seiner Homepage unter anderem eine Anleitung zur Ansteuerung eines LCD-Displays. Mit einigen Erläuterungen und Visual-Basic-Quellcode.

http://www.hobbyelektronik.org

Downloads  

Ein Programm bei dem man mit mehreren Checkboxen die Ausgänge des Ports steuern kann

Download Beispielprogramm 2 

Ein Programm das im 500 ms Takt die Eingänge des Parallelports abfragt

Download Beispielprogramm 2 


Download inpout32.dll ©by Jan Axelson 


Beschreibung dll ©by Jan Axelson 

Ihre Meinung  

Falls Sie Fragen zu diesem Tutorial haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.