Подождать с условием. Как?
- Войдите на сайт для отправки комментариев
Сб, 24/03/2018 - 21:34
Приветствую.
Задача состоит в том чтобы запустить поворот устройства, подождать, пока оно повернётся на заданный угол и выйти из функции, вернув true.
Если же ему не удалось повернуться, выйти по таймауту и вернуть false.
Во время поворота основной код не выполняется, ждёт результата поворота.
Так-то оно работает.
Но почему-то как-то кажется не изящным.
Успокойте меня, пожалуйста, ну или посоветуйте, как правильнее.
Спасибо.
boolean makeTurn(int turnDegree, int turnDirection){
myOS.restartTask(imuGetData);
unsigned long turnSafe = millis();
int startAngle = zAngle;
setMove(0, turnDirection, turnSharpness, speed);
while (true){
if ((zAngle-startAngle)*turnDirection > turnDegree) {setMove(0, 0, turnSharpness, speed); myOS.pauseTask(imuGetData); return true;}
if ((millis() - turnSafe)>20000) {setMove(0, 0, turnSharpness, speed); myOS.pauseTask(imuGetData); return false; }
}
}
Да потянет для сельской местности. Если хочется меньше слов - из while выпрыгивайте через break с установкой переменной rc (например) в true/false, после while исполняйте обязательную программу и return rc.
параметр функции направление куда вращать можно bool переменной описать. Не Бог весть какая экономия, но если вопрос принципа, то да :)