如何在MATLAB指南中制作倒计时计时器?

如何在MATLAB指南中制作倒计时计时器?,matlab,matlab-guide,Matlab,Matlab Guide,我试图在指南中制作一个从20秒倒计时到0秒的计时器。同时,用户将执行一个简单的操作(单击组按钮中的单选按钮),在20秒结束时将显示一条消息(取决于用户单击的按钮)。 我环顾四周,但似乎并没有一个计时器对象作为指南(为什么他们不制作一个,因为它非常有用??)。但是我试着做了一个,下面是结果,它不起作用。 我在MyGUI\u OpeningFcn中初始化了setappdata: % Initialize setappdata timeout = 20; setappdata(handles.figu

我试图在指南中制作一个从20秒倒计时到0秒的计时器。同时,用户将执行一个简单的操作(单击组按钮中的单选按钮),在20秒结束时将显示一条消息(取决于用户单击的按钮)。 我环顾四周,但似乎并没有一个计时器对象作为指南(为什么他们不制作一个,因为它非常有用??)。但是我试着做了一个,下面是结果,它不起作用。 我在
MyGUI\u OpeningFcn
中初始化了
setappdata

% Initialize setappdata
timeout = 20;
setappdata(handles.figure1,'timeout', timeout);
Next\u calculation
是单选按钮,
timerBox
是静态文本

function Next_calculation_Callback(hObject, eventdata, handles)
[..]
timeout = getappdata(handles.figure1,'timeout');
t = timer('Period', 1.0,... % 1 second
          'StartFcn', set(handles.timerBox,'String',num2str(timeout)), ... 
          'ExecutionMode', 'fixedRate', ... % Starts immediately after the timer callback function is added to the MATLAB execution queue
          'TasksToExecute', timeout, ... % Indicates the number of times the timer object is to execute the TimerFcn callback
          'TimerFcn', @my_timer  ... % callback to function
         );
start(t)
一旦计时器开始,它将调用调用
TimerFcn
my\u timer
。我应该给我的计时器传递一个句柄,但我不知道怎么传递

function my_timer(hObject, eventdata)
% I think I'm supposed to pass (hObject, eventdata) to my_timer

% handles should be getting the current figure from hObject
handles = guidata( ancestor(hObject, 'figure1') );

timeout = getappdata(handles.figure1,'timeout');
t_left = timeout - 1.0;
% show the updated time 
set(handles.timerBox,'String',num2str(t_left));
% update 'timeout'
setappdata(handles.figure1,'timeout',t_left)

您需要为
TimerFcn
使用自定义匿名函数,以将必要的数据传递给计时器回调

set(t, 'TimerFcn', @(s,e)my_timer(hObject, handles))
然后,您可以将您的
my_计时器
回调定义为

function my_timer(hObject, handles)
    % Do stuff with handles
end