Anton_V писал(а): Ср апр 24, 2019 4:20 pm
... кто как лечил это?
Лично я никак не лечил. В списке выбора long_press отсутствует. Заходишь на вкладку "Данные", там по несколько экземпляров одного и того же порта. Причем иногда в списке портов присутствует тип с long_press. Удаляешь его, а потом после непонятно каких манипуляций он опять появляется.
Только толку "0", поскольку к объекту привязать все равно нельзя.
Так что пока кодом, кодом...
Проще всего, я думаю, самостоятельно делать разную реакцию на разные типы нажатия, используя возможности контроллера (режим Click Mode).
Anton_V писал(а): Ср апр 24, 2019 4:20 pm
... кто как лечил это?
Лично я никак не лечил. В списке выбора long_press отсутствует. Заходишь на вкладку "Данные", там по несколько экземпляров одного и того же порта. Причем иногда в списке портов присутствует тип с long_press. Удаляешь его, а потом после непонятно каких манипуляций он опять появляется.
Только толку "0", поскольку к объекту привязать все равно нельзя.
Так что пока кодом, кодом...
Проще всего, я думаю, самостоятельно делать разную реакцию на разные типы нажатия, используя возможности контроллера (режим Click Mode).
в том то и дело, что до обновления делал программно, ловил появление параметра m=2 (вроде так) писал где-то год назад. и черт дернул меня вчера обновить модуль на рабочей системе. сейчас вот думаю как исправлять. про всякие мелочи типа термодатчиков я вообще молчу. они хоть и работают, но все равно пришлось цифровые порты переконфигурировать на всех мегах. печаль.
А long_press появляется после длительного нажатия.
Так что думаю ждем нового обновления модуля от сергея.
Еще бы было бы не плохо ввести параметр который тупо передает в скрипт/метод/свойство то что пришло с меги по этому порту. тогда уже можно самому разбирать ответы в коде.
Anton_V писал(а): Ср апр 24, 2019 5:45 pm
Еще бы было бы не плохо ввести параметр который тупо передает в скрипт/метод/свойство то что пришло с меги по этому порту. тогда уже можно самому разбирать ответы в коде.
Так в режиме порта Click Mode и так все передается. Как говорится, берите и пользуйтесь:
if ( $_GET['click'] == "1" ) {
//Произошло одинарное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['click'] == "2" ) {
//Произошло двойное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['m'] == "2" ) {
//Произошло длительное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['m'] == "1" ) {
//Произошло отпускание клавиши после длительного нажатия
ДЕЙСТВИЯ
}
Единственное, надо проверить, отлавливается ли параметр "click" новым модулем.
Да и в режимах P и P&R тоже параметр "m" передается и модулем отлавливается.
Anton_V писал(а): Ср апр 24, 2019 5:45 pm
Еще бы было бы не плохо ввести параметр который тупо передает в скрипт/метод/свойство то что пришло с меги по этому порту. тогда уже можно самому разбирать ответы в коде.
Так в режиме порта Click Mode и так все передается. Как говорится, берите и пользуйтесь:
if ( $_GET['click'] == "1" ) {
//Произошло одинарное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['click'] == "2" ) {
//Произошло двойное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['m'] == "2" ) {
//Произошло длительное нажатие
ДЕЙСТВИЯ
}
if ( $_GET['m'] == "1" ) {
//Произошло отпускание клавиши после длительного нажатия
ДЕЙСТВИЯ
}
Единственное, надо проверить, отлавливается ли параметр "click" новым модулем.
Да и в режимах P и P&R тоже параметр "m" передается и модулем отлавливается.
похоже что нет (пока не разбирался), по крайней мере у меня не завелось на старом коде. было так
$click=$params['click'];
$m=$params['m'];
if ($m == '2') { //Длинное нажатие
$this->callMethod('LongPress');
}
if ($click == 1) { //одинарное нажатие
$this->callMethod('Swich');
}
if ($click == 2){ //Двойное нажатие
$this->callMethod('DoublePress');
}
модуль не передает в параметрах ни "click" ни "m=". печаль. пока вижу только 1 способ сделать долгое нажатие. это посредствам самой меги.
Последний раз редактировалось Anton_V Ср апр 24, 2019 8:43 pm, всего редактировалось 1 раз.
не заработает. в самих параметрах значения переменных m=null
{" TITLE" :null," VALUE" :0," value" :0," port" :" 2" ," m" :null, " ORIGINAL_OBJECT_TITLE" :" " }
а двойной клин и обычный клик на данный момент работают. собственно и длинное нажатие система воспринимает, единственное к нему не получается привязать объект.
Так используйте в настройках в модуле MegaD ТИП "counter". В самой Меге -- "Click Mode".
И в коде уже разбирать "что это было". Ну, собственно, как у вас (или в моем приведенном выше примере).
Chainik писал(а): Ср апр 24, 2019 9:07 pm
Так используйте в настройках в модуле MegaD ТИП "counter". В самой Меге -- "Click Mode".
И в коде уже разбирать "что это было". Ну, собственно, как у вас (или в моем приведенном выше примере).
ТИП "counter" всего навсего показывает количество нажатий, а считать количество нажатий за определенный период времени не правильно и муторно. когда данная функция уже реализована аппаратно на меге. на мой взгляд просто сергей забыл прописоть в коде заполнения списка "тип" еще одну строку "Длительное нажатие". так как в классе обработчик длительного нажатия есть. к сожалению с веб программирование знаком постольку поскольку, разобраться сам не могу собственно по этому я еще и думаю неплохо бы создать тип в котором пересылались бы все параметры с меги. а дальше уже сам их разбираешь.
надеюсь что может в скором времени исправит данную ошибку.
Anton_V писал(а): Ср апр 24, 2019 9:20 pm
ТИП "counter" всего навсего показывает количество нажатий, а считать количество нажатий за определенный период времени не правильно и муторно. когда данная функция уже реализована аппаратно на меге....
Да не важно что там показывается в модуле. Когда я выставлял ТИП "IN", у меня вообще ничего не работало. А вот при ТИПе "counter", все работает без проблем. И параметр "m" отлавливается.
А вот про "click" не знаю, работает или нет (в т.ч. после добавления предложенной мной строчки). Сейчас проверить не могу, т.к. далеко от оборудования.