variable's scope, persistent variables and timer !!!!

2 次查看(过去 30 天)
Hello!
I want to access a persistent variable from within timer StopFcn callback function. The callback should delete the timer and empty the persitent variable. my code look like this:
function callerfunc()
persitent resp;
persistent hTimer;
if isempty(resp)
resp=0;
end
if isempty(hTimer)
timeout=5;
hTimer =timer('TimerFcn',@(h)fprintf(' %s callerfunc''s Timer is ran out ...'),'StartDelay',timeout);
hTimer.StopFcn = {@calledfunc, hTimer,resp};
end
start(hTimer);
end
function calledfunc(htimer,hresp)
delete(htimer);
hresp=[];
end
both functions are in the same file. Actually the call of calledfunc is a call by value and not by reference. therefore the persistent variable resp in callerfunc remaain unchanged after StopFcn excecute.can someone help me??
thanks!
Bolivar

采纳的回答

Walter Roberson
Walter Roberson 2013-9-3
You cannot do that. Nest your second function instead of having it just sequential.
function callerfunc()
persitent resp;
persistent hTimer;
if isempty(resp)
resp=0;
end
if isempty(hTimer)
timeout=5;
hTimer =timer('TimerFcn',@(h)fprintf(' %s callerfunc''s Timer is ran out ...'),'StartDelay',timeout);
hTimer.StopFcn = @calledfunc;
end
start(hTimer);
function calledfunc(varargin)
delete(htimer);
resp=[];
end
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 C Shared Library Integration 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by