IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Comment attendre l'exécution de plusieurs fonctions ?


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut Comment attendre l'exécution de plusieurs fonctions ?
    Bonjour,

    J'ai un petit problème, voilà ce que j'aimerais faire :
    J'ai une fenêtre avec des paramètres à entrer, cette fenêtre a un bouton ok, qui, une fois qu'on appuie dessus, lance une autre fenêtre avec d'autres paramètres (et cela plusieurs fois de suite). Cette fenêtre est lancée par un programme (qu'on appelera 'run.m').
    Ce que j'aimerais, c'est qu'une fois avoir lancé ma fenêtre, mon programme run puisse attendre que toutes mes fenêtres aient été lancées avant d'exécuter la suite du code si c'est possible, je vais essayer plusieurs choses en attendant votre réponse.

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    voir la commande waitfor, et les see also : uiwait, uiresume...
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Oui j'avais déjà regardé ces fonctions, le problème est que wait et les autres attendent, par exemple, la fin de l'exécution D'UNE fenêtre et non pas de la fenêtre ET toutes celles qu'elle lance.

    En gros mon code fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    % je lance ma premiere fenêtre
    % FPresentation lance à son tour une autre fenêtre pour la saisie d'infos
    FPresentation();
    
    % je lance un autre programme
    [accept volume] = mainProg();
    Ce que j'aimerais, c'est que l'utilisateur est pu parcourir toutes les fenêtres et rentrer les infos avant que 'mainProg' ne s'exécute.

    Est-ce que c'est possible ?

    Merci !

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Tu peux "tricher" en ne fermant ta première fenêtre qu'une fois toutes les infos remplies...Et la rendre invisible en attendant.
    Un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    handleFigure=FPresentation();%ce serait bien de récupérer le handle de ta figure en sortie de ta fonction
    waitfor(handleFigure);
     
    [accept volume] = mainProg();
    et dans FPresentation()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %faire ce qu'il y a faire dans cette fenetre et avant l'appel de la 2ème :
    setappdata(0,'handlePremiereFenetre',handleFigure);
    set(handleFigure,'Visible','off');
    et à la fin de la dernière fenêtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    h=getappdata(0,'handlePremiereFenetre');
    delete(h);
    J'ai l'impression de ne pas avoir été super claire, mais ça donne une direction j'espère.

    Sinon tu peux essayer de voir si la propriété WindowStyle='modal' peux t'aider (on ne peux rien faire tant que la fenêtre n'est pas fermée).
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Ca a l'air de fonctionner, merci beaucoup, je vais faire quand même pas mal de tests avant de crier victoire ...
    , merci encore !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Et bien en fait ça ne marche pas, le programme attend bien une fois la première fenêtre lancée mais dés que je passe à la seconde, l'exécution du code continue, même si je mets seulement la première fenêtre en 'caché' et que je suis ce qui est marqué ci-dessus. Je ne sais plus comment faire !

  7. #7
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    C'est bizarre.
    Eventuellement, si ce n'est pas confidentiel, ni trop gros, tu peux mettre les fichiers que tu utilises ?
    Règles du Forum

    Adepte de la maïeutique

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Oui ça ne marche pas car tu fais le close de ta fenêtre dans le code de cette fenêtre...
    Il faut donc enlever le close de ta première fenêtre (FSetParam1 dans pushButtonGoFSetParam1_Callback)

    Et dans la 2ème fenêtre quand tu la fermes mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    close(handles.FSetParam2);%on a fini avec la fenetre 2
    %donc on ferme aussi fenetre 1 pour que le prog continue :
    h=getappdata(0,'handlePremiereFenetre');
    delete(h);
    C'était tout l'intérêt du set/getappdata de pouvoir récupérer le handle de la fenêtre principale pour la fermer depuis une autre fonction.
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Ah ! Bon, je vais essayer ça ce soir, merci encore !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    C'est super : ça marche !! Je n'avais pas vu que je faisais un close à la fin de ma fonction ... Je l'ai mis dans la première partie du if (là où il aurait dû être depuis le début).

    Merci beaucoup !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécution de plusieurs fonctions
    Par July171292 dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 09/04/2015, 15h51
  2. Attendre l'exécution d'une fonction
    Par zentaf dans le forum Qt
    Réponses: 9
    Dernier message: 15/03/2013, 16h32
  3. Réponses: 3
    Dernier message: 10/06/2009, 16h50
  4. Comment attendre l'exécution d'une methode?
    Par linalin dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 01/05/2008, 21h36
  5. Exécuter simultanément plusieurs fonctions
    Par benj63 dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/10/2005, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo