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

überholende events

 

Bluesmaster
Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 30.07.2012, 15:58     Titel: überholende events
  Antworten mit Zitat      
Hallo,


Jetzt habe ich einmal einen richtigen Knochen!


Es geht um Events. Z.B. Mausbewegung. Wird es gefeuert und ruft
seine Callback-Funktion auf, dann fängt die an zu werkeln.


Wenn sie noch nicht fertig ist, bevor das nächste Event reinfliegt,
dann überholt das neue Event quasi das alte (eigene Threads)


So weit so gut. Wenn sich (bei mir) ca 30-40 Events überholt
haben macht Matlab dicht und feuert keine weiteren mehr.
Verstehe ich ja auch noch (Ressourcengründe etc.)


ABER: Selbst wenn die Funktionen dann alle fertig sind bleibt das so!
Es werden keine neue MausMoved events gefeuert. Was soll das? Woran kann das liegen?

- Die WindowButtonMotionFcn ist noch da
- Speicher und CPU ist auch noch Luft

Gruß

Blues
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.07.2012, 04:36     Titel: Re: überholende events
  Antworten mit Zitat      
Hallo Bluesmaster,

In Matlab können sich keine Events überholen. Es gibt auch nur einen Thread, wenn man von den Timer-Objekten absieht.
Deshalb verstehe ich die Beschreibung des Problems nicht.

Die Events werden abgearbeitet, wenn DRAWNOW oder PAUSE es erlaubt.

Woher weißt Du, dass keine MouseMoved-Events auftreten ind wie testest Du, dass "die WindowButtonMotionFcn ist noch da" ist?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Themenstarter

Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 31.07.2012, 10:39     Titel:
  Antworten mit Zitat      
Hallo Jan, danke für deine Antwort und dein Engagement hier allgemein,

Ich bin nun etwas weiter, und ich muss wirklich ein bisschen einschränken.
Mein kleiner Test bestand aus einer Callbackfunktion sinngemäß so aussah (Testfiles siehe Anhang):


Code:
persistent counter

disp('Event Nr. ') ;   disp(counter])

counter = counter +1

pause(1)

disp('Ende') ;   disp(counter])



Ausgabe:

Event Nr. 1
Event Nr. 2
Ende 1
Ende 2


Die Simulation von Rechenlast mit pause() war nicht zielführend, das
sehe ich ein. Trotzdem scheinen sich die Events überholt zu haben sonst wäre es so:

Event Nr. 1
Ende 1
Event Nr. 2
Ende 2

Bei 33 Überholvorgängen ist Schluss.
Get(fh, 'WindowButtonMotionFcn') = ok

Fernziel war eine Ablaufverzahnung weil ich eine flüssige GUI brauche,
und Timer zwar unterbrechen, dann aber nicht parallel laufen,
batch() hat 10 sec.(!) Overhead. Ich bin total verzweifelt gibts keinen
funktionierenden Workaround für Multithreading???

testUeberholendeEvents.m
 Beschreibung:

Download
 Dateiname:  testUeberholendeEvents.m
 Dateigröße:  115 Bytes
 Heruntergeladen:  304 mal
testUeberholendeEventsCallback.m
 Beschreibung:

Download
 Dateiname:  testUeberholendeEventsCallback.m
 Dateigröße:  139 Bytes
 Heruntergeladen:  297 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.08.2012, 02:58     Titel:
  Antworten mit Zitat      
Hallo Bluesmaster,

PAUSE erlaubt genau wie DRAWNOW ausdrücklich die Bearbeitung wartender Events. Deshalb ist die Interpretation "überholende Events" irgendwie richtig.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Bluesmaster
Themenstarter

Forum-Century

Forum-Century



Beiträge: 203
Anmeldedatum: 13.11.11
Wohnort: Gera
Version: 2012a
     Beitrag Verfasst am: 01.08.2012, 12:02     Titel:
  Antworten mit Zitat      
Irgendwie ist das trotzdem eine Einbahnstraße für meine flüssige GUI,
weil die Events die ich dann weiterverteilen will wieder stecken bleiben.

Ich werde mal eine extra Frage stellen.


Danke trotzdem

Gruß

Blues
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 - 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.