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

Interfaces Graphiques Discussion :

Code dans la fonction GUI_Opening qui ne s'execute pas


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut Code dans la fonction GUI_Opening qui ne s'execute pas
    Bonjour;
    J'ai un problème avec mon GUI. J'ai mis un ensemble d'instructions dans la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function PitchDetection_OpeningFcn(hObject, eventdata, handles, varargin)
    Je veux que ces instructions s'exécutent lors de l'ouverture de mon GUI mais ça ne marche pas comme prévu.
    Comment faire? Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Citation Envoyé par AsmaHaj
    ça ne marche pas comme prévu.
    Peux-tu nous expliquer un peu plus en détails ce qui ne fonctionne pas ? Matlab renvoie-t-il une erreur ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Bonjour;
    Mon interface,lors de son ouverture, récupère des valeurs de variables à partir d'un fichier.mat (tels que la matrice d'un signal, fréquence d'échantillonnage,...). L'ouverture de cette fenêtre est supposée accompagnée de l'affichage des valeurs récupérés. Mais ça ne marche pas.
    Mon bout de code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function InterfaceSynthese_OpeningFcn(hObject, eventdata, handles, varargin)
    global Signal;
    global fs;
    load fichier;
    plot(Signal);
     
    % Choose default command line output for InterfaceSynthese
    handles.output = hObject;
    % Update handles structure
    guidata(hObject, handles);
    L'execution n'affiche aucune erreur.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Peux-tu ajouter la commande WHOS après la définition des variables globales et nous montrer ce que Matlab retourne ? Est-ce que la variable "fichier" est connue dans la fonction ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Bonjour;
    J'ai ajouté l'instruction whos. Elle m'a affiché juste les variables déclarées dans le fichier InterfaceSynthese.m (le fichier que je veux executer). 'fichier' n'est pas reconnue. J'ai remarqué que le fichier 'fichier.mat' pert son contenu après la fermeture totale de l'application. Est ce que cela caractérise les commandes 'save et load' ou c'est un problème de mon code? Est ce que cela a un rapport avec le problème que j'ai posé initialement?

  6. #6
    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
    D'après ce que je comprends "fichier" n'est pas une variable mais réellement le nom de ton fichier donc c'est normal...
    Question : pourquoi définis-tu tes variables Signal et fs en global ? voir la FAQ variables

    Quelles sont les variables enregistrées dans ton fichier "fichier" ?
    Si tu fais un whos après le chargement (load) qu'obtiens-tu ?
    As-tu des endroits dans ton code où tu fais des save sur ton fichier "fichier" ? (ce qui pourrait expliquer qu'il "perde son contenu")
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Bonjour;
    J'ai déclaré mes variables global pour que toutes les fonctions du script puissent les manipuler et leur apporter des modifications si nécessaire. J'ai essayé avec persistent mais ça n'a pas marché.
    En ce qui concerne save, j'ai fait un save d'une nouvelle variable plus loin dans le code. J'ai vérifié le contenu du fichier avant et après, ça n'a pas détruit le contenu du fichier.

  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
    bon on va essayer de revenir à ton problème de départ maintenant...
    Tu disais :
    Citation Envoyé par AsmaHaj
    Mais ça ne marche pas
    C'est quoi qui ne marche pas ? Le plot ?
    Es-tu sûr que ta sous-fonction est exécutée ? (à priori oui puisque ton whos faisait un affichage si je comprends bien)
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut Problème de départ
    Bonjour;
    Ceux sont les instructions dans la fonction qui s'execute lors de l'ouverture de la fenêtre qui ne marchent pas. Le corps de la fonction est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function InterfaceSynthese_OpeningFcn(hObject, eventdata, handles, varargin)
    global Signal;
    global fs;
    load fichier;
    plot(Signal);
    La fonction marche comme il faut si Run est lancé à partir de cette fonction directement Mais ça ne marche pas lorsque elle est lancée à partir d'une autre fonction (bouton dans une autre interface) Aucune instruction dans la fonction ne s'execute. (Sachant que le fichier de sauvegarde 'fichier.mat' contient toutes les variables nécessaires)

  10. #10
    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
    Et quel est l'élement de ton GUI qui a le tag "InterfaceSynthese" ?
    Peux-tu ouvrir ta fenêtre et lancer la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    elem = findall('Tag','InterfaceSynthese')
    %Si elem est vide c'est que tu as dû renommer InterfaceSynthese =>
    %il faut aussi changer dans le nom du callback...
     
    %Sinon lancer :
    get(elem)
    %et poster le résultat
    Règles du Forum

    Adepte de la maïeutique

  11. #11
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 43
    Points
    43
    Par défaut
    Bonjour;
    ça y est, j'ai résolu mon problème. La source de ce problème était la méthode de l'appel de la deuxième interface à partir de mon interface actuelle.
    j'utilisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    open('\ma_deuxième_interface.fig');
    Or j'ai du utiliser une autre méthode qui est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    run ma_deuxième_interface;
    Merci à tous

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

Discussions similaires

  1. [PDO] Erreur en mettant un code dans une fonction
    Par jissey74 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/06/2014, 18h09
  2. [XL-2007] Trouver un bout de code dans des fichiers Excel qui se trouve dans un répertoire
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/11/2010, 16h23
  3. fonction javascript qui ne s'execute pas
    Par Neferet dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 20/01/2009, 17h08
  4. [VS2005]Masquer des blocs de code dans une fonction
    Par tomny dans le forum Visual Studio
    Réponses: 2
    Dernier message: 09/12/2008, 16h53
  5. Réponses: 15
    Dernier message: 22/07/2005, 09h49

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