- LiFePO4 Speicher Test         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: Parallel oder Serielle Schnittstelle einzelnen Pin auslesen.

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    40
    Beiträge
    456
    Anzeige

    Praxistest und DIY Projekte
    Also, Readfile....

    HANDLE: Ein HANDLE zu einem vorher geöffneten PORT (im oberen Beispiel hCom)...
    LPVOID: Ein buffer, WOHIN die erhaltenen Daten geschrieben werden
    DWORD: Die größe des Buffers (kann auch mit dem Befehl sizeof(xyz) ausgefüllt werden)
    LPDWORD: Ein pointer zu einem DWORD, wohin die Funktion schreibt, wie viele Bytes gelesen wurden (einfach & vor dem DWORD setzten). z.B.:

    DWORD xyz;

    ReadFile(xxx,xxx,xxx,&xyz,NULL);

    LPOVERLAPPED: Ob eine Overlapped-Funktion benutzt werden soll (wenn du ein LPDWORD eingeschaltet hast, kannst du diesen Wert auf --> NULL <-- setzten.)

    Und nicht 0, sondern "NULL". Die zwei sind NICHT gleich, weil sich NULL auf eine logische 0 bezieht, wobei 0 einfach einen leeren Byte übergibt. Hier ist das kein Problem, aber das kann einer werden, wenn du z.B.: keinen Byte übergeben musst, sondern 2 (DWORD). Dann gibt 0 einen Fehler zurück, NULL aber nicht

    MfG
    Mobius

    P.S.: ich geh schlafen, cu @all morgen

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Alter
    46
    Beiträge
    9
    Jep, n8 du! Ich bin noch am kämpfen.... der will nicht bits_read annehmen.... aber ich gucken noch..

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Alter
    46
    Beiträge
    9
    Soweit bin ich damit:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {

    char i;

    unsigned long bits_read=1;

    HANDLE hCom=CreateFile("LPT1",GENERIC_READ,0,NULL, OPEN_EXISTING,0,NULL);

    BOOL tmp=ReadFile(hCom,&i,1,&bits_read,NULL);

    Form1->Edit1->Text=i;
    }

    Da kommt aber nix sinnvolles bei raus: $7
    ¸
    Xú



    Es startet also, aber diese kryptische Ausgabe verändert sich nicht. Jetzt habe ich noch zusätzlich eine allgemeine "dumme" Frage. Wenn ich den LPT-Port nutzen möchte, muss ich doch die jeweiligen Leitungen auf Masse ziehen, oder? Also Pin 2 bis Pin 7 stehen hierfür zur Verfügung, oder?

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Alter
    46
    Beiträge
    9
    Und ich habe im Bios geschaut, der Parallelport ist auf "2-Wege" geschaltet.

    Bitte bitte helft mir... =(

    Das im Edit-Fenster einfach der Wert drinsteht, der an der Parallelschnittstelle vorliegt. Oder halt an Pin 2, dem D0 Pin. Ob dieser High oder Low ist. ICQ habe ich nun auch noch hinzu gefügt.

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Alter
    46
    Beiträge
    9
    Hilfe, geht noch nicht..... Hilfe Hilfe Hilfe ! ! ! !

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2004
    Alter
    46
    Beiträge
    9

    ES GEHT!!!! HABE DEN FEHLER GEFUNDEN!!! DANKE ANTON

    Hier für jeden, der selber einen Eingang am PC braucht:

    Erstmal das hervorragende Tool von Anton Zechner runterladen von seiner Seite:
    http://members.inode.at/anton.zechner/az/index.html

    Dann seine Anleitung befolgen:

    *) Zuerst musst du die Dateien LptTools.h und LptTools.cpp
    dein Projekt kopieren und einfügen.

    *) Beim Programmstart rufst du folgendes auf:


    C++:
    Code:
    #include "LptTools.h" 
    void StartProgramm()
    {...if(!LptInit())             // Treiber initialisieren   
       { // printf("Der Treiber ist nicht installiert.");   
         // printf ging nicht. habe dafür das hier gesetzt, ein Meldefenster bei Borland:
            MessageDlg("LPT-Treiber nicht geladen!",mtError,TMsgDlgButtons()<< mbOK, 0);
    
            return -1; // der muss rein
       }
    }




    *) Bei deiner Taste rufst du folgende auf


    C++:

    Code:
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    int i;i=LptPortIn (0,1); 
    // Diverse Bits einlesen (Habe ich von (0,2) auf (0,1) geändert, ging sonst nicht. 
    
    Form1->Edit1->Text=(i&0x20)? "PAPER-OUT high":"PAPER-OUT low"; 
    // Bit 5 (0x20) ist PaberOut (Pin 12 bei beiden Steckern) 
    // Den nur auf Masse legen oder in der Luft hängen lassen, schon schaltet er um. =)
    }





    ------------------------------------------------------------------

    NOCHMALS DANKE AN ANTON!!!
    [code]

  7. #17
    Gast
    Nur so ne Idee, warum ladet ihr nicht die Datei inpout32.dll von http://www.logix4u.cjb.net/ Die is eigentlich für VB (habe mit VB angefangen, tut mir ja auch leid), geht aber auch für CPP. bsp.:http://www.activevb.de/tutorials/tut.../parallel.html

Seite 2 von 2 ErsteErste 12

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

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

Solar Speicher und Akkus Tests