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 :

Problème d'interaction entre l'interface graphique et le programme


Sujet :

Interfaces Graphiques

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème d'interaction entre l'interface graphique et le programme
    Bonjour,
    J'ai besoin d'un peu d'aide. J'ai créer un programme avec un interface graphique pour les utilisateurs. L'utilisateur doit entrer des valeurs(nombres) dans un edit box et ensuite je reprend ces nombres pour faire des calculs dans une boucle. le but et d'approcher deux points au maximum par itération grace au while.
    L'interface graphique a l'air de fonctionner car quand j'utilise getappdata j'ai bien la valeur inscrite dans les edit box.
    Mon programme fonctionne car je l'ai testé sans l'interface graphique et il me trouve ma valeur cherchée.
    Par contre quand je met les deux ensembles, c'est comme si il ne trouvais plus les valeurs mise dans edit box

    Quand je tape le nom d'une variable dans la "command window" j'ai ce message d'erreur: ??? Undefined function or variable 'N'.

    Je ne comprend pas ce qu'il se passe. Une mauvaise définition de variable. Pourquoi le programme marche sans l'interface et avec plus rien ne va
    Voici mon programme ci-dessous. Si vous pouvez m'aider je vous en serais très reconnaissant. Merci

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
     function choix_param
     
        % Création de l'objet Figure %
        fig = figure('units', 'pixels', ...
            'position', [520 80 700 600], ...
            'name', 'Entrée des données de base');
     
        % Creation texte statique %
        handles(1) = uicontrol('style','text',...
            'units','normalized','foregroundcolor','blue','backgroundcolor','green',...
            'position',[0.12 0.9 0.25 0.05],...
            'string','Coordonnée en x du centre de pivotement',...
            'tag','Ox_text');     
        handles(2) = uicontrol('style','text',...
            'units','normalized',...
            'position',[0.12 0.84 0.25 0.05],'backgroundcolor','green',...
            'string','Coordonnée en y du centre de pivotement','foregroundcolor','blue',...
            'tag','Oy_text');     
        handles(3) = uicontrol('style','text',...
            'units','normalized',...
            'position',[0.12 0.78 0.25 0.05],'backgroundcolor','green',...
            'string','R1_Rayon du rouleau de la trompe','foregroundcolor','blue',...
            'tag','R1_text');   
        handles(4) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.72 0.25 0.05],...
            'string','R2_Rayon du rouleau du bain','foregroundcolor','blue',...
            'tag','R2_text');
       handles(5) = uicontrol('style','text','foregroundcolor','blue',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.66 0.25 0.05],'foregroundcolor','blue',...
            'string','Distance O à A',...
            'tag','OA_text');
        handles(6) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.60 0.25 0.05],'foregroundcolor','blue',...
            'string','Distance O à B',...
            'tag','OB_text');
        handles(7) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.54 0.25 0.05],'foregroundcolor','blue',...
            'string','Angle alpha',...
            'tag','alpha_text');
     
        handles(8) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.48 0.25 0.05],'foregroundcolor','blue',...
            'string','Angle beta',...
            'tag','beta_text');   
        handles(9) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.42 0.25 0.05],'foregroundcolor','blue',...
            'string','Coordonnée en x du centre du rouleau de bain',...
            'tag','Qx_text');   
     
        handles(10) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.36 0.25 0.05],'foregroundcolor','blue',...
            'string','Coordonnée en y du centre du rouleau du four',...
            'tag','Sy_text');   
     
        handles(12) = uicontrol('style','text',...
            'units','normalized','backgroundcolor','green',...
            'position',[0.12 0.30 0.25 0.05],'foregroundcolor','blue',...
            'string','R3_Rayon du rouleau du four',...
            'tag','R3_text');   
     
        % Creation blocs texte editable %
        handles(13) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.9 0.25 0.05],...
            'string','3627.05463494','tag','Ox');
     
        handles(14) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.84 0.25 0.05],...
            'string','4564.74780585','tag','Oy');
     
        handles(15) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.78 0.25 0.05],...
            'string','75','tag','R1');
        handles(16) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.72 0.25 0.05],...
            'string','400','tag','R2');
        handles(17) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.66 0.25 0.05],...
            'string','1291.57764242','tag','OA');
        handles(18) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.60 0.25 0.05],...
            'string','4051.91769406','tag','OB');
        handles(19) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.54 0.25 0.05],...
            'string','59.18584086','tag','alpha');
        handles(20) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.48 0.25 0.05],...
            'string','56.77760471','tag','beta');
        handles(21) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.42 0.25 0.05],...
            'string','7081','tag','Qx');
        handles(22) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.36 0.25 0.05],...
            'string','9040','tag','Sy');
        handles(23) = uicontrol('style','edit',...
            'units','normalized',...
            'position',[0.4 0.30 0.25 0.05],...
            'string','600','tag','R3');
     
        % Creation pushbutton %
        bp1 = uicontrol('style', 'pushbutton', ...
            'units', 'pixels',...
            'position',[500 300 100 20], ...
            'string','Lancer le calcul','callback', @bouton);
       % Creation pushbutton %
        bp2 = uicontrol('style', 'pushbutton', ...
            'units', 'pixels',...
            'position',[500 400 100 20], ...
            'string','Aide Schéma','callback', @schema);
     
        % Stockage des identifiants utiles %
        handles = guihandles(fig);
        guidata(fig,handles)
     
         function schema(obj,eventdata, handles)
     
        image = imread('aide.bmp');
        figure; imshow(image);%permet d'afficher le dessin d'aide
     
     
        function bouton(obj,eventdata, handles)
            global Ox Oy R2 R1 R3 A alpha beta Sy Qx
        % Fonction associée au Callback de l'objet Pushbutton
        % obj : identifiant de l'objet Pushbutton
        % event : événement liés à l'objet Pushbutton
     
        % Récupération des identifiants utiles %
        fig = get(obj,'parent');
        handles = guidata(fig);
     
        Ox = str2double(get(handles.Ox,'string'));%%Récupère la valeur affichée dans l'edit et donc écrase la valeur précédente
        setappdata(0,'Ox',Ox);%%Stocke la valeur dans la donnée carburant
        Ox = getappdata(0,'Ox')
        %Coordonnées en x du centre de pivotement de la trompe
     
        Oy = str2double(get(handles.Oy,'string'));
        setappdata(0,'Oy',Oy);
        %Coordonnées en y du centre de pivotement de la trompe
     
        Sy = str2double(get(handles.Sy,'string'));
        setappdata(0,'Sy',Sy);
        %Coordonnées en y du centre du rouleau de sortie du four (avant la
        %trompe)
     
        R1 = str2double(get(handles.R1,'string'));
        setappdata(0,'R1',R1);
        % Rayon du rouleau dans la trompe
     
        R2 = str2double(get(handles.R2,'string'));
        setappdata(0,'R2',R2);
        % Rayon du rouleau de bain
     
        R3 = str2double(get(handles.R3,'string'));
        setappdata(0,'R3',R3);
        % Rayon du rouleau de bain
     
        OA = str2double(get(handles.OA,'string'));
        setappdata(0,'OA',OA);
        %distance entre le centre de pivotement de la trompe et le centre du rouleau de la trompe;
     
        OB = str2double(get(handles.OB,'string'));
        setappdata(0,'OB',OB);
        %distance entre le centre de pivotement et le point du sabot où la bande doit passer
     
        alpha = str2double(get(handles.alpha,'string'));
        setappdata(0,'alpha',alpha); 
        % alpha = angle entre l'horizontal et la droite qui va de centre de pivotement de la trompe et le centre du rouleau de la trompe
     
        beta = str2double(get(handles.beta,'string'));
        setappdata(0,'beta',beta);
        % beta = angle entre l'horizontal et la droite qui va du centre de pivotement de la trompe et le point du sabot où on veut que la bande passe
     
        Qx = str2double(get(handles.Qx,'string'));
        setappdata(0,'Qx',Qx);
        %Coordonnée en x du centre du rouleau de fond
     
    %  [filename pathname]=uigetfile({'*.jpg';'*.bmp';'*.IMA'},'File Selector','MultiSelect','on'); 
     
    %Programme pour trouver l'angle d'inclinaison de la trompe pour que la bande passe
    %exactement à l'endroit voulu du sabot
     
    %Il permet également de trouver la distance d'appui de le bande sur le
    %rouleau.
     
    %Le repère x/y est former de la verticale qui passe par le centre du
    %dernier rouleau du four et par l'horizontal qui passe par le centre du
    %rouleau de bain.
     
     
    angle = alpha;
    while alpha<0
     
    y1 = 0; 
    Sx = 0;
    anglepivotement = alpha*pi()/180
     
    x0 = Ox + OA*cos(anglepivotement);
    y0 = Oy + OA*sin(anglepivotement);
     
    AO = ((x0-Qx)^2 + (y0-y1)^2);
    r1 = sqrt (AO-(R1^2));
    %on utilise le principe que la tangente partant
    %d'un point à un cercle forme un triangle droit. On calcule donc la
    %longueur du point au centre du cercle et on connait le rayon du cercle.
    %Après on utilise pythagore pour connaitre la longueur de l'hypothènuse
     
    N = (r1^2-R1^2-Qx^2+x0^2-y1^2+y0^2)/(2*(y0-y1));
    A = (((x0-Qx)/(y0-y1))^2)+1;
    B = (2*y0*((x0-Qx)/(y0-y1)))-2*N*((x0-Qx)/(y0-y1))-2*x0;
    C = x0^2+y0^2+N^2-R1^2-2*y0*N;
    %on cherche les points d'intersections du cercle que forme le rouleau et le
    %cercle de longeur r1 de centre Qx
     
    delta = sqrt((B^2)-(4*A*C));
    solx1 = (-B+delta)/(2*A);
    solx2 = (-B-delta)/(2*A);
     
    soly1 = sqrt( N^2 + ((solx1^2)*((x0-Qx)/(y0-y1))^2)-2*N*solx1*((x0-Qx)/(y0-y1)));
    soly2 = sqrt( N^2 + ((solx2^2)*((x0-Qx)/(y0-y1))^2)-2*N*solx2*((x0-Qx)/(y0-y1)));
    %permet de touver les coordonnées des points des deux tangentes possible au
    %rouleau de la trompe
     
    x2 = solx1
    y2 = soly1
    %On sélectionne la bonne tangente
     
    BO = (Qx-solx1)^2 + (y1-soly1)^2;
    r3 = sqrt (BO-(R2^2));
    %On utilise le même principe qu'avant avec le triangle de pythagore
     
    N1 = (r3^2-R2^2-x2^2+Qx^2-y2^2+y1^2)/(2*(y1-y2));
    A1 = (((Qx-x2)/(y1-y2))^2)+1;
    B1 = (2*y1*((Qx-x2)/(y1-y2)))-2*N1*((Qx-x2)/(y1-y2))-2*Qx;
    C1 = Qx^2+y1^2+N1^2-R2^2-2*y1*N1;
     
    delta1 = sqrt(B1^2-(4*A1*C1));
    solx3 = (-B1+delta1)/(2*A1);
    solx4 = (-B1-delta1)/(2*A1);
     
    soly3 = sqrt( N1^2 + ((solx3^2)*((Qx-x2)/(y1-y2))^2)-2*N1*solx3*((Qx-x2)/(y1-y2)));
    soly4 = sqrt( N1^2 + ((solx4^2)*((Qx-x2)/(y1-y2))^2)-2*N1*solx4*((Qx-x2)/(y1-y2)));
    %j'ai trouvé le point de tangence entre la droite qui va du point de
    %pivotement au rouleau de trompe
     
    % SO= (solx4-Sx)^2+(-soly4 -Sy)^2;
    % r4= sqrt(SO-(R3^2));
    % 
    % 
    % N2 = (r4^2-R3^2-solx4^2+Sx^2-(-soly4^2)+Sy^2)/(2*(Sy-(-soly4)));
    % A2 = (((Sx-solx4)/(Sy-(-soly4)))^2)+1;
    % B2 = (2*Sy*((Sx-solx4)/(Sy-(-soly4))))-2*N2*((Sx-solx4)/(Sy-(-soly4)))-2*Sx;
    % C2 = Sx^2+Sy^2+N2^2-R3^2-2*Sy*N2;
    % %On cherche les points d'intersections des deux cercles
    % 
    % delta3 = sqrt(B2^2-(4*A2*C2));
    % solx5 = (-B2+delta3)/(2*A2)
    % solx6 = (-B2-delta3)/(2*A2);
    % 
    % soly5 = sqrt( N2^2 + ((solx5^2)*((Sx-solx4)/(Sy-(-soly4)))^2)-2*N2*solx5*((Sx-solx4)/(Sy-(-soly4))))
    % soly6 = sqrt( N2^2 + ((solx6^2)*((Sx-solx4)/(Sy-(-soly4)))^2)-2*N2*solx6*((Sx-solx4)/(Sy-(-soly4))));
     
    % m = (soly5-(-soly4))/(solx5-solx4);
    % n = soly5 - (m* solx5);
    %On trouve l'équation de la droite tangente au rouleau de sortie du four et
    %du rouleau de bain
     
    % xyz = (abs(m*solx1-soly1+n))/(sqrt(m^2+1))
     
    %On trouve la distance entre le point de tangence au rouleau de tromp et la
    %droite qui va du rouleau de four au rouleau de bain
     
    a = (-soly4-soly1)/(solx4-solx1);
    b = -soly4 - (a*solx4);
    % On cherche l'équation de la droite tangente au rouleau de trompe et au
    % rouleau de bain
    delta2 = sqrt(((-2*Ox-2*Oy*a+2*a*b)^2)-(4*(1+a^2)*(Ox^2+(b-Oy)^2-OB^2)));
    x31 = ((2*Ox+2*Oy*a-2*a*b)+delta2)/(2*(1+a^2));
    x32 = ((2*Ox+2*Oy*a-2*a*b)-delta2)/(2*(1+a^2));
     
    Y31 = a*x31+b;
    Y32 = a*x32+b;
    % On trouve l'intersection entre la tangente des deux rouleaux et le
    % cercle du point du sabot
     
    anglesabot = beta*pi()/180;
    a1 = tan(anglesabot);
    b1 = Oy-(a1*Ox);
    delta3 = sqrt(((-2*Ox-2*Oy*a1+2*a1*b1)^2)-(4*(1+a1^2)*(Ox^2+(b1-Oy)^2-OB^2)));
    x41 = ((2*Ox+2*Oy*a1-2*a1*b1)+delta3)/(2*(1+a1^2));
    x42 = ((2*Ox+2*Oy*a1-2*a1*b1)-delta3)/(2*(1+a1^2));
    Y41 = a1*x41+b1;
    Y42 = a1*x42+b1;
    %On trouve les coordonnées du point du sabot
     
    z = x31-x41
    y = Y31-Y41
    %On essaye de rapprocher les points pour qu'il coincide
    if z<0.001 & y<0.001 %degrè de précision
       break
    end
    alpha = alpha + 0.001
    beta = beta + 0.001
     
     
    resultatangle =alpha -beta
     f = figure('Position', [250 100 400 400]);
    % cnames = {'angle de déplacement[°C]','distance [mm]'}; 
    % rnames = {''};
    % 
    % y = dist
    % d = [resultatangle];
    % 
    % t = uitable('parent',f,'data',d, 'ColumnName',cnames,'RowName',rnames,'Position', [50 50 300 200]);
    % % set(t);%affichage des résultats
    end

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

    N est une variable locale à ta sous-fonction bouton, elle n'a aucune existence en dehors.
    Mais tu peux toujours mettre un point d'arrêt dans ton programme et regarder sa valeur comme tu le ferais normalement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème d'interaction entre l'interface graphique et le programme
    Citation Envoyé par Winjerome Voir le message
    Bonsoir,

    N est une variable locale à ta sous-fonction bouton, elle n'a aucune existence en dehors.
    Mais tu peux toujours mettre un point d'arrêt dans ton programme et regarder sa valeur comme tu le ferais normalement.
    Bonsoir Winjerome,

    merci pour ta réponse. Je comprend mais même quand je tape une variable que j'ai défini en global au dessus dans la command window, je n'obtient aucune valeur.
    exemple : Ox, R1,...
    Je n'obtiens aucun résultat final. Est ce que je déclare mal mes variables.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les as-tu aussi déclaré globales dans la fenêtre de commandes ?
    => Share Global Variable Between Function and Command Line

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Mars 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Les as-tu aussi déclaré globales dans la fenêtre de commandes ?
    => Share Global Variable Between Function and Command Line
    Je suis auto didacte dans matlab. Je pensais que les déclarer dans le script suffisait. Je dois taper quoi pour les déclarer dans ma command window?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Je te conseille d'aller faire un tour sur ce tutoriel, qui, sans aucun doute, répondra à tes questions (voir la partie2).

    PS: avant de te jeter sur la méthode 2.1, je te conseille de jeter un regard sur l'ensemble des méthodes proposées. Personnellement, ma préférence va pour la 2.3
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bleachvostfr Voir le message
    Je dois taper quoi pour les déclarer dans ma command window?
    C'est indiqué dans le lien que j'ai donné.

Discussions similaires

  1. Interaction entre les interfaces graphiques
    Par jowelle dans le forum Interfaces Graphiques en Java
    Réponses: 10
    Dernier message: 05/10/2012, 10h42
  2. entre un interface graphique et un editeur de texte
    Par ertyup dans le forum Débuter
    Réponses: 2
    Dernier message: 01/09/2009, 04h55
  3. Héritage entre deux interfaces graphique
    Par Marie.B dans le forum Débuter
    Réponses: 0
    Dernier message: 10/04/2009, 09h22
  4. Réponses: 1
    Dernier message: 10/10/2007, 17h08
  5. Réponses: 2
    Dernier message: 29/03/2004, 18h29

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