0
Under review
Длительное нажатие кнопки
Здравствуйте.
Необходимо из KNX обрабатывать длительное нажатие входного сигнала морганием кнопки.
Как я понимаю, через IR.EVENT_TAG_CHANGE можно отследить нужный Feedback. (в теле обработчика сравнивать name c нужным названием feedback).
А как отследить длительное нажатие (более 1 минуты, например) и отображать в интерфейсе при этом моргание кнопки (изменение цвета фона раз в секунду, например)?
Customer support service by UserEcho
Добрый день.
Используйте для нужной кнопки события EVENT_ITEM_PRESS и EVENT_ITEM_RELEASE. В каждом из них получайте текущее время и если разница между событиями 1 минута или более, то вызывайте нужную функцию. В функции можете отправлять команду, изменять состояние графического элемента и т. д.
Есть еще вариант
В прессе создаешь таймер на минуту, через минуту он начнет работать
В релизе его удаляешь
По идее, если нажатие меньше минуты, он не успеет сработать и будет удален
Вариант с получением времени по нажатию и отпусканию кнопки (в примере 8 секунд).
hold_timer.irpz
Спасибо за идею и за код!
А если мне надо анализировать состояние сигналов с KNX (например, два бинарных сигнала signal1 и signal2) и дальше делать действия в зависимости от их состояния, это должно выглядеть как-то так?
IR.AddListener(IR.EVENT_TAG_CHANGE, IR.GetDevice ("iRidium Server"), function (name, value)
{
sig1 = IR.GetDevice ("iRidium Server").GetFeedback("signal1");
sig2 = IR.GetDevice ("iRidium Server").GetFeedback("signal2");
if (sig1 ==1 && sig2 ==1) {
....
}
}
Добрый день.
Верно, нужно использовать EVENT_TAG_CHANGE. Условие имеет смысл написать так:
if ((sig1 ==1) && (sig2 ==1))
{
// какое-то действие
}