Re: [問題]matlab在GUI執行無窮迴圈時之怪問題
※ 引述《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
推
06/15 22:49, , 1F
06/15 22:49, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章