sortir d'une boucle
4 participants
Page 1 sur 1
sortir d'une boucle
bonjour
je bloque sur "comment sortir de la boucle"
le GetUserLED(1200) est une led créée quand j'active le flood et sa tempo
cette fonction est active avec le code OEM DoOEMButton(113) qui est le bouton on/off du boutton "flood"
le probleme c'est qaund je rentre dans la boucle j'ai plus
acces au bouton pour arreter la lub
si une âme charitable à une solution
++ gilles
je bloque sur "comment sortir de la boucle"
le GetUserLED(1200) est une led créée quand j'active le flood et sa tempo
cette fonction est active avec le code OEM DoOEMButton(113) qui est le bouton on/off du boutton "flood"
le probleme c'est qaund je rentre dans la boucle j'ai plus
acces au bouton pour arreter la lub
si une âme charitable à une solution
- Code:
If GetUserLED(1200) = 1 Then 'si led verte
setUserLED(1200,0) 'éteindre
DeActivateSignal(RelaisDeControlFlood)
MsgBox "Lubrification desactivee", 64, "Relais lub"
Else 'If GetUserLED(1200) = 0 Then
setUserLED(1200,1) 'si led rouge
ActivateSignal(RelaisDeControlFlood)
MsgBox "Timer et Relais pour la lubrification : ON",64,"Ouvert"
Do
ActivateSignal(RelaisDeControlFlood)
'Sleep(100)
'message "ouvert pendant : " & relOuvert
'MsgBox "Ouvert pendant"&relOuvert &"Relais ouvert"
Sleep(relOuvert)
[b]If doOEMButton(OEMButtonFloodOn) = true And getUserLED(1200) = 1 Then
setUserLED(1200,0)
MsgBox "je sort"
'doOEMButton(OEMButtonFloodOff)
'Exit
End If[/b]
DeActivateSignal(RelaisDeControlFlood)
'Sleep(100)
'Message "Ferme pendant : " & relFerme
'MsgBox "Ferme pendant"&relFerme &"Relais ferme"
Sleep(relFerme)
Loop 'Until GetUserLED(1200) = 0
End If
++ gilles
gilles974- acharné du forum
- Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion
Re: sortir d'une boucle
Généralement on sort d'une boucle par un GOTO avec un
WHILE .....
IF ... THEN GOTO LABELDESORTIE
..........
WEND
LABELDESORTIE:
......
WHILE .....
IF ... THEN GOTO LABELDESORTIE
..........
WEND
LABELDESORTIE:
......
FMJ- complétement accro
- Messages : 5112
Points : 6027
Date d'inscription : 27/05/2013
Age : 107
Localisation : Sud sud sud Ouest
Re: sortir d'une boucle
Bonjour,
L'instruction break est souvent la meilleure solution pour sortir d'une boucle.
Dans certains langages, il me semble qu'on peut aussi spécifier la variable de boucle, cela permet de sortir d'une boucle "plus extérieure" lorsque plusieurs boucles sont imbriquées.
EDIT: j'ajouterai aussi iterate, plus rare, qui reprend au début de la boucle sans dérouler les instructions qui suivent iterate.
EDIT bis: "continue", plutôt que 'iterate', je viens de vérifier la référence du langage arduino.
EDIT 3: Visual Basic ? Ce serait "exit do" (préciser le type de boucle).
Désolé pour les multiples EDIT
L'instruction break est souvent la meilleure solution pour sortir d'une boucle.
Dans certains langages, il me semble qu'on peut aussi spécifier la variable de boucle, cela permet de sortir d'une boucle "plus extérieure" lorsque plusieurs boucles sont imbriquées.
EDIT: j'ajouterai aussi iterate, plus rare, qui reprend au début de la boucle sans dérouler les instructions qui suivent iterate.
EDIT bis: "continue", plutôt que 'iterate', je viens de vérifier la référence du langage arduino.
EDIT 3: Visual Basic ? Ce serait "exit do" (préciser le type de boucle).
Désolé pour les multiples EDIT
jempi13- posteur Régulier
- Messages : 177
Points : 179
Date d'inscription : 10/11/2022
Age : 68
Localisation : Auvergne
Re: sortir d'une boucle
Salut,
Pour le Cypress Basic, c'est Exit Do
page 68
et juste pour info, en Visual Basic Microsoft, c'est pareil mail il y a plus d'options.
Exit { Do | For | Function | Property | Select | Sub | Try | While }
++
David
Pour le Cypress Basic, c'est Exit Do
page 68
Exit Statement
Exit {Do | For | Function | Sub }
Exits a loop or procedure
Example:
' This sample shows Do ... Loop with Exit Do to get out.
Sub Main ()
Dim Value, Msg ' Declare variables.
Do
Value = InputBox("Enter a value from 5 to 10.")
If Value >= 5 And Value <= 10 Then ' Check range.
Exit Do ' Exit Do...Loop.
Else
Beep ' Beep if not in range.
End If
Loop
End Sub
et juste pour info, en Visual Basic Microsoft, c'est pareil mail il y a plus d'options.
Exit { Do | For | Function | Property | Select | Sub | Try | While }
++
David
_________________
Traduction Française de CamBam et de sa documentation.
Re: sortir d'une boucle
bonjour à tous
merci pour vos reponse, je pense que exit do se prete mieux à se que je veux faire
mon probleme est quand je suis dans la boucle je sort pas
dans la boucle il faut tester que la led est rouge ET que l'appui sur le boutton flood est actif
pour sortir de la boucle
je suis en panne d'inspiration
++
gilles
merci pour vos reponse, je pense que exit do se prete mieux à se que je veux faire
- Code:
Else
setUserLED(1200,1) 'si led rouge
ActivateSignal(RelaisDeControlFlood)
MsgBox "Timer et Relais pour la lubrification : ON",64,"Ouvert"
Do
ActivateSignal(RelaisDeControlFlood)
Sleep(relOuvert)
ICI TEST DU BOUTTON DoOEMButton(113) et de la led GetUserLED(1200) = 0
pour sortir de la boucle
DeActivateSignal(RelaisDeControlFlood)
Sleep(relFerme)
Loop 'Until GetUserLED(1200) = 0
mon probleme est quand je suis dans la boucle je sort pas
dans la boucle il faut tester que la led est rouge ET que l'appui sur le boutton flood est actif
pour sortir de la boucle
je suis en panne d'inspiration
++
gilles
gilles974- acharné du forum
- Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion
Re: sortir d'une boucle
Bonjour Gilles,
j'essaie de comprendre la logique, sans connaître ton dispositif et la manière de le piloter.
Tu as combien de LEDs ? une rouge et une verte ? Ou une seule: getUserLED(1200) et setUserLED(1200,x) ?
C'est une LED pour signaler l'action que tu veux faire, et que tu pilotes entièrement dans la partie de code exposée, ou une LED qui dépend d'autre chose et qui te sert de condition ?
Tu en fais le test à défaut de pouvoir tester l'état du relai, et donc tu actives ou désactives la LED et le relai simultanément ?
Le relai doit se couper sur temporisation, ou appui sur un bouton, ou le premier qui se présente ?
A plus tard
Jean-Pierre.
j'essaie de comprendre la logique, sans connaître ton dispositif et la manière de le piloter.
Tu as combien de LEDs ? une rouge et une verte ? Ou une seule: getUserLED(1200) et setUserLED(1200,x) ?
C'est une LED pour signaler l'action que tu veux faire, et que tu pilotes entièrement dans la partie de code exposée, ou une LED qui dépend d'autre chose et qui te sert de condition ?
Tu en fais le test à défaut de pouvoir tester l'état du relai, et donc tu actives ou désactives la LED et le relai simultanément ?
Le relai doit se couper sur temporisation, ou appui sur un bouton, ou le premier qui se présente ?
A plus tard
Jean-Pierre.
jempi13- posteur Régulier
- Messages : 177
Points : 179
Date d'inscription : 10/11/2022
Age : 68
Localisation : Auvergne
Re: sortir d'une boucle
Je reprends, après avoir relu, cherché, et compris qu'il s'agissait de Mach3...
J'ai trouvé une doc:
Mach3 Version 3.x
Macro Programmers Reference Manual
1 - En cherchant à deviner, je comprends qu'il s'agit une macro, déclenchée par un bouton dont le code numérique est OEMButtonFloodOn, et que tu as défini toi-même, ou en fonction d'une valeur réservée et documentée.
C'est ça?
Par contre, as-tu le droit de faire ce test ?
2 - Est-ce qu'une macro peut garder la main indéfiniment sans empêcher la machine de faire le reste, ou bloquer l'interface graphique ?
3 - Enfin, à supposer que le test du bouton soit possible, il ne serait fait qu'à intervalle de relOuvert+relFerme. Autrement dit, s'il est fugitif, il faut garder le doigt dessus assez longtemps.
4 - Et si OEMButtonFloodOff est un autre bouton, il a sa propre macro ? C'est lui qui change l'état de la LED qui te sert de critère pour mettre en route la lubrification cyclique ou l'arrêter ?
5 - A ce moment là, la macro associée à OEMButtonFloodOff peut arrêter elle-même le relai immédiatement, plutôt que d'attendre les temporisations relOuvert et relFerme dans la macro associée à OEMButtonFloodOn ?
En espérant ne pas être à côté de la plaque dans ce domaine que je ne connais pas...
Jean-Pierre.
J'ai trouvé une doc:
Mach3 Version 3.x
Macro Programmers Reference Manual
1 - En cherchant à deviner, je comprends qu'il s'agit une macro, déclenchée par un bouton dont le code numérique est OEMButtonFloodOn, et que tu as défini toi-même, ou en fonction d'une valeur réservée et documentée.
C'est ça?
Par contre, as-tu le droit de faire ce test ?
- Code:
if doOEMButton(OEMButtonFloodOn) = true
2 - Est-ce qu'une macro peut garder la main indéfiniment sans empêcher la machine de faire le reste, ou bloquer l'interface graphique ?
3 - Enfin, à supposer que le test du bouton soit possible, il ne serait fait qu'à intervalle de relOuvert+relFerme. Autrement dit, s'il est fugitif, il faut garder le doigt dessus assez longtemps.
4 - Et si OEMButtonFloodOff est un autre bouton, il a sa propre macro ? C'est lui qui change l'état de la LED qui te sert de critère pour mettre en route la lubrification cyclique ou l'arrêter ?
5 - A ce moment là, la macro associée à OEMButtonFloodOff peut arrêter elle-même le relai immédiatement, plutôt que d'attendre les temporisations relOuvert et relFerme dans la macro associée à OEMButtonFloodOn ?
En espérant ne pas être à côté de la plaque dans ce domaine que je ne connais pas...
Jean-Pierre.
jempi13- posteur Régulier
- Messages : 177
Points : 179
Date d'inscription : 10/11/2022
Age : 68
Localisation : Auvergne
Re: sortir d'une boucle
bonjour Jean-Pierre
merçi pour toutes ses réflexions, tu n'est pas loin de la vérité je t'est envoyer un MP qui t'explique la procedure
si tu veux le code complet ou le screenset pas de probleme
++
gilles
merçi pour toutes ses réflexions, tu n'est pas loin de la vérité je t'est envoyer un MP qui t'explique la procedure
si tu veux le code complet ou le screenset pas de probleme
++
gilles
gilles974- acharné du forum
- Messages : 446
Points : 669
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion
Sujets similaires
» INSTALLATION ET PARAMETRAGE CNC XHC MK4-ET-T8S
» Decoupe dune plaque en fonte
» sortir d'une macro
» avec du chêne de 80 déligner équarrir profiler 68 x 68 x 1400 mm
» Boucle et tests
» Decoupe dune plaque en fonte
» sortir d'une macro
» avec du chêne de 80 déligner équarrir profiler 68 x 68 x 1400 mm
» Boucle et tests
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum