精華區beta MATLAB 關於我們 聯絡資訊
※ 引述《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
missle3:感謝這位高手的分享經驗 06/15 22:49