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 сек
(Добавление)
таймер нужен для запуска второго таймера по истечению этого времени...
{
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);
}
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 сек... а надо чтобы он это делал постоянно
(Добавление)
почитал инфо по таймерам... получается код внутри таймера не выполняется в параллель с основной программой... в момент его запуска управление переходит в таймер, а потом возвращается в то место откуда передали собственно... или я чего то не понимаю(((
(Добавление)
объяснил как смог))) весь код не получится собрать в такую цепочку чтобы понятна была... он огромный
(Добавление)
так вот при том коде где используется пауза или слип внутри таймера... водитель условно замирает... в носу не ковыряется и не включает свет эти 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);
}
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 - перейти к сообщению
Проблема решена... задержка выставилась простым указанием необходимого времени в описании таймера.
(Добавление)
Всем Огромное спасибо)))
(Добавление)
Всем Огромное спасибо)))