Ich versuche einen Countdown mit einem Timer in einer GUI/Matlab zu programmieren. Die GUI wird mit Guide erstellt. Meine Idee ist es, zwei Bearbeitungsfelder zu haben, wobei eine Box mit einer Zeit im Format ss: ms (z.B. 50.200) gefüllt werden kann. Durch Drücken der Start-Taste sollte der Countdown im zweiten Eingabefeld angezeigt und ausgeführt werden. Mein Problem im Moment, ich kann nur die Sekunden und nicht die Milliseconds in der zweiten Bearbeitungsbox zeigen. Ich habe versucht sprintf - aber ich denke, dass der Handle "TasksToExecute" aus dem Timer keine Dezimalzahlen akzeptiert ?!Gibt es eine Möglichkeit, Sekunden und Millisekunden in einem Bearbeitungsfeld anzuzeigen?
Kann jemand helfen? Oder hat jemand eine Idee, wie zu lösen?
Danke.
function varargout = Countdown_test(varargin)
% COUNTDOWN_TEST MATLAB code for Countdown_test.fig
% COUNTDOWN_TEST, by itself, creates a new COUNTDOWN_TEST or raises the existing
% singleton*.
%
% H = COUNTDOWN_TEST returns the handle to a new COUNTDOWN_TEST or the handle to
% the existing singleton*.
%
% COUNTDOWN_TEST('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in COUNTDOWN_TEST.M with the given input arguments.
%
% COUNTDOWN_TEST('Property','Value',...) creates a new COUNTDOWN_TEST or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Countdown_test_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Countdown_test_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Countdown_test
% Last Modified by GUIDE v2.5 23-Jan-2017 14:47:18
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Countdown_test_OpeningFcn, ...
'gui_OutputFcn', @Countdown_test_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 Countdown_test is made visible.
function Countdown_test_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Countdown_test (see VARARGIN)
% Choose default command line output for Countdown_test
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Countdown_test wait for user response (see UIRESUME)
% uiwait(handles.Countdown_test);
countdown_timer = timer;
set(countdown_timer,'ExecutionMode','fixedrate');
set(countdown_timer,'Period',1.0);
set(countdown_timer,'TimerFcn',{@countdowntimercallback,handles});
% Store the timer in the GUI so it persists for the life of the GUI
setappdata(handles.Countdown_test, 'Countdown_timer', countdown_timer);
fileName = 'state.mat';
if exist(fileName)
load(fileName)
set(handles.ed_PS_Time,'String',state.PST);
delete(fileName);
end
% --- Outputs from this function are returned to the command line.
function varargout = Countdown_test_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function ed_countdown_Callback(hObject, eventdata, handles)
% hObject handle to ed_countdown (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of ed_countdown as text
% str2double(get(hObject,'String')) returns contents of ed_countdown as a double
% --- Executes during object creation, after setting all properties.
function ed_countdown_CreateFcn(hObject, eventdata, handles)
% hObject handle to ed_countdown (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
set(hObject,'String','');
% --- Executes on button press in pb_start.
function pb_start_Callback(hObject, eventdata, handles)
% hObject handle to pb_start (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
countdown_timer = getappdata(handles.Countdown_test,'Countdown_timer');
anzahl=str2num(get(handles.ed_PS_Time,'String'));
sprintf('%0.3f',anzahl);
set(countdown_timer,'TasksToExecute',anzahl);
start(countdown_timer);
set(handles.ed_countdown, 'Enable','off');
durchlaeufe=get(countdown_timer,'TasksToExecute');
setappdata(handles.Countdown_test,'Durchlauf',durchlaeufe);
function countdowntimercallback(obj,~,handles)
countdown_timer = getappdata(handles.Countdown_test,'Countdown_timer');
durchlaeufe_aktuell=get(countdown_timer,'TasksExecuted');
durchlaeufe = getappdata(handles.Countdown_test,'Durchlauf');
Countdown = durchlaeufe - durchlaeufe_aktuell;
sprintf('%0.3f',Countdown);
set(handles.ed_countdown,'String',Countdown);
% --- Executes on button press in pb_stop.
function pb_stop_Callback(hObject, eventdata, handles)
% hObject handle to pb_stop (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% handles.ed_PS_Time = str2num(get(handles.ed_PS_Time, 'String'));
% guidata(hObject,handles);
countdown_timer = getappdata(handles.Countdown_test,'Countdown_timer');
stop(countdown_timer);
function ed_PS_Time_Callback(hObject, eventdata, handles)
% hObject handle to ed_PS_Time (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of ed_PS_Time as text
% str2double(get(hObject,'String')) returns contents of ed_PS_Time as a double
% --- Executes during object creation, after setting all properties.
function ed_PS_Time_CreateFcn(hObject, eventdata, handles)
% hObject handle to ed_PS_Time (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
set(hObject,'String','0');
% --- Executes when user attempts to close Countdown_test.
function Countdown_test_CloseRequestFcn(hObject, eventdata, handles)
% hObject handle to Countdown_test (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: delete(hObject) closes the figure
saveState(handles)
delete(hObject);
function saveState(handles)
state.PST = get(handles.ed_PS_Time, 'String');
save('state.mat','state')
}