einige API Funktionen



  • Hi Leute,

    irgendwie kann ich nicht einschlafen, bevor ich nicht die Arbeitsweise der folgenden Funktionen wirklich verstanden hab:

    Port = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0,  //Com1 öffnen
                          OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
    

    Ich weiß das Port ein Handle auf Com1 ist und das ich die Schnittstelle zum Lesen und Schreiben öffne, aber die anderen Parameter hab ich nicht so verstanden. Was nutzt mir das FILE_FLAG_OVERLAPPED? Hab mir nur sagen lassen, dass es besser sein soll.

    com.hEvent=CreateEvent(NULL,FALSE,FALSE,NULL);//hier wird ein Event
                                                  //erzeugt,aber wozu?
    SetCommMask(Port,EV_RXCHAR); 
    WaitCommEvent(Port,&dwEventMaske,&com); 
    dwResult=WaitForSingleObject(com.hEvent, 50); //hier wird wohl 50msek auf 
                                                  //daten gewartet?
    

    Irgendwie werd ich aus der Hilfe nicht schlau. Mein English ist halt leider nicht so gut. Mein Programm läuft zwar nach langer Zeit des rumprobierens einwandfrei, aber ich würd es auch gern richtig verstehen um hier nicht immer nerven zu müssen. Wäre echt super, wenn mir jemand helfen könnte.

    bis später
    sparcy



  • Üblicherweise ist man bei den Com-Routinen schon froh wenns funktioniert.

    FILE_FLAG_OVERLAPPED benötigst du, wenn du gleichzeitig senden und empfangen willst.

    Um nicht ständig pollen zu müssen, kannst du events verwenden, die du erstmal definieren musst. SetCommEvent setzt das Ereignis, WaitCommEvent wartet bei gesetztem FILE_FLAG_OVERLAPPED aber nicht, deshalb ist noch ein WaitForSingleObject notwendig. Dafür liefert die Funktion GetOverlappedResult kein Ergebnis, dann musst du ClearCommError verwenden, um zu erfahren, wieviel Bytes im Empfangsbuffer sind.

    Ist doch ganz einfach bei MS.



  • hi geo,

    vielen dank. hilft mir schon ein wenig weiter, aber was genau bedeuten die argumente der funktionen? auch wenn es funzt würd ich es gern verstehen. weiß noch jemand ein wenig mehr?

    danke sparcy




Anmelden zum Antworten