Ir para conteúdo
  • Cadastre-se

dev botao

Comandos por Socks


Ver Solução Respondido por sinval.gedolin,
  • Este tópico foi criado há 1578 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

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:ConnectnPort,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:SendcSend )
        oObj:CloseConnection()
    EndIf   
 
 
  • Administradores
Postado

Boa tarde.

Por favor anexe o log do ACBrMonitorPlus para que possamos analisar melhor.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Administradores
Postado

Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado

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)
Postado

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:ConnectnPort,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:SendcSend )
        oObj:CloseConnection()
    EndIf   
Postado

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)

 

Postado

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

  • Solution
Postado

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:ConnectnPort,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:SendcSend )
        ifnResp != lencSend ) )
            conout"--> Erro! Dado não transmitido" )
        else
            conout"--> Dado Enviado - Retorno: " +StrZero(nResp,5) )
        endif
        Sleep(20000)
        conout("****************** Fechando o ACBr! ************************")
        oObj:CloseConnection()
    EndIf

 

  • Curtir 2
  • Este tópico foi criado há 1578 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.