|
|
GUI-Komponenten verwenden während Callback-Funktion läuft |
|
Knappe Franz |
Forum-Anfänger
|
|
Beiträge: 24
|
|
|
|
Anmeldedatum: 07.04.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.06.2011, 11:35
Titel: GUI-Komponenten verwenden während Callback-Funktion läuft
|
|
|
|
|
Hallo!
ich bin grad irgendwie nicht fähig eine Lösung für folgendes Problem zu finden:
Ich habe eine GUI, die eine große Anzahl Dateien analysiert und plottet, nachdem man auf einen "Start"-Button gedrückt hat. Der ganze Vorgang steckt also in einer Schleife in der Callback-Fct von "Start". Um die Qualität der Daten/Analysen einzuschätzen, ist es hilfreich sich von den ersten paar Dateien ein Diagramm etwas genauer anzuschauen. Da die Schleife für einen Durchlauf aber weniger als eine Sekunde braucht, ist das zu kurz für eine hinreichende Betrachtung. Ich habe daher einfach pause(x) eingebaut. Jetzt möchte ich gern die Pausenzeit dynamisch während des Callback-Durchlaufs durch eine andere GUI-Komponente (im Moment Slider) steuern, damit man die Pause je nach Belieben verlängern oder verkürzen kann um schneller fertig zu werden, wenn man die Daten nicht mehr anschauen möchte.
Jetzt reagiert die GUI aber nicht auf die Klicks auf den Slider, während die andere Callback-Fct ausgeführt wird.
Bei meinen Recherchen hab ich gesehen, dass man in anderen Grafikpaketen wohl irgendwie den eventlistener der GUI auch während einer Callback-Schleife aufrufen kann (irgendwie mit check), aber dazu habe ich leider nichts für die Standart-Matlab-GUI gefunden
Gibts da eine Möglichkeit oder geht das generell nicht, die GUI während einer Callback-Fct zu benutzen? Fällt euch vllt eine andere Lösung meines Problems ein außer über eine GUI-Komponente?
Danke für die Hilfe!
Grüße
|
|
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 01.06.2011, 12:36
Titel:
|
|
Hey,
wäre es nicht besser eine z.B. msgbox einzufügen mit:
Anders ist es natürlich auch möglich aber umständlicher...
MfG Marco
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 01.06.2011, 12:41
Titel: Re: GUI-Komponenten verwenden während Callback-Funktion lä
|
|
Hallo Knappe Franz,
Ein Update der GUI-Elemente erfolgt, wenn ein DRAWNOW-Befehl innerhalb des Callback-Codes dafür die Zeit gibt.
Gruß, Jan
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 01.06.2011, 12:49
Titel:
|
|
Hey,
oder drawnow expose. Das ist sogar noch schneller... Nur ändert sich dadurch dein handles-struct im Callback der for schleife nicht (bzw. alle nicht handles im Struct handles). Dies ist zu beachten...
MfG Marco
|
|
|
Knappe Franz |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 24
|
|
|
|
Anmeldedatum: 07.04.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 11:16
Titel:
|
|
Danke für eure schnellen Antworten!
Ich war leider über Himmelfahrt unterwegs, deswegen so spät meine Reaktion.. sorry!
Eine msgbox möchte ich gern umgehen, da man so nicht einfach irgendwann das Programm rechnen lassen kann, sondern nach jeder Datei klicken muss.. Das geht gar nicht, bei mehr als 100 Dateien pro Messung..
Drawnow hab ich schon in der Hauptschleife drinstehen.. Trotzdem passiert nichts, wenn ich auf meine Slider-Pfeile klicke, während die Schleife läuft Wenn sie fertig ist, funktionierts dann wieder
Mein Aufbau ist ungefähr so:
Habt ihr noch eine Idee, wo ich das drawnow sinnvoller platzieren kann? Danke für eure Hilfe!
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 06.06.2011, 12:20
Titel:
|
|
Hey,
setz mal einen Breakpoint in deinen Slider Callback um zu schauen ob er überhaupt in diesen reinspringt. Du könntest versuchen in dem Slidercallback auch ein drawnow einzufügen. Hilft das?
MfG Marco
|
|
|
Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2011, 14:39
Titel:
|
|
Ich werf nur mal so eine Idee in den Raum:
Du lässt einen Timer starten und als Timerfcn eine Datei einlesen und plotten.
Im Callback des Sliders könnte man dann den Timer anhalten, die Period neu setzen und ihn wieder starten.
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 07.06.2011, 01:59
Titel:
|
|
Hey,
ja natürlich kann man das auch über einen Timer machen. Nur ändert dies auch nichts an der Tatsache, dass Matlab nur einen EDT hat und alles nacheinander abläuft und somit die GUI ebenfalls geupdatet werden muss...
MfG Marco
|
|
|
Knappe Franz |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 24
|
|
|
|
Anmeldedatum: 07.04.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.06.2011, 15:33
Titel:
|
|
Yeah
Nu klappts Ich hab ein drawnow in die Slider-Callback-Function gepackt, das hat den Erfolg gebracht! Ich danke euch vielmals!
Auch für die Geduld, dass ich so lange net geantwortet habe.. Ich arbeite leider nur einmal die Woche an dem Project..
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|