Ir para conteúdo
  • Cadastre-se

dev botao

DR800 - Impressão via ESC POS


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

Recommended Posts

  • Membros Pro

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
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Neste caso, você não está enviando algum caracter não imprimível ou que esteja associado a algum comando EscPOS? Sempre que a impressora recebe algo desse tipo no texto é costume dar algum problema, o ideal é enviar somente caracteres ASCII.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Faça um teste, coloque a propriedade ACBrPOSPrinter1.IgnorarTags igual a True, ele vai ignorar todas as tags que você usou e imprimir o texto somente.

Com isso veremos se é algum problemas em alguma tag ou se é o texto enviado que possui o problema.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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
Link para o comentário
Compartilhar em outros sites

  • Moderadores

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
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

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
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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

 

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

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.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

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
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

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

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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.

Link para o comentário
Compartilhar em outros sites

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