2013-02-22 3 views
0

Я создал графический интерфейс в Matlab, и одна из кнопок, которые пользователь должен был нажать в начале, имеет цикл while. Я беру фреймы один за другим в этом цикле. Моя проблема в том, что я хочу, чтобы пользователь мог приостановить этот процесс (не останавливаться полностью), поэтому я добавил кнопку паузы, и я меняю флаг при нажатии этой кнопки. Мне нужно поместить код внутри этого matlab, который приостанавливает процедуру цикла, когда нажата кнопка паузы, и продолжит цикл, когда кнопка паузы снова нажата. Я попробовалПриостановить цикл while и сделать что-то еще в Matlab

if flag==1 
    pause on; 
else 
    pause off 
end; 

Но я видел, что «пауза на;» не приостанавливает цикл while. Есть ли функция или метод, которые я могу использовать? Кроме того, я хочу, чтобы другие кнопки могли работать, когда код находится в режиме паузы; например, другая кнопка отображает несколько слов, поэтому, когда в режиме паузы, если нажата кнопка отображения слов, она должна отображать слова на экране. Я попытался использовать «waitfor», но он остановил все, и эта кнопка отображения не работала. Буду признателен за любую помощь.

+0

Попробуйте 'help pause', поскольку' pause on' не является командой, чтобы инициировать паузу. –

+0

Не могли бы вы дать нам образец кода того, как выглядит цикл while? – ThijsW

+0

Не было бы просто сохранить текущий статус, разбить цикл while, позволить пользователю делать то, что он хочет, а затем запустить другой цикл while из сохраненной точки, когда активность пользователя прекратится? –

ответ

1

Вы, вероятно, хотите использовать WAITFOR функцию MATLAB, чтобы сделать это.

+0

В помощи Матлаба говорится: «В то время как waitfor не позволяет его вызывающему абоненту продолжать, обратные вызовы, которые реагируют на различные события (например, нажатие кнопки мыши), все еще могут запускаться, не зависящими от ожидания». Однако, как я пробовал это в моей системе GUI, это не сработало. – user1132254

+0

@ пользователь1132254 уточните, что не работает? –

0

Я думаю, что это может быть то, что вы ищете

while flag == 1 
    % Get/process your user input here 

    % Finish checking user input 
    pause(1) %Check every second, can of course be reduced 
end 
+0

Как я использую Pause время от времени, пауза (1) остановит мою систему только на секунду. Я хочу, чтобы моя система остановилась, пока я не отправлю команду, чтобы остановить паузу. Также, когда система находится в режиме паузы, я хочу, чтобы другие кнопки работали над некоторыми другими функциями. – user1132254

+0

Для первой части я предположил, что пользователь, нажимая кнопку, устанавливает флаг в один, я отредактировал свой пост соответственно. Для второй части, если все еще должно работать, неясно, что именно вы хотите приостановить. –

Смежные вопросы