最近在用GUI编写界面,想通过按一下按钮pushbutton调用一个main函数,main函数会实时计算数据,我希望用定时器定时调用显示函数来更新界面的值,但是每次只显示最后的数值,不知道为什么?求高人指点。一下是我的程序的部分代码:
function start_Callback(hObject, eventdata, handles) %pushbutton的回调函数
global y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16
y1=0;y2=1;y3=3;y4=4;y5=5;y6=6;y7=7;y8=8;y9=9;y10=10;y11=11;y12=12;y13=13;y14=14;y15=15;y16=16;
str=get(handles.t1,'string');
if(str=='停止')
set(handles.t1,'string','运行');
t= timer('TimerFcn',{@upd,handles},'Period',0.5);
set(t,'ExecutionMode','fixedRate');
handles.t=t;
guidata(hObject, handles);
start(t);
main();
set(handles.t1,'string','停止');
end
function main()%调用的主函数
a=0;
tic
while(a<200)
ceshi();%运行这个程序会耽误0.5s的时间,所以大概0.5秒会有一次输出
output();
a=a+1;
end
toc
function output()
global y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16
y1=y1+1;
y2=y2+1;
y3=y3+1;
y4=y4+1;
y5=y5+1;
y6=y6+1;
y7=y7+1;
y8=y8+1;
y9=y9+1;
y10=y10+1;
y11=y11+1;
y12=y12+1;
y13=y13+1;
y14=y14+1;
y15=y15+1;
y16=y16+1;
function upd(obj,eventdata,handles)
global y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16
y1
set(handles.text1,'string',y1);
set(handles.text2,'string',y2);
set(handles.text3,'string',y3);
set(handles.text4,'string',y4);
set(handles.text5,'string',y5);
set(handles.text6,'string',y6);
set(handles.text7,'string',y7);
set(handles.text8,'string',y8);
set(handles.text9,'string',y9);
set(handles.text10,'string',y10);
set(handles.text11,'string',y11);
set(handles.text12,'string',y12);
set(handles.text13,'string',y13);
set(handles.text14,'string',y14);
set(handles.text15,'string',y15);
set(handles.text16,'string',y16);
运行结果command window里面会有y1的值更新,但是界面里只会显示最后一个数值。
请教大家,这是为什么,能不能帮我解决一下,谢谢!