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 :

Appel d'une fonction à partir d'une interface GUI


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut Appel d'une fonction à partir d'une interface GUI
    Bonjour à tous!!

    J’aimerai savoir, comment gérer plusieurs fonctions dans un même fichier par rapport à plusieurs appels de bouton dans un interface. Par exemple ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    %Dans mon fichier principal lié à l’interface
     
    %Quand j’appuie sur connecte ;
     
    % le programme appel la function 
    connect() 
     
    %et ensuite quand j’appuie sur deconnecte, 
    %le programme appel la function :
    deconnect
    Votre aide me serait vraiment utile !! merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le tutoriel Développement efficace des interfaces graphiques est là pour ça

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    J’ai bien vu ce site plusieurs fois ; mais je ne trouve pas mes solutions.

    1. Il s’agit ici concernant la fonction principale d’un programme fait à la main mais non avec guide, le mien c avec guide. Mais j’imagine que rien ne change.
    2. Les sous fonctions ici a comme paramètre ( obj, event) qui m’affiche à tout moment undefined obj et event


    Je m’explique par rapport à ce que je veux et ce que j’ai pu prendre en compte sur le site mais qui ne marche pas du tout.

    Mon CODE

    Mes sous fonctions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    %configuration
    function  [Y1, Y2, Y3] = Configuration ()
     
     
    global Y1
    global Y2
    global Y3
     
    [ corps du programme]
     
    end
     
     
    %connection
     
    function object = connection(Y1, Y2, Y3)
     
    global Y1
    global Y2
    global Y3
    global object
    [ corps du programme]
     
    End
    Mon programme principale fait par guide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    % --- Executes on button press in configuration.
    function config_Callback(hObject, eventdata, handles)
    % hObject    handle to config (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global Y1
    global Y2
    global Y3
    [Y1, Y2, Y3] = Configuration ()
     
     
    % --- Executes on button press in connecte.
    function connecte_Callback(hObject, eventdata, handles)
    % hObject    handle to connecte (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    global Y1
    global Y2
    global Y3
    global object
    object = connection (Y1, Y2, Y3)
    À partir de ce petit exemple, l’appel à la fonction ne marche pas car elle ne trouve pas les variables Y1, Y2, Y3 ; qui d’après moi est invisible.

    J’aimerai vraiment que quelqu'un m’apporte une réponse à mon problème svp.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans ton premier code, les déclarations global n'ont pas leur place, elles sont à supprimer étant donné que tu passes les variables en paramètre.

    Concernant obj et event, ne serait-ce pas plutôt unused ?
    Pourrait-on avoir des messages d'erreurs complets et explicites ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    J’ai refait le programme en utilisant ‘(obj, event) comme paramètres et de laisser les variables globales à leur place.

    Quand, j’appuie sur configuration, il n’y a aucun problème, ça me montre les variables dans command windows mais non dans workspace.
    Ensuite, quand j’appuie sur connection,, il y a erreur car d’après moi, elle ne voit pas les variables.
    Je constate cela car quand je relance la connection et avant, je tape d’abord dans commande
    la connexion marche très bien. Bien sûr j’ai sauvegardé les variables en sorties du configuration.

    Comme erreur, j’ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    ??? Error using ==> icdevice.icdevice at 281
    An error occurred while executing the driver create code.
    Undefined function or variable 'ps2000Enuminfo'.
    If the error is not an instrument error, use MIDEDIT to inspect the driver.
     
    Error in ==> ouvrir_port at 19
    ps2000DeviceObj = icdevice('picotech_ps2000_generic.mdd')  % Objet
     
    Error in ==> reference_base>connecte_Callback at 135
    ouvrir_port;
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> reference_base at 43
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==> @(hObject,eventdata)reference_base('connecte_Callback',hObject,eventdata,guidata(hObject))
     
    ??? Error while evaluating uicontrol Callback
    Les Y et object dans mon code d'avant sont juste des exemples.

    J’avoue que tout cela me parait bizarre !!

  6. #6
    Invité
    Invité(e)
    Par défaut
    L'erreur se situe au niveau du constructeur de la classe icdevice, apparemment ps2000Enuminfo n'a pas été défini.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    En réalité j’ai toutes ses paramètres en sorties de la configuration :
    ChannelSettings
    Ps2000EnumInfo
    Ps2000Methodinfo
    ps2000Structs

    simpleTrigger

    channelSettings

    Ce sont des strutures.
    Mais l’erreur m’affiche tjrs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    An error occurred while executing the driver create code.
    Attempt to execute SCRIPT ps2000Enuminfo as a function:
    Donc, je ne vois pas trop comment contourner cela sans tricher en tapant dans commande

  8. #8
    Invité
    Invité(e)
    Par défaut
    Structures ? Tu en es sûr ? Là MATLAB signale que ps2000Enuminfo est un fichier script, et qu'il tente de l'appeler comme une fonction

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Nom : sary.jpg
Affichages : 741
Taille : 29,3 Ko

    c'est ce que je vois, je ne sais pas si me trompe.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Les variables dans le workspace sont prioritaires sur les fichiers script/fonction du même nom, mais tu as pourtant l'erreur sur le fichier... Tu ne dois pas charger ces structures au bon endroit.
    Je te conseille tout d'abord de faire des essais en dehors de ton interface graphique.
    Regarde aussi le retour de which -all ps2000Enuminfo

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Tous d’abord merci pour votre réponse.

    Actuellement, j’essaie vraiment d’exécuter les fonctions en dehors du GUI.
    Quand je fais,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    which -all ps2000Enuminfo
    Cela m’affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ps2000Enuminfo is a variable.
    C:\Users\Samy\Desktop\NEWSDKPICO_2000 - Copie\MATLAB\ps2000\ps2000Enuminfo.m  % Shadowed
    Ce fichier existe bien dans mon dossier principale ps2000 par contre, à l’intérieur il n’y a à pas de programme( rien)
    -------------------------
    Il s'agit d' une variable de sortie appelé dans un autre fichier PS2000MFILE.
    Car dans ma fonction de configuration ; j’ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %% LOAD ENUMS AND STRUCTURES
    [ps2000Methodinfo, ps2000Structs, ps2000Enuminfo, ps2000ThunkLibName]=PS2000MFile
    Du coup, je ne vois pas trop ou est le pbl!

Discussions similaires

  1. Appeler une fonction à partir d'une autre fonction
    Par touta1 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2009, 18h15
  2. Réponses: 5
    Dernier message: 22/05/2008, 14h42
  3. Réponses: 4
    Dernier message: 30/11/2007, 14h46
  4. Appel à une fonction à partir d'une chaine de caractères
    Par becks dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/09/2007, 12h14
  5. [javascript] appel d'une fonction à partir d'une popup
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/08/2005, 15h14

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