CREATE_TIMER - обозначает блок кода выполняемый по таймеру.
Синтаксис:
CREATE_TIMER(0, 1000)
{
//тут код выполняемый каждые 1000 мсек.
}
Параметры:
первый - номер таймера. Создавать можно до ста таймеров от 0 до 99.
второй - время в мсек через кторое будет выполняться блок кода в таймере.
Код в таймере работает последовательно с основным кодом.
Когда наступает время срабатывания управление передается в блок таймера.
Когда код в блоке отрабатывается управление возвращается в строку с которой прервалось выполнение основного кода.
Таймеры удобно использовать для постоянного отслеживания нажатий клавиш, сканирования каких то данных и т.д.
С таймера можно выходить с помощью goto на любую метку в коде (кроме в функции). В таком случае возврат в прерванную строку не произойдет.
В таймере можно вызывать функции и отрабатывать любой код без исключения.
пример:
Цитата:
int a=0;
int x, y;
int color;
enabletimer(0);
enabletimer(1);
j:textout(0, 100, 100, format(a), 1);
textout(1, x+10, y+10, format(color), 1);
sleep(10);
goto j;
exit:;
CREATE_TIMER(0, 1000)
{
a++;
if (a>100)a=0;
}
CREATE_TIMER(1, 100)
{
getmouse(x, y);
color=getcolor(x, y);
if (color==0) goto exit;
}
int x, y;
int color;
enabletimer(0);
enabletimer(1);
j:textout(0, 100, 100, format(a), 1);
textout(1, x+10, y+10, format(color), 1);
sleep(10);
goto j;
exit:;
CREATE_TIMER(0, 1000)
{
a++;
if (a>100)a=0;
}
CREATE_TIMER(1, 100)
{
getmouse(x, y);
color=getcolor(x, y);
if (color==0) goto exit;
}
Управлять таймером можно с помощью следующих функций:
enabletimer - включает созданный таймер и обнуляет время таймера на 0.
enabletimer(0);
disabletimer - выключает созданный таймер.
disabletimer(0);
sendtimer - меняет время срабатывания созданного таймера.
sendtimer(0, 1000);
==========
return в блоке кода таймера дает возможность прервать (без остановки) выполнение кода таймера по оператору return. После return никакие значения передавать с таймера нельзя. Просто прерывать выполнение таймера.
Управление перейдет туда же, так же как и при отработке всего кода в таймере.
CODE:
enabletimer(0);
loop()
{
sleep(100);
beep(1000, 100);
}
CREATE_TIMER(0, 1000)//Номер таймера, выполнение таймера через мсек.
{
beep(2000, 100);
return;
beep(3000, 100);//Никогда не выполнится
beep(5000, 100);//Никогда не выполнится
}
loop()
{
sleep(100);
beep(1000, 100);
}
CREATE_TIMER(0, 1000)//Номер таймера, выполнение таймера через мсек.
{
beep(2000, 100);
return;
beep(3000, 100);//Никогда не выполнится
beep(5000, 100);//Никогда не выполнится
}