TImeout mit der Bibliothek von Ramon de Klein

#1791267
Lesenswert?

Hello,

ich verwende gerade die Bibliothek von Ramon de Klein 
(http://www.codeproject.com/KB/system/serial.aspx?msg=3519759#xx3519759xx) 
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:
1
// Create a handle for the overlapped operations
2
  HANDLE hevtOverlapped = ::CreateEvent(0,TRUE,FALSE,0);;
3
  if (hevtOverlapped == 0)
4
    return ::ShowError(serial.GetLastError(), _T("Unable to create manual-reset event for overlapped I/O."));
5

6
  // Setup the overlapped structure
7
  OVERLAPPED ov = {0};
8
  ov.hEvent = hevtOverlapped;
9

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

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

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

30
    // Wait until something happens
31
    switch (::WaitForMultipleObjects(sizeof(ahWait)/sizeof(*ahWait),ahWait,FALSE,INFINITE))
32
    {
33
    case WAIT_OBJECT_0:
34
    {}
35
    case WAIT_OBJECT_0+1:
36
    {}
37
}
38

39
} 
40
while (fContinue);
MfG
Senmeis

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren