مدت زمان تقریبی مطالعه این متن: < 1 حداقل زمان مورد نیاز
1. اجرای حداقل یک بار
// اجرای حداقل یک بار و سپس بررسی شرط
do {
espRun();
HAL_Delay(10);
} while (!I0[0].Value); // تا زمانی که ورودی I0.0 فعال نشود
2. اسکن کردن ورودیها
// اسکن کردن تمام ورودیها حداقل یک بار
int i = 0;
do {
espRun();
if (I0[i].Value) {
SetQ(0, i); // فعال کردن خروجی متناظر
}
i++;
} while (i < 8); // تا ۸ ورودی
3. انتظار با timeout
// انتظار برای فعال شدن ورودی با timeout
uint32_t startTime = HAL_GetTick();
do {
espRun();
HAL_Delay(10);
if (HAL_GetTick() - startTime > 5000) {
break; // timeout بعد از ۵ ثانیه
}
} while (!I0[1].Value);
4. کنترل توالی عملیات
// توالی عملیات: فعال کردن، انتظار، غیرفعال کردن
do {
SetQ(0, 0); // فعال کردن خروجی
espRun();
HAL_Delay(100);
} while (!I0[0].Value); // تا زمانی که سنسور فعال شود
do {
ResetQ(0, 0); // غیرفعال کردن خروجی
espRun();
HAL_Delay(100);
} while (I0[0].Value); // تا زمانی که سنسور غیرفعال شود