|
|
Zeitabhängige Schleifen oder Timer |
|
Becks_jn |

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 13:23
Titel: Zeitabhängige Schleifen oder Timer
|
 |
Hallo Forum-Mitglieder,
ich habe eine Frage bezüglich zeitabhängiger Schleifen.
Ich habe ein Programm geschrieben, dass eine Kamera anspricht und mit getsnapshot ein Bild aus dem Videosignal unter Angabe der Uhrzeit abspeichert.
Dieses Programm möchte ich jetzt 24 Stunden durchlaufen lassen, wobei alle 10 Minuten ein Bild gespeichert werden soll.
Ich habe ja keine Lust 24 h am PC zu sitzen und alle 10 Minuten den Startbutton zu drücken.
Hat jemand eine Lösung für mich, wie ich das realisieren kann? Geht das mit einer Schleife oder einem Timer?
Super wär, wenn man das Programm dann noch abbrechen kann, wenn etwas unvorhersehbares aufgetreten ist und nicht 24 h warten muss.
Vielen Dank für eure Hilfe!
|
|
|
|
|
Matt Lappen |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 23.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 13:41
Titel:
|
 |
Hi,
Mit pause(), kannst du die Ausführung des Skripts um das eingegebene Zeitintervall unterbrechen, falls du mittels callback eine Funktion zum Aufnehmen der Bilder aktivieren möchtest, schau dir am besten mal die Hilfe zu timer() an. Mit clock kannst du auch dass aktuelle Datum und die Zeit abfragen.
Gruß,Matt
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 14:51
Titel: Re: Zeitabhängige Schleifen oder Timer
|
 |
Hallo Becks_jn,
TIMER ist wohl die stabilste Lösung. Wie exakt muss denn das 10 Minuten-Intervall sein? Bei weniger als 0.05 Sekunden wird das mit Matlab kritisch.
Zudem muss noch der der Rechner daran gehindert werden, dass er in den Schlafmodus fällt. Wenn sich die Festplatte bereits schlafen gelegt hat, kann eine deutlicher Verzögerung auftreten.
Gruß, Jan
|
|
|
Becks_jn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 18:40
Titel:
|
 |
Hallo,
danke für eure Antworten.
Also es kommt überhaupt nicht auf die Zeit an. Kann eine Ungenauigkeit von einer Minute oder so sein.
Wie spreche ich denn genau einen Timer an?
Kann man das auch mit der Uhrzeit programmieren?
Ich meine, dass ich dem Programm ne Startzeit und eine Endzeit angebe?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.10.2011, 20:10
Titel:
|
 |
Hallo,
lies dir doch bitte die Doku zu TIMER durch. Die Möglichkeiten gibt es alle.
Wenn dann noch Fragen bestehen, gerne.
Ein Tipp vorab: die Option 'ExecutionMode' sollte auf 'FixedDelay' gesetzt werden.
Grüße,
Harald
|
|
|
Becks_jn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 04.11.2011, 18:31
Titel:
|
 |
Hallo
Ich bin jetzt weiter, aber lange nicht am Ziel, denn ich weiß nicht, wie ich meine TimerFcn aufrufen soll. Da muss er ja eigentlich nur mein anderes m.file abspielen. Aber ich weiß nicht wie ich Matlab das sage.
Die StartFcn und StopFcn kann ich ja leer lassen oder?
Hier mein Code:
Das funktioniert auf jeden fall nicht so.
Vielen Dank für eure Hilfe.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 04.11.2011, 18:49
Titel:
|
 |
Hallo,
das sieht doch schon gut aus. Jetzt hättest du dir nur noch den Link in der Doku zu TimerFcn ansehen müssen. Dort steht, dass die TimerFcn folgendes Interface haben muss:
Wenn du Informationen wie die Uhrzeit, zu der das Event ausgelöst wurde, nicht brauchst, kannst du deine Funktion so aufbauen
und schon sollte dein Code funktionieren.
Grüße,
Harald
|
|
|
Becks_jn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 05.11.2011, 10:42
Titel:
|
 |
Hallo.
Ich habe das jetzt folgend aufgebaut.
Das steht alles in einem m-file.
Ich bekomme jetzt folgede Fehlermeldung mit der ich nichts anfangen kann.
Function definitions are not permitted in this context.
Ich weiß auch nicht wofür das (obj, event, string_arg) hinter der callback_fcn stehen.
In der Callback function wird ein Videosignal ausgelesen und ein Screenshot erstellt. Dieser Screenshot wird als jpg. abgespeichert und dann werden noch eine Reihe von Variablen deklariert und nachher etwas in eine Textdatei geschrieben.
Muss ich dabei noch irgendwas beachten?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.11.2011, 11:03
Titel:
|
 |
Hallo,
ja, du musst etwas sehr grundlegendes beachten. Funktionen müssen entweder in einer eigenen Datei stehen, oder sie können Unterfunktionen sein - dann muss auf der übergeordneten Ebene aber auch eine Funktion sein.
Das "clear all" ist übrigens recht überflüssig.
Grüße,
Harald
|
|
|
Becks_jn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 05.11.2011, 12:04
Titel:
|
 |
Hallo,
habe mein Programm jetzt so gut wie fast fertig...
Es klappt alles und er durchläuft auch meine callback_fcn mit den Unterfunktionen.
Nur eine Grundlegende frage habe ich jetzt..
Am Anfang deklariere ich Variablen und öffne das Videosignal. Dann kommt der Timer der die Screenshots erstellt und speichert. Nach dem durchlauf des Timers soll er das Videosignal wieder schließen.
Das sieht so aus:
Wartet der Timer nun an der Stelle start(T) bis er die TastsToExecute durchlaufen hat und schließt dann das Videosignal oder geht der den Quellcode bis unten durch und wiederholt dann die Schritte in der callback_fcn?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.11.2011, 12:11
Titel:
|
 |
Hallo,
das sollte sich ja austesten lassen. Meiner Ansicht nach werden die Befehle zum Schließen unmittelbar nach dem start-Befehl ausgeführt, was wohl nicht der Sinn der Sache ist.
Für diesen Zweck würde ich die StopFcn verwenden. Das Öffnen des Videosignals könnte man in die StartFcn stecken.
Grüße,
Harald
|
|
|
Becks_jn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 46
|
 |
|
 |
Anmeldedatum: 02.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2018
|
 |
|
|
 |
|
Verfasst am: 05.11.2011, 19:02
Titel:
|
 |
Hey...
Es läuft nun alles so wie ich es mir gewünscht habe.
Vielen Dank du hast mir sehr geholfen.
Lg
|
|
|
|
|
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.
|
|