Main Content

waitfor

Pause code execution to achieve desired execution rate

Description

waitfor(rate) pauses execution until the code reaches the desired execution rate. The function accounts for the time that is spent executing code between waitfor calls.

example

numMisses = waitfor(rate) returns the number of iterations missed while executing code between calls.

Examples

collapse all

Create a rate object that runs at 1 Hz.

r = rateControl(1);

Start a loop using the rateControl object inside to control the loop execution. Reset the object prior to the loop execution to reset timer. Print the iteration and time elapsed.

reset(r)
for i = 1:10
	time = r.TotalElapsedTime;
	fprintf('Iteration: %d - Time Elapsed: %f\n',i,time)
	waitfor(r);
end
Iteration: 1 - Time Elapsed: 0.001646
Iteration: 2 - Time Elapsed: 1.001156
Iteration: 3 - Time Elapsed: 2.000720
Iteration: 4 - Time Elapsed: 3.000994
Iteration: 5 - Time Elapsed: 4.001643
Iteration: 6 - Time Elapsed: 5.001109
Iteration: 7 - Time Elapsed: 6.001165
Iteration: 8 - Time Elapsed: 7.000602
Iteration: 9 - Time Elapsed: 8.000919
Iteration: 10 - Time Elapsed: 9.000195

Each iteration executes at a 1-second interval.

Input Arguments

collapse all

Rate object, specified as a handle. This object contains the information for the desired rate and other information about the execution. See rateControl for more information.

Output Arguments

collapse all

Number of missed task executions, returned as a scalar. waitfor (Robotics System Toolbox) returns the number of times the task was missed in the Rate object based on the LastPeriod time. For example, if the desired rate is 1 Hz and the last period was 3.2 seconds, numMisses returns 3.

Version History

Introduced in R2016a