Arrêter une infinie alors que la boucle en appuyant sur une touche dans Matlab
J'ai une boucle while infinie, et je veux arrêter quand je presse une touche du clavier.
Pseudocode:
While(1)
do stuff;
listening for key;
if key is pressed
break;
end
end
La fonction waitforbuttonpress
me rend appuyez sur la touche, donc pas de chance.
J'ai trouvé aucune option sur le web.
Vous savez que Ctrl+C va mettre fin à quelque chose, non?
Je veux terminer le tout, pas l'ensemble du programme.
Suivez ce lien: undocumentedmatlab.com/blog/waiting-for-asynchronous-events . Regardez la section où vous souhaitez définir un délai d'attente pour
avez-vous trouvé une solution?
Je veux terminer le tout, pas l'ensemble du programme.
Suivez ce lien: undocumentedmatlab.com/blog/waiting-for-asynchronous-events . Regardez la section où vous souhaitez définir un délai d'attente pour
waitfor
.avez-vous trouvé une solution?
OriginalL'auteur SamuelNLP | 2014-05-21
Vous devez vous connecter pour publier un commentaire.
Je suppose que si vous ne voulez pas recourir à le multithreading (un thread de faire le calcul dans la boucle while, un autre en attente pour l'entrée et la configuration d'un sentinelles de la valeur de briser la boucle while), vous pouvez essayer de mettre en œuvre la rupture de la boucle sur la capture d'un clavier d'interruption (ctrl-c). Cela devrait être possible, mais dans un peu hackish façon.
OriginalL'auteur timgeb
OK, je sais c'est un peu tard, mais, j'ai trouvé une solution après une longue chasse. Quand une figure de la fenêtre, vous pouvez faire ceci:
Lorsqu'une touche est enfoncée alors que le focus se trouve dans une figure, il définit la propriété 'currentchar'. Testé dans R2010b.
OriginalL'auteur Sanjay Manohar
Graphique de la solution que j'ai trouvé dans Matlab central
OriginalL'auteur Shan