-         

Ergebnis 1 bis 9 von 9

Thema: LPT Port ansteuern...

  1. #1

    LPT Port ansteuern...

    Anzeige

    HI...
    Ich habe diesen code zum steuern des LPT Ports gefunden:
    //==============
    // fluffy code for bcc32
    // direct parallel I/O using Inpout32.dll
    // done by plapperkatz 16.8.2006
    //==============
    #include <windows.h>

    int main()
    {

    typedef UINT (CALLBACK* LPFNDLLFUNC1)(INT,INT);
    typedef UINT (CALLBACK* LPFNDLLFUNC2)(INT); // fuer Input, hier nicht verwendet
    HINSTANCE hDLL;
    LPFNDLLFUNC1 Output;
    LPFNDLLFUNC2 Input; // fuer Input, hier nicht verwendet
    INT Addr=0x378;
    INT Value;
    hDLL = LoadLibrary("Inpout32");
    if (hDLL != NULL)
    {
    Output = (LPFNDLLFUNC1)GetProcAddress(hDLL,"Out32");
    Input = (LPFNDLLFUNC2)GetProcAddress(hDLL,"Inp32"); // fuer Input, hier nicht verwendet
    if (!Output || !Input)
    {
    exit(1);
    }
    }

    // der 3tte eingangs-pin soll geschaltet werden, das ist pin 4 am Sub D Stecker

    // Wert 4 an LPT senden, damit ist pin 4 auf HIGH
    Value = 4;
    Output(Addr, Value);

    // warten (denn das fluffy braucht bisschen zeit)
    Sleep(100);

    // Wert 0 an LPT senden, damit sind alle pins auf LOW
    Value = 0;
    Output(Addr, Value);

    // fertig, fluffy maunzt
    return 0;
    }
    Quelle: http://codefactory.dead-men.de/index.php?content=75

    Jetzt meine Frage wie kann ich jetzt nen einzelnen Port wieder abschalten?
    Also auf low setzen? z.b. nur die nummer 1? Geht das?

    Wenns niemand weiß kennt jmd ein board wo sich mit diesem Theam beschäftigt?

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    ich habe eben versucht, es dort zu erklären. etwas verwirrend ist, dass pin 1 am stecker nicht der erste datenpin ist.

    der wert des parallelports wird mit einem 2ten wert &-verknüpft. alle bits, die in beiden werten gesetzt sind, bleiben bestehen, alle anderen werden auf 0 gesetzt.

    10010011 (dezimal 147)
    & 00001111 (dezimal 15) ergibt dann
    ------------------
    00000011 (dezimal 3)

    gruesse

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    65
    Beiträge
    1.597
    Mit 255 sind alle an, wenn Bit 1 auf LOW soll muß Du 253 an den Port senden.
    Da das ein Parallelport ist muß Du zwangsläufig immer alle 8 Bit ansprechen, d.h. 0= alles Low ; 1=Bit0 gesetzt usw. bis 255
    Versuch das mal
    Gruß

  4. #4
    Hi..
    Gibts da ne liste was ich dann bei welchem Port senden muss?
    Oder ist Port 2 dann 252???

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von Hessibaby
    Registriert seit
    20.11.2003
    Ort
    Gelsenkirchen
    Alter
    65
    Beiträge
    1.597
    Binäres Zahlensystem 1,2,4,8,16,32,64,128
    Kannst Dir ja ne Excell Tabelle machen
    Gruß Hartmut

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.12.2004
    Alter
    33
    Beiträge
    165
    Zitat Zitat von Digo
    Gibts da ne liste was ich dann bei welchem Port senden muss?
    Es gibt eine Formel um die richtige Dezimalzahl fuer ein Bitmuster auszurechnen


    Pin7*2^7 + Pin6*2^6 + Pin5*2^5 + Pin4*2^4 + Pin3*2^3 + Pin2*2^2 + Pin1*2^1 + Pin0*2^0

    Pin6, Pin3, Pin2 und Pin0 auf 1 und der Rest auf Null waere dann:

    0*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0

    Und da 0*x == 0 kann man das kuerzen zu

    1*2^6 + 1*2^3 + 1*2^2 + 1*2^0 = 77 = 0x4D = 0b01001101

    Toll was. Das ganze nennt sich Dualsystem, und wenn man was programmieren will sollte man schonmal davon gehoert haben
    Der Profi benutzt uebrigens das Hexadezimalsystem(das mit den Buchstaben wie in 0x4D)




    Edit: Mist da war einer schneller.

  7. #7
    OK.. Noch eine Frage! Welcher Pin wird als erster Pin behandelt! Der erste im Stecker oder der erste in dem schaltbaren block? Hoffe ihr versteth was ich meine!!!

  8. #8
    Sry für den doppel Post...
    Ich hab jetzt alle Pins mal angeschloßen! Und dir ersten 3 leuten dauerhaft egal was für ein Befehl ich sende! Woran liegt das? Die obrige frage gillt noch

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von robocat
    Registriert seit
    18.07.2006
    Beiträge
    935
    leuten = leuchten? da wäre ich etwas vorsichtig, der parallelport verträgt nur sehr kleine ströme. pin2 entspricht dem ersten bit, pin9 dem 8ten. wenn nach einem Output(Addr,0); die leds an pin2 und pin3 nicht ausgehen, hast du gute chancen, dass dein druckerport nen treffer hat.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •