Probleme beim maximieren



  • Hallo,

    ich habe einen Thread, der über die Serielle Schnittstelle Daten empfängt und einen der Daten sendet (115200 KBit/s).
    Der Thread der Daten empfängt benutzt Readfile im OVERLAPPED Modus und wartet danach mit WaitForSingleObject auf das Empfangsevent.

    { 
    // Event anlegen 
    memset(&ov,0,sizeof(ov)); 
    ov.hEvent = CreateEvent(NULL,false,true,NULL); 
    
    // Thread 
    while (!ThreadExit) 
    { 
     Port offen? 
     if (INVALID_HANDLE_VALUE != hComPort) 
     { 
      // Empfangsevent? 
      if (WAIT_OBJECT_0 == WaitForSingleObject(ov.hEvent,500)) 
      { 
       if (GetOverlappedResult(hComPort,&ov,&br,false)) 
       { 
        for (i = 0;i < br;i++) ReceiveEvent(Buffer[i]); 
       } 
       // Daten lesen 
       ReadFile(hComPort,Buffer,sizeof(Buffer),&br,&ov); 
      } 
     } 
     else 
     { 
      // Event setzen 
      SetEvent(ov.hEvent); 
      // warten 
      Sleep(100); 
     } 
    } 
    
    // Event löschen 
    CloseHandle(ov.hEvent); 
    
    // Flag löschen 
    ThreadRunning = false; 
    }
    

    Wenn ich jetzt mein MainForm maximiere dauert es länger als 500 ms bis mein Thread wieder drankommt. Ich vermute das das event erst nach dem neu Zeichnen gesetzt wird. die Daten kommen aber schon zeitiger an wenn man auf der seriellen Schnittstelle kuckt. Es gehen auch keine Daten verloren die sind dann alle noch da nur zu spät.

    Die Applikation ist mit Borland 6 geschrieben aber im dortigen Forum konnte mir keiner weiterhelfen vielleicht hat ja hier jemand eine Idee.

    MfG


Anmelden zum Antworten