Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Olá pessoal, recentemente tenho enfrentado o seguinte problema com a impressora Daruma FS700:

 

Estou utilizando o ACBrECf numa aplicação de Frente de Caixa e quando ocorre um erro de comunicação com esta impressora, ela se bloqueia e só volta a funcionar normalmente após desligar e ligar novamente.

 

Para simular o problema, basta desligar e ligar a impressora rapidamente durante a impressão do cupom (pode ser a qualquer momento, abrir cupom, vender item, finalizar cupom, etc) e depois tentar fazer alguma operação, como por exemplo cancelar o cupom.

 

Faço este mesmo procedimento com uma impressora Bematech MP-4000 TH FI e o problema não acontece.

 

Tendo em vista que com a impressora Bematech não ocorre erro, existe algum procedimento específico para tratar este problema de comunicação com a Daruma usando o ACBrECF?

 

Pesquisei sobre o assunto aqui no fórum e não consegui encontrar nada a respeito.

 

Desde já agradeço se alguém puder me dar um apoio.

 

 

Obs.: Tenho uma outra aplicação que faz a comunicação via DLL e o problema não ocorre, ou seja, ao ligar e desligar a impressora ela termina de imprimir o cupom normalmente.

Postado

Olá pessoal, obrigado por responder.

 

Por favor anexe o Log para analise...

Daniel, segue anexo o Log gerado esta manhã para análise.

 

Posso te adiantar que a velocidade da porta, da impressora e do DarumaFramework.xml estão configuradas como 9600.

 

Boa noite,

 

Esta impressora esta por usb?, acho que o problema é este.

 

Carlos Filho, na verdade, inicialmente foi detectado o problema utilizando um cabo conversor Serial para USB. Porém aqui em laboratório fiz os testes usando um cabo Serial e também ocorreu o problema.

 

Em todo caso, iremos trocar este cabo conversor por um de comunicação USB nativa, pois não há razão para continuar a utilizar o cabo conversor quando a impressora permite comunicação USB nativa. Além disso, pode ser que isso resolva o problema.

 

 

Desde já agradeço a todos!

acbrlog.txt

  • Fundadores
Postado

Você está usando uma chamada a AcharPorta(), sem especificar o modelo do ECF... Isso não é bom...

 

Alguns ECFs não gostam de receber caracteres fora do padrão do protocolo que estão programados... e chegam até mesmo a travar...  Ou seja, o método AcharPorta(  )... nunca funcionou direito...

 

Repare no final do Log que ele tenta abrir como uma Sweda e não como Daruma.... 

 

Veja nos fontes o método AcharPorta( )... tudo que ele faz é setar um modelo por vez e tentar abrir ativar o ECF... no caso da Bematech, ela é o primeiro modelo da lista 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.

Postado

Analisei o código, alterei algumas rotinas, e estou utilizando os eventos de tratamentos de erros do ACBrECF, porém o problema ainda continua. A impressora só volta a funcionar quando é desligada e ligada.

 

Fico pensando se existe algum comando que pode ser enviado para que a impressora volte a funcionar sem que seja necessária a intervenção do usuário. O que será que ocorre neste processo de desligar e ligar a impressora que ela volta a imprimir de onde ela parou?

 

O mais estranho é que com a Bematech não tenho este problema, apenas com a Daruma. Porém se utilizar a dll o problema não ocorre.

 

Ativei a propriedade ReTentar do ACBrECF, e no evento ACBrECFMsgRetentar, estou fazendo o seguinte:

if (Application.MessageBox(pchar(Mensagem + #13 + #13 + 'Deseja tentar imprimir novamente?'), pchar(Situacao), MB_YESNO + MB_DEFBUTTON1 + MB_ICONQUESTION) = ID_YES) then
    Result := True;

No evento ACBrECFErrorFechaCupom, estou apenas alimentando a variável de referência Tratado com o valor True.

 

Nunca utilizei estes eventos antes, e não encontrei nenhum exemplo aqui no fórum e no ECFTeste, portanto não sei se está é a maneira correta de manipular estes eventos.

 

Fico grato se alguém puder enviar algum exemplo.

 

Daniel, anexo o log da ECF novamente para verificação. Analisando o mesmo verifiquei que o problema com o método AcharPorta foi resolvido, você tem alguma dica do que pode ser feito para tentar restabelecer a comunicação com a Daruma?

ACBrECF.txt

  • 2 semanas depois ...
  • Fundadores
Postado

O que notei de estranho é que há uma chamada a CorrigeEstadoErro antes do ACBrECF receber a resposta do ultimo comando ou o TimeOut, isso parece ser algo que a sua aplicação está fazendo...

 

-- 08:55:12:765 EfetuaPagamento( 01 , 10 , , 0, 0 )
                TX -> [FS]F[209]01000000001000[255]t
-- 08:55:26:125 CorrigeEstadoErro
----------------- ERRO -----------------
Componente ACBrECF ocupado
Aguardando resposta do comando anterior
----------------------------------------

Daruma: Falha no Envio do CMD. Tentativa: 1 - Erro: 0 - Estendido: 0 -> Erro não documentado Cod.Aviso: 0
   08:55:26:140 RX <-

 

 

Você consegue informar um passo a passo de como reproduzir esse erro usando o 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.

  • 1 ano depois...
  • Este tópico foi criado há 3483 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.