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

beim starten der gui 'Bitte warten...'

 

Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2011, 10:07     Titel: beim starten der gui 'Bitte warten...'
  Antworten mit Zitat      
Ich wünsche zuerst allen einen guten morgen Smile

Ich habe eine GUI programmiert und davon eine .exe Datei erstellt, die beim starten sehr lange braucht.
Ich möchte gerne eine Meldung während der GUI startet einbauen. Wie z.B 'Bitte warten...Das Program startet gleich!' . Damit man nicht 1000 mal auf die Anwendungsdatei klickt, sondern wartet bis die Oberfläche erscheint.


'Tutorial: Verwendung von WAITBAR im eigenen Code.' war sehr hilfreich .

Ich habe es erst in der Funktion OpeningFnc probiert. Es hat nicht funktioniert.

'function varargout = Beispiel (varargin)' ist die richtige Stelle glaube ich aber wie? Hier wird ja GUI Initialisiert und viele Unterfunktionen werden hier von Matlab-GUI aufgerufen.

Kann mir jemand helfen?
Ich bin dankbar für jede Hilfe Smile

Gruß
Gül


Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2011, 11:33     Titel:
  Antworten mit Zitat      
Crying or Very sad

Ist es eine blöde oder schwere Frage gewesen?
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.01.2011, 13:12     Titel:
  Antworten mit Zitat      
Hallo

du kannst auch einfach MSGBOX verwenden

z.b. so:

Code:

h = msgbox('Bitte Warten...','Das Progamm startet gleich','warn')
 


PS: Bitte übe Geduld aus, Pushen von Threads ist nur nach 24 Stunden erlaubt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2011, 13:31     Titel:
  Antworten mit Zitat      
Hallo denny,

danke für die Antwort. Es ist schön zu wissen, dass ich hier nicht alleine bin.

ich habe bis jetzt alles probiert! Es ist leider nicht so einfach!!!!

Ich glaube, ich muss in der function varargout = Beispiel(varargin) was einbauen, damit es überhaupt funktioniert.

Mit Hilfe Tic Toc habe ich raus gefunden dass der GUI während Initialisierung 10 mal Unterfunktionen aufruft.

Elapsed time is 0.027650 seconds.
Elapsed time is 0.029754 seconds.
Elapsed time is 0.000600 seconds.
Elapsed time is 0.001089 seconds.
Elapsed time is 0.000864 seconds.
Elapsed time is 0.017190 seconds.
Elapsed time is 0.000624 seconds.
Elapsed time is 0.000505 seconds.
Elapsed time is 0.000519 seconds.
Elapsed time is 2.543789 seconds.

Also dass heißt, mein msgbox oder figure...oder dialogbox 10 mal ausgegeben wird. Es muss nur 1 mal ausgegeben werden!

Hast du dafür eine Antwort vielleicht?

Grüße
Gül
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.01.2011, 13:53     Titel:
  Antworten mit Zitat      
Hallo

mir ist deine Programmstruktur komplett unklar,
Welche Funktion ist Hauptfunktion?
Hast du GUI über GUIDE erstellt? Verwendest du automatisch generierten Code von GUIDE?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2011, 14:12     Titel:
  Antworten mit Zitat      
Sorry, ich bin bisschen durcheinander. Ich erzähle mal von vorne ...

Ich habe GUi über GUIDE erstellt. Es ist eine Bedienungsoberfläche.
Dafür habe ich automatisch generierten Code von GUIDE verwendet.
Auf der Oberfläche habe ich Buttons, popupmenü usw. stehen. Es funktioniert sehr gut. Davon habe ich mit Hilfe mcc -e ... die .exe Datei erstellt.

Das ist ja auch kein Problem.

Das Problem ist nur wenn ich die .exe Datei anklicke, dauert es soooo lange bis die Benutzeroberfläche erscheint! (Start der Anwendungsdatei)

Deswegen dachte ich dass ich den Benutzer informiere, damit er weiß dass der Anwendungsprogramm startet und dass er bisschen warten muss!!! z.B Splashscreen wäre auch eine Möglichkeit!

Ich hoffe, dass es jetzt verständlich genug ist.

Danke nochmal.
 
Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2011, 15:14     Titel:
  Antworten mit Zitat      
Hallo,

ich habe die Lösung gefunden Smile

danke!

Falls wenn jemand wissen will, wie sowas geht, einfach hier mich fragen.

Gruß
Gül
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.01.2011, 15:23     Titel:
  Antworten mit Zitat      
Hallo

Wenn SPLASH SCREEN wünschst, dann schaue mal hier:

http://www.mathworks.com/matlabcent.....een-for-compiled-exe-guis

EDIT:
diese Funktion ist super:
http://www.mathworks.com/matlabcent.....ange/5946-splash-mrevised

EDIT2: Es super dass du zu Lösung gekommen bist,
nach der Allgemeinen Regeln des Forumlebens, sollst du auch deine Lösung hier präsentieren.
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 19.01.2011, 19:09     Titel:
  Antworten mit Zitat      
Hey,

ja das würde mich in der tat auch interessieren. Denn du schreibst, dass du den Compiler benutzt hast. Ich finde es nämlich ziemlich nervig wenn man je nach Größe der exe-Datei auch schonmal ne Minute warten muss bis das Programm endlich beginnt. Soweit ich weiß liegt das aber daran, dass erst eine abgespeckte Version von Matlab (mcr) in den Arbeitsspeicher geladen wird. Und diesen Vorgang kann man nicht wirklich beschleunigen...

Da ich ebenfalls zu beginn ein Splashscreen benutze wird dieses leider erst dargestellt nachdem die mcr geladen ist (also nach ner Minute oder so... was vom Prinzip her auch logisch ist).

Zudem musste ich feststellen, dass die hohe Zeit erst dadurch zustande gekommen ist, nachdem ich viele Dateien (.mat,.jpg, etc) beim kompilieren hinzugefügt habe, die ich vll doch besser wieder extern speichern und aufrufen sollte. Denn bevor ich das gemacht habe startete die exe nach etwa 30 s (natürlich auf dem gleichen Rechner)

MfG Marco
Private Nachricht senden Benutzer-Profile anzeigen
 
Gly

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2011, 09:15     Titel:
  Antworten mit Zitat      
Hallo Marco,

es freut mich,dass ich hier auch mal jemanden helfen kann. Ich bin wirklich froh, dass diese Seite existiert.

Aber du wirst dich wegen der Lösung entweder sehr ärgern, weil es so einfach ist, oder dich kaputt lachen...Ich hoffe aber,dass meine Lösung dir weiter hilft.

Also öffne zuerst eine Matlab Fenster und speichere es unter irgend eine Name. 'z.B Waitbar_initialisirung.m'

Dann:

Code:

% WAITBAR Initialisierung
try
    h = waitbar(0,'','Name','Please wait...');

for i=1:50 %ich habe mit 50 rechnen lassen, jeder muss selber wissen :-)
   
   if ~mod(i,10)
     
      if ishandle(h)
        waitbar(i/50,h,[num2str((i*100)/50) '%'])
      else
         msgbox('Process wurde unterbrochen','replace')
         
         return
      end
   end
     
   pause(0.01)
   
end

catch Me
   close(h)
   msgbox('Bitte nochmal versuchen','replace')
   return
end
close(h)  
     
% HIER KOMMT DEIN MAIN FUNCTION VON DER GUI z.B Datenanalyse();
 

und das war's!!!

Fast wenn du noch fragen hast, stehe ich gerne zur Verfügung.

Gruß
Gül
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 20.01.2011, 11:16     Titel:
  Antworten mit Zitat      
Hey,

ja so in der Art habe ich das auch gemacht. Nur hatte ich zuvor einige Dateien beim Kompilieren hinzugefügt, die nicht hätten sein müssen, sodass beim Starten der exe ziemlich viel geladen werden musste... Ich habe nun nur das nötigste hinzugefügt und somit startet die exe auch recht zügig (unter 10 s). Also wars mein Fehler bei der Kompilierung.

Eine Sache ist mir dennoch aufgefallen. Starte ich die exe wird ja erst die mcr geladen und das wohl mit vollem Umfang. Betrachte ich den Taskmanager werden gut 200 MB in den Arbeitsspeicher geladen. Dieser Zusatand ist aber nicht von dauer. Soll heißen, dass dieser zwischen 20 und gut 200 MB variiert. Im enteffekt ist mir das aufgefallen, als ich das Programm offen hatte und in einem anderen Programm am Arbeiten war. Mitmal rutschte die Speicherauslastung von gut 200 auf 20 MB runter. Muss man das verstehen?

MfG Marco
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.