Ola a todos,
Quero receber o nome de identificação que foi configurado em cada terminal, como o componente ACBrMTer não tem uma método para isso tentei usar os métodos EnviarComando/LeResposa para solicitar essa informação de acordo com as instruções do manual do protocolo. Fiz duas tentativas diferentes, em ambas tive problemas, abaixo estão o código fonte e os problemas que encontrei:
Equipamento: Gertec Microterminal MT-720
Protocolo: PMTG
Teste feio com 2 micro terminais conectados a rede.
Em ambas tentativas, tentei enviar o comando 83 (53h) para o terminal e ler a resposta esperada.
Tentativa 1:
Log:
Resultado:
Não funciona. O programa trava na linha rawData := ACBrMTer1.LerResposta(ip, 5000, 28);. Pelo que entendi do código fonte, o próprio ACBrMTer intercepta a resposta e por isso minha rotina não recebe nada.
Tentativa 2: Fiz o código abaixo me baseando no fonte do método TACBrMTer.Online, para tentar ler a resposta do terminal.
Log:
Resultado:
Funciona de forma inconstante. As vezes dá certo, como mostra o log acima, nas duas primeiras linhas "Comando enviado: S", os meus dois terminais responderam como deveriam. Porém quanto executei a rotina novamente, os terminais foram desconectados. Em outros testes que fiz, algumas vezes o programa simplesmente trava e segundo o debugger do Delphi o código fica num loop dentro de "ntdll.RltUserThreadStart", em outras vezes recebo uma Access Violation no arquivo ACBrSocket, linha 522: "fsSock.CloseSocket", em outras vezes recebo a resposta correta do terminal, mas logo em seguida os terminais são desconectados.
Como deve ser o procedimento correto para enviar comandos específicos ao terminal e ler a resposta?
Obrigado,
Marcelo