Ir para conteúdo
  • Cadastre-se

dev botao

Utilizando o ACBRCEP com NodeJs


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

Recommended Posts

Postado (editado)
  Em 16/06/2023 at 21:04, Renato Rubinho disse:

Você deve identificar a variável com endereço de resposta e o tamanho do buffer, no segundo e terceiro parâmetros.

https://acbr.sourceforge.io/ACBrLib/CEP_BuscarPorCEP.html

 

Expandir  

Olá Renato obrigado pela atenção.

Estou fazendo assim.

const path = require('path');
const ffi = require('ffi-napi');
const ref = require('ref-napi');
 
const pathDllACBrLibCEP = path.join(__dirname, 'ACBrCEP64.dll')
var eArqConfig = path.join(__dirname, 'config.ini');
var eChaveCrypt = '';
 
var lib = ffi.Library(pathDllACBrLibCEP, {
    CEP_Inicializar: ['int', ['string', 'string']],
    CEP_Finalizar: ['int', []],
    CEP_BuscarPorCEP: ['int', ['string', 'string', 'int']],
})
 
try {
 
    var inicio = 2;
    const buflength = 256;
 
    let aloc_sResposta = Buffer.alloc(buflength);
    let aloc_esTamanho = ref.alloc('int', buflength);
 
    inicio = lib.CEP_Inicializar(eArqConfig, eChaveCrypt);
    console.log(`iniciou >>>>>>> ${inicio}`);
 
    inicio = lib.CEP_BuscarPorCEP('55612450', aloc_sResposta, aloc_esTamanho);
    console.log(`ultmio retorno >>>>>>>> ${inicio}`);
    console.log(`Retorno: `, aloc_sResposta.toString());
 
    inicio = lib.CEP_Finalizar();
    console.log(`finalizar >>>>>>>> ${inicio}`);
 
} catch (error) {
    console.error('An error occurred:', error)
}
  Em 16/06/2023 at 21:05, antonio.carlos disse:

image.png

funcionando também..

Expandir  

 

Obrigado pela atenção Antonio.

Não entendo porque não funciona conosco   :(

Editado por Marcelo Wanderley
  • Consultores
Postado

Não conheço Node, mas já vi relatos de erros semelhantes em outras linguagens onde as duas variáveis que recebem os retorno funcionam colocando o @ na frente

@aloc_sResposta por exemplo

Postado
  Em 16/06/2023 at 21:13, antonio.carlos disse:

ambiente agora parece correto.. 
tente fazer um teste com esta ACBrLibCEP
ACBrCEP64.dll
 

e com este ACBrLib.ini
ACBrLib.ini

Expandir  

 

Log
16/06/23 18:20:54:063 - TLibCEPConfig.AplicarConfiguracoes: C:\Users\sistemas\Desktop\Projeto\qualinfo\testeACBR\ACBrLib.ini
16/06/23 18:20:54:066 - Travar
16/06/23 18:20:54:067 - TLibCEPConfig.AplicarConfiguracoes - Feito
16/06/23 18:20:54:068 - Destravar
16/06/23 18:20:54:070 - TLibCEPConfig.Ler - Feito
16/06/23 18:20:54:071 - Destravar
16/06/23 18:20:54:164 - LIB_Inicializar( C:\Users\sistemas\Desktop\Projeto\qualinfo\testeACBR\ACBrLib.ini,  )
16/06/23 18:20:54:258 -    ACBrLibCEP Demo - 0.0.1.135
16/06/23 18:20:54:350 - CEP_BuscarPorCEP( 55612450 )
16/06/23 18:20:54:352 - Travar
16/06/23 18:20:54:696 - Destravar
16/06/23 18:20:54:698 -    SetRetorno(-10, Access violation)
16/06/23 18:20:54:701 - LIB_Finalizar
16/06/23 18:20:54:702 - Finalizar

  • Consultores
Postado

O AV deve estar acontecendo devido aos retornos.

  Em 16/06/2023 at 21:10, Renato Rubinho disse:

Não conheço Node, mas já vi relatos de erros semelhantes em outras linguagens onde as duas variáveis que recebem os retorno funcionam colocando o @ na frente

@aloc_sResposta por exemplo

Expandir  

Isso faz sentido para você?

Outra coisa, tente também aumentar o buffer.

  • Consultores
Postado
  Em 16/06/2023 at 21:21, Marcelo Wanderley disse:

 

Log
16/06/23 18:20:54:063 - TLibCEPConfig.AplicarConfiguracoes: C:\Users\sistemas\Desktop\Projeto\qualinfo\testeACBR\ACBrLib.ini
16/06/23 18:20:54:066 - Travar
16/06/23 18:20:54:067 - TLibCEPConfig.AplicarConfiguracoes - Feito
16/06/23 18:20:54:068 - Destravar
16/06/23 18:20:54:070 - TLibCEPConfig.Ler - Feito
16/06/23 18:20:54:071 - Destravar
16/06/23 18:20:54:164 - LIB_Inicializar( C:\Users\sistemas\Desktop\Projeto\qualinfo\testeACBR\ACBrLib.ini,  )
16/06/23 18:20:54:258 -    ACBrLibCEP Demo - 0.0.1.135
16/06/23 18:20:54:350 - CEP_BuscarPorCEP( 55612450 )
16/06/23 18:20:54:352 - Travar
16/06/23 18:20:54:696 - Destravar
16/06/23 18:20:54:698 -    SetRetorno(-10, Access violation)
16/06/23 18:20:54:701 - LIB_Finalizar
16/06/23 18:20:54:702 - Finalizar

Expandir  

estranho..
consegue fazer um teste em outra máquina ? algo do tipo ?
Porque é a ACBrLib e ACBrLib.ini que fiz os testes acima conforme imagem que te mandei..
ACBrLibCEP Demo-20230616.log

Postado
  Em 16/06/2023 at 21:35, Renato Rubinho disse:

O AV deve estar acontecendo devido aos retornos.

Isso faz sentido para você?

Outra coisa, tente também aumentar o buffer.

Expandir  

Em javascript e node não necessita do @

Aumentei e nada. Coloquei 512

  Em 16/06/2023 at 21:38, antonio.carlos disse:

estranho..
consegue fazer um teste em outra máquina ? algo do tipo ?
Porque é a ACBrLib e ACBrLib.ini que fiz os testes acima conforme imagem que te mandei..
ACBrLibCEP Demo-20230616.log

Expandir  

Vou tentar em outra maquina.

  • Consultores
Postado
  Em 16/06/2023 at 21:38, Marcelo Wanderley disse:

Vou tentar em outra maquina.

Expandir  

Qualquer coisa me avise, podemos tentar criar um ambiente aqui também, não programo em Node, mas com sua ajuda acho que podemos fazer este tipo de teste também..
Por enquanto tudo certo quando ao OpenSSL e a convenção de chamada do ACBrLib com o Node.JS

  • Curtir 1
  • Solution
Postado

Pessoal, consegui.

Segue abaixo a solução funcionando.

Obrigado a todos pela atenção.

 

const path = require('path');
const ffi = require('ffi-napi');
const ref = require('ref-napi');
 
const pathDllACBrLibCEP = path.join(__dirname, 'ACBrCEP64.dll')
var eArqConfig = path.join(__dirname, 'ACBrLib.ini');
var eChaveCrypt = '';
 
var tint = ref.refType('int');
var tchar = ref.refType('char *');
 
var lib = ffi.Library(pathDllACBrLibCEP, {
    CEP_Inicializar: ['int', ['string', 'string']],
    CEP_Finalizar: ['int', []],
    CEP_BuscarPorCEP: ['int', ['string', tchar, tint]],
})
 
try {
 
    var inicio = 2;
    const buflength = 256;
 
    let aloc_sResposta = Buffer.alloc(buflength);
    let aloc_esTamanho = ref.alloc('int', buflength);


 
    inicio = lib.CEP_Inicializar(eArqConfig, eChaveCrypt);
    console.log(`iniciou >>>>>>> ${inicio}`);
 
    inicio = lib.CEP_BuscarPorCEP('55612-450', aloc_sResposta, aloc_esTamanho);
    console.log(`ultmio retorno >>>>>>>> ${inicio}`);
    console.log(`Retorno: `, aloc_sResposta.toString());
   
 
    inicio = lib.CEP_Finalizar();
    console.log(`finalizar >>>>>>>> ${inicio}`);
 
} catch (error) {
    console.error('An error occurred:', error)
}

 
  • Curtir 1
  • Consultores
Postado

Para documentação, caso alguém tenha o mesmo problema, faz diferença o tipo de variável ser char* ou poderia ser string e faltava apenas declarar e utilizá-la ao "declarar a lib"?

 

  • Consultores
Postado
  Em 17/06/2023 at 00:36, Marcelo Wanderley disse:

Pessoal, consegui.

Segue abaixo a solução funcionando.

Obrigado a todos pela atenção.

 

const path = require('path');
const ffi = require('ffi-napi');
const ref = require('ref-napi');
 
const pathDllACBrLibCEP = path.join(__dirname, 'ACBrCEP64.dll')
var eArqConfig = path.join(__dirname, 'ACBrLib.ini');
var eChaveCrypt = '';
 
var tint = ref.refType('int');
var tchar = ref.refType('char *');
 
var lib = ffi.Library(pathDllACBrLibCEP, {
    CEP_Inicializar: ['int', ['string', 'string']],
    CEP_Finalizar: ['int', []],
    CEP_BuscarPorCEP: ['int', ['string', tchar, tint]],
})
 
try {
 
    var inicio = 2;
    const buflength = 256;
 
    let aloc_sResposta = Buffer.alloc(buflength);
    let aloc_esTamanho = ref.alloc('int', buflength);


 
    inicio = lib.CEP_Inicializar(eArqConfig, eChaveCrypt);
    console.log(`iniciou >>>>>>> ${inicio}`);
 
    inicio = lib.CEP_BuscarPorCEP('55612-450', aloc_sResposta, aloc_esTamanho);
    console.log(`ultmio retorno >>>>>>>> ${inicio}`);
    console.log(`Retorno: `, aloc_sResposta.toString());
   
 
    inicio = lib.CEP_Finalizar();
    console.log(`finalizar >>>>>>>> ${inicio}`);
 
} catch (error) {
    console.error('An error occurred:', error)
}

 
Expandir  

Que legal que funcionou, quiser anexar os fontes, podemos disponibilizar em nosso svn, para que outros colegas possam usar como referencia e estudos..

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