УкраїнськаEnglishmRussian
Вхід/Новий
У темі немає нових постів

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


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

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

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

Learn, learn and learn better than work, work and work.
Повідомлення створено: 21. 08. 2013 [07:30]
dell
Путин Краб
Автор теми
Зареєстрован(а) с: 09.04.2013
Повідомлення: 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, то убирая его получаем ошибку, что переменная не определена, но используется. Как тут быть.

И еще вопрос, заодно )). Как ведет себя система, если время выполнения процедуры оказывается больше выполнения времени такта? Замедляется работа всей системы,на время вычисления или прекращается обработка процедуры?
Повідомлення створено: 21. 08. 2013 [10:28]
roman
Roman Savochenko
Moderator
Contributor
Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 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.



1710