[Модуль] MegaD (megad)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Ср апр 24, 2019 4:32 pm

Anton_V писал(а):
Ср апр 24, 2019 4:20 pm
... кто как лечил это?
Лично я никак не лечил. В списке выбора long_press отсутствует. Заходишь на вкладку "Данные", там по несколько экземпляров одного и того же порта. Причем иногда в списке портов присутствует тип с long_press. Удаляешь его, а потом после непонятно каких манипуляций он опять появляется.
Только толку "0", поскольку к объекту привязать все равно нельзя.

Так что пока кодом, кодом...
Проще всего, я думаю, самостоятельно делать разную реакцию на разные типы нажатия, используя возможности контроллера (режим Click Mode).
Anton_V
Сообщения: 27
Зарегистрирован: Пн апр 30, 2018 10:15 pm
Откуда: Уфа
Благодарил (а): 7 раз
Поблагодарили: 5 раз

Re: [Модуль] MegaD (megad)

Сообщение Anton_V » Ср апр 24, 2019 5:26 pm

Chainik писал(а):
Ср апр 24, 2019 4:32 pm
Anton_V писал(а):
Ср апр 24, 2019 4:20 pm
... кто как лечил это?
Лично я никак не лечил. В списке выбора long_press отсутствует. Заходишь на вкладку "Данные", там по несколько экземпляров одного и того же порта. Причем иногда в списке портов присутствует тип с long_press. Удаляешь его, а потом после непонятно каких манипуляций он опять появляется.
Только толку "0", поскольку к объекту привязать все равно нельзя.

Так что пока кодом, кодом...
Проще всего, я думаю, самостоятельно делать разную реакцию на разные типы нажатия, используя возможности контроллера (режим Click Mode).
в том то и дело, что до обновления делал программно, ловил появление параметра m=2 (вроде так) писал где-то год назад. и черт дернул меня вчера обновить модуль на рабочей системе. сейчас вот думаю как исправлять. про всякие мелочи типа термодатчиков я вообще молчу. они хоть и работают, но все равно пришлось цифровые порты переконфигурировать на всех мегах. печаль.
А long_press появляется после длительного нажатия.

Так что думаю ждем нового обновления модуля от сергея.
Anton_V
Сообщения: 27
Зарегистрирован: Пн апр 30, 2018 10:15 pm
Откуда: Уфа
Благодарил (а): 7 раз
Поблагодарили: 5 раз

Re: [Модуль] MegaD (megad)

Сообщение Anton_V » Ср апр 24, 2019 5:45 pm

Еще бы было бы не плохо ввести параметр который тупо передает в скрипт/метод/свойство то что пришло с меги по этому порту. тогда уже можно самому разбирать ответы в коде.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Ср апр 24, 2019 5:54 pm

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
Сообщения: 27
Зарегистрирован: Пн апр 30, 2018 10:15 pm
Откуда: Уфа
Благодарил (а): 7 раз
Поблагодарили: 5 раз

Re: [Модуль] MegaD (megad)

Сообщение Anton_V » Ср апр 24, 2019 8:07 pm

Chainik писал(а):
Ср апр 24, 2019 5:54 pm
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 раз.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Ср апр 24, 2019 8:30 pm

Anton_V писал(а):
Ср апр 24, 2019 8:07 pm
похоже что нет (пока не разбирался), по крайней мере у меня не завелось на старом коде. было так
...
За результат не ручаюсь, но можно попробовать сделать так.
В файле megad.class.php
в блоке

Код: Выделить всё

        if ($force || $prop['LINKED_OBJECT'] && $prop['LINKED_METHOD'] && ($old_value != $prop['CURRENT_VALUE_STRING'])) {
            $params = array();
            $params['TITLE'] = $record['TITLE'];
            $params['VALUE'] = $prop['CURRENT_VALUE_STRING'];
            $params['value'] = $prop['CURRENT_VALUE_STRING'];
            $params['port'] = $prop['NUM'];
            $params['m'] = $m;
            callMethod($prop['LINKED_OBJECT'] . '.' . $prop['LINKED_METHOD'], $params);
после строчки

Код: Выделить всё

            $params['m'] = $m;
можно попробовать добавить строку

Код: Выделить всё

            $params['click'] = $click;
Возможно, после этого ваш код заработает.
Anton_V
Сообщения: 27
Зарегистрирован: Пн апр 30, 2018 10:15 pm
Откуда: Уфа
Благодарил (а): 7 раз
Поблагодарили: 5 раз

Re: [Модуль] MegaD (megad)

Сообщение Anton_V » Ср апр 24, 2019 8:54 pm

Chainik писал(а):
Ср апр 24, 2019 8:30 pm
Anton_V писал(а):
Ср апр 24, 2019 8:07 pm
похоже что нет (пока не разбирался), по крайней мере у меня не завелось на старом коде. было так
...
За результат не ручаюсь, но можно попробовать сделать так.
В файле megad.class.php
в блоке

Код: Выделить всё

        if ($force || $prop['LINKED_OBJECT'] && $prop['LINKED_METHOD'] && ($old_value != $prop['CURRENT_VALUE_STRING'])) {
            $params = array();
            $params['TITLE'] = $record['TITLE'];
            $params['VALUE'] = $prop['CURRENT_VALUE_STRING'];
            $params['value'] = $prop['CURRENT_VALUE_STRING'];
            $params['port'] = $prop['NUM'];
            $params['m'] = $m;
            callMethod($prop['LINKED_OBJECT'] . '.' . $prop['LINKED_METHOD'], $params);
после строчки

Код: Выделить всё

            $params['m'] = $m;
можно попробовать добавить строку

Код: Выделить всё

            $params['click'] = $click;
Возможно, после этого ваш код заработает.
не заработает. в самих параметрах значения переменных m=null
{" TITLE" :null," VALUE" :0," value" :0," port" :" 2" ," m" :null, " ORIGINAL_OBJECT_TITLE" :" " }
а двойной клин и обычный клик на данный момент работают. собственно и длинное нажатие система воспринимает, единственное к нему не получается привязать объект.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Ср апр 24, 2019 9:07 pm

Так используйте в настройках в модуле MegaD ТИП "counter". В самой Меге -- "Click Mode".
И в коде уже разбирать "что это было". Ну, собственно, как у вас (или в моем приведенном выше примере).
Anton_V
Сообщения: 27
Зарегистрирован: Пн апр 30, 2018 10:15 pm
Откуда: Уфа
Благодарил (а): 7 раз
Поблагодарили: 5 раз

Re: [Модуль] MegaD (megad)

Сообщение Anton_V » Ср апр 24, 2019 9:20 pm

Chainik писал(а):
Ср апр 24, 2019 9:07 pm
Так используйте в настройках в модуле MegaD ТИП "counter". В самой Меге -- "Click Mode".
И в коде уже разбирать "что это было". Ну, собственно, как у вас (или в моем приведенном выше примере).
ТИП "counter" всего навсего показывает количество нажатий, а считать количество нажатий за определенный период времени не правильно и муторно. когда данная функция уже реализована аппаратно на меге. на мой взгляд просто сергей забыл прописоть в коде заполнения списка "тип" еще одну строку "Длительное нажатие". так как в классе обработчик длительного нажатия есть. к сожалению с веб программирование знаком постольку поскольку, разобраться сам не могу :cry: собственно по этому я еще и думаю неплохо бы создать тип в котором пересылались бы все параметры с меги. а дальше уже сам их разбираешь.

надеюсь что может в скором времени исправит данную ошибку.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Модуль] MegaD (megad)

Сообщение Chainik » Ср апр 24, 2019 9:38 pm

Anton_V писал(а):
Ср апр 24, 2019 9:20 pm
ТИП "counter" всего навсего показывает количество нажатий, а считать количество нажатий за определенный период времени не правильно и муторно. когда данная функция уже реализована аппаратно на меге....
Да не важно что там показывается в модуле. Когда я выставлял ТИП "IN", у меня вообще ничего не работало. А вот при ТИПе "counter", все работает без проблем. И параметр "m" отлавливается.
А вот про "click" не знаю, работает или нет (в т.ч. после добавления предложенной мной строчки). Сейчас проверить не могу, т.к. далеко от оборудования.
Ответить