mikrocontroller.net

Forum: PC-Programmierung TImeout mit der Bibliothek von Ramon de Klein


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hello,

ich verwende gerade die Bibliothek von Ramon de Klein 
(http://www.codeproject.com/KB/system/serial.aspx?m...) 
für die serielle Schnittstelle mit Visual Studio, und zwar mit der 
Methode „Win32 synchronization objects“. Die Frage ist, wie reichte ich 
einen Timer von 5s ein damit das Programm beendet wird wenn keine Daten 
vorkommen. Der ursprungliche Beispielcode „Overlapped.cpp“ sieht wie 
folgt aus:
// Create a handle for the overlapped operations
  HANDLE hevtOverlapped = ::CreateEvent(0,TRUE,FALSE,0);;
  if (hevtOverlapped == 0)
    return ::ShowError(serial.GetLastError(), _T("Unable to create manual-reset event for overlapped I/O."));

  // Setup the overlapped structure
  OVERLAPPED ov = {0};
  ov.hEvent = hevtOverlapped;

  // Open the "STOP" handle
  HANDLE hevtStop = ::CreateEvent(0,TRUE,FALSE,_T("Overlapped_Stop_Event"));
  if (hevtStop == 0)
    return ::ShowError(serial.GetLastError(), _T("Unable to create manual-reset event for stop event."));

    // Keep reading data, until an EOF (CTRL-Z) has been received
  bool fContinue = true;
  do
  {
    // Wait for an event
    lLastError = serial.WaitEvent(&ov);
    //lLastError = serial.WaitEvent(&ov,5000);
    if (lLastError != ERROR_SUCCESS)
      return ::ShowError(serial.GetLastError(), _T("Unable to wait for a COM-port event."));

    // Setup array of handles in which we are interested
    HANDLE ahWait[2];
    ahWait[0] = hevtOverlapped;
    ahWait[1] = hevtStop;

    // Wait until something happens
    switch (::WaitForMultipleObjects(sizeof(ahWait)/sizeof(*ahWait),ahWait,FALSE,INFINITE))
    {
    case WAIT_OBJECT_0:
    {}
    case WAIT_OBJECT_0+1:
    {}
}

} 
while (fContinue);
MfG
Senmeis

: Verschoben durch Moderator
Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieh Dir mal den Aufruf von WaitForMultipleObjects etwas genauer an, 
genaugenommen den letzten Parameter.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.