2010-08-02 7 views
0

J'essaie de créer une application qui génère des codes à barres PDF417. Pour ce faire, je suis ce guide: http://grandzebu.net/informatique/codbar-en/pdf417.htmGénérer des codes à barres PDF417: mots de code de correction d'erreurs incorrect

Je génère les mots de code de données très bien, mais lorsque j'utilise l'algorithme pour générer la correction d'erreur, le résultat ne semble pas fonctionner correctement, et je pense le problème est les données que je lui passe.

Le test de base que je suis en train génère un code à barres PDF417 avec les données: Bonjour tout le monde

J'utilise l'encodage en mode octet.

Le code à barres généré comporte 3 lignes et 5 colonnes de données.

Les données des mots de code I utiliser pour générer les mots de code de correction sont les suivantes:

[901, 121, 291, 257, 858, 232, 119, 111, 114, 108, 100]

Lorsque Je génère un code à barres avec les mêmes données en utilisant une bibliothèque payante, les mots de code de correction (en utilisant un niveau de correction d'erreur de 0) sont: [821, 305]

Mais quand je génère le code à barres en utilisant mon algorithme, la correction les mots de code que je reçois sont [791, 594].

J'ai également essayé d'utiliser l'algorithme trouvé ici: http://sourceforge.net/projects/pdf417lib/, et les résultats sont les mêmes qu'avec mon algorithme.

Une idée sur ce que je fais mal?

Merci beaucoup pour votre temps.

+0

Pouvez-vous poster votre code? –

Répondre

1

Vous aurez besoin de 15 mots au total pour 5 colonnes et 3 lignes. Parce que vous utilisez le niveau de correction d'erreur zéro, vous avez besoin de 2 mots de correction d'erreur. Cela vous laisse avec 13 mots de données (y compris les mots de remplissage). Par conséquent, les mots de données dont vous avez besoin pour calculer les mots de correction d'erreur sont les suivantes:

13.901.121.291.257.858.232.119.111.114.108.100.900

où 13 représente le nombre de mots de données que vous avez généré (ce qui est 11) plus le mot un rembourrage de 900, plus l'indicateur de longueur (c.-à-d. 13) lui-même. Si votre algorithme est exact, utilisez les mots de données ci-dessus et 27 et 917 comme coefficients de correction d'erreur. Vous devriez obtenir 305 et 821 comme mots de correction d'erreur. Mon algorithme le calcule comme tel