Forum: PC-Programmierung Parallelport ansprechen


von Sharping (Gast)


Lesenswert?

Hallo zusammen!
Ich versuche gerade von C# aus den Parallel-Port meines Rechners 
anzusprechen (ich weiß, oldschool). Allerdings tut sich da garnichts :-(

Folgende Situation ist gegeben:
- Ich ahbe einen Rechner mit Wind7 x64
- Am Mainboard befindet sich ein nativer LPT-Port
- Dieser wird von Windows erkannt und mit der "normalen" Adresse (0x378) 
versehen
- Ich habe die "InpOutx64 DLL" installiert 
(http://www.highrez.co.uk/Downloads/InpOut32/default.htm)
- Nun starte ich das dazugehörige Demo-Programm. Dieses wirft keine 
Fehler und behauptet vom Port lesen und auf diesen schreiben zu können

Allerdings messe ich immer nur 4,3V an allen Ausgangspins, egal was ich 
auf den Port schreibe (z.B. 0 oder 255). Auch beim Lesen tut sich 
nichts: ich kann belibige Pins auf Masse ziehen, aber es wird immer eine 
255 gelesen.

Messen tue ich übrigens zwischen den Pins 2 (Databit 0?) und 25 
(Masse?).

Hat Jemand eine Idee woran das liegen könnte?
Gruß,
Sharping

von Dietmar (Gast)


Lesenswert?

Wie ist dein Port denn im Bios eingestellt?
Dort gibt es verschiedene Möglichkeiten die auch unterschiedliche 
externe Beschaltungen erfordern! Auch der Zugriff auf die Register ist 
anders!

Gruß Dietmar

von Sharping (Gast)


Lesenswert?

Hm, der steht auf PS2 (IBM...). Allerdings gibt es noch 1 Million 
weitere Möglichkeiten. Hättest du einen Tipp welche die richtige ist?
So, dass ich dann einfach die Bits setzen/lesen kann?

Danke!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sharping schrieb:
> Hm, der steht auf PS2 (IBM...).

Der Parallelport? Üblich ist die Auswahl zwischen "ECP", "EPP" oder 
"Standard". Das sind drei Möglichkeiten, nicht eine Million.

von Joerg (Gast)


Lesenswert?

Schalt mal in den Diensten den Windows Print Spooler ab, eventuell hat 
der da auch noch die Finger drauf.

von Sharping (Gast)


Lesenswert?

@Rufus:
Standard gibt es nicht - bei mir sind das:
 - diasbled
 - AT
 - PS/2
 - EPP
 - EPC no dma
 - EPC dma 1
 - EPC dma 3
Mittlerweile habe ich aber alle durchprobiert, das Verhalten ist immer 
das gleiche (nämlich keins).

@Joerg:
Wie genau schalte ich diesen Dienst ab? Da kenn ich mich leider nicht so 
aus...

von Joerg (Gast)


Lesenswert?

Sorry, hab gerade kein Windows 7 vor mir, aber der normale Weg ist via 
Systemsteuerung, dort dann kleine oder große Symbole als Anzeige 
auswählen, dann erweitert sich die kastrierte Icon Auswahl zu dem was 
man noch aus XP kennt. Dort taucht dann auch ein Icon "Verwaltung" auf, 
da drin kann man dann die Dienste verwalten. In der Diensteliste (auch 
da hat Bill G. umbenannt) nach dem Spooler Dienst suchen,  der taucht 
unter XP als "Druckwarteschlange" auf, ob er unter 7 noch genau so 
heisst kann ich jetzt leider nicht runterbeten. So oft wurstel ich unter 
7 nicht in den Diensten rum. Da kannst du den Dienst starten, stoppen 
oder deaktivieren. Aber: bei gestopptem Spooler geht kein Drucker 
mehr!!!

Testweise kannst du auch eine Dos Box unter Ausführen aufmachen, dazu 
einfach CMD eingeben und ne DOS Box kommt. In der DOS Box "net stop 
spooler" eingeben, dann hält der Spooler an. mit "net start spooler" 
kannst du den wieder starten.

zur Rufus Frage: ich würde AT Modus wählen, der sollte klassiche Ausgabe 
ermöglichen. Der PS/2 kam nach dem AT, und möglicherweise hat IBM da was 
dran geschraubt. Die EPP Modi sind für volle bidirektionale 
Kommunikation mit Druckern eingeführt worden, da hat sich noch mehr 
geändert (damit fing die Seuche mit den ständigen quakenden 
Druckertreibern an...)
Zum testen würde ich nicht messen sondern eher ein uralten Nadeldrucker 
oder HP Tintenpisser (die 500er Serie konnte das noch) anhängen und 
einfach mal ASCII Zeichen ausgeben.

von Christian Erker (Gast)


Lesenswert?

PS/2 wird wohl "BPP" (bidirectional parallel port) sein, das ist AFAIR 
ein seltsamer Modus mit 4bit In und 4bit Out.

Gruß,
Christian

von Joerg (Gast)


Lesenswert?

da werden die Modi und ihre Eigenheiten doch erwähnt. Lang ist es her...

http://de.wikipedia.org/wiki/IEEE_1284

von Sven H. (dsb_sven)


Lesenswert?

Richtige Adresse ausgewählt?

von Win7 Hasser (Gast)


Lesenswert?

Joerg schrieb:
> auch da hat Bill G. umbenannt
Das hat Bill nicht selbst gemacht, sondern einer seiner verfi... 
Software Designer.

von Juergen R. (stumpjumper)


Lesenswert?

Probier doch mal eine einfache Textdatei "auszugeben"
Erstelle mit dem Editor eine Textdatei und schreibe irgendwas da rein 
z.B. enemenemu.

Dann eine DOS-Box öffnen und "Type [Deine Textdatei] >LPT1" eingeben.

von Ingo W. (Gast)


Lesenswert?

Sharping schrieb:

> - Ich habe die "InpOutx64 DLL" installiert

Wenn die aus einem Usermode-Programm aufgerufen wird, dird I/O wohl 
trotzdem scheitern, wenn dies nicht gerade ein Kernelmode-Treiber ist. 
Früher gab es für sowas einen "GiveIO"-Treiber, mit dem man sich den 
Zugriff auf den ParPort für Usermode-Programme freischießen konnte. Wenn 
Du ohnehin selbst programmierst und auch ein spezielles API ansprechen 
kannst, wäre dies eventuell das Richtige:
http://www-user.tu-chemnitz.de/~heha/bastelecke/Rund%20um%20den%20PC/USB2LPT/ul-15.de.htm
Dieses Teil versucht Hardwarezugriffe abzufangen, was aber nicht immer 
zuverlässig funktioniert, bietet aber auch ein API für 
Usermode-Programme, das zuverlässig laufen sollte.
mfG ingo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.