Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

  • Membros Pro
Postado (editado)

Olá a todos,

Utilizo o ACBrNFeDANFeESCPOS para imprimir cupons via ESC. Até então nunca tive problemas, mas só usei para tal impressoras Bematech dos meus clientes.

Agora estou com um modelo DR800 da Daruma e estou tendo alguns problemas, dentre os quais:

  • Cabeçalho ora aparece, ou não.
  • Rodapé com propaganda de meu sistema, ora aparece, ora não.
  • A impressão não realiza o corte, mesmo estando habilitada na mesma.

Estou colocando em anexo os comandos que uso para impressão e que servem perfeitamente nas impressoras Bematech que já usei.

Desde já agradeço a atenção

u_pdv_vendas_impressao.pas

Estou enviando também as imagens dos cupons com as diferenças citadas acima.

 

imagem1.JPG

imagem2.JPG

imagem3.JPG

imagem4.JPG

Editado por doidopb
  • Membros Pro
Postado

Perdão, na verdade eu uso o componente ACBrPosPrinter1. Creio não ter postado o tópico na categoria apropriada, se for o caso, peço que movam o mesmo.

  • Membros Pro
Postado

Oi Régys,

Não é associado a nada... Monto utilizando apenas o ACBrPOSPrinter, trata-se de cupons não fiscais.

  • Membros Pro
Postado

Então Régys, eu não tenho muita experiência com esse tipo de impressão.

Criei o módulo estudando o exemplo do ACBr, vi que existem alguns comandos para formatação, tais como "</ce><c><n>", outros para linhas "</linha_simples>" e o do corte "</corte_total>". Eu usei esses comandos do exemplo e há meses obtenho esse com esse código em impressoras Bematech.

Eu suponho que esses comandos são universais no componente e devo apenas ajustar as propriedades do mesmo para ACBrPosPrinter1.Modelo = Daruma. Não seria isso?

Eu mandei no inicio o código que uso para imprimir e que funciona normalmente nas Bematechs

  • Membros Pro
Postado (editado)

Seguinte... estava com o firmware versão final 03.00.02 que veio com a impressora, atualizei agora para a versão final 03.00.06. Parou de dar o problema de formatação.

Mas ela ainda está muito estranha. Ora ela corta, ora ela não corta, ora ela pula os espaços entre linhas que configurei, ora não pula... As vezes ela pára de imprimir no meio.

Abri o Tools e no mesmo mudei a página de código, tabela de comandos, linhas de acionamento de guilhotina e nada.

No ACBrPOSPrinter mesma coisa, mudei página de código e linhas entre cupons... Nada!!!

O que pode ser isso?

Editado por doidopb
  • Moderadores
Postado

Sinceramente não sei, eu tenho uma DR800 no laboratório para testes e sempre funcionou muito bem.

Você consegue reproduzir os erros com o demo do ACBrPOSPrinter? Se sim, me passe o passo-a-passo para que possa testar aqui da mesma forma que ai e verificar o que ocorre.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Resolvi... Com sua dica ao testar no Demo funcionou tudo 100% e reparei que a única diferença é o ControlePorta que no Demo estava desabilitado... Ao habilitar o mesmo tudo começa a dar ruim.

Desabilitei no meu programa e ficou show. Surgiu uma dúvida, pelo que li essa propriedade faz com que o componente abra e feche a porta conforme a necessidade automaticamente.

Portanto qual programação a mais devo usar nesse caso em que a porta está True para não ter problemas? Uma que reparei que tem que ter é Ativar o componente manualmente se não ele não funciona, antes com a propriedade como True eu não precisava, seria apenas essa programação a mais?

  • Moderadores
Postado

Sim, você deve abrir e fechar a porta sempre que precisar, você pode abrir ao iniciar o programa e fechar ao finalizar, o único inconveniente é que a porta fica bloqueada para outros softwares.

Mas que é estranho é, o controle porta não deveria causar efeito colateral dessa forma.

Vou fazer alguns testes depois com calma e tentar entender o que está ocorrendo.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Olá Régys,

Vamos ao testes que realizei.

Ao deixar a impressora sem o controle de Porta e sempre Ativa, tenho o problema de ocupá-la durante a execução do programa, portanto precisei tratar a abertura e fechamento da porta manualmente, com isso ela simplesmente enlouquece, tal como acontece quando o controle da porta está ativo. Por exemplo, com esse simples comando ela pára de imprimir antes do final e não corta:

dtm_banco.ACBrPosPrinter1.Ativar;
dtm_banco.ACBrPosPrinter1.ImprimirLinha('teste1');
dtm_banco.ACBrPosPrinter1.ImprimirLinha('teste2');
dtm_banco.ACBrPosPrinter1.ImprimirLinha('teste3');
dtm_banco.ACBrPosPrinter1.ImprimirLinha('teste4');
dtm_banco.ACBrPosPrinter1.ImprimirLinha('</corte_total>');
dtm_banco.ACBrPosPrinter1.Desativar;

Então fiquei na mesma... Pois mesmo no controle manual, se eu tentar controlar a porta ela comece a enlouquecer, só fica legal quando a impressora fica Ativa por toda a execução do aplicativo, similar ao que acontece no Demo.

Segui as todas orientações dadas em 

A única que EFETIVAMENTEresolveu o problema foi a do macirg, sobre a inclusão do "sleep" na funcão que desativa a porta da Unit AcbrPosPrinter. Já testei em mais de 10 impressoras DR800L novas, todas tem a mesma problemática.

Deixo esse Post em aberto para novas orientações, visto que o SLEEP é apenas uma gambiarra.

Abraços

 

  • Membros Pro
Postado

Um detalhe, substitui o sleep pelo uso da propriedade ACBrPosPrinter1.Device.SendBytesInterval com o tempo de parada = 100, conforme sua sugestão no tópico citado acima.

Funcionando 100%

  • Membros Pro
Postado

Coloquei o tempo de parada agora para 1000, pois em 100 estava falhando no final em algumas notas, não imprimindo e não cortando.

Realizarei mais alguns testes para ver se ficou OK.

  • 2 semanas depois ...
  • Membros Pro
Postado

Olá Régys,

Fez boa viagem?

Quanto as testes babou. Configurado o SendBytesInterval em 1000, fica o dia todo funcionando, mas ao menos uma vez por dia recebo o erro de timeout, a impressora pára de funcionar pelo programa e o controle de porta se perde. Tenho que fechar e abrir o meu programa para forçar a liberação da porta, além de religar a impressora.

Solução, coloquei via porta serial.. Ficou perfeito, sem a necessidade de usar SendBytesInterval. Não entendo como contigo não dá problemas.

  • Moderadores
Postado

Estranho mesmo, talvez seja questão da quantidade de uso, requisições a conexão, algo assim, pode ser que com muitas requisições o driver se perca, estranho é nenhum cliente ter reclamado, mas bem, que bom que funcionou, qualquer coisa estamos a disposição.

 

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
  • Membros Pro
Postado

Verdade... Mas o problema é que as máquinas novas que não vem com SERIAL. O ideal era descobrir que problema é esse que dá nas DR800L.

Todas as que comprei dão isso.

  • 1 mês depois ...
Postado

Acabei de comprar um Daruma DR800L já veio com Firmware Versão 03.00.01 e funcionando lindamente escolhendo EscPosDaruma com 48 col perfeita

Acredito que teremos muitos problemas com relação à versão.

Amanha vou retirar uma DR700L com versão 02.51.00, vamos verificar se existe algum firmware acima disso, e vamos tentar atualizar, pois essa DR700L, se coloco EscPosDaruma, não imprime corretamente, ela começa a imprimir e para no meio do caminho.

Eu também estou imprimindo cupom NÃO FISCAL.

Olá doidopb e Regys

Percebi que voce colocou o contudo da impresão no método Buffer.Add("informação"). Minha dúvida é qual a razão disso visto que o comando que imprime na realidade é o imprimeLinha ?

 

Marcelo

  • Membros Pro
Postado

Olá Marcelo, desculpe a ausência.

Não há nenhuma razão em questão, apenas sigo o exemplo contido na unit ACBrNFeDANFeESCPOS. Se reparar ele vai jogando tudo no Buffer e depois conclui com o comando FPosPrinter.Imprimir.

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

The popup will be closed in 10 segundos...