作者shaple (耍宝妈)
看板MATLAB
标题Re: [问题]matlab在GUI执行无穷回圈时之怪问题
时间Thu Jun 15 20:55:18 2006
※ 引述《missle3 (新竹苦命研究生)》之铭言:
: 小弟我的GUI一开始 再按下preview按钮後触发某
: 一无穷回圈动作动作..这回圈内有一判断式,当我按下另外一按钮时候
: 判断式内的条件会成立,执行 break;跳出此无穷回圈, 但是当我按下後
: 并不会跳出 以下是程式 不知道这是哪里的原因 , 请知道的人告诉我一下吧
: 谢谢
: % 程式一开始处
: handles.err=0;
: function preview_Callback(hObject, eventdata, handles)
: temp1=zeros(120,160);
: temp2=ones(120,160);
: while( 1)
: pause(1);
: if(handles.err==1)
: break;
: end
: imshow(uint8(temp1));
: imshow(uint8(temp2*255));
: end
: vedio=GetVedio1(handles.s);
: function grabe_Callback(hObject,eventdata,handles)%此按钮改变handles.err的值
: handles.err=1;
: guidata(hObject, handles);
1.握把值好像不能降子用 握把值似乎不是可以自行设定的
握把值应该是每次程式执行时电脑给的(因为我每次跑每次都不一样)
如果你自行设定 很有可能设定成和别的物件握把值相同(当然机率不高)
如果把握把值看成是变数在函数间传递也不行
我之前试过类似做法 在一个子函数读到某物件的握把值
然後设一个全欲变数令他等於那个握把值
但到另一个pushbutton後 无法使用那个变数直接替代握把值
我不知道我那里程式错误导致程式无法work
我只能推测握把值要直接读取 不能使用变数传递
所以如果你想藉由按钮後改变回圈执行条件
建议另外设一个全欲变数 让那个变数的值做为判断条件
按钮後全欲变数就给另外一个数值
不过matlab执行是先後顺序的 建议这个钮改为checkbox之类的
2.这是重点
你先按一个钮让回圈执行後
matlab就会把那个钮的callback程式执行完才会执行下一个钮的callback
所以就算你按钮要更改变数条件也没有用
因为matlab还在执行回圈按钮的callback
如果你要中断那个钮的回圈程式 根据我翻书的结论是
(1)按钮的interruptible要设为on(此为matlab预设值)
(2)中断按钮的callback内容一行: pause;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.168.181.98
1F:推 missle3:感谢这位高手的分享经验 06/15 22:49