Page 1 of 1

Executar função

Posted: Tue Aug 30, 2016 8:18 pm
by fdavid
Dentro do HIscada, se tenho um evento vinculado a um script, como posso fazer um script executar outro script com e sem parametro ?

Re: Executar função

Posted: Tue Aug 30, 2016 8:49 pm
by daniel kantor
Boa tarde, David,

No caso, você deverá usar o Scripts.Run(caminho_script,parametros)
o caminho script seria onde ele se encontra no projeto.
ex: caminho_script = Viewers.Scripts.ScriptGroup_001.Script_001'

o parametros seria os parametros que você quer enviar para o script. Eles devem estar em formato de tabela.
São opcionais.
ex: parametros = {primeiro = 1, segundo = 2}

para pegá-los no script chamado, poderia fazer:
param1 = Param['primeiro']
param2 = Param['segundo']

No link abaixo você encontrará a documentação sobre os scripts em scripts.

http://doc.hitecnologia.com.br/hiscada_ ... s_lua.html

Att,
Daniel Kantor

Re: Executar função

Posted: Tue Oct 04, 2016 3:16 pm
by fdavid
Estou tentando passar alguns parametros para uma nova tela da seguinte forma:

Code: Select all

-- Configurar esta variavel
local nome_da_tela = "Adjust"

-- Caminho da definição da tela (Ex: Viewers.Screens.ScreenGroup_001.Screen_001)
local caminho_da_tela = "Viewers.Screens.ScreenGroup.Adjust"

-- Abre a tela especificada
local ret = Screens.Open(nome_da_tela,caminho_da_tela, {parametro = 999})

-- Se falha imprime erro na interface
if (ret ~= 0) then
  MessageBox("Falha na abertura da tela" .. nome_da_tela);
end
local ret = Screens.Open(nome_da_tela,caminho_da_tela, {parametro = 999})
Mas esta dando erro ao criar a tela, algo deve ser criado na tela para que o parametro possa ser passado?

Re: Executar função

Posted: Tue Oct 04, 2016 7:59 pm
by daniel kantor
Boa tarde, David,

A função Screens.Open não consegue receber parâmetros, apenas a Scripts.Run que pode receber parâmetros.
A Screens.Open é usada para abrir telas com ou sem instâncias.
Ela usa os seguintes parâmetros:
Screens.Open{nome_da_tela,caminho_para_a_tela,instâncias_na_tela)
as instâncias devem estar em formato de tabela lua, como, por exemplo {RefModel_001 = 'InstanceGroup.instancia'}

Mais informações sobre gerenciamento de telas você pode encontrar na nossa documentação online:
http://doc.hitecnologia.com.br/hiscada_ ... ight=telas

Caso você queira que uma tela receba um parâmetro assim que abrir, você pode colocar um script no "On Show" ou "On Create" da mesma que chama um Tag com esse valor.
Outro modo de arrumar isso, é, ao abrir a tela, você fazer um scr=Screens.Get(nome_da_tela) (o nome deve ser igual o que você usou ao abrir a tela e atribuir o valor para o local onde deseja no mesmo script.
Ou pode usar um Tag local para guardar o valor e depois aloca-lo onde desejar.

Att,
Daniel Kantor