Bonjour à tous,

J'ai un petit souci dans le développement d'une interface graphique

Un pushbutton "lecture" me permet de lire une séquence d'image et un pushbutton pause me permet de mettre en pause cette lecture

Dans un premier cas qui fonctionne bien (le bouton pause remplit bien son rôle) la lecture et la pause ne concerne qu'une image sur un axes

code bouton pause :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
function pushbutton2_Callback(hObject, eventdata, handles)
 
handles.pau=1;
guidata(hObject, handles);
code bouton lecture
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
 
function pushbutton1_Callback(hObject, eventdata, handles)
 
handles.pau=0;
guidata(hObject, handles);
 
 
 
while handles.Nimage< handles.NbImages
    %     pause(0.2)
    drawnow
    handles = guidata(hObject);
    if handles.pau==1
        guidata(hObject, handles);
        return
    end
 
    handles.Nimage=handles.Nimage+handles.vl;
    if handles.Nimage >= handles.NbImages
        handles.Nimage=handles.NbImages;
        set(handles.edit2,'String',handles.Nimage);
    end
 
 
    handles.image=cell2mat(handles.visudetour(1,handles.Nimage));
    set(handles.edit2,'string',handles.Nimage);
    guidata(hObject, handles);
    axes(handles.axes1);
    imagesc(handles.image);
    axis image
    colorbar
    caxis([handles.c1Ti1 handles.c2Ti1])
    guidata(hObject, handles);
    %
    %
    %
end
 
guidata(hObject, handles);

Dans mon second cas par contre le bouton pause fonctionne de manière tres aléatoire il faut le plus souvent appuyer plusieurs fois sur le bouton pour que la pause soit effective, dans ce cas je met à jour une image sur un axe 1 et un graph sur un axe 2.
Les codes me semblent similaires j'ai vérifié en changeant une couleur sur l'interface que l'appui sur le bouton pause était effectif du coup je vois vraiment pas d'où vient ce problème

code bouton pause :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
function pushbutton7_Callback(hObject, eventdata, handles)
handles.pau=1;
% set(handles.pushbutton6,'BackgroundColor',[1,0.7,0.4]);
% set(handles.pushbutton7,'BackgroundColor','g');
guidata(hObject, handles);
code bouton lecture :
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 pushbutton6_Callback(hObject, eventdata, handles)
handles.pau=0;
% set(handles.pushbutton7,'BackgroundColor',[1,0.7,0.4]);
% set(handles.pushbutton6,'BackgroundColor','g');
guidata(hObject, handles);
 
 
while handles.N4<handles.NbImages
 
    drawnow
    handles = guidata(hObject);
 
 
    if handles.pau==1
 
        guidata(hObject, handles);
        return
    end
 
    handles.N4=handles.N4+handles.vf2;
    if handles.N4 >= handles.NbImages
        handles.N4=handles.NbImages;
        set(handles.edit4,'String',handles.N4);
    end
 
 
    handles.image=cell2mat(handles.donnee(1,handles.N4));
    set(handles.edit4,'string',handles.N4);
    guidata(hObject, handles);
    axes(handles.axes1);
    % cla
    imagesc(handles.image);
    axis image
    colorbar
    caxis([handles.c1Ti1 handles.c2Ti1])
    %     impixelinfo
    guidata(hObject, handles);
    axes(handles.axes2);
    % cla
    plot(handles.point(:,2),handles.point(:,1),'--','LineWidth',2)
    hold on
    plot(handles.point(handles.N4,2),handles.point(handles.N4,1),'--rs','LineWidth',2,...
        'MarkerEdgeColor','k',...
        'MarkerFaceColor','g',...
        'MarkerSize',15)
    guidata(hObject, handles);
    hold off
 
    guidata(hObject, handles);
end
 
guidata(hObject, handles);

Si quelqu'un a une explication à ce phénomène ca m'interesse fortement, j'en perd mon latin la :p .

Merci d'avance, je suis preneur de toute remarque/idée etc ...