Tenho um script em XControl no evento Custom Config que configura varias tags de comunicação para diferentes drivers. Para facilitar a manutenção deste script, gostaria de dividi-lo em vários scripts. O script do evento Custom Config busca no banco de dados as configurações das tags, para cada driver identificado um script seria chamado. Por exemplo, para o driver Modbus, seria chamado o script que faz as configurações das tags desse driver. O script chamado receberia como parâmetros os nomes das tags, o scan, o endereço do registrador, o ID do equipamento e o código da operação. É possível fazer isso no Elipse E3?
Script que chama outro script
Pesquisei sobre uma forma de incluir uma Função a um xc/xo porém não encontrei.
Uma forma de fazer algo próximo disso seria você criar uma ou mais propriedades do tipo Boolean
inicializada em False
com um script no OnPropertyChange
destes.
No CustomConfig
você escreve True
neste Boolean
que escreve False
em si mesmo e então executa o script, e.g.:
Propriedades do XO/XC
Nome | Tipo | Valor inicial |
---|---|---|
GetModbusDrivers |
Boolean |
False |
FormatString |
Boolean |
False |
Param |
String |
Empty |
Return |
String |
Empty |
Scripts
Sub xo_CustomConfig()
Dim strPrompt
strPrompt = "Escolha uma das opções abaixo:" & vbNewLine & _
vbNewLine & _
vbTab & "0 - Lista ModBus." & vbNewLine & _
vbTab & "1 - Formata string."
Select Case InputBox( strPrompt, , 0)
Case 0
GetModbusDrivers = True
Case 1
Param = "Hello_World" ' Define parametro. '
FormatString = True ' Chama "Função". '
MsgBox Return ' Imprime retorno. '
Case Else
''' TODO '''
End Select
End Sub
Sub xo_OnGetModbusDriversChanged()
If ( Not GetModbusDrivers ) Then Exit Sub
GetModbusDrivers = False
Dim driver
Dim drivers
Set drivers = Application.ListFiles( "IODriver" )
For Each driver In drivers
' Do stuffs... '
Next
End Sub
Sub xo_OnFormatStringChanged()
If ( Not FormatString ) Then Exit Sub
FormatString = False
' Do stuffs... '
Return = Replace(Param, "_", "")
End Sub
Bom dia Luciana.
Existe uma forma de criar funções no Elipse E3 dentro de um script, como descrito no artigo KB-30665: Trabalhando com funções em scripts no E3.
É muito útil se você for realizar várias vezes a mesma função num script específico.
Você vai perceber que não consegue excluir o “End Sub” no final do script “CustomConfig”, então você criar uma outra sub no final para não ter erro de sintaxe.
Exemplo:
Script Original:
Sub xControl1_CustomConfig()
...
End Sub <- Não consegue excluir
Script Acrescentando Função:
Sub xControl1_CustomConfig()
...
End Sub
Function fTeste(param1, param2, param3)
End Function
Sub Vazia()
End Sub <-- Não consegue excluir