mikrocontroller.net

Forum: PC-Programmierung Adresse von LPT herausfinden


Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich kann ohne Probleme auf die LPT unter Win2000 zugreifen.
Jetzt will ich, dass das Programm automatisch die Adresse von der LPT
und die Anzahl der LPTs findet.
Wie muss ich dies in C Programmieren?

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das steht eigentlich im BIOS-Datenbereich, wenn man denn auf diese
treiberlose Art und Weise mit der Parallelschnittstelle 'rumfummeln
will.

Der Windows-Weg ist ein Nachsehen in der Registry.

Welche Parallelschnittstellen vorhanden sind, findest Du durch
Enumerieren der Werte unter dem Schlüssel
"HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\PARALLEL PORTS"

die einzelnen Werte (vom Typ REG_SZ) heissen beispielsweise
"\Device\Parallel0"

und der Wert davon wiederum lautet (auf meinem Rechner)
"\DosDevices\LPT1"

Die verwendeten Resourcen (I/O-Ports etc) findest Du unter dem
Schlüssel

"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter"

Die nächste Ebene ist von 0 bis irgendwas durchnumeriert, und unter
einem der Schlüssel gibt es wiederum einen Schlüssel namens
""ParallelController"
Darunter wiederum ist für jede installierte Schnittstelle ein von 0 bis
irgendwas durchnumerierter Schlüssel zu finden.

Auf meinem System ist das beispielsweise
"HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\MultifunctionAdapter\5\P 
arallelController\0"

(die 5 ist höchstwahrscheinlich von System zu System unterschiedlich)

Darunter gibt es einen Wert namens "Configuration Data" vom Typ
REG_FULL_RESOURCE_DESCRIPTOR, in dem alle relevanten Daten aufgeführt
sind.

Das Format von REG_FULL_RESOURCE_DESCRIPTOR wirst Du vermutlich in der
MSDN beschrieben finden.



Das ist der "elegante" von Microsoft vorgesehene Weg (naja, wirklich
vorgesehen ist das so nicht, weil natürlich Programme gar nicht mit der
parallelen Schnittstelle durch Port-Zugriffe kommunizieren sollen).

Deutlich einfacher ist es, wenn Du die Standard-Adressen der drei
möglichen Parallelschnittstellen zur Auswahl anbietest - auf
nicht-Standard-Parallelschnittstellen kannst Du auf Deine Art und Weise
eh' nicht zugreifen (PCI-Karten, USB-Parallel-Adapter).
Also lohnt der Aufwand nicht wirklich.

Die Standard-Adressen sind
0x378
0x3BC (MDA)
0x278

Wie gesagt, andere als diese parallelen Schnittstellen kannst Du mit
direkten I/O-Befehlen nicht befummeln, da die verwendete Hardware
völlig anders aufgebaut ist.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Info!

Wie kann ich dies zum Beispiel mit dem Borland Builder C++ realisieren?

Wenn zum Beispiel ein button gedrückt wird, dann erscheint die ANzahl
der LPT's sowie die dazugehörigen Adressen.

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welchen Compiler man verwendet, um Win32-API-Funktionen aufzurufen,
dürfte völlig irrelevant sein.

Sieh Dir die Dokumentation der Registryfunktionen in der MSDN an.

Was die Oberflächenprogrammierung betrifft: Sieh Dir die Dokumentation
Deines Compilers an. Sicherlich finden sich irgendwo im Netz auch
Tutorials dazu. Ich kann dazu nichts weiteres beitragen, da ich keine
Borland-Compiler mehr verwende, seitdem Borland die große "wir machen
einen 32-Bit-Compiler"-Verarsche abgezogen hat.

(Borland C++ 4.0 ist der erste Versuch von Borland gewesen, einen
32-Bit-Compiler herauszubringen. Das tolle war, daß der unter dem
einzigen damals verfügbaren 32-Bit-Betriebssystem, für das er Code
erzeugen konnte, nicht lief ...)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.