<< Click to Display Table of Contents >> Navigation: Multi-Protocol MasterOPC Server > Руководство по языку Lua 5.1 > Библиотеки функций > Библиотека SERVER > Вызов внешних функций |
server.RunFunctionFromDeviceByName
server.RunFunctionFromNodeByName
server.RunFunctionFromSubDevice
server.RunFunctionFromSubDeviceByName
Если необходимо вызвать функцию расположенную в текущем скрипте используется стандартных механизм Lua - см. раздел Вызовы функций и Объявление функций. В случае, если функции находятся в другом скрипте (в скрипте другого узла, устройства, подустройства), то вызов функции производится через дополнительную функцию, в которой и производится адресация к скрипту конкретного элемента конфигурации.
Из скрипта тега можно вызывать функции, определенные в подустройстве, устройстве и узле.
Из скрипта подустройства можно вызывать функции, определенные в устройстве и узле.
Из скрипта устройства можно вызывать функции, определенные в узле.
Вызов внешней функции с передачей таблицы возможен только следующим образом: с помощью функции server.TableToString таблица предварительно преобразуется в строку специального формата, и эта строка передается во внешнюю функцию, где выполняется обратное преобразование с помощью функции server.StringToTable .
Выполняет функцию, определенную в текущем устройстве.
Входные параметры: имя функции, число возвращаемых параметров, аргументы.
Пример
res = server.RunFunctionFromDevice("Fun",1,1,"t",true);
--В устройстве определяется функция
function Fun(n,t,b)
return "ok"
end
server.RunFunctionFromDeviceByName
Выполняет функцию, определенную в произвольном устройстве.
Входные параметры: полное имя устройства, имя функции, число возвращаемых параметров, аргументы.
Пример
res = server.RunFunctionFromDeviceByName("Узел2.Устройство2","Fun",1,1,"t",true);
--В устройстве определяется функция
function Fun(n,t,b)
return "ok"
end
Выполняет функцию, определенную в текущем узле.
Входные параметры: имя функции, число возвращаемых параметров, аргументы.
Пример
res = server.RunFunctionFromNode("Fun",1,1,"t",true);
--В узле определяется функция
function Fun(n,t,b)
return "ok"
end
server.RunFunctionFromNodeByName
Выполняет функцию, определенную в произвольном узле.
Входные параметры: имя узла, имя функции, число возвращаемых параметров, аргументы.
Пример
res = server.RunFunctionFromNodeByName("Узел1","Fun",1,1,"t",true);
--В узле определяется функция
function Fun(n,t,b)
return "ok"
end
server.RunFunctionFromSubDevice
Выполняет функцию, определенную в текущем подустройстве.
Входные параметры – имя функции, число возвращаемых параметров, аргументы.
Пример
res = server.RunFunctionFromSubDevice("Fun",1,1,"t",true);
--В подустройстве определяется функция
function Fun(n,t,b)
return "ok"
end
server.RunFunctionFromSubDeviceByName
Выполняет функцию, определенную в произвольном подустройстве.
Входные параметры: полное имя подустройства, имя функции, число возвращаемых параметров, аргументы.
Пример
res=server.RunFunctionFromSubDeviceByName("Узел3.Устройство2.Подустройство1","Fun",1,1,"t",true);
--В подустройстве определяется функция
function Fun(n,t,b)
return "ok"
end
Функция возвращает результат преобразования строки специального формата в таблицу (см. server.TableToString ).
Пример
function CRCsum(SFrame)
buf={}; --создание переменной-таблицы
buf=server.StringToTable(SFrame); --преобразование полученной строки в таблицу
-- если принята строка s, полученная в примере к функции
-- server.TableToString, то buf={10,20,30,40}
end
Функция возвращает результат преобразования таблицы в строку специального формата. Данная функция используется для передачи таблиц при вызове внешних функций (функций, находящихся в узлах, устройствах, подустройствах). Для обратного преобразования во внешней функции используется функция server.StringToTable .
Пример
buf={10,20,30,40}; --создание переменной-таблицы и заполнение данными
s = server.TableToString(buf); --преобразование таблицы в строку
--вызов внешней функции и передача строки как аргумента:
CRC=server.RunFunctionFromDevice("CRCsum",1,s);
--В вызываемой функции нужно сделать обратное преобразование