[MATLAB] Uso básico del temporizador de APP Designer (Temporizador)

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

inserte la descripción de la imagen aquí
Entre ellos: Los cuadros de caracteres son todos cuadros numéricos, no cuadros de texto.
Nombre del componente
inserte la descripción de la imagen aquí

Pasos de implementación

1. Agregar propiedades

inserte la descripción de la imagen aquí
Aquí elijo el identificador del
temporizador de atributo privado

   properties (Access = private)
        Timer_id;        % 定时器id
   end

2. Agregar función de control de temporizador

inserte la descripción de la imagen aquí
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
inserte la descripción de la imagen aquí
y haga clic en borrar para borrar los datos a 0.
inserte la descripción de la imagen aquí
Establezca el período de tiempo en 0,2, y la velocidad del aumento del valor es significativamente más rápida.
inserte la descripción de la imagen aquí
Haga clic en detener, el temporizador se detiene y el valor no aumenta.
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_44078824/article/details/122258372
Recomendado
Clasificación