Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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?

  • Fundadores
Postado

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.

  • Consultores
Postado

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.
Postado

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?

  • Fundadores
Postado

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.

Postado

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;

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

  • Fundadores
Postado

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.

Postado

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....

  • Fundadores
Postado

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.

Postado

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.

Postado

anfm!

Tb achei isso mas é muinta conhicidencia, pq tenho 5 clientes diferente com estas ecf. e todos dao a mesma coisa, igualzinho.

tem que ter algo de errado no fonte da Mecaf que nao concigo visualizar..

  • Fundadores
Postado

é 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.

  • 1 mês depois ...
Postado

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

  • Consultores
Postado

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.
Postado

Olá Elton, exatamente pra impedir, se não me engano essa mensagem de POUCO PAPEL parava o funcionamento do Programa, por isso a removi, mas sinceramente não me recordo mais, na época eu verifiquei que ela gerava um ERRO e não somente um AVISO, "acho" que foi isso.

  • Consultores
Postado

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.
Postado

Elton, não esquenta com isso não, não precisa alterar no fonte do ACBr original, eu tenho esse controle aqui comigo, sempre que atualizo o ACBr eu vou lá e altero na Mecaf, eu fazia isso com a Daruma Mach pra vender truncado, mas isso foi resolvido e não preciso mais me preocupar com a Daruma.

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