Membros Pro SisTerra Software Postado 3 Outubro Membros Pro Postado 3 Outubro Olá, pessoal! Tudo bem? Estou com um problema na integração com a LIB ACBrPIXCD (estou utilizando a versão 2.0.1.41). Será que conseguem me ajudar, por favor? O problema acontece quando invoco a função `PIXCD_ConsultarCobrancasCob`. Ao invocar essa função a DLL me retorna o valor de -10 (o que parece indicar que o arquivo INI está com alguma inconsistência, porém não sei dizer onde essa inconsistência está). A mensagem que acompanha o erro -10 é a seguinte: `Access Violation`. Os parâmetros que eu passo para tal função são: ADataInicio = '02/10/2024' ADataFim = '02/10/2024' ACpfCnpj = '42792981067' ALocationPresente = 0 AStatus = 1 PagAtual = 1 ItensPorPagina = 50 Caso seja necessário, posso enviar os logs que recebo ao executar a função. 1
Consultores Diego Foliene Postado 3 Outubro Consultores Postado 3 Outubro Boa tarde! 1 minute ago, SisTerra Software said: Caso seja necessário, posso enviar os logs que recebo ao executar a função. Por favor! Em seu arquivo ACBrLib.ini, defina na seção [Principal] um caminho em LogPath e o valor 4 em LogNivel. Este é o log da Lib. Ainda no mesmo arquivo, na seção [PIXCD], defina um caminho e nome de arquivo em ArqLog e o valor 4 para NivelLog. Este é o log específico do PIXCD. Por favor, disponibilize ambos os arquivos para análise. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 3 Outubro Autor Membros Pro Postado 3 Outubro Segue em anexo: acbr_lib_pix.log ACBrLibPIXCD-20241003.log 1
Consultores Diego Foliene Postado 3 Outubro Consultores Postado 3 Outubro 1 hour ago, SisTerra Software said: Segue em anexo: acbr_lib_pix.log 272 B · 1 download ACBrLibPIXCD-20241003.log 14.61 kB · 1 download Esses arquivos estão refletindo a operação que de fato apresentou o problema? Veja que o arquivo acbr_lib_pix.log possui apenas algumas linhas e nenhuma delas é relacionada a requisição. O log foi configurado para o nível mais alto possível? No arquivo ACBrLibPIXCD-20241003.log, o erro de Acess Violation parece ter sido devolvido quando tentou gravar as configurações. Por favor, tente fazer um teste: 1. Renomeie seu arquivo ACBrLib.ini. 2. Inicie a aplicação, será criado um novo arquivo ACBrLib.ini em branco. 3. Utilizando o arquivo ACBrLib.ini renomeado, vá preenchendo aos poucos as configurações seguindo fluxo: 3.1 Preencha uma seção de configuração. 3.2 Inicie a aplicação. 3.3 Não deu erro? Finalize a aplicação. Va repetindo o processo até dar o erro novamente ou preencher toda a config. Assim, pode identificar se há alguma configuração sendo preenchida com um valor inválido/incorreto. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 3 Outubro Autor Membros Pro Postado 3 Outubro Sim, os arquivos de logs foram gerados apenas na operação que estou executando. Há uma subrotina que faz a configuração da LIB do ACBr, conforme os logs indicam. Os logs estavam no nível 4, configurei agora para nível 5 e separei os arquivos em dois (um antes de executar a rota de consultar as cobranças do tipo COB e outro depois de executar a rotina de consultar as cobranças COB e receber o erro) Segue os logs segregados em anexo. Meu arquivo de configuração está assim (referente aos logs): [Principal] TipoResposta=0 CodificacaoResposta=0 LogNivel=5 LogPath= [PIXCD] Ambiente=1 NivelLog=5 Estou fazendo alguma coisa de errado? antes_acbr_lib_pix.log antes_acbr_lib_pix_cd_20231003.log depois_acbr_lib_pix.log depois_acbr_lib_pix_cd_20231003.log
Consultores Diego Foliene Postado 4 Outubro Consultores Postado 4 Outubro 15 hours ago, SisTerra Software said: Sim, os arquivos de logs foram gerados apenas na operação que estou executando. Há uma subrotina que faz a configuração da LIB do ACBr, conforme os logs indicam. Os logs estavam no nível 4, configurei agora para nível 5 e separei os arquivos em dois (um antes de executar a rota de consultar as cobranças do tipo COB e outro depois de executar a rotina de consultar as cobranças COB e receber o erro) Segue os logs segregados em anexo. Meu arquivo de configuração está assim (referente aos logs): [Principal] TipoResposta=0 CodificacaoResposta=0 LogNivel=5 LogPath= [PIXCD] Ambiente=1 NivelLog=5 Estou fazendo alguma coisa de errado? antes_acbr_lib_pix.log 197 B · 0 downloads antes_acbr_lib_pix_cd_20231003.log 14.29 kB · 0 downloads depois_acbr_lib_pix.log 75 B · 0 downloads depois_acbr_lib_pix_cd_20231003.log 321 B · 0 downloads Bom dia! Parece estar em ordem. Por favor, envie para [email protected] o seu arquivo ACBrLib.ini para que eu possa fazer um teste com o exemplo do C# e do Java em meu ambiente carregando ele e vendo se também recebo o mesmo erro. Não se esqueça de colocar no corpo do e-mail o link do tópico do fórum para posterior identificação. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 4 Outubro Autor Membros Pro Postado 4 Outubro Beleza, Diego! Acabei de enviar o email com os dados solicitados. 1
Consultores Diego Foliene Postado 4 Outubro Consultores Postado 4 Outubro 1 hour ago, SisTerra Software said: Beleza, Diego! Acabei de enviar o email com os dados solicitados. Arquivo recebido, faremos alguns testes e reportamos assim que descobrirmos algo. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !!
Consultores Diego Foliene Postado 4 Outubro Consultores Postado 4 Outubro 5 hours ago, SisTerra Software said: Beleza, Diego! Acabei de enviar o email com os dados solicitados. Boa tarde. Fiz um teste em meu ambiente onde carreguei as configurações do arquivo INI que disponibilizou tanto no exemplo em C# quanto no exemplo em Java. Em ambos apresentou erro. 21 hours ago, SisTerra Software said: [Principal] TipoResposta=0 CodificacaoResposta=0 LogNivel=5 LogPath= [PIXCD] Ambiente=1 NivelLog=5 Estou fazendo alguma coisa de errado? O valor 5 para ambos LogNivel e NivelLog estão incorretos. 4 é o valor mais alto em ambos os casos. Após corrigir o valor em ambos, os exemplos carregaram e salvaram as configurações sem apresentar erro. Por favor, corrija o valor e veja se ele ainda apresenta erro para você e caso afirmativo, veja se o log trás informações mais detalhadas. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 4 Outubro Autor Membros Pro Postado 4 Outubro (editado) Boa tarde, Diego! Fiz os testes alterando o nível de log para 4 e continuou apresentando o mesmo problema. O problema de Access Violation acontece aqui para mim independente dessa configuração (seja ela 4 ou 5). Fiz mais testes e passei o parâmetro 'AStatus' (PIXCD_ConsultarCobrancasCob (sourceforge.io)) como String, ao invés de Integer (como instrui a documentação) e o erro de Access Violation parou de ser apresentado. Porém, agora recebo o retorno '-10' com a mensagem de erro dizendo "CPF deve ter 11 dígitos. (Apenas números)". Quando fui conferir o que passei no parâmetro 'ACpfCnpj' notei que o valor corresponde a essa validação (estou passando o valor '42792981067') está correto. Nesse caso, o que fazer? Editado 4 Outubro por SisTerra Software
Consultores Diego Foliene Postado 4 Outubro Consultores Postado 4 Outubro 1 hour ago, SisTerra Software said: CPF deve ter 11 dígitos. (Apenas números)" Conferindo no log, é gerada uma entrada PIX_CDConsultarCobrancasCobV? Se sim, qual é o valor que consta no mesmo? O valor do parâmetro foi passado sem espaçamentos? Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 4 Outubro Autor Membros Pro Postado 4 Outubro Diego, há a seguinte entrada no log: 04/10/24 18:02:29:635 - PIXCD_ConsultarCobrancasCob(30/12/1899,30/12/1899,1,-1,,0,1699904 ) 04/10/24 18:02:29:642 - Travar 04/10/24 18:02:29:953 - Destravar 04/10/24 18:02:29:953 - ConverterStringSaida: CPF deve ter 11 d[195][131][194][173]gitos. (Apenas n[195][131][194][186]meros) -> CPF deve ter 11 d[195][173]gitos. (Apenas n[195][186]meros) 04/10/24 18:02:30:001 - SetRetorno(-10, CPF deve ter 11 dÃgitos. (Apenas números)) 04/10/24 18:02:30:007 - LIB_UltimoRetorno 04/10/24 18:02:30:009 - ConverterStringSaida: CPF deve ter 11 d[195][173]gitos. (Apenas n[195][186]meros) -> CPF deve ter 11 d[237]gitos. (Apenas n[250]meros) 04/10/24 18:02:30:098 - MoverStringParaPChar. StrLen:41, BufLen:1024 04/10/24 18:02:30:181 - Codigo:-10, Mensagem:CPF deve ter 11 d[237]gitos. (Apenas n[250]meros) 04/10/24 18:02:33:170 - TACBrLib.Destroy 04/10/24 18:02:33:171 - Finalizar 1
Consultores Diego Foliene Postado 7 Outubro Consultores Postado 7 Outubro On 10/4/2024 at 6:04 PM, SisTerra Software said: Diego, há a seguinte entrada no log: 04/10/24 18:02:29:635 - PIXCD_ConsultarCobrancasCob(30/12/1899,30/12/1899,1,-1,,0,1699904 ) 04/10/24 18:02:29:642 - Travar 04/10/24 18:02:29:953 - Destravar 04/10/24 18:02:29:953 - ConverterStringSaida: CPF deve ter 11 d[195][131][194][173]gitos. (Apenas n[195][131][194][186]meros) -> CPF deve ter 11 d[195][173]gitos. (Apenas n[195][186]meros) 04/10/24 18:02:30:001 - SetRetorno(-10, CPF deve ter 11 dÃgitos. (Apenas números)) 04/10/24 18:02:30:007 - LIB_UltimoRetorno 04/10/24 18:02:30:009 - ConverterStringSaida: CPF deve ter 11 d[195][173]gitos. (Apenas n[195][186]meros) -> CPF deve ter 11 d[237]gitos. (Apenas n[250]meros) 04/10/24 18:02:30:098 - MoverStringParaPChar. StrLen:41, BufLen:1024 04/10/24 18:02:30:181 - Codigo:-10, Mensagem:CPF deve ter 11 d[237]gitos. (Apenas n[250]meros) 04/10/24 18:02:33:170 - TACBrLib.Destroy 04/10/24 18:02:33:171 - Finalizar Bom dia! Conferindo no fonte da Lib, esta é a ordem de parâmetros para este método na Lib: PIXCD_ConsultarCobrancasCob(ADataInicio,ADataFim,CpfCnpj,ALocationPresente,status,PagAtual,ItensPorPagina) Transcrevendo a chamada do seu Log, fica: PIXCD_ConsultarCobrancasCob( <ADataInicio>: 30/12/1899, <ADataFim>: 30/12/1899, <CpfCNPJ>: 1, ALocationPresente>: -1, <status>: , <PagAtual>: 0, <ItensPorPagina>: 1699904 ) Por favor, reveja a sua rotina e confirme se os valores passados estão sendo transmitidos para a Lib. Tente fazer um teste com o exemplo também. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 7 Outubro Autor Membros Pro Postado 7 Outubro (editado) Bom dia, Diego, vou colocar aqui o trecho de código onde eu chamo essa função local cFunction := 'PIXCD_ConsultarCobrancasCob' local ADataInicio := '02/10/2024' local ADataFim := '03/10/2024' local ACpfCnpj := '42792981067' local ALocationPresente := 0 local AStatus := '1' local PagAtual := '1' local ItensPorPagina := '50' local sResposta := '' local esTamanho := 0 nResult := dllCall(self:nHandle, self:nCallingConvention, cFunction, ADataInicio, ADataFim, ACpfCnpj, ALocationPresente, AStatus, PagAtual, ItensPorPagina, @sResposta, @esTamanho) Note que a função `dllCall` que faz a comunicação com a DLL. A partir do quarto parâmetro que podemos verificar o que é passado como parâmetro para a função `PIXCD_ConsultarCobrancasCob`. O que eu não consegui entender são os valores que são apresentados no log. Note que os valores que eu passei não tem relação nenhuma com o que aparece nos logs. Eu uso essa mesma função `dllCall` para fazer chamada de todas as outras funções disponíveis na DLL, mas parece que essa em especial está com um comportamento bem fora do esperado. Aproveitei e isolei os arquivos de log somente para a execução da rotina com os valores definidos acima. Os logs estão em anexo acbr_lib_pix.log ACBrLibPIXCD-20241007.log Editado 7 Outubro por SisTerra Software 1
Consultores Diego Foliene Postado 7 Outubro Consultores Postado 7 Outubro 11 minutes ago, SisTerra Software said: O que eu não consegui entender são os valores que são apresentados no log. Note que os valores que eu passei não tem relação nenhuma com o que aparece nos logs Realmente, não tem mesmo. Um ponto que vale destacar é que as datas 30/12/1899 correspondem a data "zero", o que quer dizer que a Lib não está recebendo os valores. Não domino a sua linguagem, mas pelo que pude averiguar, ela faz uso de tipagem dinâmica. Por favor, faça um teste forçando os valores para os tipos esperados pelo método. De acordo com o GPT, ficaria assim: local cFunction := 'PIXCD_ConsultarCobrancasCobV' local ADataInicio := CTOD('02/10/2024') // Converte uma string para data local ADataFim := CTOD('03/10/2024') // Converte uma string para data local ACpfCnpj := '42792981067' local ALocationPresente := .F. // Valor booleano (False) local AStatus := '1' local PagAtual := '1' local ItensPorPagina := 50 // Valor numérico local sResposta := '' local esTamanho := 0 nResult := dllCall(self:nHandle, self:nCallingConvention, cFunction, ADataInicio, ADataFim, ACpfCnpj, ALocationPresente, AStatus, PagAtual, ItensPorPagina, @sResposta, @esTamanho) Conferindo nos exemplos disponibilizados por membros da comunidade em nosso SVN, também é possível observar que nos parâmetros de string, é utilizado este método hb_StrToUTF8 no parâmetro. Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 7 Outubro Autor Membros Pro Postado 7 Outubro Diego, tentei tratar as tipagens conforme sua sugestão e não obtive sucesso. Olhei o código de exemplo de uso da lib de PIX via JAVA, e lá notei que as datas são tipadas como double. Será que o comportamento esperado da lib não é esse (receber esses valores como numérico). Digo isso porque na documentação da lib ela diz que espera um valor do tipo 'Date', mas eu entendo que não existe um tipo primitivo para 'Date' que possa ser usado na comunicação com a DLL. Se o código de exemplo de Java está como double, acredito que esse seja o comportamento. Pode confirmar isso para mim, por favor? Se for esse o comportamento esperado, em qual formato eu devo passar esse valor numérico? Código Java de exemplo: svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Java/PIXCD/Demo/ACBrLibPIXCD.Demo/src/com/acbr/pixcd/demo/FrmMain.java Consultar métodos: btnConsultarCobrancasCobActionPerformed e btnConsultarCobrancasCobVActionPerformed
Consultores antonio.carlos Postado 14 Outubro Consultores Postado 14 Outubro Em 07/10/2024 at 16:59, SisTerra Software disse: Diego, tentei tratar as tipagens conforme sua sugestão e não obtive sucesso. Olhei o código de exemplo de uso da lib de PIX via JAVA, e lá notei que as datas são tipadas como double. Será que o comportamento esperado da lib não é esse (receber esses valores como numérico). Digo isso porque na documentação da lib ela diz que espera um valor do tipo 'Date', mas eu entendo que não existe um tipo primitivo para 'Date' que possa ser usado na comunicação com a DLL. Se o código de exemplo de Java está como double, acredito que esse seja o comportamento. Pode confirmar isso para mim, por favor? Se for esse o comportamento esperado, em qual formato eu devo passar esse valor numérico? Código Java de exemplo: svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Java/PIXCD/Demo/ACBrLibPIXCD.Demo/src/com/acbr/pixcd/demo/FrmMain.java Consultar métodos: btnConsultarCobrancasCobActionPerformed e btnConsultarCobrancasCobVActionPerformed @SisTerra Software Bom dia ! Qual PSP esta utilizando ? Ambiente homologação ou produção ? Esta utilizando a ultima versão do ACBrLibPIXCD ? Qual convenção de chamada (cdecl/stdcall) ? ACBrLib em qual versão ? x86 ou x64 ? Esta utilizando ACBrLib SingleThread ou MultiThread ? Veja que o programa exemplo esta utilizando a classe convertDateToTDateTime, implementado no ACBrLibBase.java, onde o mesmo converte um objeto do tipo Date em um double compatível com o TDateTime do Pascal. Esta com o programa exemplo 100% atualizado? 1
Consultores Solution Diego Foliene Postado 14 Outubro Consultores Solution Postado 14 Outubro Bom dia! Acredito que isso seja uma particularidade da linguagem que está consumindo a dll. Veja como é feito no exemplo em C#: public string ConsultarCobrancasCob(DateTime ADataInicio, DateTime ADataFim, string ACpfCnpj, Boolean ALocationPresente, int AStatus, int PagAtual, int ItensPorPagina) { var bufferLen = BUFFER_LEN; var buffer = new StringBuilder(bufferLen); var method = GetMethod<PIXCD_ConsultarCobrancasCob>(); var ret = ExecuteMethod(() => method(ADataInicio, ADataFim, ToUTF8(ACpfCnpj), ALocationPresente, AStatus, PagAtual, ItensPorPagina, buffer, ref bufferLen)); CheckResult(ret); return ProcessResult(buffer, bufferLen); } Por isso, se possível, faça um teste definindo a tipagem no método em que consome a Lib em sua linguagem. 1 Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 SisTerra Software Postado 13 Novembro Autor Membros Pro Postado 13 Novembro Olá, pessoal! Me desculpem pela demora para dar um feedback sobre esse assunto. Eu refiz a comunicação com a LIB, mas dessa vez em PHP, e consegui definir as tipagens corretamente conforme orientação do @antonio.carlos (no que diz respeito à forma de representar uma variável de tipo DATE para o formato que o PASCAL/DELPHI sabe lidar). No xHarbour/Harbour, linguagem que estava integrando antes, não há forma de definir os tipos das variáveis que são passadas para a LIB, então não tínhamos um bom controle sobre isso. Portanto, avaliamos que fazer a implementação em outra tecnologia seria melhor para o caso. Muito obrigado pela ajuda prestada @Diego Foliene e @antonio.carlos! 2
Consultores Diego Foliene Postado 14 Novembro Consultores Postado 14 Novembro Obrigado por reportar. Fechando. Para novas dúvidas, criar um novo tópico. 1 Diego FolieniAjude o Projeto ACBr crescer - Assine o SAC (15) 2105-0750 (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 !!
Recommended Posts