Компания ITEAD выпустила новую линейку Enhanced своих панелей Nextion HMI. Представители компании предоставили мне экземпляр этой линейки для интеграции новых возможностей панели в программу FLProg. В версии 2.2 это было реализовано. В данном уроке мы рассмотрим новые возможности панели, и для примера создадим программируемый таймер на пять каналов.
Для начала рассмотрим характеристики панели. В линейке Enhanced появились встроенные часы реального времени, 1024 байта энергонезависимой памяти, 8 цифровых входов/выходов. Каждый них может быть настроен как вход, так и как выход. Четыре из них (с 4-го по 7) могут быть настроены как выходы ШИМ.
Кроме непосредственно самой линейки «Nextion HMI Enhanced» была выпущена плата «Expansion Board»
На ней установлены органы управления и индикации, привязанные к GPIO панели.
Такие возможности позволяют на базе этой панели сделать практически законченное устройство. В данном уроке я основной упор сделаю на программирование самой панели, поскольку информации по этому поводу мало, а подводных камней много. Ссылка на проект для программы Nextion Editor есть в конце поста.
Начало работы с редактором Nextion Editor, его запуск, начальный выбор кодировки, типа панели рассмотрено в моих предыдущих постах тыц, тыц , и тыц. Поэтому не будем на этом останавливаться.
Программа панели состоит из трёх экранов Главного (Main), Настройка таймера (SetTimer) и Установка времени (SetCurrentTime).
Начнём с главного экрана.
На этом экране отображаются уставки включения, выключения, состояния каждого канала, кнопки изменения состояния каналов, и кнопка перехода на экран настройки текущего времени. При клике на текст, отображающий уставки канала, происходит переход на настройку данного канала. Кроме того на этом экране находятся четыре скрытые кнопки необходимые для привязки к физическим кнопкам находящихся на Expansion Board..
Рассмотрим код, содержащийся на главном экране.
Событие Preinitialilize Event (вызывается перед инициализацией экрана).
cfgpio 0,1,b0 // Кнопка Esc (IO0) привязывается к виртуальной кнопке b0 "Установить время"
cfgpio 2,1,b8 // Кнопка Right (IO2) привязывается к виртуальной кнопке b8 -"Редактировать выбранный канал"
cfgpio 3,1,b7 // Кнопка Down (IO3) привязывается к виртуальной кнопке b7 -"Перейти на следующий канал"
cfgpio 4,1,b6 // Кнопка Up (IO4) привязывается к виртуальной кнопке b6 -"Перейти на предыдущий канал"
cfgpio 5,1,b9 // Кнопка Left (IO5) привязывается к виртуальной кнопке b9 -"Переключить состояние канала"
SelTim.val=1 // Выбор первого канала
Номер режима | Описание | Пример |
---|---|---|
0 | Вход с подтяжкой к + 5 вольтам (встроенный резистор 50 кОм). Текущее состояние можно прочитать из системной переменной pio0 – pio7 (для 0- 7 входа/выхода соответственно | cfgpio 0,0,0 Вход/выход GPIO0 настраивается как вход, подтянутый к +5В. Текущее состояние можно прочитать так: n0.val = pio0 |
1 | Вход с подтяжкой к + 5 вольтам (встроенный резистор 50 кОм) и привязкой к виртуальному элементу. Текущее состояние прочитать из системной переменной pio0 – pio7 (для 0- 7 входа/выхода соответственно). Так же при состоянии входа в лог. 1 привязанному элементу присваивается нажатое состояние, при лог. 0 привязанному элементу присваивается отпущенное состояние. Данный режим необходимо включать в событии Preinitialilize Event окна, поскольку после инициализации страницы, привязка не происходит. | cfgpio 2,1,b0 Вход/выход GPIO2 настраивается как вход, подтянутый к +5В с привязкой к виртуальной кнопке b0. По переднему фронту на этом входе, кнопка b0 переводится в нажатое состояние, по заднему фронту – в отпущенное. |
2 | Двухтактный выход. Задать значение на выходе можно через системную переменную pio0 – pio7 (для 0- 7 входа/выхода соответственно). | cfgpio 1,2,0 Вход/выход GPIO1 настраивается как двухтактный выход. Запись высокого выходного уровня: pio1=1 |
3 | Выход ШИМ. Только для 4-7 входа/выхода. Значения от 0 до 100. По умолчанию – 50. Значение задаётся с помощью системных переменных pwm4- pwm7 (для 4- 7 входа/выхода соответственно). Частота ШИМ для всех выходов задается с помощью системной переменной pwmf в герцах. Значения от 1 до 65536. По умолчанию – 1000. | cfgpio 4,3,0 Вход/выход GPIO4 настраивается как выход ШИМ. Запись значения: pwm4=20 Задание частоты ШИМ – 2000 Гц. pwmf=2000 |
4 | Выход с открытым коллектором. Задать значение на выходе можно через системную переменную pio0 – pio7 (для 0- 7 входа/выхода соответственно). | cfgpio 5,4,0 Вход/выход GPIO5 настраивается как двухтактный выход. Запись высокого выходного уровня: pio5=1 |
page 2 // Переход на страницу установки текущего времени
repo TempB.val,0 // Читаем из EEPROM в переменную TempB активность канала 1
if(TempB.val==1) // Если канал активен - переключаем его состояние
{
if(tsr1.val==1)// если канал включён
{
tsr1.val=2 // выключаем его
}else
{
tsr1.val=1 // иначе - включаем
}
}
if(SelTim.val<2)//Если выбран канал 1
{
SelTim.val=5 // выбираем канал 5
}else
{
SelTim.val=SelTim.val-1 // иначе переходим на предыдущий канал
}
if(SelTim.val>4) // Если выбран канал 5
{
SelTim.val=1 // переходим на канал 1
}else
{
SelTim.val=SelTim.val+1 // иначе переходим на следующий
}
if(SelTim.val==1) // Если выбран канал 1
{
click TimerText1,1 // то имитируем нажатие на поле отображения состояния канала 1
}
if(SelTim.val==2) // Если выбран канал 2
{
click TimerText2,1 // то имитируем нажатие на поле отображения состояния канала 2
}
if(SelTim.val==3) // Если выбран канал 3
{
click TimerText3,1 // то имитируем нажатие на поле отображения состояния канала 3
}
if(SelTim.val==4) // Если выбран канал 4
{
click TimerText4,1 // то имитируем нажатие на поле отображения состояния канала 4
}
if(SelTim.val==5) // Если выбран канал 5
{
click TimerText5,1 // то имитируем нажатие на поле отображения состояния канала 1
}
if(SelTim.val==1) // Если выбран канал 1
{
click b1,1 // Имитируем нажатие на кнопку b1
}
if(SelTim.val==2) // Если выбран канал 2
{
click b2,1 // Имитируем нажатие на кнопку b2
}
if(SelTim.val==3) // Если выбран канал 3
{
click b3,1 // Имитируем нажатие на кнопку b3
}
if(SelTim.val==4) // Если выбран канал 4
{
click b4,1 // Имитируем нажатие на кнопку b4
}
if(SelTim.val==5) // Если выбран канал 5
{
click b5,1 // Имитируем нажатие на кнопку b5
}
sys0=1 // заносим в системную переменную sys0 номер редактируемого канала
sys1=1 // заносим в системную переменную sys1 стартовый номер для выделения необходимого поля редактирования
page 1 // переходим на страницу редактирования канала (SetTimer - ID = 1).
//Отображение текущего времени в поле CurrentTime1
//----Отображение текущего дня----
temp.val=rtc2 // Получаем значение текущего дня из системной переменной rtc2 - "день в часах реального времени"
tempText.txt="" // Во временную строковую переменную tempText кладём пустую строку
if(temp.val<10)// Если день меньше 10
{
tempText.txt="0" // то во временную строковую переменную tempText кладём символ "0"
}
cov temp.val,TT1.txt,0 // конвертим значения дня (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=tempText.txt+TT1.txt // значение из переменной tempText и TT1 заносим в поле отображения CurrentTime1
//----Отображение текущего месяца----
temp.val=rtc1 // Получаем значение текущего месяца из системной переменной rtc1 - "месяц в часах реального времени"
tempText.txt="" // Во временную строковую переменную tempText кладём пустую строку
if(temp.val<10) // Если месяц меньше 10
{
tempText.txt="0" // то во временную строковую переменную tempText кладём символ "0"
}
cov temp.val,TT1.txt,0 // конвертим значения месяца (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt // к тексту в поле отображения CurrentTime1 добавляем разделитель даты "-" и значения из переменных tempText и TT1
//----Отображение текущего года----
temp.val=rtc0 // Получаем значение текущего года из системной переменной rtc0 - "год в часах реального времени"
cov temp.val,TT1.txt,0 // конвертим значения года (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+TT1.txt // к тексту в поле отображения CurrentTime1 добавляем разделитель даты "-" и значения из переменной TT1
//----Отображение текущего часа----
temp.val=rtc3 // Получаем значение текущего часа из системной переменной rtc3 - "час в часах реального времени"
tempText.txt="" // Во временную строковую переменную tempText кладём пустую строку
if(temp.val<10) // Если час меньше 10
{
tempText.txt="0" // то во временную строковую переменную tempText кладём символ "0"
}
cov temp.val,TT1.txt,0 // конвертим значения часа (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt // к тексту в поле отображения CurrentTime1 добавляем разделитель даты и времени " " и значения из переменных tempText и TT1
//----Отображение текущей минуты----
temp.val=rtc4 // Получаем значение текущей минуты из системной переменной rtc4 - "минута в часах реального времени"
tempText.txt="" // Во временную строковую переменную tempText кладём пустую строку
if(temp.val<10) // Если минута меньше 10
{
tempText.txt="0"// то во временную строковую переменную tempText кладём символ "0"
}
cov temp.val,TT1.txt,0 // конвертим значения минуты (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt // к тексту в поле отображения CurrentTime1 добавляем разделитель времени ":" и значения из переменных tempText и TT1
//----Отображение текущей секунды----
temp.val=rtc5 // Получаем значение текущей секунды из системной переменной rtc5 - "секунда в часах реального времени"
tempText.txt="" // Во временную строковую переменную tempText кладём пустую строку
if(temp.val<10) // Если секунда меньше 10
{
tempText.txt="0" // то во временную строковую переменную tempText кладём символ "0"
}
cov temp.val,TT1.txt,0 // конвертим значения секунды (числовое) в строковое значение в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt // к тексту в поле отображения CurrentTime1 добавляем разделитель времени ":" и значения из переменных tempText и TT1
//Отрисовка времени срабатывания каналов и определение событий срабатывания/отключения каналов
for(i.val=0;i.val<5;i.val++)//перебор каналов. в переменной i находится номер обрабатываемого канала (счёт с нуля)
{
temp.val=i.val*52 // определение стартового адреса в EEPROM для обрабатываемого канала
// ----Обработка дня включения----
temp2.val=temp.val+4 // Определяем адрес в EEPROM уставки дня включения канала
Var0txt.txt=""// в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку дня включения канала
if(temp1.val==10000) // если уставка дня не учитывается (значение 10000)
{
ts1.val=1 // считаем что уставка совпала с текущим днём
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc2) // если уставка совпала с текущим днём
{
ts1.val=1 // запоминаем что совпала в переменную ts1
}else // иначе
{
ts1.val=2 // запоминаем что не совпала в переменную ts1
}
cov temp1.val,tempText.txt,0 // конвертим уставку дня включения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10)//Eсли значение уставки дня включения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=Var0txt.txt+tempText.txt+"-"//в текстовую переменную TT1 записываем значения переменных Var0txt, tempText и разделитель даты "-"
// ----Обработка месяца включения----
temp2.val=temp.val+8 // Определяем адрес в EEPROM уставки месяца включения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку месяца включения канала
if(temp1.val==10000)// если уставка месяца не учитывается (значение 10000)
{
ts2.val=1 // считаем что уставка совпала с текущим месяцем
tempText.txt="X"// в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc1)//если уставка совпала с текущим месяцем
{
ts2.val=1 // запоминаем что совпала в переменную ts2
}else // иначе
{
ts2.val=2 // запоминаем что не совпала в переменную ts2
}
cov temp1.val,tempText.txt,0 // конвертим уставку месяца включения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки месяца включения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-" // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель даты "-"
// ----Обработка года включения----
temp2.val=temp.val+12 // Определяем адрес в EEPROM уставки года включения канала
repo temp1.val,temp2.val// вычитываем из EEPROM в переменную temp1.val уставку года включения канала
if(temp1.val==10000) // если уставка месяца не учитывается (значение 10000)
{
ts3.val=1 // считаем что уставка совпала с текущим годом
tempText.txt="X"// в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc0) // если уставка совпала с текущим годом
{
ts3.val=1 // запоминаем что совпала в переменную ts3
}else // иначе
{
ts3.val=0 // запоминаем что не совпала в переменную ts3
}
cov temp1.val,tempText.txt,0 // конвертим уставку года включения канала (числовое значение) во строковую переменную tempText
}
TT1.txt=TT1.txt+tempText.txt+" " // К значению текстовой переменной TT1 добавляем значения переменной tempText и разделитель даты и времени " "
// ----Обработка часа включения----
temp2.val=temp.val+16 // Определяем адрес в EEPROM уставки часа включения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку часа включения канала
if(temp1.val==10000)// если уставка часа не учитывается (значение 10000)
{
ts4.val=1 // считаем что уставка совпала с текущим часом
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc3) // если уставка совпала с текущим часом
{
ts4.val=1 // запоминаем что совпала в переменную ts4
}else // иначе
{
ts4.val=0 // запоминаем что не совпала в переменную ts4
}
cov temp1.val,tempText.txt,0 // конвертим уставку часа включения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки часа включения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":" // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель времени ":"
// ----Обработка минуты включения----
temp2.val=temp.val+20 // Определяем адрес в EEPROM уставки минуты включения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку минуты включения канала
if(temp1.val==10000)// если уставка минуты не учитывается (значение 10000)
{
ts5.val=1 // считаем что уставка совпала с текущей минутой
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc4) // если уставка совпала с текущей минутой
{
ts5.val=1//запоминаем что совпала в переменную ts5
}else // иначе
{
ts5.val=0 // запоминаем что не совпала в переменную ts5
}
cov temp1.val,tempText.txt,0 // конвертим уставку минуты включения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки минуты включения канала меньше 10
{
Var0txt.txt="0"//в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"//К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель времени ":"
// ----Обработка секунды включения----
temp2.val=temp.val+24 // Определяем адрес в EEPROM уставки секунды включения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку секунды включения канала
if(temp1.val==10000) // если уставка секунды не учитывается (значение 10000)
{
ts6.val=1 // считаем что уставка совпала с текущей секундой
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc5) // если уставка совпала с текущей секундой
{
ts6.val=1 // запоминаем что совпала в переменную ts6
}else // иначе
{
ts6.val=0 // запоминаем что не совпала в переменную ts6
}
cov temp1.val,tempText.txt,0 // конвертим уставку секунды включения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки секунды включения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" / " // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель уставки включения и выключения "/"
// ----Обработка дня отключения----
temp2.val=temp.val+28 // Определяем адрес в EEPROM уставки дня отключения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку дня отключения канала
if(temp1.val==10000) // если уставка дня не учитывается (значение 10000)
{
ts7.val=1 // считаем что уставка совпала с текущим днём
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc2) // если уставка совпала с текущим днём
{
ts7.val=1 // запоминаем что совпала в переменную ts7
}else // иначе
{
ts7.val=0 // запоминаем что не совпала в переменную ts7
}
cov temp1.val,tempText.txt,0 // конвертим уставку дня выключения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10)//Eсли значение уставки дня выключения канала меньше 10
{
Var0txt.txt="0"//в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-" // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель даты "-"
// ----Обработка месяца отключения----
temp2.val=temp.val+32 // Определяем адрес в EEPROM уставки дня отключения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val// вычитываем из EEPROM в переменную temp1.val уставку месяца отключения канала
if(temp1.val==10000)// если уставка месяца не учитывается (значение 10000)
{
ts8.val=1//считаем что уставка совпала с текущим месяцем
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc1) // если уставка совпала с текущим месяцем
{
ts8.val=1 // запоминаем что совпала в переменную ts8
}else // иначе
{
ts8.val=0 // запоминаем что не совпала в переменную ts8
}
cov temp1.val,tempText.txt,0 // конвертим уставку месяца выключения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки месяца выключения канала меньше 10
{
Var0txt.txt="0"//в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+"-"//К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель даты "-"
// ----Обработка года отключения----
temp2.val=temp.val+36 // Определяем адрес в EEPROM уставки дня отключения канала
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку года отключения канала
if(temp1.val==10000)// если уставка года не учитывается (значение 10000)
{
ts9.val=1 // считаем что уставка совпала с текущим месяцем
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc0) // если уставка совпала с текущим годом
{
ts9.val=1 // запоминаем что совпала в переменную ts9
}else // иначе
{
ts9.val=0 // запоминаем что не совпала в переменную ts9
}
cov temp1.val,tempText.txt,0 // конвертим уставку года выключения канала (числовое значение) во строковую переменную tempText
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+" " // К значению текстовой переменной TT1 добавляем значения переменной tempText и разделитель даты и времени " "
// ----Обработка часа отключения----
temp2.val=temp.val+40 // Определяем адрес в EEPROM уставки часа отключения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку часа отключения канала
if(temp1.val==10000) // если уставка часа не учитывается (значение 10000)
{
ts10.val=1//считаем что уставка совпала с текущим часом
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc3) // если уставка совпала с текущим часом
{
ts10.val=1 // запоминаем что совпала в переменную ts10
}else // иначе
{
ts10.val=0 // запоминаем что не совпала в переменную ts10
}
cov temp1.val,tempText.txt,0 // конвертим уставку часа выключения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки часа выключения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":"//К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель времени ":"
// ----Обработка минуты отключения----
temp2.val=temp.val+44 // Определяем адрес в EEPROM уставки минуты отключения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку минуты отключения канала
if(temp1.val==10000) // если уставка минуты не учитывается (значение 10000)
{
ts11.val=1 // считаем что уставка совпала с текущей минутой
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc4) // если уставка совпала с текущей минутой
{
ts11.val=1 // запоминаем что совпала в переменную ts11
}else // иначе
{
ts11.val=0 // запоминаем что не совпала в переменную ts11
}
cov temp1.val,tempText.txt,0 // конвертим уставку минуты выключения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки минуты выключения канала меньше 10
{
Var0txt.txt="0"//в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt+":" // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText и разделитель времени ":"
// ----Обработка секунды отключения----
temp2.val=temp.val+48 // Определяем адрес в EEPROM уставки секунды отключения канала
Var0txt.txt="" // в текстовую переменную Var0txt записываем пустую строку
repo temp1.val,temp2.val // вычитываем из EEPROM в переменную temp1.val уставку секунды отключения канала
if(temp1.val==10000) // если уставка секунды не учитывается (значение 10000)
{
ts12.val=1 // считаем что уставка совпала с текущей секундой
tempText.txt="X" // в строковую переменную tempText для отображения пишем символ "X"
}else // Иначе
{
if(temp1.val==rtc5) // если уставка совпала с текущей минутой
{
ts12.val=1 // запоминаем что совпала в переменную ts12
}else // иначе
{
ts12.val=0 // запоминаем что не совпала в переменную ts12
}
cov temp1.val,tempText.txt,0 // конвертим уставку секунды выключения канала (числовое значение) во строковую переменную tempText
if(temp1.val<10) // Eсли значение уставки секунды выключения канала меньше 10
{
Var0txt.txt="0" // в текстовую переменную Var0txt записываем символ "0"
}
}
TT1.txt=TT1.txt+Var0txt.txt+tempText.txt // К значению текстовой переменной TT1 добавляем значения переменных Var0txt, tempText
// ----Определение события включения----
repo temp1.val,temp.val // вычитываем из EEPROM в переменную temp1.val состояние активности канала
tsrOn.val=0 // в переменную tsrOn (произошло событие включения) записываем 0 (нет события)
if(temp1.val==1)// Если канал активен
{
if(ts1.val==1)// и если совпал день включения
{
if(ts2.val==1)// и если совпал месяц включения
{
if(ts3.val==1)// и если совпал год включения
{
if(ts4.val==1)// и если совпал час включения
{
if(ts5.val==1)// и если совпала минута включения
{
if(ts6.val==1)// и если совпала секунда включения
{
tsrOn.val=1//в переменную tsrOn (произошло событие включения) записываем 1 (естьсобытие включения)
}
}
}
}
}
}
}
// ----Определение события выключения----
tsrOf.val=0 // в переменную tsrOf (произошло событие выключения) записываем 0 (нет события)
if(temp1.val==1)// Если канал активен
{
if(ts7.val==1)// и если совпал день выключения
{
if(ts8.val==1)// и если совпал месяц выключения
{
if(ts9.val==1)// и если совпал год выключения
{
if(ts10.val==1)// и если совпал час выключения
{
if(ts11.val==1)// и если совпала минута выключения
{
if(ts12.val==1)// и если совпала секунда выключения
{
tsrOf.val=1//в переменную tsrOf (произошло событие выключения) записываем 1 (есть событие отключения)
}
}
}
}
}
}
}else//Иначе
{
tsrOf.val=1//в переменную tsrOf (произошло событие выключения) записываем 1 (есть событие отключения)
}
// ----Обработка событий для канала 1----
if(i.val==0)// если обрабатывается канал 1
{
if(tsr1.val==1)//если текущее состояние канала - включён (состояние канала 1 - переменная tsr1)
{
if(tsrOf.val==1)// и если произошло событие отключения
{
tsr1.val=2 // переводим канал в отключённое состояние
}
}else // Иначе (если состояние канала отключенное )
{
if(tsrOn.val==1) // и если произошло событие включения
{
tsr1.val=1 // переводим канал во включенное состояние состояние
}
}
if(tsr1.val==1)//если текущее состояние канала - включён (состояние канала 1 - переменная tsr1)
{
TimerText1.pco=63488// текстовому полю TimerText1 задаём цвет текста - красный
}else // иначе
{
if(temp1.val==1) // если канал активен
{
TimerText1.pco=65504 // текстовому полю TimerText1 задаём цвет текста - жёлтый
}else // иначе(если канал не активен)
{
TimerText1.pco=50712 // текстовому полю TimerText1 задаём цвет текста - серый
}
}
TimerText1.txt=TT1.txt // в текстовое поле TimerText1 в качестве текста задаем значение текстовой переменной TT1
}
// ----Обработка событий для канала 2----
if(i.val==1) // если обрабатывается канал 2
{
if(tsr2.val==1)//если текущее состояние канала - включён (состояние канала 2 - переменная tsr2)
{
if(tsrOf.val==1)// и если произошло событие отключения
{
tsr2.val=2 // переводим канал в отключённое состояние
}
}else // Иначе (если состояние канала отключенное )
{
if(tsrOn.val==1)// и если произошло событие включения
{
tsr2.val=1 // переводим канал во включенное состояние состояние
}
}
if(tsr2.val==1)//если текущее состояние канала - включён (состояние канала 2 - переменная tsr2)
{
TimerText2.pco=63488// текстовому полю TimerText2 задаём цвет текста - красный
}else // иначе
{
if(temp1.val==1) // если канал активен
{
TimerText2.pco=65504 // текстовому полю TimerText2 задаём цвет текста - жёлтый
}else // иначе(если канал не активен)
{
TimerText2.pco=50712 // текстовому полю TimerText2 задаём цвет текста - серый
}
}
TimerText2.txt=TT1.txt // в текстовое поле TimerText2 в качестве текста задаем значение текстовой переменной TT1
}
// ----Обработка событий для канала 3----
if(i.val==2) // если обрабатывается канал 3
{
if(tsr3.val==1)//если текущее состояние канала - включён (состояние канала 3 - переменная tsr3)
{
if(tsrOf.val==1)// и если произошло событие отключения
{
tsr3.val=2 // переводим канал в отключённое состояние
}
}else // Иначе (если состояние канала отключенное )
{
if(tsrOn.val==1)// и если произошло событие включения
{
tsr3.val=1 // переводим канал во включенное состояние состояние
}
}
if(tsr3.val==1)//если текущее состояние канала - включён (состояние канала 3 - переменная tsr3)
{
TimerText3.pco=63488 // текстовому полю TimerText3 задаём цвет текста - красный
}else // иначе
{
if(temp1.val==1) // если канал активен
{
TimerText3.pco=65504 // текстовому полю TimerText3 задаём цвет текста - жёлтый
}else // иначе(если канал не активен)
{
TimerText3.pco=50712// текстовому полю TimerText3 задаём цвет текста - серый
}
}
TimerText3.txt=TT1.txt // в текстовое поле TimerText3 в качестве текста задаем значение текстовой переменной TT1
}
// ----Обработка событий для канала 4----
if(i.val==3) // если обрабатывается канал 4
{
if(tsr4.val==1)//если текущее состояние канала - включён (состояние канала 4 - переменная tsr4)
{
if(tsrOf.val==1)// и если произошло событие отключения
{
tsr4.val=2//переводим канал в отключённое состояние
}
}else // Иначе (если состояние канала отключенное )
{
if(tsrOn.val==1)// и если произошло событие включения
{
tsr4.val=1//переводим канал во включенное состояние состояние
}
}
if(tsr4.val==1)//если текущее состояние канала - включён (состояние канала 4 - переменная tsr4)
{
TimerText4.pco=63488 // текстовому полю TimerText4 задаём цвет текста - красный
}else//иначе
{
if(temp1.val==1)// если канал активен
{
TimerText4.pco=65504 // текстовому полю TimerText4 задаём цвет текста - жёлтый
}else // иначе(если канал не активен)
{
TimerText4.pco=50712// текстовому полю TimerText4 задаём цвет текста - серый
}
}
TimerText4.txt=TT1.txt // в текстовое поле TimerText4 в качестве текста задаем значение текстовой переменной TT1
}
// ----Обработка событий для канала 5----
if(i.val==4) // если обрабатывается канал 5
{
if(tsr5.val==1)//если текущее состояние канала - включён (состояние канала 5 - переменная tsr5)
{
if(tsrOf.val==1)// и если произошло событие отключения
{
tsr5.val=2//переводим канал в отключённое состояние
}
}else // Иначе (если состояние канала отключенное )
{
if(tsrOn.val==1)// и если произошло событие включения
{
tsr5.val=1 // переводим канал во включенное состояние состояние
}
}
if(tsr5.val==1)//если текущее состояние канала - включён (состояние канала 5 - переменная tsr5)
{
TimerText5.pco=63488 // текстовому полю TimerText5 задаём цвет текста - красный
}else // иначе
{
if(temp1.val==1)// если канал активен
{
TimerText5.pco=65504 // текстовому полю TimerText5 задаём цвет текста - жёлтый
}else // иначе(если канал не активен)
{
TimerText5.pco=50712 // текстовому полю TimerText5 задаём цвет текста - серый
}
}
TimerText5.txt=TT1.txt // в текстовое поле TimerText5 в качестве текста задаем значение текстовой переменной TT1
}
}
//Отрисовка значка выбраного канала
if(SelTim.val==1) // если выбран канал 1 (переменная SelTim)
{
b1.txt="+" // на кнопке переключения состояния канала 1 (b1) рисуем "+"
}else // иначе
{
b1.txt="" // на кнопке переключения состояния канала 1 (b1) стираем "+"
}
if(SelTim.val==2) // если выбран канал 2 (переменная SelTim)
{
b2.txt="+" // на кнопке переключения состояния канала 2 (b2) рисуем "+"
}else//иначе
{
b2.txt="" // на кнопке переключения состояния канала 2 (b2) стираем "+"
}
if(SelTim.val==3)//если выбран канал 3 (переменная SelTim)
{
b3.txt="+" // на кнопке переключения состояния канала 3 (b3) рисуем "+"
}else//иначе
{
b3.txt="" // на кнопке переключения состояния канала 3 (b3) стираем "+"
}
if(SelTim.val==4)//если выбран канал 4 (переменная SelTim)
{
b4.txt="+" // на кнопке переключения состояния канала 4 (b4) рисуем "+"
}else//иначе
{
b4.txt="" // на кнопке переключения состояния канала 4 (b4) стираем "+"
}
if(SelTim.val==5)//если выбран канал 5 (переменная SelTim)
{
b5.txt="+" // на кнопке переключения состояния канала 5 (b5) рисуем "+"
}else//иначе
{
b5.txt="" // на кнопке переключения состояния канала 5 (b5) стираем "+"
}
Адрес в EEPROM Стартовое смещение = (номер канала начиная с 0)*52 |
Значение |
---|---|
Стартовое смещение | Активность канала (0 – канал отключен, 1- канал включён) |
Стартовое смещение + 4 | День включения канала. Если не учитывается — 10000 |
Стартовое смещение + 8 | Месяц включения канала. Если не учитывается — 10000 |
Стартовое смещение + 12 | Год включения канала. Если не учитывается — 10000 |
Стартовое смещение + 16 | Час включения канала. Если не учитывается — 10000 |
Стартовое смещение + 20 | Минута включения канала. Если не учитывается -10000 |
Стартовое смещение + 24 | Секунда включения канала. Если не учитывается – 10000 |
Стартовое смещение + 28 | День выключения канала. Если не учитывается — 10000 |
Стартовое смещение + 32 | Месяц выключения канала. Если не учитывается – 10000 |
Стартовое смещение + 36 | Год выключения канала. Если не учитывается -10000 |
Стартовое смещение + 40 | Час выключения канала. Если не учитывается -10000 |
Стартовое смещение + 44 | Минута выключения канала. Если не учитывается -10000 |
Стартовое смещение + 48 | Секунда выключения канала. Если не учитывается -10000 |
cfgpio 0,1,b2 // Кнопка Esc (IO0) привязывается к виртуальной кнопке b2 ( "Активировать/Дезактивировать канал" или "Выход" (удержание 2 сек))
cfgpio 1,1,BYE // Кнопка Enter (IO1) привязывается к виртуальной кнопке BYE ("Включение/Oтключение учёта при срабатывании" выбранного поля)
cfgpio 2,1,b0 // Кнопка Right (IO2) привязывается к виртуальной кнопке b0 -"Переход к следующему полю"
cfgpio 3,1,BYM // Кнопка Down (IO3) привязывается к виртуальной кнопке BYM -"Отнять единичку у выбраного поля"
cfgpio 4,1,BYP // Кнопка Up (IO4) привязывается к виртуальной кнопке BYP -"Добавить единичку к выбраному полю"
cfgpio 5,1,b1 // Кнопка Left (IO5) привязывается к виртуальной кнопке b1 -"Переход к предыдущему полю"
StAddr.val=sys0-1 // Переносим номер выбранного канала в счёт с 0
StAddr.val=StAddr.val*52 // определяем стартовый адрес выбранного канала в EEPROM
repo Enable.val,StAddr.val // В переменную Enable заносим вычитываемую из EEPROM активность канала
if(sys1>11) // Если активно поле 12 (Секунды уставки отключения)
{
sys1=1 // Активируем поле 1 (День уставки включения )
}else // Иначе
{
sys1=sys1+1 // Переходим на следующее поле
}
if(sys1<2) // Если активно поле 1 (День уставки включения )
{
sys1=12 // Активируем поле 12 (Секунды уставки отключения)
}else // иначе
{
sys1=sys1-1 // Переходим на предыдущее поле
}
tm1.en=1 // Запускаем таймер tm1
tm1.en=0 // Cбрасываем и останавливаем таймер tm1
if(Enable.val==1) // Если текущее состояние элемента Enable ("Активировать/Дезактивировать канал") включённое
{
Enable.val=0 // то переводим его в выключенное состояние
}else // иначе
{
Enable.val=1 // переводим его во включенное состояние
}
click b11,1 // Имитируем нажатие на виртуальную кнопку b11 ("Выход")
if(sys1==1) // Если выбрано поле 1(День уставки включения)
{
temp2.val=rtc2 // В качестве значения по умолчанию выбираем текущий день из часов реального времени
}
if(sys1==2) // Если выбрано поле 2(Месяц уставки включения)
{
temp2.val=rtc1 // В качестве значения по умолчанию выбираем текущий месяц из часов реального времени
}
if(sys1==3) // Если выбрано поле 3(Год уставки включения)
{
temp2.val=rtc0 // В качестве значения по умолчанию выбираем текущий год из часов реального времени
}
if(sys1==4) // Если выбрано поле 4 (Час уставки включения)
{
temp2.val=rtc3 // В качестве значения по умолчанию выбираем текущий час из часов реального времени
}
if(sys1==5) // Если выбрано поле 5 (Минута уставки включения)
{
temp2.val=rtc4 // В качестве значения по умолчанию выбираем текущую минуту из часов реального времени
}
if(sys1==6) // Если выбрано поле 6 (Секунда уставки включения)
{
temp2.val=rtc5 // В качестве значения по умолчанию выбираем текущую секунду из часов реального времени
}
if(sys1==7) // Если выбрано поле 7 (День уставки выключения)
{
temp2.val=rtc2 // В качестве значения по умолчанию выбираем текущий день из часов реального времени
}
if(sys1==8) // Если выбрано поле 8 (Месяц уставки выключения)
{
temp2.val=rtc1 // В качестве значения по умолчанию выбираем текущий месяц из часов реального времени
}
if(sys1==9) // Если выбрано поле 9 (Год уставки выключения)
{
temp2.val=rtc0 // В качестве значения по умолчанию выбираем текущий год из часов реального времени
}
if(sys1==10)// Если выбрано поле 10 (Час уставки выключения)
{
temp2.val=rtc3 // В качестве значения по умолчанию выбираем текущий час из часов реального времени
}
if(sys1==11) // Если выбрано поле 11 (Минута уставки выключения)
{
temp2.val=rtc4 // В качестве значения по умолчанию выбираем текущую минуту из часов реального времени
}
if(sys1==12) // Если выбрано поле 12 (Секунда уставки выключения)
{
temp2.val=rtc5 // В качестве значения по умолчанию выбираем текущую секунду из часов реального времени
}
temp3.val=sys1*4 // определяем смещение адреса в EEPROM для значения выбраного поля
temp.val=StAddr.val+temp3.val// определяем абсолютный адрес в EEPROM для значения выбранного поля
repo temp1.val,temp.val // вычитываем значение данного для выбранного поля в переменную temp1
if(temp1.val==10000)//Если поле не учитывается при определении события (значение равно 10000)
{
temp1.val=temp2.val // заносим в переменную temp1 ранее определённое значение по умолчанию (включаем учитывание поля при определении события)
}else // Иначе (Если учитывается при определении события)
{
temp1.val=10000 // заносим в переменную temp1 значение 10000 (отключаем учитывание поля при определении события)
}
wepo temp1.val,temp.val//Cохраняем новое значение в EEPROM
if(sys1==1) // Если выбрано поле 1(День уставки включения)
{
temp2.val=31 // то в переменную temp2 записываем максимальное значение для поля 1 - 31
}
if(sys1==2)// Если выбрано поле 2(Месяц уставки включения)
{
temp2.val=12 // то в переменную temp2 записываем максимальное значение для поля 2 - 12
}
if(sys1==3) // Если выбрано поле 3 (Год уставки включения)
{
temp2.val=9999 // то в переменную temp2 записываем максимальное значение для поля 2 - 9999
}
if(sys1==4) // Если выбрано поле 4 (Час уставки включения)
{
temp2.val=23 // то в переменную temp2 записываем максимальное значение для поля 4 - 23
}
if(sys1==5) // Если выбрано поле 5 (Минута уставки включения)
{
temp2.val=59 // то в переменную temp2 записываем максимальное значение для поля 5 - 59
}
if(sys1==6) // Если выбрано поле 6 (Секунда уставки включения)
{
temp2.val=59 // то в переменную temp2 записываем максимальное значение для поля 6 - 59
}
if(sys1==7)// Если выбрано поле 7 (День уставки выключения)
{
temp2.val=31 // то в переменную temp2 записываем максимальное значение для поля 7 - 31
}
if(sys1==8) // Если выбрано поле 8 (Месяц уставки выключения)
{
temp2.val=12 // то в переменную temp2 записываем максимальное значение для поля 8 - 12
}
if(sys1==9) // Если выбрано поле 9 (Год уставки выключения)
{
temp2.val=9999 // то в переменную temp2 записываем максимальное значение для поля 9 - 9999
}
if(sys1==10) // Если выбрано поле 10 (Час уставки выключения)
{
temp2.val=23 // то в переменную temp2 записываем максимальное значение для поля 10 - 23
}
if(sys1==11) // Если выбрано поле 11 (Минута уставки выключения)
{
temp2.val=59 // то в переменную temp2 записываем максимальное значение для поля 11 - 59
}
if(sys1==12) // Если выбрано поле 12 (Секунда уставки выключения)
{
temp2.val=59 // то в переменную temp2 записываем максимальное значение для поля 12 - 59
}
temp3.val=sys1*4 // определяем смещение адреса в EEPROM для значения выбраного поля
temp.val=StAddr.val+temp3.val // определяем абсолютный адрес в EEPROM для значения выбраного поля
repo temp1.val,temp.val // вычитываем значение данного для выбранного поля в переменную temp1
if(temp1.val!=10000)//Если поле учитывается при определении события (значение не равно 10000)
{
if(temp1.val!=temp2.val)// если значение уставки не равно ранее определённому максимальному значению
{
temp1.val=temp1.val+1 // добавляем к значению единицу
wepo temp1.val,temp.val // Cохраняем новое значение в EEPROM
}
}
temp2.val=0 // записываем в переменную temp2 минимальное значение для полей 4, 5, 6,10,11,12 - 0
if(sys1==1)// Если выбрано поле 1(День уставки включения)
{
temp2.val=1 // то в переменную temp2 записываем минимальное значение для поля 1 - 1
}
if(sys1==2)// Если выбрано поле 2(Месяц уставки включения)
{
temp2.val=1 // то в переменную temp2 записываем минимальное значение для поля 2 - 1
}
if(sys1==3)// Если выбрано поле 3(Год уставки включения)
{
temp2.val=2016 // то в переменную temp2 записываем минимальное значение для поля 3 - 2016
}
if(sys1==7) // Если выбрано поле 7(День уставки выключения)
{
temp2.val=1 // то в переменную temp2 записываем минимальное значение для поля 7 - 1
}
if(sys1==8) // Если выбрано поле 8(Месяц уставки выключения)
{
temp2.val=1 // то в переменную temp2 записываем минимальное значение для поля 8 - 1
}
if(sys1==9) // Если выбрано поле 9(Год уставки выключения)
{
temp2.val=2016 // то в переменную temp2 записываем минимальное значение для поля 9 - 2016
}
temp3.val=sys1*4//определяем смещение адреса в EEPROM для значения выбраного поля
temp.val=StAddr.val+temp3.val // определяем абсолютный адрес в EEPROM для значения выбраного поля
repo temp1.val,temp.val // вычитываем значение данного для выбранного поля в переменную temp1
if(temp1.val!=10000) // Если поле учитывается при определении события (значение не равно 10000)
{
if(temp1.val!=temp2.val)// если значение уставки не равно ранее определённому минимальному значению
{
temp1.val=temp1.val-1 // отнимаем от значения единицу
wepo temp1.val,temp.val // Cохраняем новое значение в EEPROM
}
}
wepo Enable.val,StAddr.val// сохраняем в EEPROM значение активности канала
sys0=0 // сбрасываем системную переменную sys0
sys1=0 // сбрасываем системную переменную sys1
page 0 // Переходим на главную страницу
sys1=1 // выбираем поле 1
//Отрисовка поля 1 - (День уставки включения)
temp1.val=StAddr.val+4 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10)// Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==1)// и если выбрано поле 1
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartD.txt="X"// В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==1) // и если выбрано поле 1
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartD.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 2 - (Месяц уставки включения)
temp1.val=StAddr.val+8 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10)// Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==2) // и если выбрано поле 2
{
vis BYP,0//скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartMo.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==2) // и если выбрано поле 2
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartMo.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 3 - (Год уставки включения)
temp1.val=StAddr.val+12 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==3) // и если выбрано поле 3
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartY.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==3) // и если выбрано поле 3
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartY.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 4 - (Час уставки включения)
temp1.val=StAddr.val+16 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==4) // и если выбрано поле 4
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartH.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==4) // и если выбрано поле 3
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartH.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 5 - (Минута уставки включения)
temp1.val=StAddr.val+20 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==5) // и если выбрано поле 5
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartMi.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==5) // и если выбрано поле 5
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartMi.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 6 - (Секунда уставки включения)
temp1.val=StAddr.val+24 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==6) // и если выбрано поле 6
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StartS.txt="X" // В поле отображаем символ "Х"
}else//Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==6) // и если выбрано поле 6
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StartS.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 7 - (День уставки выключения)
temp1.val=StAddr.val+28// Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==7) // и если выбрано поле 7
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopD.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==7) // и если выбрано поле 7
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopD.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 8 - (Месяц уставки выключения)
temp1.val=StAddr.val+32 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==8) // и если выбрано поле 8
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopMo.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==8) // и если выбрано поле 8
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopMo.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 9 - (Год уставки выключения)
temp1.val=StAddr.val+36 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==9) // и если выбрано поле 9
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopY.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==9) // и если выбрано поле 9
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopY.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 10 - (Час уставки выключения)
temp1.val=StAddr.val+40 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==10) // и если выбрано поле 10
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopH.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==10) // и если выбрано поле 10
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopH.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 11 - (Минута уставки выключения)
temp1.val=StAddr.val+44 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==11) // и если выбрано поле 11
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopMi.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==11) // и если выбрано поле 11
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopMi.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Отрисовка поля 12 - (Секунда уставки выключения)
temp1.val=StAddr.val+48 // Oпределяем адрес в EEPROM для значения поля
repo temp.val,temp1.val // В переменную temp вычитываем из EEPROM значение для поля
cov temp.val,tempStr.txt,0 // преобразуем числовое значение из переменной temp в строчное значение в переменную tempStr
if(temp.val<10) // Если значение поля меньше 10
{
tempStr1.txt="0"+tempStr.txt // то в строчную переменную tempStr1 заносим строчное значение поля (переменная tempStr) добавив перед ним символ "0"
}else // Иначе
{
tempStr1.txt=tempStr.txt // в строчную переменную tempStr1 заносим только строчное значение поля (переменная tempStr)
}
if(temp.val==10000) // Если значение поля не учитывается при обработке событий (значение = 10000)
{
if(sys1==12) // и если выбрано поле 12
{
vis BYP,0 // скрываем кнопку "Добавить единицу"
vis BYM,0 // скрываем кнопку "Отнять единицу"
}
StopS.txt="X" // В поле отображаем символ "Х"
}else // Иначе (значение поля учитывается при обработке событий (значение не равно 10000))
{
if(sys1==12) // и если выбрано поле 12
{
vis BYP,1 // показываем кнопку "Добавить единицу"
vis BYM,1 // показываем кнопку "Отнять единицу"
}
StopS.txt=tempStr1.txt // В поле отображаем значение поля из переменной tempStr1
}
//Задание цвета полям
if(sys1==1) // Если выбрано поле 1 - (День уставки включения)
{
StartD.pco=63488 // Полю 1 задаём цвет - красный
}else // иначе
{
StartD.pco=65535 // Полю 1 задаём цвет - белый
}
if(sys1==2) // Если выбрано поле 2 - (Месяц уставки включения)
{
StartMo.pco=63488 // Полю 2 задаём цвет - красный
}else // иначе
{
StartMo.pco=65535 // Полю 2 задаём цвет - белый
}
if(sys1==3) // Если выбрано поле 3 - (Год уставки включения)
{
StartY.pco=63488 // Полю 3 задаём цвет - красный
}else // иначе
{
StartY.pco=65535 // Полю 3 задаём цвет - белый
}
if(sys1==4) // Если выбрано поле 4 - (Час уставки включения)
{
StartH.pco=63488 // Полю 4 задаём цвет - красный
}else // иначе
{
StartH.pco=65535 // Полю 4 задаём цвет - белый
}
if(sys1==5) // Если выбрано поле 5 - (Минута уставки включения)
{
StartMi.pco=63488 // Полю 5 задаём цвет - красный
}else // иначе
{
StartMi.pco=65535 // Полю 5 задаём цвет - белый
}
if(sys1==6) // Если выбрано поле 6 - (Секунда уставки включения)
{
StartS.pco=63488 // Полю 6 задаём цвет - красный
}else // иначе
{
StartS.pco=65535 // Полю 6 задаём цвет - белый
}
if(sys1==7) // Если выбрано поле 7 - (День уставки выключения)
{
StopD.pco=63488 // Полю 7 задаём цвет - красный
}else // иначе
{
StopD.pco=65535 // Полю 7 задаём цвет - белый
}
if(sys1==8) // Если выбрано поле 8 - (Месяц уставки выключения)
{
StopMo.pco=63488 // Полю 8 задаём цвет - красный
}else // иначе
{
StopMo.pco=65535 // Полю 8 задаём цвет - белый
}
if(sys1==9) // Если выбрано поле 9 - (Год уставки выключения)
{
StopY.pco=63488 // Полю 9 задаём цвет - красный
}else // иначе
{
StopY.pco=65535 // Полю 9 задаём цвет - белый
}
if(sys1==10) // Если выбрано поле 10 - (Час уставки выключения)
{
StopH.pco=63488 // Полю 10 задаём цвет - красный
}else // иначе
{
StopH.pco=65535 // Полю 10 задаём цвет - белый
}
if(sys1==11) // Если выбрано поле 11 - (Минута уставки выключения)
{
StopMi.pco=63488 // Полю 11 задаём цвет - красный
}else // иначе
{
StopMi.pco=65535 // Полю 11 задаём цвет - белый
}
if(sys1==12) // Если выбрано поле 12 - (Секунда уставки выключения)
{
StopS.pco=63488 // Полю 12 задаём цвет - красный
}else // иначе
{
StopS.pco=65535 // Полю 12 задаём цвет - белый
}
cfgpio 0,1,b11 // Кнопка Esc (IO0) привязывается к виртуальной кнопке b1 ("Выход")
cfgpio 1,1,b10 // Кнопка Enter (IO1) привязывается к виртуальной кнопке b10 ("сброс секунд в 0")
cfgpio 2,1,b14 // Кнопка Right (IO2) привязывается к виртуальной кнопке b14 ("Добавить 1 к значению выбраного полю")
cfgpio 3,1,b13 // Кнопка Down (IO3) привязывается к виртуальной кнопке b13 ("Перейти к следующему полю")
cfgpio 4,1,b12 // Кнопка Up (IO4) привязывается к виртуальной кнопке b12 ("Перейти к предыдущему полю")
cfgpio 5,1,b15 // Кнопка Left (IO5) привязывается к виртуальной кнопке b15 ("Отнять 1 от значения выбраного поля")
sel.val=1 // Устанавливаем выбранным поле 1 (День)
if(rtc2<31)// если значение текущего дня в часах реального времени меньше 31
{
rtc2=rtc2+1 // то добавляем к текущему значению день
}
if(rtc1<12) // если значение текущего месяца в часах реального времени меньше 12
{
rtc1=rtc1+1 // то добавляем к текущему значению ещё месяц
}
rtc0=rtc0+1 // добавляем к текущему значению года в часах реального времени ещё год
if(rtc3<23) // если значение текущего часа в часах реального времени меньше 23
{
rtc3=rtc3+1 // то добавляем к текущему значению ещё час
}
if(rtc4<59) // если значение текущей минуты в часах реального времени меньше 59
{
rtc4=rtc4+1 // то добавляем к текущему значению ещё минуту
}
if(rtc2>1)// если значение текущего дня в часах реального времени больше 1
{
rtc2=rtc2-1 // то отнимаем от текущего значения день
}
if(rtc1>1) // если значение текущего месяца в часах реального времени больше 1
{
rtc1=rtc1-1 // то отнимаем от текущего значения месяц
}
if(rtc0>2016) // если значение текущего года в часах реального времени больше 2016
{
rtc0=rtc0-1 // то отнимаем от текущего значения год
}
if(rtc3>0)// если значение текущего часа в часах реального времени больше 0
{
rtc3=rtc3-1 // то отнимаем от текущего значения час
}
if(rtc4>0) // если значение текущей минуты в часах реального времени больше 0
{
rtc4=rtc4-1 // то отнимаем от текущего значения минуту
}
rtc5=0 // в значения секунд в часах реального времени записываем 0
page 0 // переходим на главное окно
if(sel.val<2)//Если выбраное поле равно 1 (День)
{
sel.val=5 // Переходим на поле 5 (Минуты)
}else // Иначе
{
sel.val=sel.val-1 // переходим на предыдущее поле
}
if(sel.val>4)//Если выбранное поле - 5 (Минуты)
{
sel.val=1 // Переходим на поле 1 (День)
}else // Иначе
{
sel.val=sel.val+1 // переходим на следующее поле
}
if(sel.val==1)//Если выбрано поле 1(День)
{
click b0,1 // Имитируем нажатие на кнопке b0 (Добавить день)
}
if(sel.val==2) // Если выбрано поле 2(Месяц)
{
click b2,1 // Имитируем нажатие на кнопке b2 (Добавить месяц)
}
if(sel.val==3)//Если выбрано поле 3(Год)
{
click b4,1 // Имитируем нажатие на кнопке b4 (Добавить год)
}
if(sel.val==4)//Если выбрано поле 4(Часы)
{
click b6,1 // Имитируем нажатие на кнопке b6 (Добавить час)
}
if(sel.val==5)//Если выбрано поле 5(Минуты)
{
click b8,1 // Имитируем нажатие на кнопке b8 (Добавить минуту)
}
if(sel.val==1) // Если выбрано поле 1(День)
{
click b0,0 // Имитируем отпускание кнопки b0 (Добавить день)
}
if(sel.val==2) // Если выбрано поле 2(Месяц)
{
click b2,0 // Имитируем отпускание кнопки b2 (Добавить месяц)
}
if(sel.val==3) // Если выбрано поле 3(Год)
{
click b4,0 // Имитируем отпускание кнопки b4 (Добавить год)
}
if(sel.val==4) // Если выбрано поле 4(Час)
{
click b6,0 // Имитируем отпускание кнопки b6 (Добавить час)
}
if(sel.val==5) // Если выбрано поле 5(Минута)
{
click b8,0 // Имитируем отпускание кнопки b8 (Добавить минуту)
}
if(sel.val==1) // Если выбрано поле 1(День)
{
click b1,1 // Имитируем нажатие на кнопке b1 (Минус день)
}
if(sel.val==2) // Если выбрано поле 2(Месяц)
{
click b3,1 // Имитируем нажатие на кнопке b3 (Минус месяц)
}
if(sel.val==3)//Если выбрано поле 3(Год)
{
click b5,1 // Имитируем нажатие на кнопке b5 (Минус год)
}
if(sel.val==4)//Если выбрано поле 4(час)
{
click b7,1 // Имитируем нажатие на кнопке b7 (Минус час)
}
if(sel.val==5)//Если выбрано поле 5(Минута)
{
click b9,1//Имитируем нажатие на кнопке b9 (Минус минута)
}
if(sel.val==1) // Если выбрано поле 1(День)
{
click b1,0 // Имитируем отпускание кнопки b1 (Минус день)
}
if(sel.val==2) // Если выбрано поле 2(Месяц)
{
click b3,0 // Имитируем отпускание кнопки b3 (Минус месяц)
}
if(sel.val==3)//Если выбрано поле 3(Год)
{
click b5,0 // Имитируем отпускание кнопки b5 (Минус год)
}
if(sel.val==4)//Если выбрано поле 4(Час)
{
click b7,0 // Имитируем отпускание кнопки b7 (Минус час)
}
if(sel.val==5) // Если выбрано поле 5(Минута)
{
click b9,0 // Имитируем отпускание кнопки b9 (Минус минута)
}
//Обновление отображения текущего времени
temp.val=rtc2 // в переменную temp вычитываем значения текущего дня из часов реального времени (системная переменная rtc2)
tempText.txt=""//в строковую переменную tempText записываем пустую строку
if(temp.val<10)//если значение текущего дня меньше 10
{
tempText.txt="0" // в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение дня в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=tempText.txt+TT1.txt // в поле отображения текущего времени CurrentTime1 записываем значения переменных tempText и TT1
temp.val=rtc1 // в переменную temp вычитываем значения текущего месяца из часов реального времени (системная переменная rtc1)
tempText.txt="" // в строковую переменную tempText записываем пустую строку
if(temp.val<10) // если значение текущего месяца меньше 10
{
tempText.txt="0" // в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение месяца в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt // к значению в поле отображения текущего времени CurrentTime1 добавляем символ разделителя даты "-" а затем значения переменных tempText и TT1
temp.val=rtc0 // в переменную temp вычитываем значения текущего года из часов реального времени (системная переменная rtc0)
tempText.txt=""//в строковую переменную tempText записываем пустую строку
if(temp.val<10)//если значение текущего года меньше 10
{
tempText.txt="0"//в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение года в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+"-"+tempText.txt+TT1.txt // к значению в поле отображения текущего времени CurrentTime1 добавляем символ разделителя даты "-" а затем значения переменных tempText и TT1
temp.val=rtc3 // в переменную temp вычитываем значения текущего часа из часов реального времени (системная переменная rtc3)
tempText.txt="" // в строковую переменную tempText записываем пустую строку
if(temp.val<10) // если значение текущего часа меньше 10
{
tempText.txt="0" // в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение часа в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+" "+tempText.txt+TT1.txt // к значению в поле отображения текущего времени CurrentTime1 добавляем символ разделителя даты и времени " " а затем значения переменных tempText и TT1
temp.val=rtc4 // в переменную temp вычитываем значения текущей минуты из часов реального времени (системная переменная rtc4)
tempText.txt="" // в строковую переменную tempText записываем пустую строку
if(temp.val<10) // если значение текущей минуты меньше 10
{
tempText.txt="0" // в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение минуты в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt // к значению в поле отображения текущего времени CurrentTime1 добавляем символ разделителя времени ":" а затем значения переменных tempText и TT1
temp.val=rtc5 // в переменную temp вычитываем значения текущей сеунды из часов реального времени (системная переменная rtc4)
tempText.txt="" // в строковую переменную tempText записываем пустую строку
if(temp.val<10) // если значение текущей секунды меньше 10
{
tempText.txt="0" // в строковую переменную tempText записываем символ "0"
}
cov temp.val,TT1.txt,0 // преобразуем числовое значение секунды в строковое значение и записываем в строковую переменную TT1
CurrentTime1.txt=CurrentTime1.txt+":"+tempText.txt+TT1.txt // к значению в поле отображения текущего времени CurrentTime1 добавляем символ разделителя времени ":" а затем значения переменных tempText и TT1
//Задание цвета для идентификаторов полей (t1 - t5)
if(sel.val==1) // Если выбрано поле 1 (День)
{
t1.pco=63488 // Идентификатору поля дня (t1) задаём цвет текста - красный
}else//Иначе
{
t1.pco=65535 // Идентификатору поля дня (t1) задаём цвет текста - белый
}
if(sel.val==2) // Если выбрано поле 2 (Месяц)
{
t2.pco=63488 // Идентификатору поля месяца (t2) задаём цвет текста - красный
}else // Иначе
{
t2.pco=65535 // Идентификатору поля месяца (t2) задаём цвет текста - белый
}
if(sel.val==3)//Если выбрано поле 3 (Год)
{
t3.pco=63488 // Идентификатору поля года (t3) задаём цвет текста - красный
}else // Иначе
{
t3.pco=65535 // Идентификатору поля года (t3) задаём цвет текста - белый
}
if(sel.val==4)//Если выбрано поле 4 (Час)
{
t4.pco=63488 // Идентификатору поля часа (t4) задаём цвет текста - красный
}else // Иначе
{
t4.pco=65535 // Идентификатору поля часа (t4) задаём цвет текста - белый
}
if(sel.val==5)//Если выбрано поле 5 (Минута)
{
t5.pco=63488 // Идентификатору поля минуты (t5) задаём цвет текста - красный
}else // Иначе
{
t5.pco=65535 // Идентификатору поля минуты (t5) задаём цвет текста - белый
}
К сожалению, не доступен сервер mySQL