Ir para conteúdo
  • Cadastre-se

dev botao

Dados última redução Z Epson T900F


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

Recommended Posts

Postado

Bom dia, 

Após atualização recente dos fontes, começamos a obter erro na função que retorna os dados da redução Z  para impressoras Epson T900F. Fiz o teste da função com uma Bematech 4200 FI II e uma Daruma e ambas trouxeram corretamente os dados da última redução, sendo um problema retornado apenas pelo modelo da Epson. Gostaria de saber se alguém teve um problema similar com esse modelo de ECF. Fiz o teste pelo ECF Teste(Variáveis > Mapa Resumo > Dados da última Redução Z) , apenas acionado a função. Verifiquei também que o erro é apresentado a partir da revisão 14219 de 30/11 na unit ACBrECFEscECF. Em anexo log gerado pelo ECF.

Desde já agradeço por possíveis sugestões para solução do problema,

Att.

Scheila

 

acbrlog.txt

  • Fundadores
Postado

Aparentemente o ECF respondeu de forma incompleta... (mas respondeu)

Citar

-- 15/01 10:15:18:586 DadosReducaoZ
-- 15/01 10:15:18:587    xEPSON_Send_From_FileEX -> 1A|9|0|
-- 15/01 10:15:18:633       Resp: 0  Retorno:0|3|0|0|144|15012018101656V||
-- 15/01 10:15:18:734     RX <- 0|3|0|0|144|15012018101656V||

Notei que você está usando USB, como porta... (isso deixa o trabalho de comunicação com a DLL da Epson)

  • Por favor verifique se você está usando a última versão da DLL da Epson...
  • Teste usando uma porta COM... No caso da Epson, você precisará instalar o "TM Virtual Port Driver"
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.

Postado

Boa tarde, 

Estou utilizando versão 4.9 da dll, mesma versão disponibilizada na pasta de dll pelo ACBr. É interessante que funcionava muito bem até a revisão que eu citei, com a porta USB. Fiz um teste na função GetDadosUltimaReducaoZ da ACBrECFEscECF, onde foi alterado o trecho adicionando número de tentativas para  a mensagem de erro. Não consigo debugar melhor para apontar exatamente a causa, pois o ecf está no cliente, mas deu pra checar que no formato antigo conseguia receber a resposta do ECF. 

De:

RetornaInfoECF( '17|'+IntToStr(ECFCRZ) ) ;
  // DEBUG
  //WriteToTXT('C:\TEMP\REDZ.TXT', EscECFResposta.Params.Text, False, False);
  if (UpperCase(copy(EscECFResposta.Params.Text, 0, 5)) = 'ERRO:')  then
    raise EACBrECFERRO.Create(ACBrStr(EscECFResposta.Params.Text)) ;

Para: 

Tentativas := 0;
  repeat
    RetornaInfoECF( '17|'+IntToStr(ECFCRZ) ) ;
    // DEBUG
    //WriteToTXT('C:\TEMP\REDZ.TXT', EscECFResposta.Params.Text, False, False);
    if (UpperCase(copy(EscECFResposta.Params.Text, 0, 5)) = 'ERRO:')  then
      raise EACBrECFERRO.Create(ACBrStr(EscECFResposta.Params.Text)) ;
    Inc( Tentativas );
  until (EscECFResposta.TBR > 0) or (Tentativas > 2);

  if (EscECFResposta.TBR = 0) then
    raise EACBrECFERRO.Create(ACBrStr('Erro ao obter Dados da Redução Z: '+IntToStr(ECFCRZ))) ;

Vou testar o driver sugerido e verificar se há alguma alteração.

Att,

Scheila

  • Fundadores
Postado

A modificação promovida, não parece ser a origem do problema...  (a não ser que eu não tenha percebido algo)   Inclusive no seu Log, não aparenta ter ocorrido o Loop (não há dois envios consecutivos, do comando "26|17")

Porque você acha que remover o loop de verificação, resolveria o problema ?

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.

Postado

Não consegui verificar exatamente porque ele acaba caindo no raise 'Erro ao obter Dados da Redução Z',  pois não consegui debugar propriamente, não tenho esse ecf para desenvolvimento o que dificulta pra mim. Talvez  EscECFResposta.TBR seja zerada em algum momento pelo ecf,  ou talvez algum campo em específico não retornou corretamente o resultado invalidando o conjunto todo de informações. Não sei, pode ser que tenha algo mais influenciando, e acabou estourando ali, o que eu consegui testar foi uma versão com o loop e uma versão sem, pois de acordo com as alterações realizadas na unit na revisão alteração nessa função teria sido só essa. Na versão sem o loop o comportamento era normal, retornando os dados corretamente e com o loop gerava a exceção. E só com esse modelo, com outras marcas não ocorre a exceção. 

  • Curtir 1
  • Fundadores
Postado
1 hora atrás, Scheila Dornelles disse:

EscECFResposta.TBR seja zerada em algum momento pelo ecf,

Humm.. isso pode ser verdade... essa informação realmente não era verificada antes...

Mas em todo caso, seria um erro da DLL, compor a resposta dessa maneira... pois TBR é o "Tamanho do Bloco de Resposta", ou seja, seria quantos bytes haverá no Retorno... Reanalisando o log, com essa possibilidade...

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.

  • Fundadores
  • Solution
Postado

Bingo... era isso mesmo... Quando usando a comunicação pela DLL, ela na verdade não retorna o TBR.. e a classe do ACBr, não completava a resposta com essa informação...

Enviei uma possível correção ao SVN

Citar

-- ACBrECFEscECF --
[-] Correção em GetDadosUltimaReducaoZ, da Epson TM900F, quando usando "USB" na
    porta. Não era capaz de efetuar a leitura

Obrigado pela analise e pelo Bug Report

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

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