OVH Cloud OVH Cloud

attente dans un exe

7 réponses
Avatar
Elicend_News
bonjour

petite question toute bete :

j'ai un feu de départ qui réagi comme ceux en F1 a base de shape
un feu rouge allume
deux
trois
tous eteint et feu vert s'allume

je n'arrive pas à faire en sorte qu'entre chaque feu rouge il y ai une
seconde d'attente ?!?

j'ai essayé wait... soit je l'utilise mal, soit ca n'est pas la bonne
fonction ;(
pendant ce feu, j'ai un comportement chopant des impulsions sur le port
parallele (détectant par exemple les faux départ) qui doit pouvoir
fonctionner et être actif

merci d'avance pour les pistes (sans jeu de mot!) de recherche!

Elicend

7 réponses

Avatar
Jonathan
Il faut utilisez l'API Sleep

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()

5 sec."

'Sleep for 5000 milliseconds

Sleep 5000

Me.Caption = ""

End Sub





Private Sub Form_Load()

Me.Caption = ""

Command1.Caption = "Sleep ..."

End Sub
Avatar
Elicend_News
je te remercie !

"Jonathan" a écrit dans le message de
news:3fbb58e6$0$229$
Il faut utilisez l'API Sleep

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()

5 sec."

'Sleep for 5000 milliseconds

Sleep 5000

Me.Caption = ""

End Sub





Private Sub Form_Load()

Me.Caption = ""

Command1.Caption = "Sleep ..."

End Sub




Avatar
Clive Lumb
Hello Johnny,
Je ne crois pas que les evenements sur le port parallèle seront captés
pendant un Sleep.
Dans ce cas il faudrait plutot mettre trois timers sur la feuille, un pour
chaque feu

Go!
On allume le feu rouge
timer1.enabled=true
Quand timer1 s'enclenche, il éteint le feu rouge, allume le jaune, active
timer2 et se désactive
Quand timer2 s'enclenche, il éteint le feu jaune, allume le vert, active
timer3, met un drapeau (sic) à vrai et se désactive
Quand timer3 s'enclenche, il éteint le feu vert pour faire propre, et se
désactive

Dans le programme principal on met un boucle (avec un Doevents dedans) qui
tourne tant que le drapeau n'est pas vrai et tant qu'il n'y a pas d'activité
sur le port parallèle.

Clive

"Elicend_News" a écrit dans le message de
news:3fbb6236$0$27042$
je te remercie !

"Jonathan" a écrit dans le message de
news:3fbb58e6$0$229$
> Il faut utilisez l'API Sleep
>
> Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
> Private Sub Command1_Click()
>
> 5 sec."
>
> 'Sleep for 5000 milliseconds
>
> Sleep 5000
>
> Me.Caption = ""
>
> End Sub
>
>
>
>
>
> Private Sub Form_Load()
>
> Me.Caption = ""
>
> Command1.Caption = "Sleep ..."
>
> End Sub
>
>




Avatar
Elicend_News
arf... merci !
la premiere solution me parraissait plus "simple"...

avec cette deuxieme methode on se rapproche de ce quej'avais bidouillé, a
savoir, un timer qui incremente de seconde en seconde, et un select case sur
la valeur des secondes, mais... c'etait vraiment pas top j'ai trouvé...

je vais essayer les deux ce soir

merci :)

"Clive Lumb" a écrit dans le message de
news:uCI$
Hello Johnny,
Je ne crois pas que les evenements sur le port parallèle seront captés
pendant un Sleep.
Dans ce cas il faudrait plutot mettre trois timers sur la feuille, un pour
chaque feu

Go!
On allume le feu rouge
timer1.enabled=true
Quand timer1 s'enclenche, il éteint le feu rouge, allume le jaune, active
timer2 et se désactive
Quand timer2 s'enclenche, il éteint le feu jaune, allume le vert, active
timer3, met un drapeau (sic) à vrai et se désactive
Quand timer3 s'enclenche, il éteint le feu vert pour faire propre, et se
désactive

Dans le programme principal on met un boucle (avec un Doevents dedans) qui
tourne tant que le drapeau n'est pas vrai et tant qu'il n'y a pas


d'activité
sur le port parallèle.

Clive

"Elicend_News" a écrit dans le message de
news:3fbb6236$0$27042$
> je te remercie !
>
> "Jonathan" a écrit dans le message


de
> news:3fbb58e6$0$229$
> > Il faut utilisez l'API Sleep
> >
> > Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As


Long)
> > Private Sub Command1_Click()
> >
> > 5 sec."
> >
> > 'Sleep for 5000 milliseconds
> >
> > Sleep 5000
> >
> > Me.Caption = ""
> >
> > End Sub
> >
> >
> >
> >
> >
> > Private Sub Form_Load()
> >
> > Me.Caption = ""
> >
> > Command1.Caption = "Sleep ..."
> >
> > End Sub
> >
> >
>
>




Avatar
Jonathan
Pourquoi pas un seul simplement alors avec une variable tu gardes le feu en
cours
Dim As as integer 'Varible contenant le feu à eclairer
A = 1,2,3 pour Rouge, Jaune, Vert :

Private Sub Timer1_Timer()
Select Case A
Case 1
Eteindre Vert + jaune et allumer rouge
Case 2
Eteindre rouge + vert et allumer jaune
Case 3
Eteindre rouge + jaune et allumer vert
End select
End sub
Avatar
Clive Lumb
Cela marchera, mais je m'étais dit qu'à partir d'un "top" d'allumer moteurs
le feu pourrait rester au rouge assez longtemps, puis la séquence de départ
doit se passer avec 1 seconde entre chaque. Dans ce cas avec ta solution il
faudrait modifier l'intervalle du timer.
J'améliore en même temps ton code
A=1
Timer1.enabled=true
While A<>4
doevents
if Check_port_parallele then
A=4
Timer1.enabledúlse
endif
Wend

Private Sub Timer1_Timer()
Select Case A
Case =1
Eteindre Vert + jaune et allumer rouge
A=2
Case =2
Eteindre rouge + vert et allumer jaune
A=3
Case =3
Eteindre rouge + jaune et allumer vert
A=4
Case =4
timer1.enabledúlse
End select
End sub




"Jonathan" a écrit dans le message de
news:3fbb7294$0$252$
Pourquoi pas un seul simplement alors avec une variable tu gardes le feu


en
cours
Dim As as integer 'Varible contenant le feu à eclairer
A = 1,2,3 pour Rouge, Jaune, Vert :

Private Sub Timer1_Timer()
Select Case A
Case 1
Eteindre Vert + jaune et allumer rouge
Case 2
Eteindre rouge + vert et allumer jaune
Case 3
Eteindre rouge + jaune et allumer vert
End select
End sub




Avatar
Elicend_News
ben c'etait ca ;)


"Jonathan" a écrit dans le message de
news:3fbb7294$0$252$
Pourquoi pas un seul simplement alors avec une variable tu gardes le feu


en
cours
Dim As as integer 'Varible contenant le feu à eclairer
A = 1,2,3 pour Rouge, Jaune, Vert :

Private Sub Timer1_Timer()
Select Case A
Case 1
Eteindre Vert + jaune et allumer rouge
Case 2
Eteindre rouge + vert et allumer jaune
Case 3
Eteindre rouge + jaune et allumer vert
End select
End sub