C# Schrittmotor ansteuern LPT / ControlPort.Output(0x378, 0xff);?

Steuerkarte - (Computer, Technik, Programm) Schrittmotor - (Computer, Technik, Programm)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

0x378, 0x379 und 0x37A sind die Adressen der ersten LPT-Schnittstelle bei Mainboards mit on-Board-LPT-Schnittstelle. (0x278, 0x279 und 0x29A sind die der zweiten LPT-Schnittstelle, 0x3BC, 0x3BD und 0x3BE die der dritten - falls es jemals Rechner mit drei LPT-Schnittstellen gab.)

Durch das Schreiben eines Wertes an Adresse 0x378 werden die entsprechenden Bits auf die Pins D0-D7 (also die Datenleitungen) gelegt. Adresse 0x379 dient zum Rücklesen der Statusleitungen (Papierende usw.); 0x37A zum Setzen der Steuerleitungen.

Der Befehl, den du angegeben hast, setzt also alle 8 Datenleitungen auf "1".

Ich gehe aufgrund des Methodennamens "ControlPort.Output" davon aus, dass du die DLL "inpout32.dll" verwendest. Diese DLL ruft einen Treiber ("inpout32.sys" (32-bit) oder "inpoutx64.sys" (64-bit)) auf, der dann auf den Port zugreift. (In neuen Windows-Versionen sind Port-Zugriffe nur über Treiber möglich.)

Hast du diesen Treiber installiert? Falls nein, passiert natürlich rein gar nichts!

Da ein anderer User in diesem Zusammenhang nach USB-zu-LPT-Adaptern gefragt hat:

  • Über Portadressen kann man prinzipiell nur Geräte ansteuern, die direkt an der CPU hängen. Das wären der on-Board-LPT-Port oder der USB-Hostcontroller aber eben keine USB-Geräte! Es kann daher keinen USB-zu-LPT-Adapter geben, der sich über Port 0x378 ansteuern lässt. Möglich wäre allerdings ein Austausch der Datei "inpout32.dll", so dass der Befehl "ControlPort.Output" auf den USB-Bus zugreift anstatt das zu machen, was er "eigentlich" tun sollte...
  • Die auf dem Markt befindlichen USB-zu-LPT-Wandler bieten in der Regel nicht die Möglichkeit, die Datenleitungen D0-D7 direkt anzusteuern. Daher kann man solche Adapter nicht zusammen mit solchen Platinen, wie du sie hast, verwenden.

Schau in einer geeigneten Referenz nach, was die zwei Parameter sind. Dann weisst du auch was die Werte bewirken.

Was möchtest Du wissen?