WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Plot mit drawnow im GUI unterbrechen

 

Tino97
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2017, 02:18     Titel: Plot mit drawnow im GUI unterbrechen
  Antworten mit Zitat      
Grüße,

in meinem GUI möchte ich eine Funktion per Knopfdruck mit drawnow plotten und mit einem zweiten Knopf die Möglichkeit haben dieses zu unterbrechen. Leider funktioniert das nicht über den GUI und ich kann nur über strg+c in Matlab unterbrechen.

Ich habe es schon mit break versucht, welches ich mit einer if Funktion in die for-Schleife geschrieben habe oder pause(1) und delete(h). Die Funktion wurde dabei aber nur kurz unterbrochen und zog dann wieder ihren Stiefel durch oder fing wieder von Anfang an. Ich hatte aus einigen Foren schon weitere paar Lösungsansätze durchprobiert aber die haben auch nicht gegriffen, z.B. mit java robot.

Es muss doch noch einen Weg geben oder bleibt die Funktion unaufhaltbar?

Code:

function pushbutton1_Callback(hObject, ~, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;

for i=1:999
       h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
       drawnow
  end

function stopbutton_Callback(hObject, ~, handles)
cla reset
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.10.2017, 09:22     Titel:
  Antworten mit Zitat      
Hallo,

die Lösung dürfte sein, im Callback des ersten Buttons den Status ('Value') des zweiten Buttons abzufragen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tino97
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2017, 12:09     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe einmal versucht Deinen Vorschlag umzusetzen aber anscheinend habe ich etwas falsch gemacht. Die Funktion bricht nicht ab. Mein Versuch sah so aus:

Code:
function start_Callback(hObject, eventdata, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;

 for i=1:999
 a=get(handles.stop,'Value');
if a==1
    break
    delete(h)
end  
     h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
        drawnow
 end
  guidata(hObject, handles);

% --- Executes on button press in stop.
function stop_Callback(hObject, eventdata, handles)
cla reset
guidata(hObject, handles);


Oder ist break nicht der richtige Befehl?

Gruß
Tino

startstop.m
 Beschreibung:

Download
 Dateiname:  startstop.m
 Dateigröße:  2.56 KB
 Heruntergeladen:  392 mal
startstop.fig
 Beschreibung:

Download
 Dateiname:  startstop.fig
 Dateigröße:  3.84 KB
 Heruntergeladen:  394 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.10.2017, 14:56     Titel:
  Antworten mit Zitat      
Hallo,

ich komme auf die Schnelle auch nicht drauf.
Schau dir aber mal
travel
an, da ist auch ein Start/Stop implementiert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tino97
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.10.2017, 20:02     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die erneute Rückmeldung. Ich habe mir die .m Datei von travel einmal angeguckt aber verstehe nicht wirklich was gemacht wird.

Im Abschnitt für den Stopknopf stehen scheinbar überwiegen Einstellungen für die Position des Knopfes. Ausnahme bildet:

Code:
callbackStr = 'set(gca,''Userdata'',-1)';


Wenn ich das richtig sehe, dann wird hiermit etwas "umgeschaltet" aber was genau weiter passiert kann ich nicht nachvollziehen. Hier bleibe ich echt ratlos Rolling Eyes
Private Nachricht senden Benutzer-Profile anzeigen
 
Tino97
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 21.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2017, 01:15     Titel:
  Antworten mit Zitat      
Hallo nochmal,

ich konnte mit einer Suchmaschine einen alten Beitrag finden, aus dem ich mich schamlos bedient habe. Scheint auch genau das zu machen, was ich möchte. Ohne "cla reset" pausiert der Plot nur, mit wird alles gelöscht.

Code:
function start_Callback(hObject, eventdata, handles)
xx=1:1000; yy=1000:2000; zz=2000:3000;

for i=1:999
    h(i)=line([zz(i) zz(i+1)],[xx(i) xx(i+1)],[yy(i) yy(i+1)] ,'LineWidth',3);
   
    if isappdata(handles.figure1,'stopPlot')
        break
    end
    drawnow
end
cla reset

% --- Executes on button press in stop.
function stop_Callback(hObject, eventdata, handles)
setappdata(handles.figure1,'stopPlot',1);
guidata(hObject, handles);


Gruß,
Tino
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.