필터 지우기
필터 지우기

while loop in while loop

조회 수: 2 (최근 30일)
Simon Hehenberger
Simon Hehenberger 2017년 1월 9일
편집: Walter Roberson 2017년 1월 9일
Hi, I have a problem and i cant figure out why this code wouldnt work:
while 1
tic;
while(calllib('gestic', 'gestic_data_stream_update', gestic, 0)~=0)
plot3(gestic_pos.Value.x/65533,gestic_pos.Value.y/65533,gestic_pos.Value.z/65533,'o');
xlim([0 1]);
ylim([0 1]);
zlim([0 1]);
grid();
drawnow();
end
%check for abort
if ~isempty(k)
if strcmp(k,'s')
disp('STOP');
break;
elseif strcmp(k,'p');
disp('PAUSE');
pause;
k=[];
else
k=[];
end
end
te=toc;
while te<0.01
te=toc;
end
toc;
end
The overall while loop is executed until a certain key is pressed on the active figure. The first while reads position data from a stream and plots it. The second while should check if 10 milliseconds have passed until the loop continues.
The Problem is that MATLAB does not enter the first while loop. But when i delete the second while loop the code runs as desired.
The second while loop is needed to achieve a constant sample time.
I solved this problem by including the second while loop into the first but i dont understand why the original code doesnt work.
Can anybody explain it to me?
  댓글 수: 3
Simon Hehenberger
Simon Hehenberger 2017년 1월 9일
Thank you. This Works :) I have now rewritten my methods and its working more precise with timer objects.
I still wonder why this code with two while loops didnt work XD
Walter Roberson
Walter Roberson 2017년 1월 9일
편집: Walter Roberson 2017년 1월 9일
If you were using timer objects then you would normally not pause at all; instead you would configure the timer object for constant interval for the callbacks.

댓글을 달려면 로그인하십시오.

채택된 답변

Niels
Niels 2017년 1월 9일
As walter said try to replace
te=toc;
while te<0.01
te=toc;
end
toc;
With
te=toc
if te<0.01
pause(0.01-te)
end
toc

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Graphics Performance에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by