Parallelport auslesen



  • Kann mir wer sagen, wie man einen Parallelport ausließt? Ich habe bereits die Adresse herausbekommen.
    Ich arbeite unter DOS (keine Konsole). Was muss ich alles beachten? Kann mir jemand einen Standartkode schreiben?

    Wie gesagt, ich will nur wissen, wass digital an den 8 Bits anliegt.

    Vielen Dank



  • Bei den sierellen Ports hätte ich dir noch helfen könne, aber mit dem parallelen hatte ich leider noch nichts zu tun. Vielleicht findest du was im Internet welche Offsets du zu deiner Adresse brauchst, um die einzelnen Bits auszulesen.

    Schade, dass ich dir nicht mehr helfen kann :(.





  • ich glaube der parallel port ist der Ic8255 (war beim 80286 so).
    Dazu gibt es folgende Steuerworte:

    Kanal A 0320 (Hex)
    Kanal B 0321
    Kanal C 0322
    Steuerwort 0323

    mit debug kannst du assembler programmieren.

    mov dx, 0323 Lade dx mit der Steuerwortadresse
    mov al, 10 Lade al mit 10 (Steuerwort) //bin nicht sicher ob 10 stimmt
    out dx, al Sende Steuerwort an Schnittstelle (diese ist jetzt auf input
    programmiert)
    mov dx, 0320 Lade dx mit der Adresse des Ausgabeportes
    mov ah, dx Lesen

    Bin mir nicht ganz sicher ob das auch ganz stimmt. Ist schon ne Weile her. Viel Glück. sonst schau mal im Assembler Forum vorbei



  • @cof
    Fehlt da nicht der Interrupt-Aufruf?? Das geht übrigens auch mit C, siehe int86(), allerdings nur mit einem 16Bit-Compiler.



  • yep, da fehlt einiges.
    wenn du den code als software interrupt aufrufen willst, musst das alles noch implementiern.
    War auch keine genaue Lösung, vielmehr ein möglicher Weg (invollständig, da ich nicht mehr genau weiss, wie das geht). zudem geht es glaube ich nicht unter den neuen Windows kernel, da nicht mehr direkt auf die HArdware zugegriffen werden kann, also bracuht man eine art Wrapper



  • Habt ihr irgendwie eine gute Literaturquelle, die einem da weiterhelfen kann? Auf Beyonn Logic bin ich nicht so ganz durchgestiegen - Bin auch kein Informatiker 🙂



  • Die 8 Datenpins sind Outputs. "Neuere" PCs können diese 8 Pins aber auch als Eingabeleitungen Schalten:

    Bit 5 of the Control Port enables or disables the bi-directional function of the Parallel Port. This is only available on true bi-directional ports. When this bit is set to one, pins 2 to 9 go into high impedance state. Once in this state you can enter data on these lines and retrieve it from the Data Port (base address). Any data which is written to the data port will be stored but will not be available at the data pins. To turn off bi-directional mode, set bit 5 of the Control Port to '0'.

    The Control Port (base address + 2) was intended as a write only port. When a printer is attached to the Parallel Port, four "controls" are used. These are Strobe, Auto Linefeed, Initialize and Select Printer, all of which are inverted except Initialize.

    Steht doch da auf http://www.beyondlogic.org/spp/parallel.htm, oder? 😕
    Und ein kleines Beispiel zum Erweitern auch.

    Blackbird



  • Ich glaube ich habe meinen Denkfehler gesehen. Die 8 Datenbits können nicht zur Eingabe in den Computer genutzt werden. Ich verwende nämlich einen uralten 386-Laptop zum testen.
    Ich muss also die Datenleitungen "busy", ... benutzen um etwas einzulesen.

    Vielen Dank, das hat mir wirklich weitergeholfen.



  • Genau sind es 5 Eingabeleitungen. Ist aber im aufgeführten Link sauber beschrieben, inclusive Beispiel. Die einfachen Beispiele sind für DOS und W95/W98 funktionsfähig. Unterschiede machen nur die Compiler (Borland - MS) bei den Funktionen outp / inp (_outport / _inport) in der Schreibweise.

    Blackbird


Anmelden zum Antworten