GÉNÉRATEUR DE CODE 128 (CODE-BARRE)

cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013 - 15 févr. 2010 à 16:38
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 28 mars 2010 à 19:32
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51296-generateur-de-code-128-code-barre

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
28 mars 2010 à 19:32
allez 180€ ht : le HEROND de chez datalogic ^^
c'est mon dernier mot lol, je regarde ta nouvelle source, merci
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
28 mars 2010 à 14:12
P.S.
@ADN56 -> pour le lecteur, je vais attendre d'être un peu plus en fonds, mais merci qd même
a+
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
28 mars 2010 à 14:11
Bon, voilà, c'est fait:
http://www.vbfrance.com/codes/ETIQUETTES-LOGISTIQUES-EAN-128_51518.aspx
utilise le code EAN-128 pour pondre de l'étiquette formattée au standard.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
14 mars 2010 à 16:19
lol, j'aime beaucoup te lire ;)
bon cela me parait clair. Merci et bonne continuation.

PS: Pour le lecteur CAb j'en ai des neuf, mais à 250€ en version douchette -_-' .
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
14 mars 2010 à 01:02
... oups, allé trop vite, pas bien !...

L'intérêt du poids Code128 est bien entendu, qu'il est nécessaire pour le calcul du caractère de contrôle puisqu'on raisonne non en fonction du poids ascii mais en fonction du poids "Code128".

Je crois que j'oublie rien, ce coup-ci...
a+
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
14 mars 2010 à 00:58
Je suis resté peut-être un peu confus sur le point 1)

Le charset "A" est ordonné 'Space ! " etc jusqu'à _ (underscore)', valeurs ASCII 32 à 95;
puis reprend 'NUL SOH STX ETX EOT...FS GS RS US', valeurs ASCII 0 à 31;

MAIS
le poids de chaque caractère N'EST PAS la valeur ASCII-32 mais bien sa position dans l'index:
ex:
le caractère 'ESC'ape a comme valeur hex(1Basc) hex(27ebc) asc(27dec) mais poids Code128(91dec)

Ai-je rajouté à la confusion ou éclaici les dégâts ?
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
14 mars 2010 à 00:44
@ADN56
petitain) - voui, si tu reprends la norme, les caractères de contrôle de x'00' à x'1F' son effectivement placés après (dans le codeset "A") pourquoi, je ne sais pas, mais c'est comme ça (j'imagine que les créateurs du standard ont eu une bonne raison, mais elle ne m'est pas évidente...), d'où la boucle en deux parties (pour le calcul des poids pour le check digit).

petitdeux) - Entièrement d'accord avec toi, mais c'est un vieux réflexe que de ne pas laisser une variable non typée ou non initialisée (pou info, quand je bossais sur 370, si un programme avait planté avant le tien et que la partition mémoire n'avait pas été "flush"ée, tu récupérais la valeur des emplacements mémoire de ton adressage, d'où problèmes; par ex, en assembleur, tu adressais une zone normalement non allouée mais définie comme allouable au niveau système, -> ton prog plante sans te générer d'erreur d'adressage, mais au dump tu t'aperçois que dans une donnée définie comme numérique tu as du "blanc packé" (x'40') au lieu d'un "zéro packé signé" (x'F0' sur le premier octet); j'essaie de rester cohérent avec ces "vieux" réflexes, et ça m'évite pas mal de soucis au débug.

grandTROIS) (pourquoi toujours petit, hein?, d'abord...)
le masque me simplifie le travail de test pour déterminer le charset de départ, je pense que je me serais plus emmerdé à tester la numéricité du début de la chaîne avec des val() et isnumeric (je maîtrise pas trop la dessus, mais c'est provisoire, vu que j'apprends chaque jour...); disons que c'est la meilleure solution que j'aie trouvé sans trop me prendre le chou à l'époque...

moyenQuatre) (et na...)
Non, le coup des fichiers de data correspond (chez moi) à une volonté de modularisation;
je change les matrices de caractères en externe par exemple et ne suis pas obligé de recompiler (encore un "vieux" réflexe du temps où tu lançais tes compil' le soir et tu récupérais les résultats le lendemain matin, ce qui impliquait que pour ne pas perdre un jour, fallait "blinder" ton code)
pour reprendre l'exemple des matrices de caractères (cf mon prog : http://www.vbfrance.com/codes/EDITION-CARACTERES-MATRICIELS-BITMAP-CF-CODE-128_51406.aspx)
rien ne m'empêche de redéfinir un graphisme et de l'affecter à une valeur décimale (une position dans la table de caractères), n'oublions pas que unicode, ascii, ebcdic, fieldata, etc ne sont que des conventions...

Unp'titpeuQWATREdontAuParagrapheDuquelQueMêmeOuais)
Vu que je me suis monté ça tout seul sans rien demander à tout le monde (ou l'inverse), je ne vois pas pourquoi j'interdirais quoi que ce soit (si, par inadvertance, j'étais au passage cité (pas l'adresse), je pense que je ne m'en offusquerais pas (mais va savoir avec moi-même, l'âge aidant, je deviens sourd et je ne m'entends pas...))

Pour info (2Deux) : je bricole en ce moment une interface d'impression d'étiquettes logistiques à la norme EAN-128 (pareil, gratos), donc, peut-être que si tu patientes un peu, mon "pondage" répondra à tes besoins...

Pour info (4Trois de un, d'abord, la guerre de 3 n'a pas eu lieu/flétan/maquereau/sardine...)
si tu veux la norme officielle, je peux te la faire parvenir, mais il me faudra ton email...

Que rajouter, euh?!?! sinon que mon "vieux" lecteur au buro a rendu l'âme et que même ça m'emmerde bcp pour les tests, si une bonne âme, passant par là, pouvait me dégoter un matos d'occasion pas trop cher (la Krise,etc)...

a+
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
13 mars 2010 à 19:36
Et bien voila, les commentaires sont nickel ! merci bien.
Code bien verrouillé, juste deux ou trois chose :

INDEX_A = "" '/* Création de l'index du Jeu de code "A" */
For I = 32 To 95 : INDEX_A &= Chr(I) : Next
For I = 0 To 31 : INDEX_A &= Chr(I) : Next
-> pourquoi pas une seul ligne de 0 à 95 ? tu veux placer les 0 à 31 à la fin de l'index ?

Dim X As Boolean = IMG_SHOW(IMG_FILE, 626, 170) '/* Affichage du bitmap généré */
If Not X Then
MsgBox("Erreur lors de la génération du code-barre")
End If
-> Dim X as boolean = false
if not X=IMG_SHOW(IMG_FILE, 626, 170) then
MsgBox("Erreur lors de la génération du code-barre")
End If
' devrait marcher non ? (détail je te l'accorde)

je pige pas à quoi sert le masque -_-"

tu es obligé de passer par des fichiers de datas ?

Autorise tu l'utilisation de code (en te citant bien sûr) dans des appli industrielle ?

Trés bon code, merci bien pour la contribution, cordialement @dn
mr_mojo_jr Messages postés 4 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 15 septembre 2010
17 févr. 2010 à 11:49
Bravo...
J'attends la version commentée avec impatience pour mieux le comprendre.
Encore Bravo !
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
15 févr. 2010 à 17:21
->Warny : avec une princesse-à-couettes ?

->ADN56 : IMG_SHOW, euh, très vieux réflexe de coboliste-à-dump, plus facile d'identifier "OK" ou "KO" dans un série hexa que de te recalculer le masque sur un mot de 32 bits pour savoir si à l'emplacement attendu tu as bien "true" ou "false" (qui se jouait sur 1 bit à l'époque) en plus si tu fais de la relocation, tu sais plus ou t'es; j'admets, c'est idiot de continuer à utiliser ce genre de techniques mais c'est reflexe (je m'améliore qd même, j'utilise de moins en moins)
FilterFileName -> c'est parce que je ne demande rien à l'utilisateur, comme le nom de fichier est généré directement à partir du code saisi, les risques d'erreur, inhérents à la saisie non contrôlée sont ainsi filtrés.
DirNotBin : Ça m'agace, j'ai l'habitude de dégager les <obj> et lex pour ne pas perdre de place avec les sauvegardes (encore un vieux réflexe ?), d'avoir tout dans LE répertoire de l'appli et de ne laisser dans le que le dernier .EXE valide; ça évite les confusions de versions et de toutes façons comme c'est régénéré, aucun besoin de conserver, mais de ce fait, tout élément qui se trouverait dans une de ces directories disparaîtrait : no good;
quand je mets "en prod'", je bazarde l'.EXE dans le répertoire de l'appli....
C'est une méthode (la mienne en fait,mais elle me convient), ceci dit c'est vraiment pour MON confort, rien n'emp^che de laisser faire l'IDE, mais bon, ça M'agace MOI perso (on se refait pas)
dispose des forms : bonne question, ça fait plus propre, effectivement, l'instance ne servant plus à rien, ziiiiiip poubelle; est-ce vraiment efficace/utile???, chuis pas expert, donc...
Les commentaires ne seront pas superflus, je sais, j'y travaille : re-postage ce soir ou demain (pour une première partie, au moins l'encodage), la suite ensuite...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
15 févr. 2010 à 16:59
En effet, et tu n'es pas avare d'exemple ^^
Sinon vivement les commentaires, je ne pige pas par exemple :
Pourquoi IMG_SHOW return un string au lieu d'un boolean ?
Pourquoi FilterFileName ? une dialogbox afficherai si le nom du fichier est non valide.
Pourquoi DirNotBin ? c'est pas génant si les fichiers sont dans le bin. Si ?
CMD_ABOUT_Click, tiens toi aussi tu 'disposes' tes forms ^^
Sinon tu as raison GENERATE_CODE() est pas simple à comprendre, enfin pour moi toujours ^__^
Bon courage pour l'ajout de comms.
cs_Warny Messages postés 473 Date d'inscription mercredi 7 août 2002 Statut Membre Dernière intervention 10 juin 2015
15 févr. 2010 à 16:51
le choc... ça me renvoie il y a longtemps, dans un univers lointain, très lointain.
En tout cas, c'est du quickbasic super propre. Mais je suis sûr que c'est plus rapide de le convertir en IL qu'en Visual Basic 2005.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
15 févr. 2010 à 16:38
En voila un code utile. Très bien ;)
Rejoignez-nous