Ir para conteúdo
  • Cadastre-se

antonio.carlos

Consultores
  • Total de ítens

    1.945
  • Registro em

  • Última visita

  • Days Won

    2

Posts postados por antonio.carlos

  1. 5 horas atrás, buzz disse:

    Olá.

    Alguém teria algum exemplo em VB6 da utilização da ACBrLibPIXCD?

    E também todos os "Declares" para utilização em VB6?

    Muito grato e parabéns pelo trabalho de todos os envolvidos!

    Subi um programa exemplo para o SVN - At revision: 31823
    Caso VB6 for sua linguagem nativa, fique a vontade para validar e sugerir correções 😉

    Conheça ACBrPRO

    • Curtir 3
  2. 2 minutos atrás, Lindomar S. Menezes disse:

    A versão da LIB que está no ar ainda gera a sessão do integrador, já a que me passou está gerando corretamente, sem as tags

    Versão que te enviei no privado, conseguiu fazer emissão e consultas ? sem problemas ?

  3. 4 minutos atrás, Lindomar S. Menezes disse:

    Pior que no momento em C# também não temos nenhum MF-e ainda, só em Delphi, mas se você quiser mandar, quando nós subirmos a atualização para os clientes a gente pode verificar, só não tenho nenhum prazo ainda pra implantarmos.
    Utilizamos MT, 32 e 64

    Te enviei uma versão no privado aqui no fórum.. pode testar, por favor..

  4. 29 minutos atrás, Lindomar S. Menezes disse:

    Buenas Pessoal, estou utilizando o componente do c# para emissão de NFCe no CE, mas me deparei com o seguinte problema....

    A TAG [INTEGRADOR]
    É alimentada por default, e isso causa um erro na consulta/emissão do documento no CE, busquei dentro do componente o metodo para limpar a informação antes da criação da tag, pelo metodo configGravar,

    mas o mesmo não possui esse campo Integrador.
    Segue anexo do exemplo do campo

     

    image.png.a9c78c138ebbf1ec94436673c9d7e7c5.png


    Não precisa mais da utilização do Integrador.. 
    Configure apenas os certificados, veja se consegue fazer a emissão usando as classes.. 

    Em paralelo estou verificando os fontes ACBrLibNFe.. Qual versão ACBrLib você esta utilizando ? cdecl.. stdcal.. ST ou MT, versão x86 ou x64 ?

     

  5. 2 horas atrás, Fabiano Moraes de Araújo disse:

    E não consigo que a função Boleto_EnviarBoleto retorne nos parâmetros o resultado da função. Ela continua dando -10. Já tentei passar os parâmetros por referência e nada. Como posso resolver isso ?

    -10 quer dizer que houve falha na execução do método.. 
    Por favor configure os Logs ACBrLib e Log WebService para analise

    Log WebService
    image.png

    Log ACBrLib
    image.png

    Configure sempre Log ACBrLib nível paranoico.

  6. 4 horas atrás, Lindomar S. Menezes disse:

    Bom dia pessoal, fizemos essa alteração aqui, conforme repassada na abertura do tópico, mas sem sucesso.

    [Principal]
    TipoResposta=0
    CodificacaoResposta=1
    LogNivel=0
    LogPath=
    

    image.png.e10b7d0cbe700c56ce56a3c1f036b373.png

    image.png.8ff075e45c3eceec5cf3e7a361e974a4.png

    image.thumb.png.df2ad6798f60dd0b291f88b0ee1fcffc.png

    image.png.590d5ed8a9401f5be0f59f3819b1ec23.png

    Estamos analisando uma possível solução.. quando concluirmos, iremos dar um retorno aqui para você, combinado ?!

    • Curtir 1
  7. 8 minutos atrás, PORTERR disse:

    Olá pessoal,
    O equipamento SAT, foi substituido por um equipamento SAT novo, e como mudou o número de série, o escritório vinculou novamente o SAT,
    mas continua dando o erro codigoderetorno=6003, SAT não vinculado ao AC, é necessário, reconfigurar o AcbrMonitorPlus, o SAT anteriormente estava funcionando corretamente,
    apenas foi mudado o aparelho e vinculado, é necessário mudar alguma informação no AcbrMonitorPlus, no Acbr não alterei nada, deixei como estava anteriormente.
    Obrigado.

    Quando é um SAT Novo..
    Equipamento precisar ser ativado -> https://acbr.sourceforge.io/ACBrMonitor/SATAssociarAssinatura.html
    depois vinculado AC -> https://acbr.sourceforge.io/ACBrMonitor/SATAssociarAssinatura.html..

     

  8. Mais um lançamento ACBrLib, desta vez chegou o ACBrLibPIXCD !

    Depois de alguns meses trabalhando no desenvolvimento, chegou a hora de dizer... finalizamos mais uma biblioteca ACBrLib, o ACBrLibPIXCD.

    Para quem não conhece sobre PIX, o primeiro passo é acessar este tópico, para entender um pouco sobre o assunto.
    ACBrPIXCD - Novo Componente para integração com PIX.

    No Projeto ACBr temos o componente ACBrPIXCD, utilizado por desenvolvedores Delphi e Lazarus e agora utilizando o ACBrLibPIXCD é possível fazer uma integração nativa utilizando outras linguagens, por exemplo, C#, Java, VB6.. ou qualquer linguagem de programação que seja possível consumir uma dll (Windows) ou .so (Linux). 

    Utilizando ACBrLibPIXCD é possível gerar um PIX de forma estática, configurando uma PSP em ACBrLib.ini e usando o método GerarQRCodeEstatico, veja um exemplo:

    //-------------------------------- Exemplo ACBrLib C# --------------------------------------//
    
    Parâmetros:
    AValor - Valor transação PIX.
    AinfoAdicional - Informaçoes Adicionais da transação PIX. (Parâmetro Opcional).
    ATxID - Identificador da Transação PIX. (Parâmetro Opcional).
    sResposta - Usado pelo retorno, contem as informações retornadas pela consulta.
    esTamanho - Usado pelo retorno, contem o tamanho da string (sResposta).
    
    ACBrPIXCD.GerarQRCodeEstatico(1);


    ACBrLibPIXCD não trabalha somente de forma estática, também é possível criar PIX dinâmico.. com os EndPoints /Pix, /Cob e /CobV, e configurando PSP em ACBrLib.ini, dessa forma você precisa utilizar os métodos que correspondem a cada EndPoint, exemplo utilizando EndPoint /CobV, com os métodos 

    CriarCobranca:

    //-------------------------------- Exemplo ACBrLib C# --------------------------------------//
    Parâmetros:
    AInfCobVSolicitada - Arquivo.ini com as informações para criar uma cobrança.
    ATxId - Identificador da Transação PIX.
    sResposta - Usado pelo retorno, contem as informações retornadas pela consulta.
    esTamanho - Usado pelo retorno, contem o tamanho da string (sResposta).
    
    ACBrPIXCD.CriarCobranca("C:\Cobrança\CobVSolicitada.ini", "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");

    CancelarCobranca:

    //-------------------------------- Exemplo ACBrLib C# --------------------------------------//
    Parâmetros:
    ATxId - Identificador da Transação PIX.
    sResposta - Usado pelo retorno, contem as informações retornadas pela consulta.
    esTamanho - Usado pelo retorno, contem o tamanho da string (sResposta).
    
    ACBrPIXCD.CancelarCobranca("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890");

    Observação: O Projeto ACBr espera ansiosamente pelo feedback de todos e sabemos que podem ocorrer ajustes, por este motivo fique sempre atento aos commits e atualizações dos Manuais e Programa Exemplo.

    Obrigado @Daniel Simoes e @Juliana Tamizou por confiar e acreditar em mais um desenvolvimento ACBrLib.

    Agradecer também @EliasCesar e @EMBarbosa por todo apoio no projeto ACBrLibPIXCD.

    Até o próximo lançamento 😉 !

    • Curtir 5
  9. Em 28/11/2023 at 09:19, Desenvolvimento.microline disse:

     

    Me desculpem, mas parece que vocês não estão entendendo, o erro é da DLL, por favor removam as informações erradas que tem dentro dela, porque motivos tem aqueles fragmento de código de Porto Velho desatualizado?
    Sem resolver isso terei de desistir de usar esta DLL de serviços

    Por favor, atualize ACBrLib para ultima versão disponibilizada no fórum, faça um novo teste, nos avise, por favor..

    • Curtir 1
  10. 1 hora atrás, Desenvolvimento.microline disse:

     

    Me desculpem, mas parece que vocês não estão entendendo, o erro é da DLL, por favor removam as informações erradas que tem dentro dela, porque motivos tem aqueles fragmento de código de Porto Velho desatualizado?
    Sem resolver isso terei de desistir de usar esta DLL de serviços

    Vamos compilar uma nova versão, logo aviso você para fazer download de uma versão atualizada e realizar um novo teste..

    • Curtir 1
  11. 16 minutos atrás, Desenvolvimento.microline disse:

    Isso só resolveu a estrutura do XML, mas não resolve o endereço do envio
    [Erro1]
    Codigo=X999
    Correcao=
    Descricao=Erro de Conexão: Erro Interno: 12002Erro HTTP: 0URL: https://www.semfazonline.com/nfse/NfseWSServiceErro: 12002 - TimeOut de RequisiçãoFalha ao Receber Resposta. Erro: 12002 - TimeOut de Requisição
     

    Isso é mais um indício de que esta usando ACBrLib desatualizada.. pois parece que esta fazendo requisição para o endereço errado..

    E outro fato é que você não precisa alterar nenhuma informação editando hexa do ACBrLib, isso é outro indício de que esta com ACBrLib desatualizada..

    Veja os vídeos que @Diego Foliene anexou.. foi realizado teste em dois programas exemplos.. C# e VB6, inclusive VB6 utiliza stdcall em x86.. 

    Por favor, remova e apague qualquer ACBrLib que encontrar em sua máquina.. não deixe nenhuma.. veja se não tem nada System32 ou Syswow64.. caso encontre alguma ACBrLib, por favor apague..

    Faça download da ACBrLib no fórum e use somente ela.. 

    • Curtir 1
  12. 23 horas atrás, NVTech disse:

    Olá, Antonio!

    Tenho um outro chamado, postado em 22/05/2023, que achei que poderia estar relacionado a esta constatação, no log, de termos duas chamadas ao método Destravar para apenas uma do Travar. Talvez algum método seja chamado sem o respectivo Travar, o que gera o SEGV apresentado no caso daquele chamado. Mas isso é apenas uma hipótese aventada a partir do log.

    Veja o chamado antigo:

     

     

    Um abraço,

    Respondido.

  13. Falha de segmentação SIGSEGV é comum de erro em programação que ocorre quando um programa tenta acessar uma parte da memória que não tem permissão para acessar. Isso geralmente ocorre devido a bugs no código, como acessar um ponteiro nulo, acessar uma área de memória liberada ou escrever além dos limites de um array.

    A linguagem de programação que você utiliza, não é minha linguagem nativa, então tive que fazer algumas pesquisas.. para entender a linguagem e tentar te ajudar..

    Veja se essas opções não te ajuda em relação uso da ACBrLib MultiThread.

    Adicione Sincronização:
    Tente adicionar mutexes (travas) ao redor do código que está usando a biblioteca ACBrLibCTe. Isso pode ajudar a evitar condições de corrida entre as threads,

    #include <dlfcn.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <pthread.h>
    
    #define NUMERO_DE_THREADS 1
    #define NUMERO_DE_INSTANCIAS 5
    #define ACBRLIBCTE "/usr/local/lib/libacbrcte64.so"
    
    typedef int (*inicializar_t)(u_int64_t *, char *, char *);
    typedef int (*finalizar_t)(u_int64_t);
    
    inicializar_t inicializar;
    finalizar_t finalizar;
    
    // Mutex para sincronização
    pthread_mutex_t acbrMutex = PTHREAD_MUTEX_INITIALIZER;
    
    void* run(void *);
    
    int main() {
      // Carrega a biblioteca ACBrLibCTe
      void *lib = dlopen(ACBRLIBCTE, RTLD_LAZY);
      if (!lib) {
        fprintf(stderr, "Erro ao carregar a biblioteca\n\n");
        exit(1);
      }
    
      // Atualiza os ponteiros para as funções que serão testadas na ACBrLibCte
      inicializar = (inicializar_t)dlsym(lib, "CTE_Inicializar");
      finalizar = (finalizar_t)dlsym(lib, "CTE_Finalizar");
    
      // Cria vetor com as threads criadas
      pthread_t threads[NUMERO_DE_THREADS];
    
      for(int i=0; i<NUMERO_DE_THREADS; i++) {
        // Define o número da Thread para mensagem de log
        int *nr_thread = malloc(sizeof(int));
        *nr_thread = i;
        // Cria a thread e inicia execução
        pthread_create(&threads[i], NULL, run, (void *) nr_thread);
      }
    
      // Aguarda a finalização de todas as threads
      for(int i=0; i<NUMERO_DE_THREADS; i++) {
        pthread_join(threads[i], NULL);
      }
    
      // Encerra o uso da biblioteca
      dlclose(lib);
    
      // Destroi o mutex
      pthread_mutex_destroy(&acbrMutex);
    }
    
    void * run(void *p) {
      int nr_thread = *((int *) p);
      
      u_int64_t handle[NUMERO_DE_INSTANCIAS];
    
      char *senha = calloc(64, sizeof(char));
      strcpy(senha, "senha");
    
      // Cria instâncias da biblioteca ACBrLibCTe
      for (int i = 0; i < NUMERO_DE_INSTANCIAS; i++) {
        pthread_mutex_lock(&acbrMutex); // Trava o mutex antes de acessar a biblioteca
        char *arquivo = calloc(64, sizeof(char));
        sprintf(arquivo, "acbrlib-%d.ini", i);
        int retorno = inicializar(&handle[i], arquivo, senha);
        printf("(Thread #%2d - Instância #%2d) Função <<<CTE_Inicializar>>> [Retorno da Biblioteca: %d] [Handle retornado : %lu]\n", nr_thread, i, retorno, handle[i]);
        pthread_mutex_unlock(&acbrMutex); // Destrava o mutex após acessar a biblioteca
      }
    
      // Finaliza as instâncias da biblioteca ACBrLibCTe
      for (int i = 0; i < NUMERO_DE_INSTANCIAS; i++) {
        pthread_mutex_lock(&acbrMutex);
        int retorno = finalizar(handle[i]);
        printf("(Thread #%2d - Instância #%2d) Função <<<CTE_Finalizar  >>> [Retorno da Biblioteca: %d] [Handle finalizado: %lu]\n", nr_thread, i, retorno, handle[i]);
        pthread_mutex_unlock(&acbrMutex);
      }
    
      // Libera o parâmetros 
      free(p);
    
      return NULL;
    }


    Inicialização Global:
    Inicie a biblioteca uma vez no início do programa, antes de criar qualquer thread, e compartilhe o handle entre as threads. Isso evita a necessidade de inicialização concorrente. Aqui está um exemplo:

    #include <dlfcn.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <pthread.h>
    
    #define NUMERO_DE_THREADS 1
    #define NUMERO_DE_INSTANCIAS 5
    #define ACBRLIBCTE "/usr/local/lib/libacbrcte64.so"
    
    typedef int (*inicializar_t)(u_int64_t *, char *, char *);
    typedef int (*finalizar_t)(u_int64_t);
    
    inicializar_t inicializar;
    finalizar_t finalizar;
    
    u_int64_t globalHandle;
    
    void* run(void *);
    
    int main() {
      // Carrega a biblioteca ACBrLibCTe
      void *lib = dlopen(ACBRLIBCTE, RTLD_LAZY);
      if (!lib) {
        fprintf(stderr, "Erro ao carregar a biblioteca\n\n");
        exit(1);
      }
    
      // Atualiza os ponteiros para as funções que serão testadas na ACBrLibCte
      inicializar = (inicializar_t)dlsym(lib, "CTE_Inicializar");
      finalizar = (finalizar_t)dlsym(lib, "CTE_Finalizar");
    
      // Inicializa a biblioteca globalmente
      char *senha = calloc(64, sizeof(char));
      strcpy(senha, "senha");
      char *arquivo = "acbrlib-global.ini";
      int retorno = inicializar(&globalHandle, arquivo, senha);
    
      // Cria vetor com as threads criadas
      pthread_t threads[NUMERO_DE_THREADS];
    
      for(int i=0; i<NUMERO_DE_THREADS; i++) {
        // Define o número da Thread para mensagem de log
        int *nr_thread = malloc(sizeof(int));
        *nr_thread = i;
        // Cria a thread e inicia execução
        pthread_create(&threads[i], NULL, run, (void *) nr_thread);
      }
    
      // Aguarda a finalização de todas as threads
      for(int i=0; i<NUMERO_DE_THREADS; i++) {
        pthread_join(threads[i], NULL);
      }
    
      // Finaliza a instância global da biblioteca
      retorno = finalizar(globalHandle);
      printf("(Global) Função <<<CTE_Finalizar  >>> [Retorno da Biblioteca: %d] [Handle finalizado: %lu]\n", retorno, globalHandle);
    
      // Encerra o uso da biblioteca
      dlclose(lib);
    }
    
    void * run(void *p) {
      int nr_thread = *((int *) p);
      
      u_int64_t handle[NUMERO_DE_INSTANCIAS];
    
      char *senha = calloc(64, sizeof(char));
      strcpy(senha, "senha");
    
      // Cria instâncias da biblioteca ACBrLibCTe
      for (int i = 0; i < NUMERO_DE_INSTANCIAS; i++) {
        char *arquivo = calloc(64, sizeof(char));
        sprintf(arquivo, "acbrlib-%d.ini", i);
        int retorno = inicializar(&handle[i], arquivo, senha);
        printf("(Thread #%2d - Instância #%2d) Função <<<CTE_Inicializar>>> [Retorno da Biblioteca: %d] [Handle retornado : %lu]\n", nr_thread, i, retorno, handle[i]);
      }
    
      // Finaliza as instâncias da biblioteca ACBrLibCTe
      for (int i = 0; i < NUMERO_DE_INSTANCIAS; i++) {
        int retorno = finalizar(handle[i]);
        printf("(Thread #%2d - Instância #%2d) Função <<<CTE_Finalizar  >>> [Retorno da Biblioteca: %d] [Handle finalizado: %lu]\n", nr_thread, i, retorno, handle[i]);
      }
    
      // Libera o parâmetros 
      free(p);
    
      return NULL;
    }


    Como você deve conhecer a linguagem que esta utilizando, acredito que estes dois exemplos possam te ajudar.. 

    • Curtir 1
  14. 45 minutos atrás, NVTech disse:

    Olá, Antonio!

    O log postado foi criado um programa de teste que chamou a função CTE_Inicializar e, logo em seguida, a função CTE_Finalizar e nada mais.

    Apesar do teste original ter sido feito em Rust, fiz uma versão em C para postar por aqui. A execução deste programa produz o log apresentado, no qual duas indicações de Destravar correspondem a uma única de Travar.

    Um abraço,

    2023-11-24_09-33.png

    2023-11-24_09-38.png

    O primeiro Destravar é referente ao AplicarConfiguracoes.
    E o segundo Destravar é referente ao Config.Ler.

    Depois você chama os métodos Inicializar e Finalizar..

    Você teve algum problema em usar os métodos ? 

    • Curtir 1
  15. Em 07/11/2023 at 19:43, NVTech disse:

    Olá!

    Eu uso a ACBrLibCTe, versão MT, em um backend escrito em Rust para uma aplicação Web executada em um container Linux.

    Fiz um teste com a biblioteca, usando apenas as funções CTE_Inicializar e CTE_Finalizar.

    Observando o log gerado, percebo que há uma chamada "a mais" da funcionalidade destravar, como pode ser observado na imagem anexa. Percebam que há apenas uma chamada de "Travar", mas duas de "Destravar". Isso representa algum problema?

    Antecipadamente lhes agradeço pela ajuda.

    []s,

     

    Captura de tela de 2023-11-07 19-41-40.png

    Pode anexar o log completo, por favor.. 

    Travar e Destravar é um controle interno do ACBrLib.. 
    Provavelmente o segundo Destravar foi referente algum Travar de outro método.. 

    • Curtir 1
×
×
  • 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.