Ir para conteúdo
  • Cadastre-se

dev botao

ACBrETQ - Implementação para EPL2


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

Recommended Posts

  • Membros Pro

Olá Pessoal,

Conclui a implementação de uma nova classe para o ACBrETQ para impressão em impressoras Zebra / EPL2, com os principais métodos para impressão de texto, código de barras, caixas e linhas. Pelos testes que realizei está funcionando e atende a minha necessidade neste momento.

Peço ao Daniel que na medida do possível analise o código para inclusão no projeto e assim poder disponibilizar aos demais. Aos que quiserem testar fiquem à vontade ;-) , com certeza dá pra melhorar.

Precisei redeclarar alguns métodos com overload devido à necessidade de parâmetros com tipos diferentes dos atuais e em outros acrescentar alguns parâmetros (com valores default). Não sou muito bom em OOP mas quebra o galho :-) e acredito que as alterações feitas não afetarão o funcionamento para o padrão Ppla ou o ZPLII.

Att.

ETQEpl2.zip

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Olá José Luís Schiavo,

Muitíssimo obrigado pela sua colaboração... Estive analisando os fontes...

1 - O método: ImprimirBarras recebeu uma sobrecarga apenas por causa da mudança dos Parâmetros:

LarguraBarraLarga, LarguraBarraFina: Char -> String...

Acho que podemos modificar o método original, pois não quebraria as aplicações existentes uma mudança de Char para String... e tratamos nas classes já existente usando algo como: LarguraBarraLarga[1].

2 - O que vem a ser: VerticalY1, HorizontalX1, VerticalY2, HorizontalX2 no método ImprimirCaixa ? (porque precisamos de Y1 e Y2 e X1 e X2 ?)

3 - AvancoEtq e EspacoEtq não seriam a mesma coisa ? Essa impressora não lê o GAP da etiqueta ?

4 - O Parâmetro Resolucao do método Imprimir, parece estar mais relacionado ao Espaço da etiqueta do que com a Resolução... pois ele não compoem a String do comando enviado... Ele só ocorre em:

  if Resolucao = 0 then
Resolucao := 203; // 203 dpi = padrão

if Resolucao = 203 then
begin
if EspacoEtq EspacoEtq := 16;
end
else begin // 300 dpi
if EspacoEtq EspacoEtq := 18;
end;
[/code] 5 - Notei alguns inconsistências de validação como por exemplo:
[code] if (Vertical 999) then
Raise Exception.Create(ACBrStr('Informe um valor entre 0 e 762 para Vertical'));

O máximo é 762 ou 999 ?

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

  • Membros Pro

Olá Daniel,

Dede já agradeço a sua atenção.... mas é o seguinte... fiz tudo muito na corrida e algumas inconsistências se devem em parte ao famoso "copy/paste" hehe

Mas vamos às dúvidas:

1 - O método: ImprimirBarras recebeu uma sobrecarga apenas por causa da mudança dos Parâmetros:

LarguraBarraLarga, LarguraBarraFina: Char -> String...

Acho que podemos modificar o método original, pois não quebraria as aplicações existentes uma mudança de Char para String... e tratamos nas classes já existente usando algo como: LarguraBarraLarga[1].

Ref. ao método ImprimirBarras deixo a teu critério pois não quis mexer muito nos métodos originais com receio de bagunçar o que já está funcionando.

2 - O que vem a ser: VerticalY1, HorizontalX1, VerticalY2, HorizontalX2 no método ImprimirCaixa ? (porque precisamos de Y1 e Y2 e X1 e X2 ?)

Quanto ao método ImprimirCaixa, no EPL2 difere um pouco dos demais, sendo que requer apenas dois pontos com coordenadas X e Y e a espessura da linha que é aplicada tanto para horiz. qto. para vert., cfe. pode ser obsevado no manual:

Syntax Xp1,p2,p3,p4,p5

Parameters

p1 = Horizontal start position (X) in dots.

p2 = Ver ti cal start po si tion (Y) in dots.

p3 = Line thick ness in dots.

p4 = Horizontal end position (X) in dots.

p5 = Ver ti cal end po si tion (Y) in dots.

Example: N¿

X50,200,5,400,20¿

X200,50,10,20,400¿

P1¿

Até acho que poderíamos aproveitar alguns parâmetros do Ppla (ex.) mas sobrariam parâmetros que não estão definidos com valores default. Talvez fosse o caso de flexibilizar a parametrização desse método no Ppla e ZplII para poder omitir alguns.

3 - AvancoEtq e EspacoEtq não seriam a mesma coisa ? Essa impressora não lê o GAP da etiqueta ?

Talvez eu tenha interpretado mal mas utilizei AvancoEtq como sendo a altura da etiqueta.

EspacoEtq seria o espaçamento vertical entre uma etiqueta e outra. A impressora detecta o GAP sim, porém, não obtive sucesso nos meus testes usando o automático, sempre o espaçamento entre uma linha de etiquetas e outra ficava diferente bagunçando a impressão.

4 - O Parâmetro Resolucao do método Imprimir, parece estar mais relacionado ao Espaço da etiqueta do que com a Resolução... pois ele não compoem a String do comando enviado...

Este parâmetro é utilizado com o comando "Q" que seta o GAP e a altura da etiqueta. No caso do GAP, dependendo da resolução da impressora o valor mínimo tem uma pequena variação cfe. trecho do manual:

p2 = Gap length or thick ness of black line

Range: 16-240 (dots) for 203 dpi printers

[18-240 (dots) for 300dpi printers]

O objetivo foi consistir o valor mínimo para o GAP e para isso precisei da resolução da impresora.

5 - Notei alguns inconsistências de validação como por exemplo:

Eis o problema do copy/paste rsrs... na verdade não encontrei no manual os valores máximos para estes parâmetros e acabou ficando como está. Daria pra remover estas consistências ou então setar para 999 como já ocorre no Ppla, e serviria apenas para evitar valores absurdos, apesar de que, acho que 999 já é absurdo para a altura.

Permaneço à disposição.

Att.

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Bom dia caros.

Estou com um problema e gostaria muito da ajuda de vcs.

Estou utilizando o componente ACBrETQ pra fazer impressões em uma argox, ja tava tude certinho e tals, ai eu precisei usar a ZEBRA, e peguei essa classe da EtqEpl2 pra imprimir, porém, quando eu passo os parametros, ela imprime tudo desalinhado.

Eu gostaria de saber, se as posições que eu devo usar nela mudaram, pois eu vo imprimir uma etiqueta simples (gondola) com os parametros usados no projeto da acbr, que imprime certinho, mas qnd uso os mesmos pra epl2 na ZEBRA, não imprime correto.

Vcs poderiam me ajudar?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Vc. precisa passar os parâmetros de posicionamento corretamente (x,y) de cada texto a ser impresso.

Abaixo código modificado do ETQTeste com testes que fiz.

procedure TFPrincipal.bEtqSimplesClick(Sender: TObject);

begin

with ACBrETQ1 do

begin

Modelo := TACBrETQModelo(cbModelo.ItemIndex);

Porta := cbPorta.Text;

LimparMemoria := ckMemoria.Checked ;

Ativar;

ImprimirTexto(orNormal, 2, 2, 2, 190, 5, 'BISCOITO MARILAN RECH 335G');

ImprimirTexto(orNormal, 2, 2, 1, 158, 5, 'CHOC BRANCO');

//ImprimirBarras(orNormal, 'F', '2', '2', 32, 0, '7896003701685', 90);

ImprimirTexto(orNormal, 3, 3, 2, 15, 300, 'R$');

ImprimirTexto(orNormal, 3, 4, 4, 15, 450, '20.59');

Imprimir(StrToInt(eCopias.Text), StrToInt(eAvanco.Text));

Desativar;

end;

end;

procedure TFPrincipal.bEtqCarreirasClick(Sender: TObject);

begin

with ACBrETQ1 do

begin

Modelo := TACBrETQModelo(cbModelo.ItemIndex);

Porta := cbPorta.Text;

Avanco := StrToInt(eAvanco.Text);

LimparMemoria := ckMemoria.Checked ;

Ativar;

// P/ formulário de 3 colunas

ImprimirTexto(orNormal, 2, 1, 2, 4, 30, 'BISCOITO REC 335G');

ImprimirTexto(orNormal, 2, 1, 1, 38, 30, 'CHOC BRANCO');

ImprimirCaixa(58,25,135,248,2);

ImprimirBarras(orNormal, 'E30', '2', '2', 62, 33, '7896003701685', 55);

//ImprimirLinha(65,45,160,5);

ImprimirTexto(orNormal, 2, 1, 2, 4, 287, 'BISCOITO RECH 335G');

ImprimirTexto(orNormal, 2, 1, 1, 38, 287, 'CHOC BRANCO');

ImprimirCaixa(56,281,140,508,4);

// ImprimirBarras(orNormal, 'E30', '2', '2', 64, 290, '7896003701685', 55);

ImprimirLinha(70,295,150,15);

ImprimirTexto(orNormal, 2, 1, 2, 4, 547, 'BISCOITO RECH 335G');

ImprimirTexto(orNormal, 2, 1, 1, 38, 547, 'CHOC BRANCO');

ImprimirCaixa(56,538,144,767,8);

//ImprimirBarras(orNormal, 'E30', '2', '2', 66, 546, '7896003701685', 55);

ImprimirLinha(80,550,145,25);

Imprimir(StrToInt(eCopias.Text), StrToInt(eAvanco.Text),16,203);

Desativar;

end;

end;

Att.

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois ...
  • Fundadores

Finalmente consegui um tempo para analisar os fontes sugeridos e a melhor maneira de adiciona-los ao projeto...

Aproveitei que apareceu uma Zebra aqui na empresa e consegui testar...

Apliquei as seguintes modificações nos fontes sugeridos

- Adicionei suporte a unidades de medida em Milímetros e Polegadas

- Removi a necessidade de informar o tamanho da etiqueta no método Imprimir... pois li nos manuais que todos equipamentos compatíveis com EPL2, são dotados de sensores que detectam o "GAP" da etiqueta.

- Modifiquei o método de impressão de caixa para ficar compatível com a assinatura atual

No processo... acabei fazendo uma ampla reforma no ACBrETQ e em suas classes... as modificações estão detalhadas no aqruivo: ACBrSerial-change-log.txt

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

Bom Dia José!

Esse trecho q vc postou:

procedure TFPrincipal.bEtqSimplesClick(Sender: TObject);

begin

with ACBrETQ1 do

begin

Modelo := TACBrETQModelo(cbModelo.ItemIndex);

Porta := cbPorta.Text;

LimparMemoria := ckMemoria.Checked ;

Ativar;

ImprimirTexto(orNormal, 2, 2, 2, 190, 5, 'BISCOITO MARILAN RECH 335G');

ImprimirTexto(orNormal, 2, 2, 1, 158, 5, 'CHOC BRANCO');

//ImprimirBarras(orNormal, 'F', '2', '2', 32, 0, '7896003701685', 90);

ImprimirTexto(orNormal, 3, 3, 2, 15, 300, 'R$');

ImprimirTexto(orNormal, 3, 4, 4, 15, 450, '20.59');

Imprimir(StrToInt(eCopias.Text), StrToInt(eAvanco.Text));

Desativar;

end;

end;

é o mesmo que ja tinha usado na argox...

porém qnd eu uso pra imprimir na zebra, ele sai desfigurado...

e nas posições, ja tentei mtas posições, e todas elas começam imprimindo quase no meio da impressora....

vc pode passar pra mim parametros q vc usou pra imprimir a etiqueta Simpre (Gondola) p/ impressora ZEBRA?

Agradeço desde já!

Link para o comentário
Compartilhar em outros sites

  • Fundadores

A orientação de coordenadas dos equipamentos EPL2 é inversa a dos equipamentos PPLA... Ou seja, não há como manter o mesmo código de etiqueta para os 2 modelos...

Atualize os seus fontes pelo SVN e estude o Demo... O exemplo foi revisto para demonstrar a PPLA e EPL2

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

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