Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Таймер

Страниц (1): [1]
 

1. Nathgul - 05 Июня, 2018 - 12:57:30 - перейти к сообщению
Доброго дня... озадачился вопросом о паузе внутри таймера... для этого использовал команду sleep... при вызове таймера срабатывает слип на весь скрипт, а должен лишь давать отсчет внутри таймера... подойдет ли для реализации такой задачи функция pause или есть другие альтернативы? заранее спасибо
2. Dantes3000 - 05 Июня, 2018 - 12:59:21 - перейти к сообщению
Продемонстрируй код для начала
3. Nathgul - 05 Июня, 2018 - 13:16:11 - перейти к сообщению
CREATE_TIMER(0, 20)
{

pause(40000);

enabletimer (1);

disabletimer (0);

}


нужно чтобы код внутри таймера выполнялся с задержкой в 40 сек без влияния на основную программу... проверил со слипом и паузой... весь скрипт после вызова таймера курит 40 сек
(Добавление)
таймер нужен для запуска второго таймера по истечению этого времени...
4. Dantes3000 - 05 Июня, 2018 - 13:25:06 - перейти к сообщению
не знаю что там во всём коде, но так работает:


CODE:
enabletimer(0);

loop() pause(1000);



CREATE_TIMER(0, 20)
{
beep(700, 100);

pause(3000);

disabletimer(0);
enabletimer(1);
}



CREATE_TIMER(1, 20)
{

beep(300, 100);

}
5. Nathgul - 05 Июня, 2018 - 13:47:20 - перейти к сообщению
условно говоря на примере... есть машина... водитель выполняет одни и те же действия: разгон, ковыряется в носу, включает свет... ковыряется в носу и включает свет циклично... один раз давит газ, потом нос-свет-нос-свет... таймер - защита двигателя при достижении какой-то скорости. задача: срабатывание отсечки без влияния на водителя который делает нос-свет-нос-свет.... но с 30-ти сек задержкой... раньше этого времени смысла проверять скорость нет а инициация проверки требуется как раз после нажатия на педаль газа....
(Добавление)
объяснил как смог))) весь код не получится собрать в такую цепочку чтобы понятна была... он огромный
(Добавление)
так вот при том коде где используется пауза или слип внутри таймера... водитель условно замирает... в носу не ковыряется и не включает свет эти 30 сек... а надо чтобы он это делал постоянно
(Добавление)
почитал инфо по таймерам... получается код внутри таймера не выполняется в параллель с основной программой... в момент его запуска управление переходит в таймер, а потом возвращается в то место откуда передали собственно... или я чего то не понимаю(((
6. Dantes3000 - 05 Июня, 2018 - 14:32:46 - перейти к сообщению
CODE:

int time=gettime();
int time2=3000; //спустя какое время будет срабатывать код в таймере


enabletimer(0);

loop() //выполняется постоянно
{
pause(900);
beep(400, 100);
}






CREATE_TIMER(0, 10)
{

if(gettime()-time>time2) //если прошло time2 времени то beep(1000, 500);
{
time=gettime();

beep(1000, 500);
}



7. Zireael - 05 Июня, 2018 - 18:08:24 - перейти к сообщению
code (Отобразить)

При нажатие клавиши Ё устанавливается время для таймера, скрипт продолжает работать, через 5 секунд сработает таймер.
Вместо нажатия Ё пишите своё условие, при котором должен включиться таймер.
8. Nathgul - 05 Июня, 2018 - 23:15:40 - перейти к сообщению
 Zireael пишет:
При нажатие клавиши Ё устанавливается время для таймера, скрипт продолжает работать, через 5 секунд сработает таймер.
Вместо нажатия Ё пишите своё условие, при котором должен включиться таймер.


я правильно понял?)

CREATE_TIMER(0, 5000)
{

disabletimer (0);

enabletimer (1);

}

данный таймер при его активации командой enabletimer (0) запустит код внутри таймера не сразу, а по истечению 5 сек?)

если так - то собственно это и нужно...
запуск таймер0 требуется единоразово... по истечению времени таймер0 тупо отключается и из него вызывается таймер1 в котором уже содержится нужный для выполнения код
(Добавление)
еще маленький вопрос

CREATE_TIMER(0, 5000)
{

disabletimer (0);

enabletimer (1);

}

и

CREATE_TIMER(0, 5000)
{

enabletimer (1);

disabletimer (0);

}


что-то кардинальное изменится если строку запуска второго таймера из текущего ставить перед или после строки выключения текущего таймера? или нет?
9. Nathgul - 06 Июня, 2018 - 02:03:33 - перейти к сообщению
Проблема решена... задержка выставилась простым указанием необходимого времени в описании таймера.
(Добавление)
Всем Огромное спасибо)))

Powered by ExBB FM 1.0 Final