Codigo de barras no Fortes
Ola pessoal
Desenvolvi um sistema utilizando o componente de codigo de barras
do fortes, mas acontece que nenhum leitor consegue ler
o código, o fornecedor do Leitor me perguntou qual a
simbologia que utilizo, ou qual a fonte estou utilizando
Eu não entendo muita coisa desse procedimento
de codigos de barras
O que poderia estar acontecendo?
Grato
Claudio
Desenvolvi um sistema utilizando o componente de codigo de barras
do fortes, mas acontece que nenhum leitor consegue ler
o código, o fornecedor do Leitor me perguntou qual a
simbologia que utilizo, ou qual a fonte estou utilizando
Eu não entendo muita coisa desse procedimento
de codigos de barras
O que poderia estar acontecendo?
Grato
Claudio
Claudiocjr
Curtidas 0
Respostas
Vitor Alcantara
28/04/2008
Caro amigo o código adotado para produtos é o padrão EAN13 e EAN8, geralmente os leitores ja vem habilitado pra ler tais códigos em sua configuração default. O código quem vem default nos componentes RlBarCode e RlDbBarCode é o ´bcCode2OF5Interleaved´ , troque ele na propriedade ´BarCodeType´ para bcEAN13 (Caso do código EAN13) ou bcEAN8 (Caso do EAN8).
Outra coisa nem todo código (pelo menos nos padrões EAN13 e EAN8) são lidos pelo leitor, pois o último digito (13º no caso do EAN13 e 8º no caso do EAN8) é um digito verificador que é calculado, ou seja caso esteja errado o leitor simplismente não ler o código.
rotina para calculo do digito verificador no caso do EAN13 :
Explicando o código.
Para se chegar ao digito verificador do código de barras padrão EAN13 você deve somar todos os núros impares e multiplicar por 3 , dai soma todo os números pares , o resultado das duas operações deve ser somado, dai é só diminuir de 10 o último digito obitido se der 10 (se for zero o último digito) o digito verificador é 0 (zero) caso contrário o digito verificador é a diferença obitida na operação.
Ex:
o código 100000000001
A soma de todo os números impares multiplicado por trez
1[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]1[/b:31f9cb4095]
S1 = (0+0+0+0+0+1)*3 = 3
A soma de todo os números pares multiplicado por trez
[b:31f9cb4095]1[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]1
S2 = (1+0+0+0+0+0) = 1
O resultado seria das duas operações é somado
S1 + S2 = 3 + 1 = 4
Do resultado pega-se dez e subtrai o último digito obtido
R = 10 - Ultimo digito = 10 - 4 = 6
Pronto o digito verificador é seis, logo o código é
100000000001 + Dv ou 1000000000016
Caso se tenha nescessidade de obter outro tipo de código que não seja o padrão EAN13 sertifique-se se o leitor tem suporte ao mesmo (geralmente vem uma cartilha de configuração onde você pode habilitar ou desabilitar a leitura de certos tipos de códigos) e se existe a obrigação de calculo de digito verificador.
Outra coisa nem todo código (pelo menos nos padrões EAN13 e EAN8) são lidos pelo leitor, pois o último digito (13º no caso do EAN13 e 8º no caso do EAN8) é um digito verificador que é calculado, ou seja caso esteja errado o leitor simplismente não ler o código.
rotina para calculo do digito verificador no caso do EAN13 :
function GeraEan13(codigo:string):String; var dg:String; vlr,dv:integer; begin Codigo := Copy(Codigo , 1,12); vlr := (StrToInt(copy(codigo,12,1)) + StrToInt(Copy(codigo,10,1))+ StrToInt(copy(codigo,8,1)) + StrToInt(Copy(codigo,6,1)) + StrToInt(Copy(Codigo,4,1)) + StrToInt(Copy(Codigo,2,1))) *3; vlr := vlr + StrToInt(copy(codigo,11,1)) + strToInt(copy(codigo,9,1))+ StrToInt(copy(codigo,7,1)) + StrToInt(Copy(Codigo,5,1)) + StrToInt(Copy(codigo,3,1))+ StrToint(Copy(Codigo,1,1)); Dg := Copy(IntToStr(vlr),length(inttostr(vlr)),1); dv := 10 - strtoInt(dg); if Dv = 10 then Dv := 0; result := Codigo + intTostr(dv); end;
Explicando o código.
Para se chegar ao digito verificador do código de barras padrão EAN13 você deve somar todos os núros impares e multiplicar por 3 , dai soma todo os números pares , o resultado das duas operações deve ser somado, dai é só diminuir de 10 o último digito obitido se der 10 (se for zero o último digito) o digito verificador é 0 (zero) caso contrário o digito verificador é a diferença obitida na operação.
Ex:
o código 100000000001
A soma de todo os números impares multiplicado por trez
1[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]1[/b:31f9cb4095]
S1 = (0+0+0+0+0+1)*3 = 3
A soma de todo os números pares multiplicado por trez
[b:31f9cb4095]1[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]0[b:31f9cb4095]0[/b:31f9cb4095]1
S2 = (1+0+0+0+0+0) = 1
O resultado seria das duas operações é somado
S1 + S2 = 3 + 1 = 4
Do resultado pega-se dez e subtrai o último digito obtido
R = 10 - Ultimo digito = 10 - 4 = 6
Pronto o digito verificador é seis, logo o código é
100000000001 + Dv ou 1000000000016
Caso se tenha nescessidade de obter outro tipo de código que não seja o padrão EAN13 sertifique-se se o leitor tem suporte ao mesmo (geralmente vem uma cartilha de configuração onde você pode habilitar ou desabilitar a leitura de certos tipos de códigos) e se existe a obrigação de calculo de digito verificador.
GOSTEI 0
Claudiocjr
28/04/2008
Primeiramente Obrigado pela Colaboração
Não sei se tem alguma configuração a ser feita
no componente, mas o que fiz, foi simplesmente
gerar um numero qualquer por exemplo 00128
atribui no caption do componente BarCode, mas os
Leitores não Lê
Grato
Claudio
Não sei se tem alguma configuração a ser feita
no componente, mas o que fiz, foi simplesmente
gerar um numero qualquer por exemplo 00128
atribui no caption do componente BarCode, mas os
Leitores não Lê
Grato
Claudio
GOSTEI 0