Здравствуйте.
Имеем Wirenboard5 и модуль WB-MR14.
К модулю WB-MR14 подключены звонковые кнопки (без фиксации).
На нажатие кнопки реле на WB-MR14 срабатывает исправно.
Однако, в правиле нажатие кнопки короче примерно 1 секунды (короткое нажатие) не ловится.
Длинное нажатие кнопки ловится исправно.
Вот лог нажатий кнопки, видны только длинные нажатия. Причем при длинных нажатиях ловятся как факт нажатия, так и факт отпускание кнопки:
Включить отладку
2019-12-12 23:02:08Button is press. Value= true (это нажатие)
2019-12-12 23:02:08nopressbutton_flag: 0
2019-12-12 23:02:15Button is press. Value= false (это отпускание)
2019-12-12 23:02:15nopressbutton_flag: 0
2019-12-12 23:02:35Button is press. Value= true (это нажатие)
2019-12-12 23:02:35nopressbutton_flag: 0
2019-12-12 23:02:42Button is press. Value= false (это отпускание и т.д.)
2019-12-12 23:02:42nopressbutton_flag: 0
2019-12-12 23:03:12Снять блокировку после нажатия кнопки: 1
2019-12-12 23:04:42Button is press. Value= true
2019-12-12 23:04:42nopressbutton_flag: 0
2019-12-12 23:04:47Button is press. Value= false
2019-12-12 23:04:47nopressbutton_flag: 0
2019-12-12 23:05:13Button is press. Value= true
2019-12-12 23:05:13nopressbutton_flag: 0
2019-12-12 23:05:17Button is press. Value= false
2019-12-12 23:05:17nopressbutton_flag: 0
Режим работы шины 485 в приложенном файле.
Кусок правила на сработку кнопки:
defineRule(“pressbutton_detector_1”, {//определение принудительного выключения света в коридоре, при уходе
whenChanged: “wb-mr14_21/Input 1”, //если нажата кнопка при входе (не важно, на включение или нет, просто факт нажатия)
then: function (newValue) {
nopressbutton_flag = 0;
log ("Button is press. ",“Value=”,newValue);
log ("nopressbutton_flag: ",nopressbutton_flag);
if (pressbutton_timer_1_id) {
clearTimeout(pressbutton_timer_1_id);
}
pressbutton_timer_1_id = setTimeout(clear_button_timer, pressbutton_timer_1_timeout_ms);
}
});
Вопрос. Как ловить короткое нажатие кнопки?
Благодарю.
Андрей