Pessoal, bom dia.
Estou precisando de uma ajuda de vocês, para resolver um problema que estou tendo. Tenho que gerar o código de barra 128 e para isso utilizo a seguinte função (http://pastebin.com/RFtnqRED). Estou passando a seguinte string "=FPIOX12136414", já debuguei a função, conferi os valores dos caracteres com o da tabela (http://www.adams1.com/128table.html) e a única diferença que eu encontrei para esse link (http://www.adams1.com/128code.html) é que ele usa o "Start B" (104) e eu estou usando o "Start A" (103). Mesmo alterando para 104, estou tendo problemas acredito que no dígito verificador, pois a função retorna a seguinte string "Ë=FPIOX12136414¿Î" para ser convertida pela fonte code128. Acredito eu, que a fonte não está reconhecendo o caracter "¿".
O calculo do dígito eu retirei de um documento que me foi passado, e que diz o seguinte:
Cálculo do dígito verificador do Código 128
O dígito verificador é posicionado depois dos dados a serem convertidos e exatamente antes do caracter de STOP. Para determinar o dígito verificador é necessário:
1. Consultar a tabela das páginas seguintes para obter os valores dos caracteres (VL. CÓD.) de START, STOP e de todos os caracteres de dados;
2. Aplicar os valores de peso para cada um dos caracteres de dados (não incluir o START nem o STOP, somente os dados). Os valores dos PESOS iniciam em 1, aumentando uma unidade a cada carácter da seqüência;
3. Multiplicar o valor de cada caracter pelo valor do seu peso;
4. Somar os TOTAIS de todos os caracteres, incluindo o de START, dividir por 103 e obter o valor de resto;
5. Utilizar a tabela das páginas seguintes para localizar o caracter que tem o valor do resto (VL. CÓD.), este será o dígito verificador;
Obs.: Os Subsets A e B possuem a mesma montagem, que é diferente do Subset C.
Demonstramos abaixo o cálculo do dígito verificador com:
- Subset A ou B -
Utilizando o Subset B, calcularemos o digito verificador da seqüência GB0123:
1. Primeiro temos de dividir os caracteres individualmente, como mostrado abaixo:
START B G B 0 1 2 3 STOP
PESO 1 2 3 4 5 6
VALORES (VL. CÓD.) 104 39 34 16 17 18 19
TOTAIS 104 39 68 48 68 90 114
2. Seqüência: START B G B 0 1 2 3
3. Soma: 104 +(39x1)+(34x2)+(16x3)+(17x4)+(18x5)+(19x6)=
4. Soma total: 104 + 39 + 68 + 48 + 68 + 90 + 114 = 531
5. Cálculo do resto: 531 dividido por 103 = 5, sendo o resto igual a 16 (5 x 103 = 515 e 531 - 515 = 16)
6. Verificando na tabela o valor da coluna VL. CÓD. chegamos ao dígito de valor 16 que é o caracter “0” (zero)
(representado na coluna CARACTER).
7. Abaixo temos a seqüência convertida (string) do número original:
Número original = GB0123
Conversão completa (ASCII) = ALT+204GB01230ALT+206
Conversão completa (HEXADECIMAL) = CC47423031323330CE
Essa função já estava sendo utilizada e não estava dando erro até segunda-feira, pois foi o dia que deu o primeiro erro, ontem (terça-feira) deu erro em mais um código de barra. Então mediante a tudo isso, fiquei sem saber para onde correr, pois se fosse a função que estivesse errada, não teria dado certo em nenhuma vez (O que não é o caso), dai pensei que pudesse ser a minha fonte, mas entrei no site (http://www.fonts4free.net/code-128-font.html) e coloquei para gerar a mesma string, e no lugar do dígito, também é visível o erro. Então se não é a função e não é a fonte, não faço a menor ideia do que seja...
Alguém já passou por isso ?
Att.
Tiago Pimenta
Erro Código Barra 128
- tiago_pimenta
- Rank: DBA Júnior
- Mensagens: 211
- Registrado em: Qua, 29 Jun 2011 9:49 am
- Localização: Barretos / SP
- tiago_pimenta
- Rank: DBA Júnior
- Mensagens: 211
- Registrado em: Qua, 29 Jun 2011 9:49 am
- Localização: Barretos / SP
Bom dia pessoal.
Atualizando o tópico com a última versão da função e com a última versão de problema *rs*
A função agora está assim ( http://pastebin.com/ex2VQu4H ) e ela lê nos leitores de código de barra manuais sem problema algum, o problema é que eu faço esse código de barra e imprimo uma etiqueta para colocar em pequenos tubos (Tubetes) de sangue para enviar para analise (NAT), onde verifica se o sangue tem HIV e HCV.
São três equipamentos que fazem o teste NAT do sangue e no primeiro, que é um pipetador da marca Janus, ele não consegue ler o código de barras. Nós passaram algumas dicas para tentarmos melhorar a impressão da etiqueta (Utilizar impressora Zebra, Etiquetas foscas de duas marcas especificas e impressão no modo rascunho), mas também não conseguimos resolver o problema do equipamento não ler o código.
O analista de sistema que trabalha comigo está achando que o problema pode ser ou na função ou na fonte que estamos utilizando, eu descarto essa possibilidade, pois se fosse isso, nem os leitores manuais conseguiram ler.
Gostaria de alguma dica do pessoal aqui, nem que seja para olhar a função e testa-las aí com vocês, para descartamos essa possibilidade de erro na função e na fonte que estamos.
A fonte que estamos usando é essa: http://www.4shared.com/file/RJvX-jnT/CODE128.html
Abraços
Atualizando o tópico com a última versão da função e com a última versão de problema *rs*
A função agora está assim ( http://pastebin.com/ex2VQu4H ) e ela lê nos leitores de código de barra manuais sem problema algum, o problema é que eu faço esse código de barra e imprimo uma etiqueta para colocar em pequenos tubos (Tubetes) de sangue para enviar para analise (NAT), onde verifica se o sangue tem HIV e HCV.
São três equipamentos que fazem o teste NAT do sangue e no primeiro, que é um pipetador da marca Janus, ele não consegue ler o código de barras. Nós passaram algumas dicas para tentarmos melhorar a impressão da etiqueta (Utilizar impressora Zebra, Etiquetas foscas de duas marcas especificas e impressão no modo rascunho), mas também não conseguimos resolver o problema do equipamento não ler o código.
O analista de sistema que trabalha comigo está achando que o problema pode ser ou na função ou na fonte que estamos utilizando, eu descarto essa possibilidade, pois se fosse isso, nem os leitores manuais conseguiram ler.
Gostaria de alguma dica do pessoal aqui, nem que seja para olhar a função e testa-las aí com vocês, para descartamos essa possibilidade de erro na função e na fonte que estamos.
A fonte que estamos usando é essa: http://www.4shared.com/file/RJvX-jnT/CODE128.html
Abraços
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes