Paralel-port in C/C++?
lima-city → Forum → Programmiersprachen → C/C++ und D
adresse
ahnung
bedingung
bit
code
dank
entsprechende bit
high
http
normalfall
parallel port
projekt
setzen
ungleich null
url
wert code
windows
zugreifen
zugriff
zustand
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo mkalte666,
für das direkte ansteuern der parallelen Schnittstellen musst Du Dir eine extra Dll besorgen:
Das Original für Win 98/2000/NT/XP:
http://logix4u.net/parallel-port/16-inpout32dll-for-windows-982000ntxp
Portierung für Win7 (x86/x64):
http://www.highrez.co.uk/Downloads/InpOut32/default.htm
Um die Sachen zu benutzen, musst Du je nach verwendeten System und ob Du 32- oder 64-Bit programmierst entweder die inpout32.lib oder die inpoutx64.lib zu Deinem Projekt hinzufügen (verlinken).
Den Header inpout32.h musst Du Dir auch ins Projekt kopieren und in die Quelldatein inkludieren.
Wenn Dein Parallelport onboard ist, dann sollte die Hardware-Adresse für LPT1 0x378 sein.
Lesen kannst Du dann mit
und schreiben mitshort int val = Inp32(0x378);
Wichtig ist, dass Du die Dll (inpout32.dll bzw. inpoutx64.dll) in das Verzeichnis mit der Exe kopierst, damit sie vom Programm geladen werden kann.Out32(0x378, wert);
Beitrag zuletzt geändert: 12.2.2012 16:32:55 von darkpandemic -
Danke!!!
Das is das, was mir google nicht geben wollte... THX
Aber wie setze /lese ich die einzelnen Anschlüsse?
Ich hab leider Keine Ahnung von der Programmierung von ausgängen...
LG
mkalte666
Beitrag zuletzt geändert: 14.2.2012 18:28:37 von mkalte666 -
Hallo mkalte666,
mit dem von mir angegebenen Codezeilen kannst Du im Normalfall die Datenpins lesen und schreiben. Die Datenpins sind die Pins 2 bis 9 bei einem 25-poligen Anschluss. Ob ein Pin auf High oder Low gesetzt wird, wird durch den Zustand des zugehörigen Bits im übergebenen Short Integer festgelegt.
Wenn Du willst, dann kannst Du folgende Defines verwenden:
#define PIN1 1 #define PIN2 2 #define PIN3 4 #define PIN4 8 #define PIN5 16 #define PIN6 32 #define PIN7 64 #define PIN8 128
Wenn Du dann z.B. Pin 1 und 3 auf High setzen willst, dann kannst Du die Makros per Oder '|' verknüpfen. Das sieht dann so aus:
Wenn Du überprüfen willst, ob bestimmte Pins von außen gesetzt sind, dann funktioniert das mit Hilfe der bitweisen Und-Verknüpfung '&'. Wenn das entsprechende Bit gesetzt ist, dann ist die Bedingung im if ungleich Null und folglich Wahr. Ansonsten ist sie Null, also falsch:Out32(0x378, PIN1 | PIN3);
Desweiteren kannst Du mit der Adresse 0x379 (=0x378+1) auf die Status-Pins zugreifen (nur lesen / Pins 10, 11, 12, 13 und 15). Mit der Adresse 0x37a (=0x378+2) hast Du Zugriff auf die Control-Pins (nur schreiben / Pins 1, 14, 16, 17).short int pins = Inp32(0x378); if(pins & PIN1) printf("Pin 1 ist High"); if(pins & PIN6) printf("Pin 6 ist High");
Auf der folgende Seite gibt es dazu auch schöne Bildchen. Wenn Du Englisch kannst, dann ist der Text vielleich auch ganz interessant:
http://www.logix4u.net/parallel-port/15-a-tutorial-on-parallel-port-interfacing -
Danke!!!
Ich mach mich dann mal an das Programmieren!!!
Hast mir sehr geholfen, danke.
LG,
mkalte666 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage