I cannot access the handles in a timer callback function

5 ビュー (過去 30 日間)
Kelly Babitz
Kelly Babitz 2017 年 7 月 30 日
編集済み: Walter Roberson 2017 年 7 月 30 日
I have a GUI with a timer in it. I would like to be able to update a plot every .1 seconds, however, the timer function gives me the error:
Error while evaluating TimerFcn for timer 'timer-3'
Reference to non-existent field 'concMarker'
Can anyone help me fix this? I have been reading some other posts and people have been saying you need to update the handles structure, which I am not quite sure how to do (though when I have tried copying other people's code to do so it did not work either).
axis = findobj(PumpRateGuiDisplay,'Type','axes');
timerData = timer('TimerFcn',@timerFunction,...
'Period',.1,'ExecutionMode','FixedRate','BusyMode','Drop',...
'TasksToExecute',endTime*10 + 1,'Tag','timerData');
function timerFunction(hObject,eventData)
handles = guihandles(PumpRateGuiDisplay);
handles.cocnMarker = plot(axis,NaN,NaN,'r*');
timeElapsed = get(hObject,'TasksExecuted')-1;
if timeElapsed ~= 0
set(handles.concMarker,'XData',times(int64(timeElapsed*.1/timeIncrement)),'YData',concLeftVent(int64(timeElapsed*.1/timeIncrement)),'*');
end
end
Thanks in advance for the help!

採用された回答

Walter Roberson
Walter Roberson 2017 年 7 月 30 日
handles.cocnMarker = plot(axis,NaN,NaN,'r*');
set(handles.concMarker,'XData',times(int64(timeElapsed*.1/timeIncrement)),'YData',concLeftVent(int64(timeElapsed*.1/timeIncrement)),'*');
Compare the name of the handle carefully between those two lines.
  4 件のコメント
Kelly Babitz
Kelly Babitz 2017 年 7 月 30 日
Thank you sooooooo much! I really appreciate the clear time and effort you spent on my question, I can honestly say you saved me many days of frustration and unproductiveness because I do not think I would have found this answer in a million years. I changed the next plot property for the axes to add and then put a hold on after my initial plotting of concMarker and now it works perfectly. Thanks again!
Walter Roberson
Walter Roberson 2017 年 7 月 30 日
編集済み: Walter Roberson 2017 年 7 月 30 日
This was really obscure, and I had no idea that it happened.
I tend not to use imshow() because it changes too many properties for my liking, so I had never happened to encounter this before. It took digging.
I can see from the code that the behaviour is intended, but I filed a bug report anyhow to at least get it mentioned in the tips section.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by