El temporizador es poderoso y este artículo registra un caso de uso simple.
Función descriptiva
Haga clic para iniciar el cronometraje y llame a la función de devolución de llamada cuando se alcance el tiempo establecido.
En la función de devolución de llamada, el valor de "visualización numérica" se incrementa en uno.
El período del temporizador se puede modificar manualmente.
diseño de la interfaz de usuario
Entre ellos: Los cuadros de caracteres son todos cuadros numéricos, no cuadros de texto.
Nombre del componente
Pasos de implementación
1. Agregar propiedades
Aquí elijo el identificador del
temporizador de atributo privado
properties (Access = private)
Timer_id; % 定时器id
end
2. Agregar función de control de temporizador
Aquí elijo función privada
methods (Access = private)
% 定时器初始化,重复模式
function timer_init(app)
app.Timer_id = timer;
app.Timer_id.StartDelay = 0.01; % 开启的延时生效时间
app.Timer_id.Period = 1.0;% 周期
app.Timer_id.ExecutionMode = 'fixedSpacing';
app.Timer_id.TimerFcn = @(~, ~) timer_handler(app);
end
% 定时器启动
function timer_start(app)
start(app.Timer_id);
end
% 定时停止
function timer_stop(app)
stop(app.Timer_id);
end
% 删除定时器
function timer_delete(app)
delete(app.Timer_id);
end
%定时器回调
function timer_handler(app)
%执行定时器任务
app.EditField.Value = app.EditField.Value +1;
end
end
Explicación de algunos conceptos:
- El período cronometrado por el temporizador de período
. - El intervalo entre el momento en que StartDelay
inicia el temporizador y el inicio de la cuenta regresiva.
Por ejemplo: StartDelay = 4, Period = 2
start(app.Timer_id), primero esperará 4s de StartDelay, luego contará hacia atrás 2s de Period y luego llamará a la función de devolución de llamada de TimerFcn para su procesamiento. - ExecutionMode
especifica el método de activación del temporizador (activar una vez o cíclicamente...) Hay cuatro métodos en total, que se pueden seleccionar según las necesidades reales.
sigleShot; solo se ejecuta una vez, el temporizador se cerrará automáticamente después de la ejecución. En otros modos, fixedDelay se puede ejecutar cíclicamente; fixedRate
es el intervalo entre el momento en que se ejecuta el último TimerFcn y el momento en que se agrega el siguiente TimerFcn a la cola; el intervalo entre la última ejecución y la siguiente adición a la cola es fixedSpacing: dos veces antes y después se agregan a la ejecución Intervalo entre los momentos de la cola de declaraciones
- eliminar y modificar el período
Para eliminar un temporizador, puede eliminar o modificar el período solo después de que se haya detenido el temporizador.
3. Inicializar el temporizador
Haga clic con el botón derecho en app.UIFigure para agregar una función de devolución de llamada
% Code that executes after component creation
function startupFcn(app)
timer_init(app);
end
Después de abrir el software, se realizará la inicialización del temporizador.
4. Iniciar o detener el temporizador
Agregar devolución de llamada de pulsación de tecla para el botón de parada. (Este botón usa el botón de estado)
% Value changed function: Button_Contrl
function Button_ContrlValueChanged(app, event)
value = app.Button_Contrl.Value;
if value == 1
app.Button_Contrl.Text = '停止';
timer_start(app);
else
app.Button_Contrl.Text = '开始';
timer_stop(app);
end
end
5. Establecer el período del temporizador
Puede agregar la función de devolución de llamada del botón correspondiente.
Tenga en cuenta que debe detenerlo antes de poder modificarlo.
% Button pushed function: Button_SetPeriod
function Button_SetPeriodPushed(app, event)
timer_stop(app);
app.Timer_id.Period = app.EditField_PeriodValue.Value;
timer_start(app);
end
Agregue una función de devolución de llamada para borrar el valor a cero.
% Button pushed function: Button_Clear
function Button_ClearPushed(app, event)
app.EditField_Show.Value = 0;
end
6. Configure el software para cerrar la devolución de llamada
Cuando el software esté cerrado, suelte el temporizador
function UIFigureCloseRequest(app, event)
% 停止定时器,然后删除
timer_stop(app);
timer_delete(app);
delete(app);
end
Resultados experimentales
Haga clic en el botón de inicio
y haga clic en borrar para borrar los datos a 0.
Establezca el período de tiempo en 0,2, y la velocidad del aumento del valor es significativamente más rápida.
Haga clic en detener, el temporizador se detiene y el valor no aumenta.