2016-07-30 192 views
1

我被困在計時器功能的錯誤中。雖然我試圖搜索,但我找不到答案。計時器功能錯誤(MATLAB R2014a)

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

我得到的錯誤是:

Error while evaluating TimerFcn for timer 'timer-1'
Too many input arguments.

我的MATLAB版本R2014a。 start函數被稱爲pushbutton2_Callback函數。
我試圖在timer的電話中將Period更改爲1.0,TasksToExecuteinfTimerFcn。它沒有幫助。

有沒有人可以幫助我?

+0

my_callback_fcn'(原型由上述馬特問)的'第一線應至少有2個輸入變量(調用對象的句柄和事件數據),即使你不要使用它們。所以它應該看起來像:'function my_callback_fcn(hobj,evt)',或者如果你真的不使用這些變量,你可以告訴Matlab忽略它們'function my_callback_fcn(〜,〜)' – Hoki

+0

@Hoki Hello!我的回調函數是函數* my_callback_fcn(句柄,〜)*。錯誤變成**名稱'edit1'不是類'timer objects'的實例的可訪問屬性。** –

回答

0

錯誤是由於您提供的回調函數my_callback_fcn沒有兩個輸入參數引起的。你有兩種可能性來解決這個問題。只有做他們的一個

t.TimerFcn = {@(obj,event)my_callback_fcn}; 
  • 添加兩個輸入參數my_callback_fcn所以你的那第一行:

    1. 當你將計時器回調創建帶有兩個輸入參數的匿名函數函數看起來像:

      function my_callback_fcn(obj,event) 
      

    如果在函數中不需要它們,您可以忽略參數~。所以從這個問題您的代碼看起來是這樣的:

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

    Here是計時器回調函數的更多信息。


    爲了解決this評論和that之一:

    不要試圖在同一時間申請這兩種解決方案,因爲這樣你將添加兩個參數的函數原型,然後不提供它。結果將出現以下錯誤:

    Error while evaluating TimerFcn for timer 'timer-1'
    Not enough input arguments.

    根據您在評論中發佈的原型,您只需要做解決方案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'); 
    
  • +0

    你好〜感謝您的幫助!我嘗試和錯誤信息是*沒有足夠的輸入參數*我嘗試Hoki所說錯誤信息變成*名稱'edit1'不是一個實例的可訪問屬性class'timer objects'。*這太奇怪了,因爲edit1與時間對象沒有業務關係 –

    +0

    對不起,我不知道如何在註釋中輸入代碼 –

    +0

    @standerQiu您是否同時應用了兩種可能性?這將不起作用,因爲那時你會嘗試在沒有任何參數的情況下調用該函數(解決方案1),當它需要兩個時(解決方案2時會添加的那個)。要在註釋中格式化代碼,請使用反碼將其括起來。 [這裏](http://meta.stackexchange.com/a/24794/298845)是更多的信息。 – Matt