Executar função

Post Reply
fdavid
Posts: 31
Joined: Tue Jul 19, 2016 1:40 pm

Executar função

Post 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 ?
daniel kantor
Posts: 28
Joined: Fri Feb 19, 2016 6:12 pm

Re: Executar função

Post 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
fdavid
Posts: 31
Joined: Tue Jul 19, 2016 1:40 pm

Re: Executar função

Post 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?
daniel kantor
Posts: 28
Joined: Fri Feb 19, 2016 6:12 pm

Re: Executar função

Post 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
Post Reply