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

if Bedingung in einer while Schleife

 

BlackDice
Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 24.03.2021, 18:27     Titel: if Bedingung in einer while Schleife
  Antworten mit Zitat      
Moin zusammen,
ich habe mir hier eine while Schleife in der eine if Bedingung drin ist gebastelt. Es soll so sein, dass man über einen DatePicker und zwei Numeric Feldern Datum und Uhrzeit einträgt. Nachdem drücken des Buttons soll die Lamp so lange rot sein bis das eingetragene Datum mit dem now Datum und Uhrzeit übereinstimmt oder größer ist.
Wenn die App normal starte wird die Lamp auch zur passenden Uhrzeit grün allerdings wird die Lamp nicht rot. Wenn ich im Debug Modus jede einzelne Zeile durchgehe wird die Lampe rot. Also sollte die Schleife nicht so falsch programmiert sein oder?

Viele Grüße
Fabian

Code:
       function datetimecontrol(app)
            Pick = app.Picker.Value;
           
            S = app.Stunde.Value;
            Mi = app.Minute.Value;
           
            B = Pick + hours(S) + minutes(Mi);
            B.Format = "dd-MMM-yyyy HH:mm";
           
            while 1
                A = datetime("now");
                A.Format = "dd-MMM-yyyy HH:mm";
                if A <= B
                    app.Lamp.Color = 'green';
                    break
                    %Messung starten
                else
                    app.Lamp.Color = 'red';
                    C = A-B;
                    %                     app.Label.Value = C;
                end
            end
        end
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.03.2021, 21:12     Titel:
  Antworten mit Zitat      
Hallo,

ich habe Schwierigkeiten, dir zu folgen.
Wenn das Verhalten beim Debugging richtig ist, bei der regulären Ausführung aber nicht, dann hilft oft
Code:

um eine Aktualisierung zu erzwingen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDice
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 24.03.2021, 21:48     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Wenn das Verhalten beim Debugging richtig ist, bei der regulären Ausführung aber nicht,


Moin Harald,
ja genau so kann man es verkürzt sagen im Debugging funktioniert es und beim normalen ausführen nicht.
Ich habe das jetzt
Code:
hinzugefügt und es funktioniert. Vielen Dank.
Hast du vielleicht auch eine Erklärung warum das so ist?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.03.2021, 21:54     Titel:
  Antworten mit Zitat      
Hallo,

aus Effizienzgründen werden Graphiken erst aktualisiert, wenn ihre Erstellung "abgeschlossen" ist. Wenn MATLAB merkt, dass sich etwas dauernd ändert / ändern kann, dann wird das "aufgeschoben". Mit drawnow erzwingst du eine Aktualisierung.

Mir scheint übrigens, dass du die Lampe auf grün setzt, auch wenn sie schon grün war, und auf rot, auch wenn sie schon rot war. Effizienter ist es, wenn du die Farbe nur setzt, wenn du sie auch wirklich änderst.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDice
Themenstarter

Forum-Century

Forum-Century


Beiträge: 148
Anmeldedatum: 08.12.20
Wohnort: ---
Version: R2020b
     Beitrag Verfasst am: 25.03.2021, 12:12     Titel:
  Antworten mit Zitat      
Danke für die Erklärung.

Ich habe mit der Schleife erstmal nur getestet wie die funktioniert bzw. was ich damit so machen kann. Später soll dann zu der eingestellten Zeit eine Messung starten. die Lamps waren erstmal nur ein Platzhalter.
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.