Инструменты пользователя

Инструменты сайта


lm2:ce:timer

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
lm2:ce:timer [2020/08/05 20:58]
ruben
lm2:ce:timer [2020/11/30 14:12] (текущий)
Строка 261: Строка 261:
  
 Основная статья "[[:lm2:ce:s_text|Строковые данные]]". Создайте в папке configs файл text.xml. Название файла должно совпадать с названием, указанным в файле описания панелей. Необходимо добавить все строковые поля. Файл должен содержать следующий код: Основная статья "[[:lm2:ce:s_text|Строковые данные]]". Создайте в папке configs файл text.xml. Название файла должно совпадать с названием, указанным в файле описания панелей. Необходимо добавить все строковые поля. Файл должен содержать следующий код:
-<code> 
  
 +<code xml>
 +<!-- объявление xml -->
 <?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 +<!-- корневой элемент -->
 <root> <root>
 +  <!-- строковые данные, задается следующее свойство: уникальный идентификатор -->
   <Text ID="txtEmptyProject">   <Text ID="txtEmptyProject">
 +    <!-- языковая версия, задается следующие свойства: язык, текст -->
     <Entry Lang="ru" Value="Пустой проект" />     <Entry Lang="ru" Value="Пустой проект" />
     <Entry Lang="en" Value="Empty project" />     <Entry Lang="en" Value="Empty project" />
   </Text>   </Text>
 +  <!-- строковые данные, задается следующее свойство: уникальный идентификатор -->
   <Text ID="txtExit">   <Text ID="txtExit">
 +    <!-- языковая версия, задается следующие свойства: язык, текст -->
     <Entry Lang="ru" Value="Выход" />     <Entry Lang="ru" Value="Выход" />
     <Entry Lang="en" Value="Exit" />     <Entry Lang="en" Value="Exit" />
   </Text>   </Text>
 +  <!-- строковые данные, задается следующее свойство: уникальный идентификатор -->
   <Text ID="txtStart">   <Text ID="txtStart">
 +    <!-- языковая версия, задается следующие свойства: язык, текст -->
     <Entry Lang="ru" Value="Старт" />     <Entry Lang="ru" Value="Старт" />
     <Entry Lang="en" Value="Start" />     <Entry Lang="en" Value="Start" />
   </Text>   </Text>
 +  <!-- строковые данные, задается следующее свойство: уникальный идентификатор -->
   <Text ID="txtStop">   <Text ID="txtStop">
 +    <!-- языковая версия, задается следующие свойства: язык, текст -->
     <Entry Lang="ru" Value="Стоп" />     <Entry Lang="ru" Value="Стоп" />
     <Entry Lang="en" Value="Stop" />     <Entry Lang="en" Value="Stop" />
   </Text>   </Text>
 </root> </root>
 +
 +
 +</code>
 +
 +**Lua-код**
 +
 +Основная статья"[[:lm2:ce:s_lua|Lua-код]]". Создайте в папке configs файл start.lua. Название файла должно совпадать с названием, указанным в главном конфигурационном файле. Необходимо привязать панель к вьюпорту, описать обработчик кнопкок и таймеров и привязать их к событиям. Файл должен содержать следующий код:
 +
 +<code lua>
 +-- start.lua
 +-- привязка панели
 +Panel('main_viewport', 'main')
 +-- подключение файла
 +Include("timer.lua")
 +
 +-- обработчик нажатия на кнопку
 +function H_Exit(_ev)
 +  sys.Exit()
 +end
 +-- привязка обработчика к событию
 +AddEventHandler('main.btExit.Mouse.LeftPress', 'H_Exit')
 +
 +
 +</code>
 +
 +<code lua>
 +-- timer.lua
 +-- в Clock хранится текущее время в виде секунд - seconds и минут - minutes, а также интервал таймера в миллисекундах - interval и статус таймера - on = false|true
 +Clock = {seconds = 0; -- секунды
 +         minutes = 0; -- минуты
 +         interval = 1000; -- интервал обновления
 +         on = false; -- статус таймера
 +         }
 +
 +-- При нажатии на кнопку Старт - включается таймеры tick и lamp и текст кнопки становится Стоп
 +-- При нажатии на кнопку Стоп - таймер tick выключается и текст кнопки становится Старт
 +function H_startstoptimer(ev)
 +  if Clock.on == false then
 +    Clock.on = true
 +    SetText('main.btStartStop.text.Text', 'txtStop')
 +    -- Включаем таймер на Clock.interval с цикличным срабатыванием (once = false)
 +    sys.StartTimer("tick", Clock.interval, false)
 +    -- Включаем лампу и одноразовый таймер на 5с
 +    Set('main.Lamp.state.', 'on')
 +    sys.StartTimer("lamp", 5000)
 +  else
 +    Clock.on = false
 +    SetText('main.btStartStop.text.Text', 'txtStart')
 +    -- Останавливаем цикличный таймер
 +    sys.StopTimer("tick")
 +  end
 +end
 +AddEventHandler('main.btStartStop.Mouse.LeftPress', 'H_startstoptimer')
 +
 +-- По таймеру tick обновляются часы
 +function H_refresh(ev)
 +  Clock.seconds = Clock.seconds + Clock.interval/1000
 +  if Clock.seconds> 60 then
 +    Clock.minutes = Clock.minutes + 1
 +    Clock.seconds = Clock.seconds - 60
 +  end
 +  if Clock.minutes> 60 then
 +    Clock.minutes = Clock.minutes - 60
 +  end
 +  -- Устанавливаем значение цифровых часов
 +  Set("main.Clock.value.", string.format("%02d%02d", Clock.minutes, math.floor(Clock.seconds)))
 +end
 +AddEventHandler('timer.tick.finished.', 'H_refresh')
 +
 +-- По таймеру lamp выключается лампа
 +function H_lamp(ev)
 +    Set('main.Lamp.state.', 'off')
 +end
 +AddEventHandler('timer.lamp.finished.', 'H_lamp')
 +
  
 </code> </code>
lm2/ce/timer.1596650327.txt.gz · Последнее изменение: 2020/11/30 14:12 (внешнее изменение)