[Win32/MFC] ::waitForMultipleObjects() wacht niet *

Pagina: 1
Acties:

  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 16-07-2025
hoi,

Bij het maken van een lift-simulatie-programma heb ik het volgende probleem.
Als we bij de BG staan met de deuren dicht, moet er gewacht worden op de knoppen deur open, req BG en req Verd. Volgens mij moet dit op de volgende manier kunnen.
C++:
1
2
HANDLE events[2] = {params->knop_Verd.m_hObject, params->deur_Dicht.m_hObject};
DWORD event = ::WaitForMultipleObjects(sizeof(events), events, FALSE, INFINITE);

de events worden aangemaakt in een header-file op de volgende manier
C++:
1
2
3
4
5
6
7
8
CEvent deur_Open;
CEvent deur_Dicht;
CEvent knop_BG;
CEvent knop_Verd;
CEvent knop_DO;
CEvent sensor_BG;
CEvent sensor_Verd;
CEvent timer;

verder wordt via een PCL-kaart de status ingelezen en gekeken welk event moet worden geset (het inlezen werkt goed).
bijv:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
if(BGKnop)
{
    params->knop_BG.SetEvent();
}
if(VerdKnop)
{
    params->knop_Verd.SetEvent();
}
if(DeurKnop)
{
    params->knop_DO.SetEvent();
}

.pulseEvent(); is ook geprobeerd maar ook dit helpt niet.

iemand een idee wat er fout kan/is gaan?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

En je hebt de returnvalue natuurlijk al gekeken, en het feit dat de eerste parameter van 'WaitForMultipleObjects' het aantal objects moet zijn (2) en niet de bytesize van de array (8) is je ook bekend?

[ Voor 4% gewijzigd door curry684 op 25-01-2004 11:39 ]

Professionele website nodig?


  • dexter07051982
  • Registratie: November 2001
  • Laatst online: 16-07-2025
curry684 schreef op 25 januari 2004 @ 11:39:
En je hebt de returnvalue natuurlijk al gekeken, en het feit dat de eerste parameter van 'WaitForMultipleObjects' het aantal objects moet zijn (2) en niet de bytesize van de array (8) is je ook bekend?
oke, foutje, heb ik helemaal niet naar gekeken eigenlijk, wat sizeof was. dacht dat dat gewoon de size van het array terug zou geven (dus 2) en niet de bytesize (dus 8 wat ie doet). daar zou het probleem dus best eens kunnen liggen.
ga ik maandag direct proberen. (moet op school zijn, heb het thuis niet)

Mocht het helpen (vast wel) dan alvast bedankt.

  • igmar
  • Registratie: April 2000
  • Laatst online: 12-05 15:46

igmar

ISO20022

dexter07051982 schreef op 25 januari 2004 @ 11:36:
hoi,

Bij het maken van een lift-simulatie-programma heb ik het volgende probleem.
Als we bij de BG staan met de deuren dicht, moet er gewacht worden op de knoppen deur open, req BG en req Verd. Volgens mij moet dit op de volgende manier kunnen.
C++:
1
2
HANDLE events[2] = {params->knop_Verd.m_hObject, params->deur_Dicht.m_hObject};
DWORD event = ::WaitForMultipleObjects(sizeof(events), events, FALSE, INFINITE);
Maak van sizeof(events) sizeof(events) / sizeof(HANDLE), en het zal denk ik wat beter werken :)

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

dexter07051982 schreef op 25 januari 2004 @ 11:51:
[...]
Mocht het helpen (vast wel) dan alvast bedankt.
Dit had je natuurlijk ook kunnen weten door de returnvalue te checken van die functie en vervolgens GetLastError, die had je vast iets in de richting van Invalid Handle of zo gemeld.
Hum ja anders lees je het topic even voor je post zodat je ziet dat dit 3 uur eerder al was gemeld :z

Professionele website nodig?