2017-10-11 7 views
1

Je tente de créer une boucle while qui sera bouclée en continu jusqu'à la saisie de l'utilisateur sur la ligne de commande.Interruption/Arrêt en boucle depuis l'entrée utilisateur sur la ligne de commande Matlab

J'ai essayé deux implémentations de ce premier, le premier dérivé de ce bit de python. Le problème étant que vous devez entrer autre chose que de sortir chaque fois que vous voulez parcourir la boucle.

global active 
    active = true; 

     while active == true 
      userInput = input('enter: ','s'); 
      inputHandler(userInput) 
      disp(rand) 
      pause(1); 
     end 

     function inputHandler(value) 
      global active 
      if value == 'exit' 
       active = false; 
      end 
     end 

Le second était

global loopFlag 
loopFlag = true 

while loopFlag == true 
    %some awesome code happens here 
end 

l'idée étant que vous pouvez entrer dans la ligne de commande loopFlag = false tandis que le code exécutait et arrêteriez. Je sais que cela peut être fait par l'utilisation d'un toggle button mais je préférerais ne pas avoir à suivre cette route, sauf si absolument nécessaire.

+1

Alors, quel est le problème avec la première implémentation? –

+0

@LuisMendo vous devez entrer quelque chose chaque fois que vous voulez faire une boucle. J'ai besoin de la boucle pour fonctionner tout seul jusqu'à ce qu'il voit une entrée de la ligne de commande –

+0

Je ne connais pas un moyen pour la fenêtre de commande de détecter une touche, autre que 'input', qui, comme vous l'avez vu arrête le l'exécution du programme en attendant l'entrée. Vous pourriez peut-être créer une figure et définir son '' WindowKeyPressFcn '' afin qu'il change son 'UserData' de true à false. La boucle 'while' dans le programme serait alors' while (figureHandle, 'UserData') ' –

Répondre

-1
active = true; 
while active == true 
    active = input('Enter true or false '); 
    disp(rand) 
    pause(1) 
end 
+0

Nivi, cette méthode a le même résultat que ma première tentative. Vous devez entrer une valeur à chaque itération de la boucle pour continuer. L'idée était que la boucle fonctionnerait continuellement jusqu'à ce qu'une commande soit entrée pour l'arrêter. –

+0

Je vois, je pensais que vous vouliez améliorer votre code prev. Je l'ai fait dans Labview mais pas Matlab. Je pense que vous pouvez le faire en utilisant des interfaces graphiques. – Nivi