wieder mal parallele schnittstelle



  • Hallo,
    Ich habe mir die FAQ zu der parallelen Schnittstelle durchgelesen, aber irgendwie funzt mein Programm nicht wirklich :

    #include <windows.h>
    
    int WINAPI WinMain(HINSTANCE  hInstance, HINSTANCE  hPrevInstance, LPSTR  lpszCmdLine, int  nCmdShow)
    {
     char buffer = 0xff;
     HANDLE LPT = CreateFile( "LPT1", GENERIC_READ, 0, NULL, OPEN_EXISTING, NULL, NULL);
     if(LPT == INVALID_HANDLE_VALUE){MessageBox(NULL, "Fehler!", "Error!", MB_ICONINFORMATION);return 1;}
     WriteFile(LPT, &buffer, 1, NULL, NULL);
     CloseHandle(LPT);
     return 0;
    }
    

    ich benutze eine selbst gebastelte Anzeige-Platine, wo man die ersten 4 Bits des Datenregisters sieht, ein -> high, aus -> low.
    Soweit so gut, bei mir bleiben alle aus (bei 0xff müssten alle leuchten ,den binär wäre das 11111111), das mit dem Puffer verstehe ich irgendwie auch nicht. In meinem Fall buffer.
    Wie kann ich z.B. den 1. Pin auf Low stellen, und überhaupt, welches Register steuer ich mich WriteFile an? Das Datenregister (Pins 2-9), Steuerregister (pin1, pin14, pin16 und noch zwei), oder das Statusregister (eigentlich nur zum lesen, nicht schreiben).
    Die Platine funktioniert unter Dos (outportb(0x378, 0xff);) wunderbar.

    Danke (Suchfunktion hat mir nicht geholfen)



  • Also, er macht ETWAS, und zwar gehen ALLE LEDs aus...wie kann das? Setzt er vielleicht alle Pins auf Low, sobald ich CloseHandle(); ausrufe? Ich habe da zwischen mal eine Pause von 5sec eingebaut, immernoch das gleiche.

    Danke



  • kA, aber vielleicht musst du dauerhaft deine 1sen senden, da vielleicht so die LEDs nur kurz aufleuchten, weil anschliesend nur noch Nullen anliegen! Aber wie schon gesagt, nur eine Idee, wissen tue ich es nicht 😉



  • Also, mal meine Schleife :

    long int i;
    for(i = 0; i<= 100000; i++)
     {
      WriteFile(LPT, &byte, 0, NULL, NULL);
     }
    

    ich merke, dass er ca. 0.5 sec dafür braucht, alle leds bleiben aber aus.

    Danke



  • Hier wird auch gerade darüber diskutiert 😉
    Viellerich hilft dir ja der Link von Maxi 🙂



  • Mir ist ein dummer Fehler unterlaufen : GENERIC_READ muss natürlich GENERIC_WRITE heißen, Resultat bleibt das gleiche : alle LEDs bleiben aus.

    Danke

    (werde das wohl doch besser in QBasic machen, ich denke, das ist einfacher)



  • WriteFile(LPT, &byte, 0, NULL, NULL);

    muss 'natürlich'

    WriteFile(LPT, &byte, 1, NULL, NULL);

    lauten.


Anmelden zum Antworten