Страница 1 из 2
Middle-connector
Добавлено: Ср фев 19, 2014 2:14 pm
Alex
Middle-connector это промежуточный слой между объектами М и js. Работает в обе стороны — транслирует текущие значения свойств объектов в js и изменяет значения свойств в М из js. А также вызывает скрипты М из js. Т.е полный фарш.
Позволяет работать с js объектами, processing-программами, 3D canvas и т. д. Т. е. со всем ПО, которое не имеет никакого представления об объектах в М.
Установка
--------------
Создать папку и поместить в неё файлы из архива
…/htdocs/middle
Вызов
---------
object_js = new middle_connector('object_mdm.method_mdm', 'label', 2000, 1);
, где 2000 — обновление раз в 2 секунды, 1 — кол-во знаков после запятой.
Получение значений:
---------------
object_js.value; - числовое значение
object_js.valueStr - строковое
object_js.valupdated; - время
Отправка:
--------
object_js.objectToSend = 'object_mdm'; // метод - 'update', значение - 'v'
object_js.valToSend = 200;
object_js.SendData();
или
object_js.objectToSend = 'object_mdm';
object_js.methodToSend = 'method_mdm';
object_js.valueToSend = 'value_mdm';
object_js.valToSend = 200;
object_js.MultiSendData();
запуск скрипта
object_js.scriptToSend = 'set_color_red';
object_js.SendScript();
Чтобы использовать во вкладках М
----------------------------
В файле
\htdocs\templates\application.html
дописать
<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
Re: Middle-connector
Добавлено: Пт май 30, 2014 7:32 pm
alexg31
Alex, никак не могу запустить код
Код: Выделить всё
<head>
<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
<script type="text/javascript">
temper = new middle_connector('Bedroom_li1.Status', 'bbb1', 2000, 1);
alert (temper.value);
</script>
</head>
по алерту выдает пустое значение.
Re: Middle-connector
Добавлено: Ср июл 23, 2014 3:57 pm
denis
Alex, тоже что-то не совладать с коннекторами.
Есть объект.свойство Window_South.StateText (текст - "Закрыто")
создаю в меню пункт, тип html в него вставляю код
Код: Выделить всё
<head>
<script type="text/javascript">
my_var = new middle_connector('Window_South.StateText', 'bbb1', 2000, 1);
alert (my_var.valueStr);
</script>
</head>
в результате пустое окно alert.
что не так делаю? в application.html нужны строки добавил.
Re: Middle-connector
Добавлено: Чт июл 24, 2014 6:48 am
Alex
Вот пример работающего кода, взятого прямо из системы.
Код: Выделить всё
<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
<script type="text/javascript">
cycle_test_value = new middle_connector('testOnNewMinute.value', '', 9000, 0);
function show9s() {
$("#cycle_value").html(cycle_test_value.valueStr);
}
$(document).ready(function(){
setInterval('show9s()', 9000);
});
</script>
...
<font size="2" color="lightgray" face="Arial"><span id="cycle_value"><b>OK</b></span></font>
Re: Middle-connector
Добавлено: Чт июл 24, 2014 8:12 am
denis
Спасибо! Заработало! (с) )))
Re: Middle-connector
Добавлено: Ср ноя 26, 2014 1:46 pm
PAV
А у меня что-то никак не работает.
Вот так -
Код: Выделить всё
http://127.0.0.1/middle/getdata.php?p=sensorTemp12.temp
Выдает значение.
А вот так нет, если создать файл test.html со следующим содержимым
Код: Выделить всё
<script language="javascript" type="text/javascript" src="/middle/middle_object.js"></script>
<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>
<script type="text/javascript">
my_var = new middle_connector('sensorTemp12.temp', 'bbb1', 2000, 1);
alert (my_var.valueStr);
</script>
Что не так может быть?
Как вообще проверить работоспособность скрипта?
Re: Middle-connector
Добавлено: Сб окт 17, 2015 5:14 pm
nick7zmail
Alex писал(а):
object_js = new middle_connector('object_mdm.method_mdm', 'label', 2000, 1);
Alex, помоги понять работу middle_connector'а.
1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
2) что за параметр "label"? Зачем он? Это имя свойства к которому запрос? Или что?
3) object_mdm.method_mdm - не обязательно метод должен быть? Если я хочу запросить свойство, я могу вызвать obj_mdm.value, при этом при запуске на выполнение
Код: Выделить всё
object_js.objectToSend = 'obj_mdm';
object_js.methodToSend = 'method_mdm';
object_js.MultiSendData();
метод method_mdm все равно отрабатывает. Зачем тогда запись вида object_mdm.method_mdm? В место нее можно использовать просто object_mdm? (не пробовал еще)
Re: Middle-connector
Добавлено: Сб окт 17, 2015 5:38 pm
olehs
PAV писал(а):
Что не так может быть?
Как вообще проверить работоспособность скрипта?
Запросы выполняются асинхронно, потому сразу после создания middle_connector значение не получишь. Между
Код: Выделить всё
my_var = new middle_connector('sensorTemp12.temp', 'bbb1', 2000, 1);
и
нужно сделать задержку или получать значение по какому-то другому событию (как в примере Алекса)
Re: Middle-connector
Добавлено: Сб окт 17, 2015 9:53 pm
Alex
1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
Совершенно верно
2) что за параметр "label"? Зачем он? Это имя свойства к которому запрос? Или что?
Рудимент и никак не используется, если я правильно помню
3) object_mdm.method_mdm - не обязательно метод должен быть? Если я хочу запросить свойство, я могу вызвать obj_mdm.value, при этом при запуске на выполнение
Там два варианта: либо
метод - 'update', значение - 'v'
либо полное описание что и куда посылается
object_js.objectToSend = 'object_mdm';
object_js.methodToSend = 'method_mdm';
object_js.valueToSend = 'value_mdm';
object_js.valToSend = 200;
object_js.MultiSendData();
Re: Middle-connector
Добавлено: Сб окт 17, 2015 10:01 pm
nick7zmail
Alex писал(а):1) 2000-это интервал в 2 сек. Если я выставляю этот параметр, мне далее в скрипте не нужно его снова вызывать, он сам раз в 2 сек будет запрашивать значение?
Совершенно верно
Если скрипт запускается сам, и обновляет свойство сам, зачем тогда кусок кода, который перезаписывает это же свойство еще раз?
Alex писал(а):Вот пример работающего кода, взятого прямо из системы.
Код: Выделить всё
...
function show9s() {
$("#cycle_value").html(cycle_test_value.valueStr);
}
$(document).ready(function(){
setInterval('show9s()', 9000);
});
...