Executar função
Executar função
Dentro do HIscada, se tenho um evento vinculado a um script, como posso fazer um script executar outro script com e sem parametro ?
-
- Posts: 28
- Joined: Fri Feb 19, 2016 6:12 pm
Re: Executar função
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
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
Estou tentando passar alguns parametros para uma nova tela da seguinte forma:
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?
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
Mas esta dando erro ao criar a tela, algo deve ser criado na tela para que o parametro possa ser passado?
-
- Posts: 28
- Joined: Fri Feb 19, 2016 6:12 pm
Re: Executar função
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
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