Ir para conteúdo
  • Cadastre-se

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

  • Consultores
Postado
13 minutos atrás, herculanojs disse:

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

Tu já postou ontem. agora espera que provável ele não ter lido ainda

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

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á 2931 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...
The popup will be closed in 10 segundos...