hä?

So ich glaube wir haben ein problem!
Darum erst einmal ein kleiner Basiskurs zum Druckerport.

Die parallele Schnittstelle belegt insgesammt drei mal 8-bit-Adressen.
Zuerst die Basisadresse in unserem Fall -> 0x378 dann folgen die 0x379 und 0x37A.

Wobei die Adressen zu folgenden Registern führen:

Data-Register: 0x378
Status-Register: 0x379
Controll-Register: 0x37A

So schon alleine mit diesen Hintergrund informationen kann man doch schon an deinem Quellcode erkennen daß................

int Steuerregister;
Steuerregister = inp(LPT1+0x2);
//Lesen des Steuerregisters

<== Hier wird die adresse 0x378 um 0x2 erhöht und somit erhalten wird die adresse 0x37A. Nun befinden wir uns im Steuerregister (Controllregister) und fragen den aktuellen Status ab. Befehl OK!

Steuerregister = (Steuerregister|0x01);
//STROBE auf High setzen ( Daten den LPT1 ausgeben lassen )
<== Hier wird irgendwas mit dem Ausgelesenen Wert des STeuerregisters gemacht keine ahnung was!

outp(LPT1+0x2,Steuerregister);
//Schreiben des Modifizierten Steuerregisters
<== Hier wird versucht auf das Steuerregister zu schreiben. Ich weiß jetzt auch nicht so genau ob das Status Register Bidirektional Arbeitet oder nicht! D.H. es kann sein es können daten nur gelesen werden.

Da ich aber noch nie etwas mit den "normalen" outp bzw. inp funktionen zu tun hatte, weiß ich aber auch nicht so genau wie diese arbeiten. Nachschauen ist gerade schwer, weil ich erst meinen PC platt gemacht habe.

Bei der von mir verwendeten inpout32.dll von dem oben genannten link musste ich im aber um Daten am Dataregister auszugeben folgenden befehl verwenden.

outp32(0x378, 0xFF)

^ ^ ^
| | |
| | Hier wird das Data-Register (D0-D7) auf 1 gesetzt!
| Angabe der Druckerport Adresse des Daten-Registers
outp32 befehl

Ich weiß ja nicht aber vielleicht ist der aufbau des "normalen" outp befehls ja genau so wie beim outp32.

Naja ich weiß ja nicht ob das gerade weitergeholfen hat.
gruß Marc