Ir para conteúdo
  • Cadastre-se

dev botao

Arquivomf_Dll


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

Recommended Posts

Saudações:

 

Estou com um problema ao implementar a rotina ArquivoMF_DLL(): Ela sempre retorna erro -1.

 

- ECF utilizado FS600

- Baixei as versões mais recentes das DLLs no site da DARUMA.

- ACBR Atualizado HOJE.

- Testei com o aplicativo DarumaFrameWork.exe e gerou o arquivo normalmente.

- Testei sob XE2 e XE4.

- Utilizo Windows 8.

 

testei a função ArquivoMFD_DLL e esta rodou normalmente.

 

Como não havia no ECFTeste um menu com esta opção, implementei no ECFTeste um menu "ARQ MF" com o código abaixo:

 

-----------------------------

var
  arquivo: string;
begin
  Arquivo := 'teste.mf' ;
  if not InputQuery('Arquivo da MF DLL',
                    'Nome Arquivo:', Arquivo ) then
     exit ;
  ACBrECF1.ArquivoMF_DLL(Arquivo);
end;
------------------------------
 
Na tela do ECFTeste segue:
 
COMANDO ENVIADO:
 #29#8#13
 
RESPOSTA: 
- + - + - + - + - + - + - + - + - + - + - + -
Erro ao executar rEfetuarDownloadMF_ECF_Daruma.
Cod.: -1 Erro do Método.
:#13
- + - + - + - + - + - + - + - + - + - + - + -

 

Em anexo o log do ACBR.

 

Agradeço a atenção.

 

Att,

 

Alfredo Koplin.

acbrlog.txt

Link para o comentário
Compartilhar em outros sites

  • Fundadores

O LOG não ajuda muito nesses casos, pois o controle é da DLL...

 

O que significa -1 no retorno dessa função da DLL ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Daniel, Grato pela resposta:

 

O Erro -1, retornado pela dll tanbém não é muito claro: A resposta extendida é "Erro do Método.".

Andei debugando para acompanhar o código e a unica diferença que vi:

 

xrEfetuarDownloadMF_ECF_Daruma: function(pszNomeArquivo:String): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF} ;

 

Nas demais funções, os parâmetros estão declarados como AnsiString.

Claro que eu mudei o tipo do parâmetro na função e não resultou também.

 

Tenho a impressão que em algum lugar o fato de ser string ou ansistring esta fazendo isso.

 

Também comparei o xml da daruma e não vi nada diferente entre o xml que configura o DarumaFramework e o ACBR. Inclusive fiz a troca de ambos. Sempre pelo DarumaFrameWork, o arquivo é gerado e o retorno é [1] (sucesso).

As dlls da Daruma são as mesmas em ambas aplicações. Coloquei inclusive o DarumaFramework junto ao ECFTeste. Não tenho réplica das dlls em nenhum outro local. Sempre trabalho com as dlls junto ao exe.

 

Fiz o seguinte:

Ativei o modo auditoria no XMl, executei o comando e to mandando os logs, gerado pela dll. Talvez ajude a entender o erro.

 

Vou continuar pesquisando pra ver se acho o gato. Mas se Vocês conseguirem algum progresso, vamos conversando.

 

Att,

 

Alfredo Koplin.

 

72392Auditoria_ECF.txt

Auditoria_ECF.txt

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Humm... parece que ele não foi capaz de abrir a porta serial...

 

>> fnTentarAbrirSerial(1)
26/07/2013-12:42:09:840:                                    G_stPortaSerial - INVALID_HANDLE_VALUE
26/07/2013-12:42:09:844:                                    Criou o handle - fnTentarAbrirSerial
26/07/2013-12:42:09:849:                                    G_stPortaSerial - D_RET_ERRO_ABRIR_RS232
26/07/2013-12:42:09:853:                                << fnTentarAbrirSerial - RETORNO NUMERO: -5

 

O estranho é que a rotina de abertura de porta pela DLL é a mesma para todas as chamadas do ACBrECF

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

Daniel, você matou a charada!

 

Fiz isso aqui: na unit ACBrECF linha 3985

 

procedure TACBrECF.ArquivoMF_DLL(NomeArquivo: AnsiString);
begin
   TestaSeE_MFD ;
 
   ComandoLOG := 'ArquivoMF_DLL( ' + NomeArquivo + ' ) ';
   if fsECF.Ativo then
      fsECF.Desativar;
   fsECF.ArquivoMF_DLL( NomeArquivo ) ;
end;
 
 
e a função funcionou.
 
Como acredito que exista uma rotina que centralize a desativação da serial, vou deixar ao seu encargo.
 
Quando tiver uma correção me informe.
 
Att,
 
Alfredo Koplin.
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Boa pegada...

 

Sim, está faltando um "refactoring" nessa classe... Assim que tiver um tempo verifico... (se o Regys não acabar fazendo isso antes :) )

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Link para o comentário
Compartilhar em outros sites

  • Solution

Beleza, Daniel.

 

Vou colocar o post como resolvido e aguardar atualização.

 

Aproveitando, eu postei um tópico sobre o ACBR Boleto e não houve um feedback. Se puder, dê um toque na galera responsável pelo ACBRBoleto para dar uma olhada. 

 

Parabéns a todos pelo ótimo trabalho com o ACBR.

 

Att,

 

Alfredo Koplin.

 

Alfredo Koplin.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3940 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.