-50%
Le deal à ne pas rater :
-50% Baskets Nike Air Huarache
64.99 € 129.99 €
Voir le deal

sortir d'une boucle

4 participants

Aller en bas

sortir d'une boucle  Empty sortir d'une boucle

Message  gilles974 Jeu 25 Mai 2023 - 19:02

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 Idea


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
gilles974
acharné du forum
acharné du forum

Messages : 417
Points : 626
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  FMJ Jeu 25 Mai 2023 - 23:50

Généralement on sort d'une boucle par un GOTO avec un
WHILE .....
IF ... THEN GOTO LABELDESORTIE
..........
WEND
LABELDESORTIE:
......
FMJ
FMJ
complétement accro
complétement accro

Messages : 4949
Points : 5872
Date d'inscription : 27/05/2013
Age : 107
Localisation : Sud sud sud Ouest

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  jempi13 Ven 26 Mai 2023 - 8:09

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
tubois
jempi13
jempi13
posteur Régulier
posteur Régulier

Messages : 125
Points : 127
Date d'inscription : 10/11/2022
Age : 67
Localisation : Auvergne

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  dh42 Ven 26 Mai 2023 - 23:03

Salut,

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.
dh42
dh42
Admin
Admin

Messages : 25003
Points : 37721
Date d'inscription : 21/06/2009
Age : 60
Localisation : Près de St Etienne (42)

http://dh42.free.fr/

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  gilles974 Sam 27 Mai 2023 - 7:12

bonjour à tous

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
gilles974
acharné du forum
acharné du forum

Messages : 417
Points : 626
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  jempi13 Sam 27 Mai 2023 - 9:23

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.
jempi13
jempi13
posteur Régulier
posteur Régulier

Messages : 125
Points : 127
Date d'inscription : 10/11/2022
Age : 67
Localisation : Auvergne

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  jempi13 Sam 27 Mai 2023 - 14:11

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 ?
Code:
if doOEMButton(OEMButtonFloodOn) = true
D'après la doc, doOEMButton ne retourne pas de valeur.

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
jempi13
posteur Régulier
posteur Régulier

Messages : 125
Points : 127
Date d'inscription : 10/11/2022
Age : 67
Localisation : Auvergne

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  gilles974 Sam 27 Mai 2023 - 14:55

bonjour Jean-Pierre

merçi pour toutes ses réflexions, tu n'est pas loin de la vérité Very Happy 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
gilles974
acharné du forum
acharné du forum

Messages : 417
Points : 626
Date d'inscription : 31/10/2011
Age : 65
Localisation : La Réunion

Revenir en haut Aller en bas

sortir d'une boucle  Empty Re: sortir d'une boucle

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum