[CODE BARRE] récupérer les caractères codés
Résolu
arnolem
-
arnolem Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
arnolem Messages postés 79 Date d'inscription Statut Membre Dernière intervention -
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
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:
- [CODE BARRE] récupérer les caractères codés
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
3 réponses
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...
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...
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
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
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
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
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é
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é
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+
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+
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
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 ?
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 ?