Страница 1 из 2
Как передать параметр?
Добавлено: Вс окт 08, 2017 1:29 pm
Alex
Как передать параметр при вызове метода из кода. Например, в метод VolumeLevelChanged нужно передать значение громкости. Я вызываю так
Код: Выделить всё
callMethod('ThisComputer.VolumeLevelChanged');
Но как передать значение?
Re: Как передать параметр?
Добавлено: Вс окт 08, 2017 2:27 pm
Alex
Проблема решена
Код: Выделить всё
callMethod('ThisComputer.VolumeLevelChanged', array('VALUE'=>'0'));
Зато появилась другая. Что понимается под «code»?
Вышеприведённая строчка намертво вешает звуковое сопровождение. И восстанавливается речь только после шаманства и перезагрузок.
Что туда подразумевается вставлять и чем вышеприведённая строчка — не код?
Re: Как передать параметр?
Добавлено: Вс окт 08, 2017 3:41 pm
nick7zmail
Туда надо писать код, на сколько я помню...вышеприведенная строка код, почему вешает - надо логи смотреть.
Попробуй что нить простенькое типа
Это не вешает систему?
Re: Как передать параметр?
Добавлено: Вс окт 08, 2017 5:58 pm
Alex
Это не вешает систему?
Вешает точно так же.
надо логи смотреть
Это те, которые debmes?
Кстати, выставил уровень 9, но баллоны упорно продолжают жить своей жизнью. Без какой-либо системы то появляются, то не появляются.
Re: Как передать параметр?
Добавлено: Вс окт 08, 2017 6:55 pm
nick7zmail
Хм...ну это уже к Сергею наверное...Вроде раньше работали обработчики....потом ими не пользовался.
Re: Как передать параметр?
Добавлено: Пн окт 09, 2017 10:08 am
skysilver
У меня в Before SAY (code) указан вызов сценария, который включает колонки,
Код: Выделить всё
runScript('myBeforeSayScript', array('ph'=>$ph,'level'=>$level));
с таким кодом
Код: Выделить всё
$ph = $params['ph'];
$level = $params['level'];
// Если фраза не пустая, или если уровень произношения фразы больше глобального уровня,
// то выполняем нужные действия
if ($level >= gg('minMsgLevel')) {
// Если колонки уже включены, то просто проговорим фразу и не будем ставит таймер выключения,
// т.к. возможно они включены для музыки или радио.
// Если колонки не включены, то включим и поставим таймер выключения.
if ( !gg('Relay3MegaD1.status') ) {
cm('Relay3MegaD1.turnOn');
clearTimeOut('afterSayTimer');
clearTimeOut('afterPlayTimer');
setTimeOut('afterSayTimer', 'cm("Relay3MegaD1.turnOff");', 180);
} else { return; }
} else { return; }
Работает четко, проблем не замечал. Видимо, у вас какой-то частный случай.
Re: Как передать параметр?
Добавлено: Пн окт 09, 2017 11:40 am
Alex
Ещё один актуальный вопрос: конструкция
прекрасно отлавливает цифровые значения, но не ловит текстовые. Что нужно сделать, чтобы можно было ловить текстовые значения?
И как, собственно, передавать М строковые значения в GET запросах?
Re: Как передать параметр?
Добавлено: Пн окт 09, 2017 11:45 am
nick7zmail
Что имеется ввиду под "ловить"?
Ибо конструкции
Код: Выделить всё
callMethod('Obj.prop', array('VALUE'=>'0', 'VALUE2'=>'any text', 'VALUE3'=>'any text and # 0 1 2 3'));
У меня передавались в метод отлично.
Соответственно их поймать в методе надо, как
Re: Как передать параметр?
Добавлено: Пн окт 09, 2017 12:05 pm
Alex
Кажется я понял, если в GET запросе попадается пробел, то система не воспринимает это нормально
Код: Выделить всё
GET /objects/?object=object&op=m&m=update&v=1&mac=00 2A F5 12 67 60&prop=0
Верно?
В данном случае mac у неё равен 00, а остальное она глотает. Тогда вопрос: как передавать подобные значения? Шифровать на одном конце и расшифровывать в М? Или есть более простые средства?
Re: Как передать параметр?
Добавлено: Пн окт 09, 2017 1:41 pm
skysilver
Alex писал(а):Тогда вопрос: как передавать подобные значения? Шифровать на одном конце и расшифровывать в М? Или есть более простые средства?
На отправляющей стороне делать urlencode(), а на принимающей (в МajorDoMo) urledecode():