Pass newly created object's function to a timer object

16 ビュー (過去 30 日間)
Vincent
Vincent 2012 年 7 月 30 日
I created a class which reads a file as soon as an object is created. In order to display the progress of reading process, I created a public function (which I prefered to be private by the way). Let's call this function writeProgress,
However, after starting the timer, I receive an warning message:
"feval: Undefined function or method 'obj.writeProgress' for input arguments of type 'timer'".
The timer has been initialized like this:
t = timer('TimerFcn',@obj.writeProgress,'Period',1,'ExecutionMode','fixedDelay');
How can I pass the function "writeProgress"? Write progress needs to be a class member as it has to access private data and I'd rather prefer it to be private itself.

採用された回答

Sean de Wolski
Sean de Wolski 2012 年 7 月 30 日
Here is a class that does what you want from the description above. The only difference is that I placed the call to writeProgeress inside of an anonymous function.
What else is different with it from your class?
classdef WP < handle
properties
x
y
end
methods
function obj = WP(varargin)
obj.x = pi;
obj.y = 'hello world';
t = timer('TimerFcn',@(src,evt)obj.writeProgress,'Period',1,'ExecutionMode','fixedDelay');
start(t)
end
end
methods (Access=private)
function writeProgress(obj)
disp(obj.x);
disp(obj.y);
end
end
end
  3 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 7 月 30 日
編集済み: Sean de Wolski 2012 年 7 月 30 日
Most callbacks automatically receive two inputs: the source of the callback and some event data. These need to be accounted for. In the above, I accounted for them with the anonymous function and then threw them away because we didn't need them.
Vincent
Vincent 2012 年 7 月 30 日
well, thanks a lot!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCode Execution についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by