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


von Owen S. (senmeis)


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

: Verschoben durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sieh Dir mal den Aufruf von WaitForMultipleObjects etwas genauer an, 
genaugenommen den letzten Parameter.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.