[CODE BARRE] récupérer les caractères codés

Résolu/Fermé
arnolem - 2 mars 2006 à 12:47
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 - 2 mars 2006 à 20:51
Bonjour, je suis a la recherche de solutions me permettant de faire un programme en Visual Basic .net, le coté programmation et traitement de l'information ne me pause pas trop de problèmes pour le moment.

Se que je souhaite faire c'est pouvoir récupérer les informations du code barre dans une variable pour ensuite la traiter.
Comme mon laser est reconnue comme Clavier, j'ai donc essayé de faire un TextBox qui récupère bien les informations, mais mon réel problème c'est qu'elle ne récupère pas toutes les informations.

Je suis en EAN128, voici la chaine que je récupère :
0112345678901234105S4781110414143012345678
se que je voudrais récupérer c'est :
(01)12345678901234(10)5S478(11)1041414(30)12345678
afin de pouvoir séparer chaque élément et d'y assigner sa propriété, par exemple :
01 : 12345678901234
10 : 5S478
11 : 1041414
30 : 12345678

Merci par avance, en espérant ne pas vous avoir effrayé avec tant de chiffre.
Arnolem
A voir également:

3 réponses

blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
2 mars 2006 à 13:49
Salut,

le code à barres ne comprend pas de parenthèses, donc ton problème n'est pas là, mais plutôt dans le traitement que tu veux faire, il te faut passer par un module de "découpage" de la chaine.

Je suppose que les longueurs des sous-entités sont fixes, il te suffit d'utiliser les fonctions mid,left, right pour retrouver tes petits...

Ou alors, je n'ai pas compris le problème...
1
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 10
2 mars 2006 à 15:03
Je te remercie, j'ai lu pas mal de sujet ou tu est intervenue, j'espère donc que tu pourra m'aider car je ne trouve pas beaucoup de personne compétentes dans le domaine.
Tu a raison, les parenthèses ne sont pas codées en barre.
J'ai pensé à vérifier la chaine de caractère afin de retrouver les id et leur valeurs, le problème c'est que je ne peux pas etre sûr que les champs sont de longeur fixe, et je ne sais pas non plus si les id sont codés en 1,2,3 ou 4 caractères (par exemple 21 = serial number et 8005 = prix par unité de mesure).

Je sais qu'une chaine codée en EAN128 est formée d'un ainsi :
[Debut][FNC1][ID][DONNES]
le problème c'est que je ne récupère pas le FNC1 afin de délimiter les ID et les valeurs
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
2 mars 2006 à 15:28
Si tu ne connais pas le découpage (longueur fixe, séparateurs de champs...), alors tu ne pourras rien faire de plus, malheureusement (le codage n'a pas de longueur limite)...

http://www.quartet.fr/cbc128.html
http://grandzebu.net/informatique/codbar/code128.htm

Dans ton exemple, sur quels critères te bases-tu pour dire que 01, 10, 11 et 30 sont les séparateurs ?
0
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 10 > blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024
2 mars 2006 à 16:14
pour les caractères 1,10,11 et 30, c'est le logiciel qui créé l'étiquette qui me les donnent.
Il sont présent dans la chaine mais les parenthèse ne sont pas codé, par contre j'ai cru comprendre que les champs sont de taille fixe pour certain (donc la pas de problème) et que pour les champs variable, il y avait un caractère spéciale à la fin. Donc si c'est bien ça je pense m'en sortir en faisant un petit traitement de chaine.
Par contre les variables sont des chiffres de 1,2,3, ou 4 caractère, je ne peux pas savoir que la premiere variable de ma chaine a 1, 2, 3 ou 4.
par exemple :
0112345678901234105S4781]110411133012345678

ma variable du premier champs est "01", mais ça pourrai tres bien etre 0 ou 011 ou bien 0112.
Le seule truc que j'ai trouvé c'est que dans se cas, seul la variable "01" existe, les autres ne sont pas répertorié.

mon problèmes est opur un code qui commence par :
37012569853...
on peux avoir soit "3" soit "37" soit "370" qui sont tous des code valide.
tu vois le problème ?
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
2 mars 2006 à 16:31
Bonjour,

normalement, tes identifiants de données induisent la longueur des données qui les suivent :

(00) = 18 chiffres
(11) = 6 chiffres(date yymmdd)
(30) = 8 chiffres

mais parfois ne fournissent qu'un maximum :
(10) <= 20 caractères
(21) <= 20 caractères
....

pour les premiers, il suffit d'extraire les séquences de caractères avec du STXT() dans excel
pour les seconds, il faut repérer le séparateur FNC1qui délimite un message de longueur variable. Ensuite tu réutilises les STXT().

Certains identifiants de données sont codés sur plus de 2 caractères.
Pour "l'identification" de ceux-ci, tu peux passer par une table excel à 3 colonnes :
la première contiendrait l'identifiant de données
la deuxième indiquerait la taille de ce qui suit cet identifiant
la troisième pour l'aspect fixe ou variable des données

peut-être que le type de données serait utile....

sur cette base tu attaques ta chaîne de caractères avec les 2 premiers caractères, tu regardes si cette séquence est dans ta table.
si non t'en prends 3, puis 4, etc...
lorsque tu trouves ton bonheur tu extraits ta chaîne de caractères grâce aux infos de ta table excel.

tu déplaces ton pointeur et tu attaques l'identifiant de données suivant.

tu veux du code ou ça te suffit?

cordialement
0
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 10
2 mars 2006 à 16:41
merci ,non je comprend, bon moi c'est pour faire une application en VisualBasic.net donc la partie excel ne m'intéresse pas mais pour le principe c'est presque bon.

Dans le cas ou la longueur des données est fixe, il n'y a pas de problème.
Dans le cas ou c'est variable, je récupère le FNC1, (c'est bien se qui m'est renvoyé en tant que "]", si c'est ça, pas de soucis non plus.

Pour resoudre la taille du AI lui meme, la j'ai toujours un truc à eclaircir.
- Si la chaine commence par "0123"
0 n'existe pas
01 existe
012 n'existe pas
0123 n'existe pas
--> c'est donc "01" mais est il possible que dans un cas, il y ai plusieur possibilité, par exemple que "012" soit un code existant ?
merci
0
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 10
2 mars 2006 à 16:54
Par exemple, d'après le site : http://www.eannet-france.org/fille/b/b33.htm

on a les plages suivante de 31nn à 36nn
on peux donc avoir les AI suivant :
337
3370

Dans se cas, il est impossible de différencier les deux AI dans le code suivant :
337023561
car 337 est possible mais aussi 3370
c'est donc soit une Mesures, soit un Kilos au mètre carré
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
2 mars 2006 à 20:45
Bonsoir,

non, il ne doit pas y avoir de doublons.

D'après ton lien, effectivement, il semble qu'il y ait chevauchement mais d'après http://www.quartet.fr/DemoCB/Doc_Ean128.pdf ça ne se produit pas.

Donc je préfère le 2ème lien ! (:-)

Pour le FNC1, c'est peut-être ton caractère ], il est défini aprés le start code. J'ai vu des FNC1 représenté par des Ü, des codes 193 ou 134.

A+
0
arnolem Messages postés 79 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 8 juillet 2011 10
2 mars 2006 à 20:51
Bon ben je te remerci, je vais aller dans ce sens maintenant que j'en suis sur.
Pour le caractère, oui c'est bien le premier caractère mais il n'apparait plus depuis que j'ai reprogrammé le laser.
Encore merci a tous.
je cloture la discussion
0