Usuários SAC sinval.gedolin 5 Posted July 28, 2020 Usuários SAC Report Share Posted July 28, 2020 Caros amigos, este é um trecho de meu programa ADVPL, ele está conectando, porem envio umcomando ao monitor e não recebo nada. será que estou enviando o comando correto/ Na variável cSEND eu coloco a String que queri enviar por Socks ao endereço e porta conectado. me ajudem com a sintaxe correta do comando sock do AcBr porfavor. For nX := 1 to 3 nResp := oObj:Connect( nPort,nIp,10 ) // ------------------------------- // Se conectou abandona o FOR // ------------------------------- If(nResp == 0 ) Exit Else conout("--> Tentativa de Conexão ACBr: " + StrZero(nX,3)) Sleep(2000) EndIf Next If( !oObj:IsConnected() ) conout("********* Não foi possível estabelecer conexão com o ACBr. *********") Return(.F.) Else conout("****************** ACBr CONECTADO! ************************") Sleep(2000) cSend := 'NFe.DistribuicaoDFeporUltNSU("52","37247772000132","0")' nResp := oObj:Send( cSend ) oObj:CloseConnection() EndIf Link to post Share on other sites
Juliana Tamizou 4,230 Posted July 28, 2020 Report Share Posted July 28, 2020 Boa tarde. Por favor anexe o log do ACBrMonitorPlus para que possamos analisar melhor. Att. Juliana Tamizou Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Juliana Tamizou 4,230 Posted July 28, 2020 Report Share Posted July 28, 2020 Tópico movido para a área do SAC, para que o SLA de respostas seja considerado Juliana Tamizou Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Rafael Dias 1,215 Posted July 28, 2020 Report Share Posted July 28, 2020 falto os caracteres de finalização no final do comando coloque "\r\n.\r\n" 1 Rafael Dias Ajude o Projeto ACBr crescer - Assine o SAC Desenvolvedor ACBrLib. Link to post Share on other sites
José M. S. Junior 3,054 Posted July 28, 2020 Report Share Posted July 28, 2020 Todo método via Socket precisa utilizar um terminador: https://acbr.sourceforge.io/ACBrMonitor/Apresentacao.html José Junior Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
Usuários SAC sinval.gedolin 5 Posted July 28, 2020 Author Usuários SAC Report Share Posted July 28, 2020 Rafaael, eu coloco em ANSI mesmo ou em ASCII acha que colocar "\r\n.\r\n" depois de meu comando funciona? cSend := 'NFe.DistribuicaoDFeporUltNSU("52","37247772000132","0")'+"\r\n.\r\n" antigamente eu finalizava com isso, mas era outro produto acebr Chr(13)+Chr(10)+Chr(46)+Chr(13)+Chr(10) Link to post Share on other sites
Usuários SAC sinval.gedolin 5 Posted July 28, 2020 Author Usuários SAC Report Share Posted July 28, 2020 Amigos notem que coloquei os caracteres junto com a string, e mesmo assim, não funcionou. Private oObj := tSocketClient():New() Private _cEol := Chr(13)+Chr(10)+Chr(46)+Chr(13)+Chr(10) For nX := 1 to 3 nResp := oObj:Connect( nPort,nIp,10 ) // ------------------------------- // Se conectou abandona o FOR // ------------------------------- If(nResp == 0 ) Exit Else conout("--> Tentativa de Conexão ACBr: " + StrZero(nX,3)) Sleep(2000) EndIf Next If( !oObj:IsConnected() ) conout("********* Não foi possível estabelecer conexão com o ACBr. *********") Return(.F.) Else conout("****************** ACBr CONECTADO! ************************") Sleep(2000) cSend := 'NFe.DistribuicaoDFeporUltNSU("52","37247772000132","0")'+_cEol nResp := oObj:Send( cSend ) oObj:CloseConnection() EndIf Link to post Share on other sites
Rafael Dias 1,215 Posted July 28, 2020 Report Share Posted July 28, 2020 estranho você checou se no monitor esta chegando os comandos, poste o log dele Obs.: \r\n é caracteres de comando em linguagens baseadas em C e é a mesma coisa que o char(13) + Char(10) Rafael Dias Ajude o Projeto ACBr crescer - Assine o SAC Desenvolvedor ACBrLib. Link to post Share on other sites
Usuários SAC sinval.gedolin 5 Posted July 29, 2020 Author Usuários SAC Report Share Posted July 29, 2020 Rafael, eu coloquei isso depois do comando Chr(13)+Chr(10)+Chr(46)+Chr(13)+Chr(10) Ou seja minha String enviada, foi: 'NFe.DistribuicaoDFeporUltNSU("52","37247772000132","0")'+Chr(13)+Chr(10)+Chr(46)+Chr(13)+Chr(10) E não trqbalhou Link to post Share on other sites
Juliomar Marchetti 3,845 Posted July 29, 2020 Report Share Posted July 29, 2020 Por favor tente anexar o que a Juliana pediu assim dá pra identificar 17 horas atrás, Juliana Tamizou disse: Boa tarde. Por favor anexe o log do ACBrMonitorPlus para que possamos analisar melhor. Att. Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Usuários SAC sinval.gedolin 5 Posted July 29, 2020 Author Usuários SAC Report Share Posted July 29, 2020 Consegui fazer funcionar, obrigado pode fechar o topico 1 Link to post Share on other sites
Juliomar Marchetti 3,845 Posted July 29, 2020 Report Share Posted July 29, 2020 Poderia descrever o que fez pra resolver? caso algum colega tenha o mesmo problema? 1 Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
Usuários SAC Solution sinval.gedolin 5 Posted July 29, 2020 Author Usuários SAC Solution Report Share Posted July 29, 2020 coloquei para que o ADVPL fizesse uma pausa de 15 segundos antes de fechar a conexão SOCKs, se ver no codigo acima, foi colocado para ele fechar a conexão depois de enviar comando. E antes dos 15 segundos eu fiz uma verificação se houve algum retorno. ficando assim: Private oObj := tSocketClient():New() Private _cEol := Chr(13)+Chr(10)+Chr(46)+Chr(13)+Chr(10) For nX := 1 to 3 nResp := oObj:Connect( nPort,nIp,10 ) // ------------------------------- // Se conectou abandona o FOR // ------------------------------- If(nResp == 0 ) Exit Else conout("--> Tentativa de Conexão ACBr: " + StrZero(nX,3)) Sleep(2000) EndIf Next If( !oObj:IsConnected() ) conout("********* Não foi possível estabelecer conexão com o ACBr. *********") Return(.F.) Else conout("****************** ACBr CONECTADO! ************************") Sleep(2000) cSend := 'NFe.DistribuicaoDFeporUltNSU("52","37247772000132","0")'+_cEol nResp := oObj:Send( cSend ) if( nResp != len( cSend ) ) conout( "--> Erro! Dado não transmitido" ) else conout( "--> Dado Enviado - Retorno: " +StrZero(nResp,5) ) endif Sleep(20000) conout("****************** Fechando o ACBr! ************************") oObj:CloseConnection() EndIf 2 Link to post Share on other sites
Juliomar Marchetti 3,845 Posted July 29, 2020 Report Share Posted July 29, 2020 Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. Juliomar Marchetti Ajude o Projeto ACBr crescer - Assine o SAC skype: juliomar telegram: juliomar http://www.juliomarmarchetti.com.br Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil Link to post Share on other sites
José M. S. Junior 3,054 Posted July 29, 2020 Report Share Posted July 29, 2020 Deve configurar sempre um timeOut pouco maior que o tempo configurado no ACBrMonitor, para não encerrar a conexão antes do tempo de espera. 1 José Junior Ajude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (15)99790-2976. Link to post Share on other sites
Recommended Posts