Ir para conteúdo
  • Cadastre-se

dev botao

Dúvidas sobre retorno do CriarCFe() e configuração .ini


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

Recommended Posts

  • Membros Pro
Postado

Pessoal, bom dia !

Estou utilizando o método SAT_CriarCFe(handle, eArqCfe, sResposta, esTamanho)  para emitir cupom fiscal com o emulador do SAT.
No entanto, minha aplicação retorna erro com o log:

17/01/24 08:03:05:848 - SAT_CriarCFe( )
17/01/24 08:03:05:848 - Travar
17/01/24 08:03:05:863 - Destravar
17/01/24 08:03:05:879 -    SetRetorno(-10, String INI informada não é válida.)

É possível saber detalhes sobre o campo que está errado no .ini informado ?

Estou seguindo o manual e utilizando o .ini simplificado (https://acbr.sourceforge.io/ACBrLib/ModeloCFeINISimplificadovalido.html)
Segue em anexo meu arquivo CFe.ini.

 

 

 

 

 

ACBrSAT_CFE_simples.ini

  • Consultores
  • Solution
Postado

Bom dia!

Ao realizar um teste usando o botão CriarCFe carregando o seu arquivo no Demo em C#, o XML foi gerado com sucesso.

Comparando o log que foi gerado, com o que disponibilizou, me parece que você não passou o arquivo INI como parâmetro.

O seu log:

1 hora atrás, gui_cp disse:

17/01/24 08:03:05:848 - SAT_CriarCFe( )

O log que foi gerado em meu teste:

Citar

17/01/24 10:23:44:349 - SAT_CriarCFe(C:\Users\Diego\Downloads\ACBrSAT_CFE_simples.ini )

Apenas para efeito de teste, comentei a validação que impedia de passar valor vazio para o parâmetro do comando e veja o resultado:

Citar

17/01/24 10:30:36:441 - SAT_CriarCFe( )
17/01/24 10:30:36:445 - Travar
17/01/24 10:30:36:448 - Destravar
17/01/24 10:30:36:450 -    SetRetorno(-10, String INI informada não é válida.)

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado

@Diego Foliene, Inicialmente, obrigado por validar meu arquivo .ini.

Seu comentário faz total sentido e me deu a orientação que eu precisava.
No entanto, parece que entrei em uma sinuca de bico.

Estou utilizando o ACBrLib com nodejs.
Há alguns dias, estava tendo esse erro:
           SetRetorno(-10, Access violation)

Para resolver, implementei o MultiThread (https://acbr.sourceforge.io/ACBrLib/ACBrLibeMultiThread.html)

Resolveu meu problema de acesso às funções do ACBrLib. No entanto, meus métodos devem sempre passar um "handler" como parâmetro (conforme link acima), ou seja:

        SAT_CriarCFe(eArquivoIni, sResposta, esTamanho);

passou a ser:
        var handle = ref.alloc('pointer');
        SAT_CriarCFe.async(handle, eArquivoIni, sResposta, esTamanho)

Isto resolveu meu problema de "Access Violation", mas agora criou esse problema de ignorar o valor passado na variável "eArquivoIni".

Fiz o teste sem o Handle e o log pegou o caminho certinho do "eArquivoIni" , mas voltou a dar o erro de "Access Violation":

17/01/24 11:44:22:239 - SAT_CriarEnviarCFe(D:\projetos\ACBr\ACBrSAT_CFE_simples.ini )
17/01/24 11:44:22:247 - Travar
17/01/24 11:44:22:755 - Destravar
17/01/24 11:44:22:755 -    SetRetorno(-10, Access violation)

Será que consigo sair dessa situação ?

 

  • Consultores
Postado
24 minutos atrás, gui_cp disse:

@Diego Foliene, Inicialmente, obrigado por validar meu arquivo .ini.

Seu comentário faz total sentido e me deu a orientação que eu precisava.
No entanto, parece que entrei em uma sinuca de bico.

Estou utilizando o ACBrLib com nodejs.
Há alguns dias, estava tendo esse erro:
           SetRetorno(-10, Access violation)

Para resolver, implementei o MultiThread (https://acbr.sourceforge.io/ACBrLib/ACBrLibeMultiThread.html)

Resolveu meu problema de acesso às funções do ACBrLib. No entanto, meus métodos devem sempre passar um "handler" como parâmetro (conforme link acima), ou seja:

        SAT_CriarCFe(eArquivoIni, sResposta, esTamanho);

passou a ser:
        var handle = ref.alloc('pointer');
        SAT_CriarCFe.async(handle, eArquivoIni, sResposta, esTamanho)

Isto resolveu meu problema de "Access Violation", mas agora criou esse problema de ignorar o valor passado na variável "eArquivoIni".

Fiz o teste sem o Handle e o log pegou o caminho certinho do "eArquivoIni" , mas voltou a dar o erro de "Access Violation":

17/01/24 11:44:22:239 - SAT_CriarEnviarCFe(D:\projetos\ACBr\ACBrSAT_CFE_simples.ini )
17/01/24 11:44:22:247 - Travar
17/01/24 11:44:22:755 - Destravar
17/01/24 11:44:22:755 -    SetRetorno(-10, Access violation)

Será que consigo sair dessa situação ?

 

Como você faz o bind dos métodos da Dll Node.js?

Por favor, veja se as informações contidas neste tópico lhe são úteis:

 

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado

@Diego Foliene, bom dia.

Ainda estou trabalhando com esse problema.
Fiz vários testes e também segui a risca o tópico que você sugeriu.

Tive alguns avanços no sentido de conseguir enviar o SAT_CriarEnviarCFe(D:\ACBrSAT_CFE_simples.ini )  mesmo com o handler.

No entanto,  mesmo utilizando Multhread, caí no problema de Access Violation novamente (antes resolvido com o MT).

Mesmo retornando "Access Violation", o Emulador SAT mostra que todos comandos estão sendo executados com sucesso.
Alguns fóruns na Web relacionaram o erro "Access Violation" com erro no certificado digital, no entanto não consegui achar nada anormal no meu arquivo ACBrLib.ini

Vou te encaminhar meus arquivos novamente e os Logs gerados.

O que percebo é que o problema não está no Sat, mas em algum detalhe com a Dll do Acbr, pois mesmo a função  "SAT_ConfigLerValor" retorna "access violation"

ACBrLibSAT.SAT_ConfigLerValor(handle, 'Sistema', 'Versao', aloc_sResposta, aloc_esTamanho);



image.png.23549afdd02c568004bd134b95a5b6ea.png
 

ACBrLibSAT-20240119.log ACBrSatLog.txt ACBrLib.ini ACBrSAT_CFE.ini

  • Consultores
Postado

Boa tarde!

Access Violation costumo ocorrer quando o você tenta acessar um objeto que ainda não foi instanciado ou que já tenha sido liberado da memória.

Ou seja, tenta acessar um endereço de memória inválido.

Vamos analisar seus arquivos e retornamos assim que descobrirmos algo.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Membros Pro
Postado

Bom dia !

Encontrei um artigo muito bom sobre esse erro:  https://pt.linkedin.com/pulse/como-entender-os-access-violations-alex-mello-de-mendonça
Recomendo a leitura.

Mas enfim, percebi que o problema estava na alocação de memória nas String ( ponteiros ) passados para as funções do ACBR.
O problema foi resolvido da seguinte forma:

Na declaração dos métodos:
SAT_ConsultarSAT: ['int', ['pointer', 'string', 'string']],

alterado para:
var tint = ref.refType('int');
var tchar = ref.refType('char *');
...
SAT_ConsultarSAT: ['int', ['pointer', tchar, tint]],
...
aloc_sResposta = Buffer.alloc(buflength);
aloc_esTamanho = ref.alloc('int', buflength);
ACBrLibSAT.SAT_ConsultarSAT(handle, aloc_sResposta, aloc_esTamanho);

Problema resolvido !
Obrigado pela ajuda @Diego Foliene.
 

  • Curtir 1
  • Consultores
Postado

Que bom que deu certo de encontrar a solução do problema!

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Diego Folieni
Ajude o Projeto ACBr crescer - Assine o SAC

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 !!

  • Este tópico foi criado há 307 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.