1. 程式人生 > >matlab 定時器的用法

matlab 定時器的用法

定時器的使用的程式例項:

%%  定時器
% 函式說明:(命令列輸入)
% t_test:建立一個定時器物件,從 0 開始計數(每 2 秒)
% t_test('stop'):停止計數,刪除定時器
function t_test(varargin)
    global num num1 num2
    if nargin == 0  % 直接命令列輸入 t_test 表示:建立一個定時器物件,開始定時
        num = 0;
        num1 = 100;
        num2 = 1000;
        delete(timerfind)   % 刪除現有的定時器,重新建立一個定時器
        t = timer('StartDelay',1,'TimerFcn',@t_TimerFcn,'Period',2,'ExecutionMode','fixedRate');
        t1 = timer('StartDelay',1,'TimerFcn',@t_TimerFcn1,'Period',2,'ExecutionMode','fixedDelay');
        t2 = timer('StartDelay',1,'TimerFcn',@t_TimerFcn2,'Period',2,'ExecutionMode','fixedSpacing');
        start([t,t1,t2])
    elseif ((nargin == 1) && strcmp(varargin{1},'stop'))
        stop(timerfind)
        delete(timerfind)
    else
        
    end
end
%%  回撥函式
function t_TimerFcn(hObject,eventdata)
    global num
    disp(num2str(num))
    num = num + 1;
end
function t_TimerFcn1(~,~)
    global num1
    disp(num2str(num1))
    num1 = num1 + 1;
end
function t_TimerFcn2(~,~)
    global num2
    disp(num2str(num2))
    num2 = num2 + 1;
end

注意:
1.使用程式時,將程式碼貼上到新文件中,命名為t_test.m。
2.定時器的定時回撥函式的寫法:
t = timer('StartDelay',1,'TimerFcn',@t_TimerFcn,'Period',2,'ExecutionMode','fixedRate')
雖然此處好像沒有傳入引數,但是函式定義時需要傳入兩個引數,例如:
function t_TimerFcn(hObject,eventdata)

end
3.定時器的開始、停止、刪除:
start(t)
注意刪除定時器之前,先暫停定時器
stop(t)
delete(t)
當然你不知道有幾個定時器的時候,可以使用 timerfind 函式查到所有的定時器,停止刪除,例如:
stop(timerfind)
delete(timerfind)
4.執行模式ExecutionMode有四種:'singleShot'、'fixedDelay'、 'fixedRate'、 'fixedSpacing' ,第一個為定時一次,後三種為連續定時


同時,在程式中可以看出這三種執行的先後順序。