Как работает «pause (n)» в MATLAB?

#matlab #serial-port

#matlab #последовательный порт

Вопрос:

Я использую MATLAB для чтения с последовательного порта. Мой коллега делает то же самое с LabVIEW. Он сказал мне, что мне нужна пауза в моем коде, чтобы системное время могло записать данные обратно. Однако я читал, что «pause (n)» останавливает выполнение на n секунд.

Я не совсем уверен, что это означает «останавливает выполнение». Останавливает ли последовательный порт чтение и запись, тем самым сводя на нет мою цель?

Должен ли я использовать другую функцию или pause (n) подойдет для моих целей?

Комментарии:

1. Используйте drawnow для очистки различных объектов без паузы. Однако вы уверены, что это необходимо? Вы пробовали что-то, и это не работает?

2. Возможно, вам лучше прослушать событие «datareceived» вашего объекта последовательного порта и назначить обратный вызов для чтения буфера при запуске события.

Ответ №1:

pause(n) в основном ваша программа переходит в спящий режим на n несколько секунд. Таким образом, когда вы вызываете pause , это заставляет вашу программу ждать там в течение n нескольких секунд, а затем переходит к следующей строке кода.

Например:

 a = rand(3,3);
pause(2); % // Pause for 2 seconds
b = rand(4,4);
  

Это создает случайную 3 x 3 матрицу, сохраненную в a , затем программа ожидает во второй строке в течение двух секунд. Программа ничего не делает и спит. После 4 x 4 этого создается случайная матрица.

Чтобы ответить на ваш вопрос, это не останавливает последовательный порт. Все, что вы делаете, это даете достаточно времени для записи данных на последовательный порт, прежде чем вы решите записать больше в порт. Аналогично, вы предоставляете последовательному порту достаточно времени для буферизации достаточного количества данных в порту, чтобы вы могли прочитать нужное количество байтов за одно чтение.

Комментарии:

1. Спасибо! Это имеет смысл!

2. @user3749412 — Добро пожаловать, и добро пожаловать в StackOverflow!