Ir para conteúdo
  • Cadastre-se

dev botao

AcbrECF_Mecaf!


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

Recommended Posts

Boa tarde!

Pessoal estou com um problema com as ecf Mecaf, so que o interessante e que sao em funcoes diferentes.

ao solicitar esta funcao:

AcbrEcf.NumCOO (esperando comando anterior) cai na except ai nao concigo pegar o numero do cupom.

eo mais interanssante que isso sempre fuincionou ja uso o acbr a mais de 2 anos..

Alguem ja passou por isso?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Tive problemas com uma Mecaf

fui obrigado a programa usando a dll dela

mas o caso foi que a ecf sofreu uma queda de luz e queimou

depois que retornou da assistencia só com a dll pra funcionar

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Anexo o LOG gerado pelo ACBrECF... pode ser (que por algum motivo) o equipamento esteja enviando algum "lixo" no final do protocolo...

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

  • Fundadores

O log não ajudou muito... :(

O que achei estranho foi o fato do Log não registrar nem o comando enviado... é como se o ACBrECF nao estivesse enviando comando algum para o ECF...

Você poderia testar com o demo ECFTeste ?

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

  • Consultores

O que eu achei mais interessante é pra um comando simples não deveria ocorrer esse tipo de erro.

O log tem 3 erros de "Aguardando resposta do comando anterior" para apenas duas requisições de NumCOO.

Precisa mesmo testar com o ECFTeste para eliminar possibilidades de outras concorrências.

Caso não funcione, poderia testar com o Device.processmessages := false?

EDIT: Ahh não, acabei de ver que são 4 erros. Dois para cada requisição de NumCOO. :?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Ok. ja fiz os teste com o DemoEcf e acredite executa a funcao do NumCOO correto.

e pq que no meu pdv quando faço isso ta dando erro...

o mais engracado que nunca tive este problema antes, eu tenho uma versao mais antiga de 1 mes atras, e funciona..

eo pior é que esta com os mesmos parametros de requisição. que mostra no log. que enviei..

pessoal to Ficando maluco, meu cliente tem 5 ecf destas...

Alguma outra dica?

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Observando melhor o Log, notei que o erro é:

Componente ACBrECF ocupado

Aguardando resposta do comando anterior

Isso só ocorre quando você faz solicitações simultâneas ao ACBrECF... Como por exemplo, ler alguma informação em um Timer ou Thread

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

vou colocar o trecho do codigo que é onde esta dando o erro..

Esta funcao le os dados necessarios para o PDV, apos ativar o componente ECF

=============================


function LerDadosECF : Boolean;

begin

  try

    Splash.LbSplashP.Caption := 'Lendo Dados do ECF Aguarde...';

    Splash.LbSplashP.Refresh;

    Splash.ProgressBar1.Position := 200;

    Result    := False;


    {DADOS ECF GLOBAL}

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GECF_NUMERO := Frm_MainP.ImpFiscal.NumECF;

      end;

    except

    end;

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GECF_LOJA := Frm_MainP.ImpFiscal.NumLoja;

      end;

    except

    end;

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GECF_SERIE := Frm_MainP.ImpFiscal.NumSerie;

      end;

    except

    end;

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GECF_DATA := Frm_MainP.ImpFiscal.DataHora;

      end;

    except

      GECF_DATA := Now;

    end;

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GNCF := StrToInt(Frm_MainP.ImpFiscal.NumCOO);

      end;

    except

      GNCF := StrToInt(Frm_MainP.ImpFiscal.NumCupom);

    end;

    try

      if (Frm_MainP.ImpFiscal.EmLinha(100)) then

      begin

        GNCF := StrToInt(Frm_MainP.ImpFiscal.NumCOO);

      end;

    except

    end;


[b]OBS: aqui é que jo nos label para mostrar em tela[/b]


    Frm_MainP.LbNecfP.Caption   := Completa_Esquerda(copy(GECF_NUMERO,2,3),3,'0');

    Frm_MainP.LbcfP.Caption     := Completa_Esquerda(IntToStr(GNCF),6,'0');

    Frm_MainP.LbNpdvP.Caption   := Completa_Esquerda(NomeComputador,3,'0');

    Frm_MainP.LbDataP.Caption   := DateToStr(GECF_DATA);

    Frm_MainP.LbHoraP.Caption   := copy(TimeToStr(Time),1,5);


    Splash.LbSplashP.Caption := 'Inicializando Sistema [ pDV1 - Cupom Fiscal - Verssão - '+Frm_MainP.LbVersaoOS.Caption+' ]';

    Splash.LbSplashP.Refresh;


    Result := True;


  except

  end;

end;

=====================================

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não parece ser esse o problema... toda a rotina está bem "procedural"... um comando após o outro...

Rode o programa em modo de Debug...

Quando ocorrer o exception, chame o CallStack e acompanhe qual a rotina que chamou o método ACBrECF.NumCupom

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.

Descobri uma caisa interessante. olha so.

dentro desta funcao do evento do componente: OnMsgPoucoPapel, estava executando

a seguinte rotina

try

Application.ProcessMessages;

Result := False;

if (AcbrECF.PoucoPapel) then

begin

Frm_MainP.LbMretornoECFp.Font.Color := clRed;

Frm_MainP.LbMretornoECFp.Caption:= 'ATENÇÃO... POUCO PAPEL NA ECF';

Frm_MainP.LbMretornoECFp.Refresh;

end;

except

end;

Tudo bem , comentei o codigo, o resultado é que leu o numCOO. certo agora, quando volto o codigo erro novamente.

eo mais interessante é que so acontece com esta ecf.. as outras estao exatamente igual.. e funcionando.

Pergunto?

1 O que pode estar errado com este codigo. para esta ecf. falta alguma informacao..

Aguardo....

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Esse método será disparado pelo ACBrECF dentro do contexto da execução de um comando... ou seja, ele ainda nao concluiu a execução do comando...

Por esse motivo, não é correto fazer novas chamadas ao ACBrECF dentro dele... (apesar de não falarmos nada sobre isso nos fontes do Demo)

Não há necessidade alguma de chamar ACBrECF.PoucoPapel nesse evento... Se o ACBrECF disparou ele, é porque realmente "PoucoPapel = True"

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.

mais uma coisa, que percebi tanto no demo quanto no meu pdv

No evento do OnPoucoPapel do Componente, coloquei so isso para mosntrar em tela. blz

LbMretornoECFp.Font.Color := clRed;

LbMretornoECFp.Caption:= 'ATENÇÃO... POUCO PAPEL NA ECF';

LbMretornoECFp.Refresh;

Testei com uma impressora bematech MFD e Matricial, funciono correto a menssagem de pouco papel na tela.

mas agora com a mecaf, toda vez que abro um cupom ele entra na funcao e aparece a menssagem de pouco papel.

mesmo tendo papel na ecf.

isso ocorre no demo Tambem, mas é so com a mecaf.

sera que isso pode ser um bug.

no agardo.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

é muito comum erro no sensor... mas em todo caso isso já aconteceria nos fontes anterior... não modificamos nada nos fontes da Mecaf a um bom tempo, verifique no Log do SVN

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

  • 1 mês depois ...

Olá Daniel_FC, no Mecaf, faça essa alteração pra parar de perturbar com essa mensagem de pouco papel: na função: Function TACBrECFMecaf.EnviaComando_ECF( cmd : AnsiString ) : AnsiString ;

DE:

       61 : ErroMsg := 'Troco não realizado' ;

       63 : ErroMsg := 'Impressora não está respondendo' ;

     else

        ErroMsg := 'Erro retornado pelo ECF: '+IntToStr(Erro) ;

     end

  else

     { Verifica se possui erro "Pouco Papel" }

     if (LeftStr(Result,1) = '+') and (Erro = 1) then

        DoOnMsgPoucoPapel ;


  if ErroMsg <> '' then

PARA:

       61 : ErroMsg := 'Troco não realizado' ;

       63 : ErroMsg := 'Impressora não está respondendo' ;

     else

        ErroMsg := 'Erro retornado pelo ECF: '+IntToStr(Erro) ;

     end;

(*

  else

     { Verifica se possui erro "Pouco Papel" }

     if (LeftStr(Result,1) = '+') and (Erro = 1) then

        DoOnMsgPoucoPapel ;

*)

  if ErroMsg <> '' then

Link para o comentário
Compartilhar em outros sites

  • Consultores

Mas isso não impediria o ECF de retornar a mensagem de pouco papel?

Ela é importante, mesmo sendo chata.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Consultores

Não sei se o Daniel e os outros usuários vão concordar, mas se estava travando o funcionamento do programa, então seria melhor arrumar outro jeito ao invés de comentar esse código.

A mensagem de "Pouco Papel" precisa ser retornada para o usuário.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

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