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!
Dotter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.04.2011, 14:41
Titel:
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).
% --- Outputs from this function are returned to the command line. functionvarargout = Test2_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;
% --- Executes on button press in togglebutton_taster. function togglebutton_taster_Callback(hObject, eventdata, handles)
ifget(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
zu manipulieren, funktioniert das nicht...
und anders fängt er immer wieder von neuem an
Irgendein kompliziertes Gefrickel wollt ich wenn möglich vermeiden...
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.
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
Ich würde das hObject einfach in die tt-Fkt. übergeben
Dotter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.04.2011, 18:28
Titel:
hmm... okay... probier ich gleich morgen mal aus, danke schonmal
Dotter
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 21.04.2011, 09:00
Titel:
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) ifget(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.
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
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.