Post by Killin » 03 Dec 2023, 11:01
Olá.
Trabalho operando um terminal IBM e escrevi alguns scripts para automatizar algumas tarefas. E para evitar erro na execução dos scripts, que ocorre quando a tela seguinte não é carregada, e também para não demorar tanto na execução dos scripts, eu tenho utilizado a seguinte estratégia. Eu criei uma função dentro do script que copia todo o conteúdo da tela e procura por alguma expressão que deveria aparecer na tela (previamente definida), caso não encontre, a função espera um certo tempo, e verifica novamente, caso encontre a expressão, o script continua sua execução. Ou seja, se o sistema estiver "rápido" o script é executado rapidamente, se o sistema estive "lento", o script aguarda a resposta do sistema, para, então, ser executado. E isso evita erros de o script ser executado antes da resposta do sistema.
Segue abaixo um exemplo dessa função:
Code: Select all
funcaoCODIGO13E() ;função a ser utilizada no script onde é verificada a ocorrência da palavra "CODIGO13E" no corpo do texto copiado da tela do terminal
{
Ocorreuoevento := false
Tick := A_TickCount
while (Ocorreuoevento = false)
{
if ((A_TickCount - Tick) > 10000)
{
msgbox, 0x10, Erro, Tente novamente mais tarde.
Reload
}
Sleep 50
Send, {esc 2}
Send,^a
sleep, 150
Send,^c
Send, {esc 2}
Sleep, 150
ClipWait,2
theData = %clipboard%
Palavracomparar := theData
Necessario := "CODIGO01"
IfInString, Palavracomparar, %Necessario%
{
Ocorreuoevento:= true
sleep,150
}
Sleep, 150
}
}
[Mod edit: + [code][/code] tags.]
Porém, eu me deparei com um problema que eu não estou conseguindo contornar. A ação de um dos scripts dependerá do que aparecer na tela seguinte. Por exemplo, na tela poderá aparecer somente o "código01", ou o "código01" mais o "código02", ou o "código01" mais o "código03". Se aparecer somente "código01", o script deveria executar a "ação01", se aparecerem o "código01" mais o "código02", o script deveria executar a "ação02", e se aparecerem o "código01" mais o "código03", executar a "ação03". Mas eu não estou sabendo fazer para identificar quando aparece, somente o código01, o código01+código02, ou o código01+código03.
Alguém poderia me ajudar?
Olá.
Trabalho operando um terminal IBM e escrevi alguns scripts para automatizar algumas tarefas. E para evitar erro na execução dos scripts, que ocorre quando a tela seguinte não é carregada, e também para não demorar tanto na execução dos scripts, eu tenho utilizado a seguinte estratégia. Eu criei uma função dentro do script que copia todo o conteúdo da tela e procura por alguma expressão que deveria aparecer na tela (previamente definida), caso não encontre, a função espera um certo tempo, e verifica novamente, caso encontre a expressão, o script continua sua execução. Ou seja, se o sistema estiver "rápido" o script é executado rapidamente, se o sistema estive "lento", o script aguarda a resposta do sistema, para, então, ser executado. E isso evita erros de o script ser executado antes da resposta do sistema.
Segue abaixo um exemplo dessa função:
[code] funcaoCODIGO13E() ;função a ser utilizada no script onde é verificada a ocorrência da palavra "CODIGO13E" no corpo do texto copiado da tela do terminal
{
Ocorreuoevento := false
Tick := A_TickCount
while (Ocorreuoevento = false)
{
if ((A_TickCount - Tick) > 10000)
{
msgbox, 0x10, Erro, Tente novamente mais tarde.
Reload
}
Sleep 50
Send, {esc 2}
Send,^a
sleep, 150
Send,^c
Send, {esc 2}
Sleep, 150
ClipWait,2
theData = %clipboard%
Palavracomparar := theData
Necessario := "CODIGO01"
IfInString, Palavracomparar, %Necessario%
{
Ocorreuoevento:= true
sleep,150
}
Sleep, 150
}
}
[/code]
[color=#FF0040][size=75][Mod edit: + [kbd][code][/code][/kbd] tags.][/size][/color]
[u]Porém, eu me deparei com um problema que eu não estou conseguindo contornar[/u]. A ação de um dos scripts dependerá do que aparecer na tela seguinte. Por exemplo, na tela poderá aparecer somente o "código01", ou o "código01" mais o "código02", ou o "código01" mais o "código03". Se aparecer somente "código01", o script deveria executar a "ação01", se aparecerem o "código01" mais o "código02", o script deveria executar a "ação02", e se aparecerem o "código01" mais o "código03", executar a "ação03". Mas eu não estou sabendo fazer para identificar quando aparece, somente o código01, o código01+código02, ou o código01+código03.
Alguém poderia me ajudar?