Страница 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); 
и

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

alert (my_var.valueStr); 
нужно сделать задержку или получать значение по какому-то другому событию (как в примере Алекса)

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);
});
...