Suspendre l'exécution de fonction pendant période t

qwiskas Messages postés 1 Date d'inscription dimanche 11 juillet 2004 Statut Membre Dernière intervention 7 mars 2005 - 7 mars 2005 à 10:26
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 7 mars 2005 à 20:45
Bonjour à tous,
Dans le cadre de mon stage de fin d'études, je suis amené à réaliser une interface en vb .net communiquant avec une bdd access (ado.net).

Des dispositifs de sécurité (alarmes incendie, etc...) vont rappatrier des informations dans une bdd access et je suis chargé de realisé une application permettant de visualiser à tout instant l'état de ces différents dispositifs et à terme, de pouvoir modifier leurs états.

Lors que j'ai une valeur différente de 0 pour un capteur je dois émettre un signal sonore, un autre signal avec une tonalité différente si la valeur est supérieure à 2 et un troisième si valeur est supérieure à 3. Ce signal retentit tant que l'état des entrées du capteur n'est pas revenu à 0.

Le signal sonore doit pouvoir être coupé pendant une période de 30sec et je ne vois pas comment faire cela.

Pour le moment j'utilise des timers.
Le balayage des différentes unités décentralisées s'effectue toute les 100ms.
J'ai donc l'appel de ma fonction balayage qui se situe au niveau des actions effectuées par le timer1.

Pendant ce balayage, je dois pouvoir émettre un signal sonore. Ca fonctionne très bien, l'appel de ma fonction, SelectSound, permettant de sélectionner le son se situe dans ma fonction de balayage.

Ma fonction SelectSound va en fonction de la valeur récupérée sur mon unité décentralisée, déclencher un timer (timer2, pour une valeur=1, timer 3 valeur=2,....) qui lui même contient l'appel de ma fonction PlaySound. Jusque là tout fonctionne.

Maintenant je dois pouvoir suspendre l'exécution de ces timer pendant une certaine période tout en continuant à balayage les u.d.. Et c'est là que se trouve mon problème.

Comment dois-je m'y prendre? L'utilisation des threads est-elle justifiée dans mon cas?

J'ai essayé de placer ma fonction SelectSound dans un thread et de démarrer mon thread dans ma fonction de balayage, mais mon son n'est plus joué. Le programme rentre pourtant bien dans ma fonction SelectSound.


Merci d'avance pour votre aide

1 réponse

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
7 mars 2005 à 20:45
Salut,

Franchement, je n'ai pas tout compris mais bon, une tite piste :

Dim Fin As Date


Fin = Timer + 3 'pause de 3 secondes


'on stoppe le timer
Timerx.Enabled = False


'pendant la pause, on laisse les autres processes se dérouler
Do While Timer < Fin
DoEvents
Loop


'on redémarre le timer après la pause
Timerx.Enabled = True

Loup Gris
0
Rejoignez-nous