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 :

Définition et implémentation variables


Sujet :

Interfaces Graphiques

  1. #1
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut Définition et implémentation variables
    Bonjour, je développe actuellement une GUI sous Matlab afin de calculer des débits théoriques et réels sur la 4G. J'ai donc réalisé une GUI avec plusieurs entrées tel que la Bande passante, le nb de personne, le degré de protection etc...

    Mais après avoir lu les tuto je ne comprends pas comment travailler avec mes variables issues de mes fonctions. Je m'explique, en C je défini ma variable puis je l’implémente et au final l'affiche via un printf par exemple.

    Dans un de mes cas, j'ai un pop up menu avec un choix allant de 1 à 15 et suivant le choix de l'utilisateur, cela doit afficher un nombre dans une edit list positionné juste en dessous. J'aimerais donc définir une variable qui récupère ce nombre, puis utiliser cette variable dans mon edit list pour l’implémenter et l'afficher, voila ce que j'ai essayé en m'inspirant des tutos mais ça à plus l'air foireux qu'autre chose haha...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function CQIIN_CreateFcn(hObject, eventdata, handles)
     
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white'); 
    end
    protecIN=0;
     
     
     
    function PourcentageProtecOUT_CreateFcn(hObject, eventdata, handles)
     
    protecOUT=(1-protecIN/1024)*100;
    setappdata(gcf,'valeur_de_protection',protecOUT);
    tel quel je devrais afficher 100 étant donné que ma variable protecIN est défini à 0 mais je n'affiche rien du tout. Merci d'avance

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

    Citation Envoyé par Lord Bouillon Voir le message
    mais je n'affiche rien du tout.
    Hormis une erreur qui te dit que protecIN n'est pas défini

    Pour reprendre ta méthode avec l'utilisation de setappdata :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function CQIIN_CreateFcn(hObject, eventdata, handles)
     
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white'); 
    end
    setappdata(gcbf, 'protecIN', 0) % On stocke la valeur
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function PourcentageProtecOUT_CreateFcn(hObject, eventdata, handles)
    protecIN = getappdata(gcbf, 'protecIN'); % On la récupère
    protecOUT=(1-protecIN/1024)*100;
    Si tu souhaites de plus l'afficher dans un objet Text ou autre, il te manque à la suite une ligne du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.Tag_de_ton_objet, 'String', protecOUT)

  3. #3
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    j'ai fait ça et ça a l'air pas trop mal du tout merci ! Par contre ça n'affiche toujours rien quand je remplace le tag par ce lui de mon edit bloc.. Je me suis dit, est ce qu'il faut pas un event pour en quelque sorte rafraîchir la GUI afin qu'elle affiche le résultat ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Alors je n'y avais pas prêté attention, mais la seconde fonction est aussi un CreateFcn... rien ne garanti alors que la première fonction sera appelée avant celle-ci, et donc que protecIN sera déjà fixé. la structure handles y est aussi vide à l'intérieur, il faut alors utiliser l'entrée hObject.
    Je suggèrerai d'initialiser tous les éléments non fixes dans l'OpeningFcn.

    À noter (il me semble que ce point n'est pas clair) : setappdata ne sert aucunement à afficher quelque chose, il ne sert qu'à stocker en interne des valeurs pour les récupérer par la suite avec getappdata. C'est un mécanisme qui sert à faire passer des valeurs entre les différentes fonctions d'une interface. C'est tout.

    PS : n'hésite pas à lire et montrer les messages d'erreur que tu obtiens, ça aide

  5. #5
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Ouais effectivement j'ai l'impression d'être encore plus perdu en fait haha

    Le truc en plus est que je n'ai pas d'erreur mais que des warning en mode "this function might be unused" mais c'est parce que je ne l'ai pas encore implémenté...

    Si j'ai bien compris set permet de stocker la valeur et get permet de la récupérer si on ne se trouve pas dans la fonction ou la valeur a été définit. Mais du coups, comment puis je faire comprendre à mon bloc édit que je veux afficher cette valeur..?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Lord Bouillon Voir le message
    Si j'ai bien compris setappdata permet de stocker la valeur et getappdata permet de la récupérer si on ne se trouve pas dans la fonction ou la valeur a été définit.
    set et get sont deux autres fonctions distinctes, qui elles interfèrent bien avec les objets graphiques, et justement :

    Citation Envoyé par Winjerome Voir le message
    Si tu souhaites de plus l'afficher dans un objet Text ou autre, il te manque à la suite une ligne du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set(handles.Tag_de_ton_objet, 'String', protecOUT)

  7. #7
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Ok j'ai bien compris maintenant merci beaucoup ! Je comprends pas pourquoi cela ne marche toujours pas, suivant tes conseils j'ai donc défini ma variable protecIN dans la openinFcn pour être sur qu'elle soit définit avant l'apparition de ma fonction DegreProtecOut tel quel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Test4Gbis_OpeningFcn(hObject, eventdata, handles, varargin)
     
    handles.output = hObject;
     
    % Update handles structure
    guidata(hObject, handles);
    axes(handles.axes1)   % j'ai rajouté un axe juste pour mettre un logo définit en dessous
    imshow('ESME1.jpg')
    setappdata(gcbf, 'protecIN', 0)
    Puis je recupère la valeur de protecIN dans ma fonction Edit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function DegreProtecEditTag_CreateFcn(hObject, eventdata, handles)
     
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    protecIN = getappdata(gcbf, 'protecIN');
    protecOUT=(1-protecIN/1024)*100;
    set(handles.DegreProtecEditTag, 'String', protecOUT)

    Le problème est que je n'ai toujours rien, de plus comme ceci je me doute que je ne pourrais récupérer que la valeur initialisé à 0 dans ma variable protecIN et je ne pourrais donc pas récupérer la valeur du pop up menu... Si je dois la déclarer dans l'openingFctn je ne pourrais pas récupérer la valeur de protecIN avant que le calcul soit fait sans qu'elle soit autre que 0 non ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Problème résolu sur le chat.
    Il s'agissait des récupérer la valeur de protectIN depuis la fonction Callback du popup pour mettre à jour l'affichage du texte selon l'élément sélectionné (les valeurs affichées correspondant à leur indices, on pouvait directement faire protectIN = get(hObject, 'Value');) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function niveauCQIpopupTag_Callback(hObject, eventdata, handles)  
    protecIN = get(hObject, 'Value')  
    protecOUT=(1-protecIN/1024)*100;  
    set(handles.DegreProtcTextOutTag, 'String', protecOUT)
    L'utilisation des setappdata/getappdata est devenue inutile.
    L'objet Edit a été remplacé par un objet Static Text, sa fonction CreateFcn supprimée, l'objet ne devant servir qu'à l'affichage.

  9. #9
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Hello ! J'étais en vacances donc je n'ai pas pu repasser plus tot, mais après m’être remis sur mon projet me revoilà dans des problèmes ! Donc j'arrive bien a afficher le resultat dans la fenêtre comme on s'était séparé la dernière fois mais je me suis rendu compte que le calcul n'étais pas aussi simple.

    En effet, je en ce moment, je récupère la valeur de CQI dans la variable protecIN qui vari de 1 à 15 puis je fait : protecOUT=(1-protecIN/1024)*100;

    Or cela ne marche pas comme ça (ça aurais été trop simple ^^' ), en effet, pour chaque valeur de CQI, une certaine valeur de protecIN est attribuée, par exemple, pour CQI = 1, protecIN = 72.
    Pour CQI = 2, protecIN = 120 etc... Je n'ai pas voulu m'embeter car mon code ne doit pas être "beau" mais fonctionnel, je suis donc passé par la méthode if elseif plutot qu'un tableau ou un if case.

    J'ai donc fait ceci

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    function niveauCQIpopupTag_Callback(hObject, eventdata, handles)
     
    protecIN = get(hObject, 'Value');
    global A;
     
    if protecIN ==1
        protecIN == 72;
        A==1.2;
    elseif protecIN == 2
        protecIN == 120;
        A==1.2;
    elseif protecIN == 3
        protecIN == 193;
        A==1.2;
    elseif protecIN == 4
        protecIN == 308;
        A==1.2;
    elseif protecIN == 5
        protecIN == 449;
        A==1.2;
    elseif protecIN == 6
        protecIN == 602;
        A==1.2;
    elseif protecIN == 7
        protecIN == 378;
        A==2.5;
    elseif protecIN == 8
        protecIN == 490;
        A==2.5;
    elseif protecIN == 9
        protecIN == 616;
        A==2.5;
    elseif protecIN == 10
        protecIN == 466;
        A==3.7;
    elseif protecIN == 11
        protecIN == 567;
        A==3.7;
    elseif protecIN == 12
        protecIN == 666;
        A==3.7;
    elseif protecIN == 13
        protecIN == 772;
        A==3.7;
    elseif protecIN == 14
        protecIN == 873;
        A==3.7;
    elseif protecIN == 15
        protecIN == 948;
        A==3.7;
     
    protecOUT=(1-protecIN/1024)*100; 
    set(handles.DegreProtcTextOutTag, 'String', protecOUT)
    Je récupère la valeur de CQI dans protecIN puis je la modifie dans le if pour obtenir la valeur désiré. La variable A est un coéficiant qui va jouer dans mon calcul de débit total. Il n'intervient pas dans mon calcul plus bas mais il dépend lui aussi directement du CQI donc je suis obligé de le définir ici, je l'ai définit en global pour être sur de pouvoir l'utiliser partout.

    Et donc au final cela ne compile pas et me donne les erreurs suivantes :
    Line 119: FUNCTION keyword use is invalid here. This might cause later messages about END.
    Line 119: Parse error at ')' :usage might be invalid MATLAB syntax

    Or ces erreurs sont sur la create Fct que je n'ai pas touché ! J'ai vérifié mais je ne vois pourtant pas d'erreur de syntaxe... (la ligne 119 correspond à la ligne de déclaration de la CreatFct)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    % --- Executes during object creation, after setting all properties.
    function niveauCQIpopupTag_CreateFcn(hObject, eventdata, handles)
     
    if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
        set(hObject,'BackgroundColor','white');
    end
    Si quelqu'un pourrai m'éclairer, merci d'avance !!! =)

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bon retour

    Alors l'erreur que tu obtiens vient de l'oublie du end à la fin de tous ces if/elseif.

    Attention : pour assigner une valeur, on utilise l'opérateur = et non == qui lui sert à comparer.

    Un tableau aurait en effet été plus approprié ici :
    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
    matchingValues= [...
    % protecIN       A
       72.0000    1.2000
      120.0000    1.2000
      193.0000    1.2000
      308.0000    1.2000
      449.0000    1.2000
      602.0000    1.2000
      378.0000    2.5000
      490.0000    2.5000
      616.0000    2.5000
      466.0000    3.7000
      567.0000    3.7000
      666.0000    3.7000
      772.0000    3.7000
      873.0000    3.7000
      948.0000    3.7000];
     
    index = get(hObject, 'Value');
    protecIN = matchingValues(index,1);
    A = matchingValues(index,2);

  11. #11
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    ça marche c'est super ! Je te tiens au courant pour la suite car je ne devrais pas trop avoir de problèmes pour finir ! Merci bcp =)

  12. #12
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Bon au final j'ai un problème... Je veux calculer mon débit théorique maximum a partir des données que j'ai récupéré dans mon tableau CQI (a savoir la variable A) donc je l'appelle dans cette fonction (je l'ai définit en global) puis je fait la même méthode en passant par un tableau pour attribuer les différentes valeurs de ma bande passante dans la variable bP mais cela ne m'affiche rien dans mon text ...

    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
    function BPpopupTag_Callback(hObject, eventdata, handles)
     
    bP = get(hObject, 'Value');
    matchingValues= [...
     
      6.0000    
      15.0000    
      25.0000    
      50.0000    
      75.0000    
      100.0000];
     
    index = get(hObject, 'Value');
    bP= matchingValues(index,1);
     
     
    debitTH = (84*bP*A*2*10^3)/10^6;
    set(handles.DebitThmaxTextTag, 'String', debitTH)
    Je ne crois pourtant pas avoir fait d'erreur grossière ou alors je suis aveugle ^^

    Undefined function or variable 'A'.
    
    Error in Test4Gbis>BPpopupTag_Callback (line 57)
    debitTH = (84*bP*A*2*10^3)/10^6;
    
    Error in gui_mainfcn (line 96)
            feval(varargin{:});
    
    Error in Test4Gbis (line 18)
        gui_mainfcn(gui_State, varargin{:});
    
    Error in @(hObject,eventdata)Test4Gbis('BPpopupTag_Callback',hObject,eventdata,guidata(hObject))
    
     
    Error while evaluating uicontrol Callback
    Voila les erreurs pour ci dessus, or je ne comprends pas pourquoi il me dit que A est undifined car je l'ai pourtant mis n global ... Elle devrait être accessible partout non ?

  13. #13
    Invité
    Invité(e)

  14. #14
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Merci j'avais en effet oublié ça... ça marche maintenant !
    J'ai du mal a mémoriser toutes ces petites règles haha !

  15. #15
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Je veux maintenant avoir ce débit par personne, j'ai donc mis une edit box dans laquelle l'utilisateur rentre son nombre de personnes, j'ai par la suite repris la meme formule et divisé par ma variable nbpers, mais cela me donne un resultat inf dans la edit box peut importe le nombre de personnes que je rentre or en faisant un test j'ai un débit théorique de 15.12 mb donc pour 160 pers c'est 15.12/160 ce qui ne tends pas vers 'l'infini ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    debitTH = (84*bP*A*2*10^3)/10^6;
    debitTHpers = ((84*bP*A*2*10^3)/10^6)/nbPers;
    set(handles.DebitThPersonnelTextTag, 'String', debitTHpers)
    set(handles.DebitThmaxTextTag, 'String', debitTH
    je recupere nbpers via cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function NbPersEditTag_Callback(hObject, eventdata, handles)
     
    global nbPers;
    nbPers = get(hObject, 'Value');
    cela viendrais surement du fait que ma variable nbpers mais je ne vois pas comment, j'ai bien redélclaré cette meme variable en global pour éviter l'erreur précédente

  16. #16
    Invité
    Invité(e)
    Par défaut
    C'est un objet Uicontrol Edit, c'est donc la propriété String qui représente la chaine rentrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbPers = get(hObject, 'ValueString');
    De là tu obtiens la chaine qu'il faut convertir en valeur numérique avec str2double.

  17. #17
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Salut ! Alors j'ai presque finit mon projet hourra !!! Par contre j'ai un souci avec un if else dans ma gui ! Je m'explique... J'ai un pop up menu qui est composé de 2 choix : Downlink en 1 et Uplink en 2

    Suivant le choix de l'utilisateur les calculs de débit change j'ai donc codé cela :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    function pushbutton1_Callback(hObject, eventdata, handles)
     
    global A;
    global nbPers;
    global protecIN;
    global nbRe;
    global bP;
    global reCan;
    global tailleFich;
    global upDown;
    global nbReUP;
     
    if upDown == Downlink
    debitTH = (84*bP*A*2*10^3)/10^6;
    debitTHpers = ((84*bP*A*2*10^3)/10^6)/nbPers;
    nbRe =(84*bP*2*10^3);
    debitReel = ((nbRe-reCan)*A*protecIN/1024)/10^6;
    debitReelPers = (((nbRe-reCan)*A*protecIN/1024)/10^6)/nbPers;
    tempsFichReel = tailleFich/debitReel;
    tempsFichTh = tailleFich/debitTH;
     
    set(handles.tempsDeTransfertTextReelTag, 'string', tempsFichReel)
    set(handles.TempsFichTHTextTag, 'string', tempsFichTh)
    set(handles.DebitReelPersonnelTextTag, 'string', debitReelPers)
    set(handles.DebitReelMaxTextTag, 'string', debitReel)
    set(handles.DebitThPersonnelTextTag, 'String', debitTHpers)
    set(handles.DebitThmaxTextTag, 'String', debitTH)
     
    Y = [debitTH, debitReel];
    ax = handles.axes2;
    bar(ax,Y,0.2);
    Y2 = [debitTHpers, debitReelPers];
    ax3 = handles.axes3;
    bar(ax3, Y2, 0.2, 'r');
     
    else upDown == Uplink
    debitTH = (84*bP*A*2*10^3)/10^6;
    debitTHpers = ((84*bP*A*2*10^3)/10^6)/nbPers;
    debitReelUP = (nbReUP*A*protecIN/1024)/10^6;
    debitReelUPPers = ((nbReUP*A*protecIN/1024)/10^6)/nbPers;
    tempsFichReelUP = tailleFich/debitReelUP;
    tempsFichThUP = tailleFich/debitTH;
     
    set(handles.tempsDeTransfertTextReelTag, 'string', tempsFichReelUP)
    set(handles.TempsFichTHTextTag, 'string', tempsFichTh)
    set(handles.DebitReelPersonnelTextTag, 'string', debitReelUPPers)
    set(handles.DebitReelMaxTextTag, 'string', debitReelUP)
    set(handles.DebitThPersonnelTextTag, 'String', debitTHpers)
    set(handles.DebitThmaxTextTag, 'String', debitTH)
     
    Y = [debitTH, debitReelUP];
    ax = handles.axes2;
    bar(ax,Y,0.2);
    Y2 = [debitTHpers, debitReelUPPers];
    ax3 = handles.axes3;
    bar(ax3, Y2, 0.2, 'r');
    end
    le probleme est le suivant : Error in Test4Gbis>pushbutton1_Callback (line 170)
    if upDown == Downlink


    Or j'ai trouvé un exemple : if get(popupmenu1.handles,'value')==1
    j'ai donc créé la variable upDown que j'ai mis en global qui recupere la value du pop up menu afin de la comparer dans mon if/else comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function DownOrUpPopupTag_Callback(hObject, eventdata, handles)
     
    global upDown;
    upDown = get(hObject, 'Value');

  18. #18
    Invité
    Invité(e)
    Par défaut
    N'oublie pas de mentionner le message d'erreur au complet, sans quoi il est difficile de déterminer la cause exacte.

    Toujours est-il que je ne vois aucune définition des variables Downlink et Uplink.

  19. #19
    Membre confirmé
    Homme Profil pro
    Ecole d'ingénieur
    Inscrit en
    Avril 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ecole d'ingénieur

    Informations forums :
    Inscription : Avril 2014
    Messages : 80
    Par défaut
    Voila le message d'erreur en entier :

    Warning: The value of local variables may have been changed to match the
             globals.  Future versions of MATLAB will require that you declare
             a variable to be global before you use that variable. 
    > In Test4Gbis>niveauCQIpopupTag_Callback at 106
      In gui_mainfcn at 96
      In Test4Gbis at 18
      In @(hObject,eventdata)Test4Gbis('niveauCQIpopupTag_Callback',hObject,eventdata,guidata(hObject)) 
    ans =

    1

    Undefined function or variable "tempsFichTh".
    
    Error in Test4Gbis>pushbutton1_Callback (line 202)
    set(handles.TempsFichTHTextTag, 'string', tempsFichTh)
    
    Error in gui_mainfcn (line 96)
            feval(varargin{:});
    
    Error in Test4Gbis (line 18)
        gui_mainfcn(gui_State, varargin{:});
    
    Error in @(hObject,eventdata)Test4Gbis('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
    
     
    Error while evaluating uicontrol Callback

    Et btw, je me suis trompé dans mon copier coller plus haut, dans mon if else je ne compare pas la variable upDown à Downlink ou Uplink mais respectivement à 1 et 2 (choix 1, choix 2)

  20. #20
    Invité
    Invité(e)
    Par défaut
    Dans un else seul, il n'y a pas de condition qui suit, on utilise sinon elseif.

    Et dans son code, je remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tempsFichThUP = tailleFich/debitTH;
    alors que l'on a par la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        set(handles.TempsFichTHTextTag, 'string', tempsFichTh)
    Pour l'avertissement, tu as dû déclarer en global une variable passée en paramètre.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/06/2008, 10h09
  2. Cherche définition d'une variable
    Par acacia dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 30/05/2008, 18h54
  3. Réponses: 2
    Dernier message: 24/10/2007, 17h00
  4. Définition dynamique de variables
    Par Cris++ dans le forum Général VBA
    Réponses: 7
    Dernier message: 12/05/2007, 15h28
  5. Réponses: 1
    Dernier message: 21/12/2005, 19h08

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