Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde, sei que este não é uma pergunta relacionada ao ACBR, e sim ao código de barras da NFE... sei que o acbr gera o código de barras para impressão via esc / pos, porem estou tentando fazer isto manualmente via progração e não estou conseguindo gerar o código de barras que eu preciso, o code128, com os 44 caracteres da chave de acesso da nfe. 

Alguém por favor, poderia me ajudar? já faz um tempão que estou procurando isto e não consigo fazer funcionar...

Se alguém puder me passar um exemplo agradeceria muito, quebraria 'oo galho'!

 

meu e-mail [email protected]

Sem título.png

Postado
13 horas atrás, Sérgio Assunção disse:

Qual é a marca e modelo da sua impressora ?

Você chegou a ver nos fontes do ACBr como é feito ?

É a Leopardo A7, eu já verifiquei uns 100 manuais, porem com nenhum deles consegui fazer a impressão do código de barras, onde o mesmo guardasse a informação dos 44 caracteres da chave da NFe, que seria o modelo CODE128

tentei dar uma olhada nos fontes do ACBR porem não me achei muito bem... por favor, poderia me ajudar?

Postado
4 horas atrás, André Ferreira de Moraes disse:

Vc usa Delphi? Tente usar o componente ACBrPosPrinter.

Uso delphi sim, porem mobile, preciso fazer a impressão manualmente pois não posso fazer pelo servidor devido ao aparelho mobile não estar sempre conectado na web.

 com este comando - FSocket.SendData(TEncoding.UTF8.GetBytes(chr(29) +chr(107) +chr(73) + chr(24) +chr(123) +chr(67) +'43170918330210000103550030000000931674198104' + chr(0))); 
gera o código de barras e ao passar a leitora do código, retorna 44
 caracteres, porem o que retorna não tem nada a ver com o que foi passado no comando!
Código do comando acima: 43170918330210000103550030000000931674198104
Código de retorno: 52514955485749565151485049484848484948515353

Agora fiquei mais confuso em identificar o que poderia ser :S 

Desenvolvimento em DELPHI, sim...

Postado
19 horas atrás, Daniel Simoes disse:

Vc precisa usar 128-C.. mas nem todos equipamentos suportam isso...

sim, isto o 128-C, porem não sabia como utiliza-lo... mas depois de tanto sofrimento consegui hehe... desculpe incomoda-los!!!

 

Desde já agradeço a todos que responderam.

 

Abração!

  • Curtir 1
  • 4 meses depois ...
Postado
Em 06/10/2017 at 11:46, Douglas Colombo 09 disse:

sim, isto o 128-C, porem não sabia como utiliza-lo... mas depois de tanto sofrimento consegui hehe... desculpe incomoda-los!!!

 

Desde já agradeço a todos que responderam.

 

Abração!

Seria possivel você postar a solução para pessoas com o mesmo problema ?

Postado
30 minutos atrás, herculanojs disse:

Seria possivel você postar a solução para pessoas com o mesmo problema ?

Bom dia, desculpe... ainda não havia visualizado.

Eu utilizo este comando para fazer a impressão do código de barras:

 

x := TEncoding.UTF8.GetBytes(chr(24) + chr(123) + chr(67));

é preciso pegar de 2 em 2 caracteres do código de barras e utilizar a função chr():

//faça um loop para o exemplo a baixo:

x := x + copy(codigoBarras, 1, 2);

x := x + copy(codigoBarras, 3, 2);

x := x + copy(codigoBarras, 5, 2);

... Fazer isto com todos os 44 caracteres do código de barras.

 

Valeu, abração!

  • 2 semanas depois ...
Postado
Em 06/10/2017 at 11:46, Douglas Colombo 09 disse:

sim, isto o 128-C, porem não sabia como utiliza-lo... mas depois de tanto sofrimento consegui hehe... desculpe incomoda-los!!!

 

Desde já agradeço a todos que responderam.

 

Abração!

Seria possivel você postar a solução para pessoas com o mesmo problema ?

Em relação ao qrcode consegui imprimir, contudo não consigo passar de 126 caracteres no qrcode. Acima disso não imprime.

procedure TMiniThermalBluetooth.WriteQrCode(text: string);
var d,dL,dH:integer;
begin
     d := length(text);
     dL := d mod 256;
     dH := d div 256;

     write(chr(27)+chr(64));
     write(escAlignCenter);
     write(chr(27)+chr(90)+chr(40)+chr(0)+chr(6)+chr(dL)+chr(dH)+text);
end;

codigo barra 128c

                  write(chr(29)+chr(104)+chr(40)); //altura
                  write(chr(29)+chr(119)+chr(2)); //largura
                  write(chr(29)+chr(72)+chr(0)); //(GS H n) hri
                  write(escAlignLeft);
                  write(chr(29)+chr(107)+chr(73)+chr(23)+chr(123)+chr(67)+copy(FieldByName('chave').AsString,1,23)+chr(0));
 

No caso estou pegando apenas 23 caracteres da chave. Percebi que se o código for ultrapassar o tamanho de impressão, a impressora não imprime. Ainda não descobri uma forma de reduzir tamanho do mesmo, pois apesar de ajustar a alargura, mas a mesma obedece um padrão, e 54 bytes no codigo de barras não cabe em 80mm. Pelo menos não consegui fazer.

Postado

Bom dia Daniel

Em relação a impressora bluetooth mini termal, o ACBRPosPrinter faz a impressão nesses equipamentos?

Porque pelo que li no forum em algum lugar antes, alguém informava que o padrão da linguagem do componente não era ESC/POS mais algum outro tipo de ESC que não me recordo agora.

  • 2 semanas depois ...
Postado
Em 21/02/2018 at 08:14, Douglas Colombo 09 disse:

Bom dia, desculpe... ainda não havia visualizado.

Eu utilizo este comando para fazer a impressão do código de barras:

 

x := TEncoding.UTF8.GetBytes(chr(24) + chr(123) + chr(67));

é preciso pegar de 2 em 2 caracteres do código de barras e utilizar a função chr():

//faça um loop para o exemplo a baixo:

x := x + copy(codigoBarras, 1, 2);

x := x + copy(codigoBarras, 3, 2);

x := x + copy(codigoBarras, 5, 2);

... Fazer isto com todos os 44 caracteres do código de barras.

 

Valeu, abração!

Boa noite, te importa de enviar o código completo desse exemplo de impressão do código.

  • Obrigado 1
  • 4 semanas depois ...
  • Membros Pro
Postado

Boa tarde, para contribuir com a comunidade,  segue a procedure que uso para imprimir o código.

 

procedure TfrmPrincipal.Imprime_CodBarras(chave:string);
begin
  FSocket.SendData(TEncoding.UTF8.GetBytes(
  chr(32) + chr(32)  +   // 2 espaços
  chr(29) + chr(104) + chr(80) + // atribui a altura do Codigo de Barras sendo n de 1 a 40
  chr(29) + chr(119) + chr(0)  + chr(2)  +  // (GS w n)  atribui a largura do Codigo de Barras sendo n de 1 a 4
  chr(29) + chr(72)  + chr(0)  +  // (GS H n)  atribui o HRI que sao os numeros abaixo do código 0 sem 1 acima 2 abaixo
  chr(29) + chr(107) + chr(73) + chr(24) +  // (GS K m n)atribui o tipo e comprimento do codigo 128C=73(49hex) e 22 posicoes (18 hex)
  chr(123)+ chr(67)  +  // atribui que o padrão do CB 128 é tipo C
  // chave
  char(StrToInt(Copy(chave,1,2))) +
  chr(StrToInt(Copy(chave,3,2)))  +
  chr(StrToInt(Copy(chave,5,2)))  +
  chr(StrToInt(Copy(chave,7,2)))  +
  chr(StrToInt(Copy(chave,9,2)))  +
  chr(StrToInt(Copy(chave,11,2))) +
  chr(StrToInt(Copy(chave,13,2))) +
  chr(StrToInt(Copy(chave,15,2))) +
  chr(StrToInt(Copy(chave,17,2))) +
  chr(StrToInt(Copy(chave,19,2))) +
  chr(StrToInt(Copy(chave,21,2))) +
  chr(StrToInt(Copy(chave,23,2))) +
  chr(StrToInt(Copy(chave,25,2))) +
  chr(StrToInt(Copy(chave,27,2))) +
  chr(StrToInt(Copy(chave,29,2))) +
  chr(StrToInt(Copy(chave,31,2))) +
  chr(StrToInt(Copy(chave,33,2))) +
  chr(StrToInt(Copy(chave,35,2))) +
  chr(StrToInt(Copy(chave,37,2))) +
  chr(StrToInt(Copy(chave,39,2))) +
  chr(StrToInt(Copy(chave,41,2))) +
  chr(StrToInt(Copy(chave,43,2))) +
  // chave
  chr(32) + chr(10)+ chr(13)));  // espaço e enter;
end;


 

  • Moderadores
Postado
8 minutos atrás, juniorguillen disse:

Boa tarde, para contribuir com a comunidade,  segue a procedure que uso para imprimir o código.

 

procedure TfrmPrincipal.Imprime_CodBarras(chave:string);
begin
  FSocket.SendData(TEncoding.UTF8.GetBytes(
  chr(32) + chr(32)  +   // 2 espaços
  chr(29) + chr(104) + chr(80) + // atribui a altura do Codigo de Barras sendo n de 1 a 40
  chr(29) + chr(119) + chr(0)  + chr(2)  +  // (GS w n)  atribui a largura do Codigo de Barras sendo n de 1 a 4
  chr(29) + chr(72)  + chr(0)  +  // (GS H n)  atribui o HRI que sao os numeros abaixo do código 0 sem 1 acima 2 abaixo
  chr(29) + chr(107) + chr(73) + chr(24) +  // (GS K m n)atribui o tipo e comprimento do codigo 128C=73(49hex) e 22 posicoes (18 hex)
  chr(123)+ chr(67)  +  // atribui que o padrão do CB 128 é tipo C
  // chave
  char(StrToInt(Copy(chave,1,2))) +
  chr(StrToInt(Copy(chave,3,2)))  +
  chr(StrToInt(Copy(chave,5,2)))  +
  chr(StrToInt(Copy(chave,7,2)))  +
  chr(StrToInt(Copy(chave,9,2)))  +
  chr(StrToInt(Copy(chave,11,2))) +
  chr(StrToInt(Copy(chave,13,2))) +
  chr(StrToInt(Copy(chave,15,2))) +
  chr(StrToInt(Copy(chave,17,2))) +
  chr(StrToInt(Copy(chave,19,2))) +
  chr(StrToInt(Copy(chave,21,2))) +
  chr(StrToInt(Copy(chave,23,2))) +
  chr(StrToInt(Copy(chave,25,2))) +
  chr(StrToInt(Copy(chave,27,2))) +
  chr(StrToInt(Copy(chave,29,2))) +
  chr(StrToInt(Copy(chave,31,2))) +
  chr(StrToInt(Copy(chave,33,2))) +
  chr(StrToInt(Copy(chave,35,2))) +
  chr(StrToInt(Copy(chave,37,2))) +
  chr(StrToInt(Copy(chave,39,2))) +
  chr(StrToInt(Copy(chave,41,2))) +
  chr(StrToInt(Copy(chave,43,2))) +
  // chave
  chr(32) + chr(10)+ chr(13)));  // espaço e enter;
end;
 

Boa tarde, juniorguillen. 

Quando postar código e o mesmo for extenso, anexe o mesmo. Não cole dessa forma, pois assim fica difícil para ler e entender.

Equipe ACBr

Felipe Eduardo Resende Mesquita

Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

 

 

 

  • Este tópico foi criado há 2365 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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...