Zurück zum Menü 5

5.3.1 Druckerport mit PureBasic steuern

Erste Fassung: Februar 2008




In dieser Kurzanleitung will ich einmal darstellen, wie man den Druckerport mit PureBasic steuern kann.

Wer einmal eine Demo oder gar eine Vollversion von PureBasic installiert hatte, der wird festgestellt haben, dass es für die Userports keine Eingabe- und Ausgabebefehle gibt.

Das sollte Dich aber nicht entmutigen oder gar ein falsches Bild der  sehr guten  Programmierprache erzeugen.

Also:  Wie steuert man denn nun den LPT-Port mit  diesem Basic richtig an ?

Wer sich ein wenig mit PCs beschäftigt hat, der wird sicherlich schon einmal von "DLLs" gehört haben, so genannten "Dynamic-Link-Libraries". Das sind quasi kleine Programme die von einem übergeordneten Programm aus gestartet und abgefragt werden können.

Es gibt im Internet eine DLL, die speziell für den Datenaustausch über die Userschnittstellen gemacht worden ist.  Leider ist die Erklärung dazu komplett auf Englisch und  es ist recht mühsam sich da durch zu "fummeln".

Deshalb habe ich dem Downloadpaket (weiter unten) auch eine Deutsche Textdatei beigelegt.
 
So. Wir brauchen also eine "DLL" und die DLL, die ich ausgesucht habe, macht es besonders einfach, damit umzugehen. Man kopiert sie einfach in das Verzeichnis, wo auch später die Programm-EXE gespeichert ist.

Am besten, du führst erstmal den Download durch und schaust in das Tutorial, dass ich dem Originalordner beigelegt habe:

Download (inpout32.dll_source-and-bins, ZIP 69 kB)

Das erklärt dann eigentlich schon alles, aber falls Du diesen Download jetzt nicht machen willst oder kannst, hier das Tutorial einmal als Quelltext herauskopiert:

Quelltext vom 10.02.2008:

; --- www.strippenstrolch.mischnick.orgErstellt am 10.02.2008 von Stephan Mischnick

; Hast Du die Datei "inpout32.dll" in das gleiche Verzeicnis kopiert, wo auch das
; Programmliegt ?

; WICHTIG:
; Hast Du im BIOS den Modus "normal" (EPP) für den LPT-Port eingestellt ? Oft scheitert
; die Ausgabe und das Einlesen an einem im BIOS falsch eingestellten LPT-Port.

; Hast Du im Windows-Gerätemanager nachgeschaut, welche Adresse Dein LPT-Ausgang hat ?

;(aufschreiben...)

; Rechne den HEX-Wert der LPT-Adresse in DEZ um: Verwende den WIN-Taschenrechner in der
; wissenschafltichen Ansicht dazu.
; Normalwert dann meist: 888 (DEZ), kann aber auch abweichen.

;Variable vorbereiten, schreibe hier den dezimalen Wert der LPT-Port-Adresse hin:

x = 888

; Variable für den Datenwert vorbereiten, er wird hier als Binärwert (%) eingegeben,
; man kann dann besser gucken, was man gemacht hat

y = %11001100

;Die DLL öffnen (Biblitothek "0", Name "dlport.dll"):

OpenLibrary(0,"inpout32.dll")

; Die Funktion innerhalb der DLL ansprechen. "Out32" muss auch genau so
; geschrieben werden, denn so heißt nunmal die benötigte Funktion innerhalb der DLL,
; um ein Byte zu schreiben. Nach dem Komma wird die Adresse des LPT-Anschlusses eingesetzt,
; nach dem letzten Komma steht der zu schreibende Wert:

CallFunction(0,"Out32",x,y)

; Die DLL schließen (Bibliothek "0"):

CloseLibrary(0)

; Programm beenden

End

;Wenn nun alles richtig eingetragen ist, kannst du den Wert %xxxxxxxx verändern und dann
; F5 drücken, um das Programm zu kompilieren und auszuführen. Wenn alles richtig gemacht wurde,
; stellt sich an der Testkarte genau das gleiche Bild ein, wie du mit dem Wert "%xxxxxxxx" angegeben
; hast.

; Lesefunktion der inpout32.dll ist:

; Wert = CallFunction(0,"Inp32",Adresse)

Download dieses Tutorials als PB-Quelltext (tutorial-1.pb, 2kB)

Den Schaltplan für eine passende LPT-Ausgabeeinheit mit LEDs findest du hier.

Ich benutze auf dem strippenstrolch.de stets den 2N2222 als allgemeinen Transistor. Aber auch jeder andere  NPN-Typ dürfte in der Schaltung funktionieren.



Dieses Teil kann ganz einfach mit einer 4,5 Volt Flachbatterie betrieben werden. Und kann somit auch am "guten PC-Arbeitsplatz", wo man vielleicht gerade kein Labornetzteil hat, als Testplatine beim Programmentwurf dienen.

Hier noch einmal meine Testplatine, die gerade mit dem  Wert  des Tutorials "gefüttert" wurde:

 

Weitergehende Hilfe gibt es hier:

http://www.purearea.net/pb/german/index.htm

Ich habe auch meinem Sohn Jan (14) ein wenig "Starthilfe" gegeben und der programmiert inzwischen besser als ich. Er hat sich eine eigene Homepage zum Thema PureBasic erstellt:

www.proggs4u.de.vu

Viel Erfolg,





Nach oben            Zurück zum Menü 5