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

Timer pausieren

 

Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2011, 08:50     Titel: Timer pausieren
  Antworten mit Zitat      
Hallo!
Ich arbeite mit der Timer Funktion und wollte wissen ob es eine einfache möglichkeit gibt diesen zu pausieren.
also

Code:

if a
       %pausiere timer
else
       %lass timer da weiter laufen wo er davor aufgehört hat zu zählen
end
 


mit der Funktion
Code:

hab ich es nicht hinbekommen Sad und was anderes habe ich auch nicht gefunden

Danke schonmal!


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.04.2011, 10:31     Titel:
  Antworten mit Zitat      
Hallo

du musst einfach Timer mit STOP-Befehl anhalten
Und dann wieder mit START fortsetzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2011, 12:43     Titel:
  Antworten mit Zitat      
Aber dann fängt der Timer ja wieder von neuem an zu zählen, genau das will ich ja aber nicht...
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.04.2011, 12:53     Titel:
  Antworten mit Zitat      
Hallo wo speicherst du denn deinen Zähler? Das darfst nicht überschreiben beim Stoppen(StopFcn)/Starten(StartFcn).
Zähler nur in TimerFcn verändern.
Ein wenig klares Beispiel mit Timer wäre doch super!
Private Nachricht senden Benutzer-Profile anzeigen
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.04.2011, 14:41     Titel:
  Antworten mit Zitat      
Ok, dann setzt ich mal mein Programm rein, dachte es geht auch so…
Hab eine GUI mit einem togglebutton, einer Achse und einem Textfeld.
In der Achse sind 2 Figuren (ein Quadrat und ein Quadrat mit runden ecken). Die sollen je nach Zeit ihre Farbe ändern usw…
Zusätlich wollte ich jetzt einen zweiten togglebutton haben, mit dem ich die Zeit anhalten kann (und dann auch wieder weiter laufen lassen kann).

Hoffe das so mein Problem besser erläutert ist :\

Danke schonmal!!!

Code:

function varargout = Test2(varargin)
% Last Modified by GUIDE v2.5 08-Apr-2011 08:13:08
 
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @Test2_OpeningFcn, ...
                   'gui_OutputFcn',  @Test2_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
 
 
% --- Executes just before Test2 is made visible.
function Test2_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
 
 
%Figur definition
    %Quadrat
handles.MyRec = rectangle('position',[0.5 1.5 2 2],'curvature',[0,0]);
    %Quadrat mit runden Ecken
handles.MyOther = rectangle('position',[6.5 1.5 2 2],'curvature',[0.5,0.5]);
 
%Timer Definition
handles.T=timer('Timerfcn', {@tt,handles}, 'Period', 0.1, 'ExecutionMode','fixedRate');
 
guidata(hObject, handles);
 
axes(handles.axes)
axis([0 9 0 5]);
 
 
 
% --- Outputs from this function are returned to the command line.
function varargout = Test2_OutputFcn(hObject, eventdata, handles)
    varargout{1} = handles.output;
 
 
% --- Executes on button press in togglebutton_taster.
function togglebutton_taster_Callback(hObject, eventdata, handles)
 
if get(hObject,'Value')==1
    % Start Timer, wenn Timer button eingerastet ist
    start(handles.T)
    set(handles.MyOther, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
else
    % Stop Timer, wenn Timer button ist ausgerastet ist
    stop(handles.T)
   
    %Aktion nach dem Timer stop
    set(handles.MyRec, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
    set(handles.MyOther, 'EdgeColor','k', 'FaceColor','w', 'LineWidth',1)
end
 
 
function tt(T,cnc,handles)
 
t=get(T,'TasksExecute')*get(T,'Period');
set(handles.text_time_s,'String',t)
 
%Zeitabhängige >ktion
if t==3
    msgbox('jetzt sind 3 sec um')
elseif t==4
    set(handles.MyCircle, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
end


% --- Executes on button press in togglebutton_pause.
function togglebutton_pause_Callback(hObject, eventdata, handles)
 
if get(hObject,'Value')==1
    %Timer soll pausieren
else
    %Timer soll weiter machen wo zuvor aufgehört
end
 
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2011, 10:19     Titel:
  Antworten mit Zitat      
Keiner eine Idee??
Wenn ich nämlich den Zähler neuen Zähler versuche mit
Code:
set(handles.T,'TasksExecute',Zahl)

zu manipulieren, funktioniert das nicht...
und anders fängt er immer wieder von neuem an Sad
Irgendein kompliziertes Gefrickel wollt ich wenn möglich vermeiden...
 
Peter Quint
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 14.04.2011, 16:18     Titel:
  Antworten mit Zitat      
Ich habe mit der Timer-Funktion noch nie wirklich gearbeitet. Aber warum macht Ihr es Euch denn so schwer?
Du kannst doch eine variable nehmen, in dem Du die letzten Timerstand speichert.

Nach dem Schema (kein richtiger Code):
Code:

k=0;
timer(start);

disp(timer+k);

%Button Stop Callback
k=timer+k;
timer(stop);

%Button Start Callback
timer(start);
disp(timer+k);
 


Oder übersehe ich da etwas?
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter Quint
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 14.04.2011, 16:25     Titel:
  Antworten mit Zitat      
Code:
function tt(T,cnc,handles)
 
t=get(T,'TasksExecute')*get(T,'Period')+handles.lastValue;
set(handles.text_time_s,'String',t)
 
%Zeitabhängige >ktion
if t==3
    msgbox('jetzt sind 3 sec um')
elseif t==4
    set(handles.MyCircle, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
end
guidata(hObject, handles);


Code:
function Test2_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
handles.lastValue=0;

guidata(hObject, handles);
Code:

function togglebutton_taster_Callback(hObject, eventdata, handles)
 
if get(hObject,'Value')==1
    % Start Timer, wenn Timer button eingerastet ist
    start(handles.T)
    set(handles.MyOther, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
else
    % Stop Timer, wenn Timer button ist ausgerastet ist
    stop(handles.T);
    handles.lastValue = get(T,'TasksExecute')*get(T,'Period')+handles.lastValue;
    %Aktion nach dem Timer stop
    set(handles.MyRec, 'EdgeColor','r', 'FaceColor','y', 'LineWidth',4)
    set(handles.MyOther, 'EdgeColor','k', 'FaceColor','w', 'LineWidth',1)
end
guidata(hObject, handles);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 09:26     Titel:
  Antworten mit Zitat      
Hey Peter,

Ja, das mit der Variable hatte ich auch mal ausprobiert, aber ich hab das mit der handles übergabe nicht hinbekommen --> guidata ist da wohl die antowort - DANKE dafür!

Nur was schreib ich ins Guidata rein bei der tt - Funktion?? die Funktion selbst hat ja kein handles (also kein hObject)...
ich hab schon so einiges ausprobiert... die Hilfe hilft mir auch nicht weiter... irgendwie versteh ich das alles noch nicht so richtig Sad
 
Peter Quint
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 95
Anmeldedatum: 21.02.11
Wohnort: Lübeck
Version: R2010b
     Beitrag Verfasst am: 18.04.2011, 12:11     Titel:
  Antworten mit Zitat      
Ich würde das hObject einfach in die tt-Fkt. übergeben
Private Nachricht senden Benutzer-Profile anzeigen
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2011, 18:28     Titel:
  Antworten mit Zitat      
hmm... okay... probier ich gleich morgen mal aus, danke schonmal Very Happy
 
Dotter

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.04.2011, 09:00     Titel:
  Antworten mit Zitat      
So... nach vielem rumprobieren hab ich es endlich geschafft!
mit hObject übergeben hat irgendwie nicht funktioniert (oder ich bin einfach zu blöd!)
aber wenn ich den timer nochmal neu sette (und damit die handles funktion aktualisiere), dann wird der wert von handles.lastValue übergeben!
Code:

function togglebutton_pause_Callback(hObject, eventdata, handles)
if get(hObject,'Value')==1
    handles.lastValue=get(handles.T,'TasksExecute')*get(handles.T,'Period')+handles.lastValue;
    stop(handles.T)
else
    %Aktualisiere handles
    set(handles.T, 'TimerFcn', {@tt,handles})
    %starte Timer
    start(handles.T)  
end
guidata(hObject, handles);
 

Vielen Dank dir Peter für die Hilfe & die Hinweise auf GUIData etc.
 
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.