定时器功能错误(MATLAB R2014a)

时间:2016-07-30 08:13:32

标签: matlab matlab-guide

我陷入了计时器功能错误。虽然我试图搜索,但我找不到答案。

function figure1_CreateFcn(hObject, eventdata, handles) 
global t
t = timer( 'ExecutionMode', 'fixedRate', 'StartDelay',1, 'Period',1,'TasksToExecute',150); 
t.TimerFcn = {@my_callback_fcn};

我得到的错误是:

  

计算定时器'timer-1'的TimerFcn时出错   输入参数太多。

我的MATLAB版本是R2014a。 start函数称为pushbutton2_Callback函数 我在Period的调用中尝试将1.0更改为TasksToExecuteinf更改为TimerFcntimer。它没有帮助。

有没有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

导致错误的原因是您提供的回调函数my_callback_fcn没有两个输入参数。您有两种可能性来解决这个问题。只做一个

  1. 分配定时器回调时,创建一个带有两个输入参数的匿名函数:

    t.TimerFcn = {@(obj,event)my_callback_fcn};
    
  2. my_callback_fcn添加两个输入参数,以便该函数的第一行如下所示:

    function my_callback_fcn(obj,event)
    
  3. 如果您在函数中不需要它们,则可以忽略~的参数。所以问题中的代码可能如下所示:

    t = timer('ExecutionMode', 'fixedRate', 'StartDelay',1, 'Period',1, 'TasksToExecute',150); 
    t.TimerFcn = {@(~,~)my_callback_fcn};
    

    Here是关于计时器回调函数的更多信息。

    要解决this评论和that一个问题:

    请勿尝试同时应用这两种解决方案,因为这样您就会在函数原型中添加两​​个参数,然后再提供它。结果将是以下错误:

      

    评估TimerFcn for timer' timer-1'时出错   没有足够的输入参数。

    根据您在评论中发布的原型,您只需要做解决方案2。这是一个有效的演示:

    function timertest
    t = timer('ExecutionMode', 'fixedRate', 'StartDelay',1, 'Period',1, 'TasksToExecute',150); 
    t.TimerFcn = {@my_callback_fcn};
    start(t); pause on; pause; stop(t); delete(t);
    
    function my_callback_fcn(handles,~)
    handles;
    disp('xy');