EnglishУкраїнськаmRussian
Login/New
Topic with no new replies

Подскажите, как сделать таймер?


Author Message
Written on: 20. 08. 2013 [07:01]
dell
Путин Краб
Topic creator
registered since: 09.04.2013
Posts: 28
Например, нажимаем кнопку, пошел отсчет времени, по прошествии 5 минут происходит событие (загорается лампочка на виджете). Каким образом это можно сделать в обработке виджета, если там мы сами задаем время вычисления процедуры? Присвоив значение переменной один раз, оно также будет присваиваться при каждом вычислении процедуры. Подскажите, где что можно почитать.
Written on: 20. 08. 2013 [12:09]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"dell" wrote:

Подскажите, где что можно почитать.

В главном руководстве начинающего, в Быстром Старте. :)

Learn, learn and learn better than work, work and work.
Written on: 21. 08. 2013 [07:30]
dell
Путин Краб
Topic creator
registered since: 09.04.2013
Posts: 28
Спасибо.
Вот беру второй пример и пробую:
JAVASCRIPT
var tm_to;
if (SYS.time() > tm_to) {
	tm_to = SYS.time()+10;
	Text1_color = "red";
	Text1_text = tm_to;
} else {
Text1_color = "green";
}

Получается, что каждые 10 секунд цвет текста меняется на красный, в остальное время он зеленый. Однако при запуске и работе, он всё время красный, почему? Если проблема в переопределении переменной tm_to, то убирая его получаем ошибку, что переменная не определена, но используется. Как тут быть.

И еще вопрос, заодно )). Как ведет себя система, если время выполнения процедуры оказывается больше выполнения времени такта? Замедляется работа всей системы,на время вычисления или прекращается обработка процедуры?
Written on: 21. 08. 2013 [10:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
"dell" wrote:

Получается, что каждые 10 секунд цвет текста меняется на красный, в остальное время он зеленый. Однако при запуске и работе, он всё время красный, почему?

Так получается или не получается?

"dell" wrote:

Если проблема в переопределении переменной tm_to, то убирая его получаем ошибку, что переменная не определена, но используется. Как тут быть.

Проблема в том, что эта переменная при старте ничем не инициализирована и вообще там не число.
Инициируйте её, кроме того она должна быть глобальной, а не автоматической, хотя в рабочей версии можно и автоматической поскольку она при следующем вызове сохраняется.
JAVASCRIPT
if(f_start) tm_to = SYS.time()+10;


В любом случае ставьте печать сообщений и изучайте.

"dell" wrote:

И еще вопрос, заодно )). Как ведет себя система, если время выполнения процедуры оказывается больше выполнения времени такта? Замедляется работа всей системы,на время вычисления или прекращается обработка процедуры?

Не всей поскольку потоков там много: http://wiki.oscada.org/Doc/OpisanieProgrammy/part4/files?get=sys_tasks.png
А фактический цикл просто растягивается и растёт счётчик пропусков в запланированном цикле.

Learn, learn and learn better than work, work and work.



3128