Wachten in functie op event

Status
Niet open voor verdere reacties.

marcel222

Gebruiker
Lid geworden
6 dec 2008
Berichten
10
Hallo,

Ik heb even een vraag over het wachten in een functie op een bepaald event.

Ik ben een programma aan het ontwikkelen dat afhankelijk van een selectie een aantal commando's via RS232 naar een apparaat stuurt en afhankelijk van de reactie bepaalde stappen uitvoert.
Nu heb ik een functie hiervoor ontwikkeld die een bepaalde std map doorloopt (middels iterators) en de commando's ophaalt, deze worden automatisch in een queue gezet en als de functie klaar is staan alle commando's in de queue en worden deze naar het apparaat verstuurt.
Een andere functie vangt nu de antwoorden op die door het apparaat worden teruggestuurd, en roept een eventhandler aan om eventueel nog bepaalde acties uit te voeren afhankelijk van het antwoord.

Wat mijn probleem nu is is dat alle commando's in een queue worden gezet en ik tussendoor, in bijvoorbeeld de eventhandler geen commando's meer direct kan versturen deze worden immers achter in de queue gezet en als laatste verstuurt.
Nu wil ik eigenlijk een functie hebben die 1 commando in de queue zet en daarna wacht op een antwoord en dan eventueel nog enkele acties uitvoert en afhankelijk van het resultaat nog een extra commando naar het apparaat stuurt. Als dit klaar is verhoog ik de iterator en wordt naar het volgende element cq commando gegaan. De functie moet dus wachten tot een reactie terugkomt en nadat deze is afgehandeld de iterator verhogen en verder gaan met de andere elementen.

Nu heb ik dit geprobeerd te programmeren met een oneindige while die een voorwaarde heeft die in de eventhandler word veranderd als de reactie binnen is en verwerkt is, maar dit is volgens mij een niet echt goede en veilige methode. Een andere methode zou misschien een static iterator kunnen zijn, de functie moet dan echter gedurende 1 cyclus meer dan honderd keer worden aangeroepen er moeten namelijk nogal wat commando's worden verstuurd.
Op het Internet las ik daarnaast ook iets over threads waarop gewacht kan worden maar ik heb daar nog niet zoveel ervaring mee.

Heeft iemand hier misschien een suggestie hoe ik bovenstaand probleem kan oplossen, zonder de map of de queue te veranderen of te vervangen door iets anders, deze kunnen namelijk op dit moment niet meer worden gewijzigd?
Alvast bedankt voor de reactie.

mvg Marcel
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan