Fórum Linguagem EPL-2 - Zebra TLP 2844 #283522
31/05/2005
0
Srs, algum de vcs sabem como utilizar a linguagem EPL utilizada nas impressoras de código de barras ZEBRA TLP 2844? Preciso desenvolver uma aplicação que gere uma etiqueta com códigos de barras para serem impressas nesta impressora. Não sei nem por onde começar, adoraria se alguém pudesse me dar uma dica.
Programalista.
Programalista.
Programalista
Curtir tópico
+ 0
Responder
Post mais votado
31/05/2005
Colega,
Utilizo o seguinte código para imprimir etq de código de barras, 3 carreiras, em impressoras zebra:
Como vc poderá notar utilizo o componeente TComport para cominicação com a zebra. Utilizo um string grid onde é adicionados os produtos e qtd que o usuário deseja imprimir.
[/code]
procedure TfrmEtiquetas.EtiquetaProdutoBarrasSerial;
var
Qtd, i: Integer;
begin
ComPort1.Open;
for i := 1 to stringgrid1.rowcount - 1 do
begin
if stringgrid1.Cells[3, i] <> EmptyStr then
begin
if TipoImpressoraEtq = ´ZEBRA´ then
begin
ComPort1.WriteStr(´^XA´);
Qtd := Trunc(strtoint(stringgrid1.Cells[3, i]) / 3);
if Qtd < 3 then
Qtd := 3;
ComPort1.WriteStr(´^PQ´ + Trim(IntToStr(Qtd)) + ´,,,N´);
ComPort1.WriteStr(´^FO05,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO30,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^FO283,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO308,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^FO563,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO588,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^XZ´);
end;
end;
end;
ComPort1.Close;
LimparGrid;
end;
function AbreviaNome(Nome: string): string;
var
Nomes: array[1..20] of string;
i, TotalNomes: Integer;
begin
Nome := Trim(Nome);
Result := Nome;
{Insere um espaço para garantir que todas as letras sejam testadas}
Nome := Nome + #32;
{Pega a posição do primeiro espaço}
i := Pos(32, Nome);
if i > 0 then
begin
TotalNomes := 0;
{Separa todos os nomes}
while i > 0 do
begin
Inc(TotalNomes);
Nomes[TotalNomes] := Copy(Nome, 1, i - 1);
Delete(Nome, 1, i);
i := Pos(32, Nome);
end;
if TotalNomes > 2 then
begin
{Abreviar a partir do segundo nome, exceto o último.}
for i := 2 to TotalNomes - 1 do
begin
{Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.)}
if Length(Nomes[i]) > 3 then
{Pega apenas a primeira letra do nome e coloca um ponto após.}
Nomes[i] := Nomes[i][1] + ´.´;
end;
Result := ´´;
for i := 1 to TotalNomes do
Result := Result + Trim(Nomes[i]) + #32;
Result := Trim(Result);
end;
end;
end;
Utilizo o seguinte código para imprimir etq de código de barras, 3 carreiras, em impressoras zebra:
Como vc poderá notar utilizo o componeente TComport para cominicação com a zebra. Utilizo um string grid onde é adicionados os produtos e qtd que o usuário deseja imprimir.
[/code]
procedure TfrmEtiquetas.EtiquetaProdutoBarrasSerial;
var
Qtd, i: Integer;
begin
ComPort1.Open;
for i := 1 to stringgrid1.rowcount - 1 do
begin
if stringgrid1.Cells[3, i] <> EmptyStr then
begin
if TipoImpressoraEtq = ´ZEBRA´ then
begin
ComPort1.WriteStr(´^XA´);
Qtd := Trunc(strtoint(stringgrid1.Cells[3, i]) / 3);
if Qtd < 3 then
Qtd := 3;
ComPort1.WriteStr(´^PQ´ + Trim(IntToStr(Qtd)) + ´,,,N´);
ComPort1.WriteStr(´^FO05,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO30,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^FO283,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO308,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^FO563,30^ADN,20,01^FD´ +
AbreviaNome(Trim(stringgrid1.Cells[2, i])) + ´^FS´);
ComPort1.WriteStr(´^FO588,60^BY2,,100^BEN,080,Y,N^FD´ +
stringgrid1.Cells[1, i] + ´^FS´);
ComPort1.WriteStr(´^XZ´);
end;
end;
end;
ComPort1.Close;
LimparGrid;
end;
função abrevia nome utilizada no exemplo:
function AbreviaNome(Nome: string): string;
var
Nomes: array[1..20] of string;
i, TotalNomes: Integer;
begin
Nome := Trim(Nome);
Result := Nome;
{Insere um espaço para garantir que todas as letras sejam testadas}
Nome := Nome + #32;
{Pega a posição do primeiro espaço}
i := Pos(32, Nome);
if i > 0 then
begin
TotalNomes := 0;
{Separa todos os nomes}
while i > 0 do
begin
Inc(TotalNomes);
Nomes[TotalNomes] := Copy(Nome, 1, i - 1);
Delete(Nome, 1, i);
i := Pos(32, Nome);
end;
if TotalNomes > 2 then
begin
{Abreviar a partir do segundo nome, exceto o último.}
for i := 2 to TotalNomes - 1 do
begin
{Contém mais de 3 letras? (ignorar de, da, das, do, dos, etc.)}
if Length(Nomes[i]) > 3 then
{Pega apenas a primeira letra do nome e coloca um ponto após.}
Nomes[i] := Nomes[i][1] + ´.´;
end;
Result := ´´;
for i := 1 to TotalNomes do
Result := Result + Trim(Nomes[i]) + #32;
Result := Trim(Result);
end;
end;
end;
Lindomar.des
Responder
Gostei + 1
Mais Posts
01/06/2005
Programalista
Ok, muito obrigado Lindomar.
Sua dica já foi de grande ajuda, vou desenvolver e qualquer outra dúvida eu posto aqui.
Valeu.
Sua dica já foi de grande ajuda, vou desenvolver e qualquer outra dúvida eu posto aqui.
Valeu.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)