Exemple de code barre maixcode pour UPS , ce programme montre comment crée un codage d’adresse pour UPS
;Exemple d'utilisation de la dll ybarcode.dll ;1) les commandes ;- obligatoires ;<b>nnn numéro du code barre ;<d> ou <data>le texte du code barre ; ;- facultatives et selon le type de code barres ;<height>nnnn ou <h>nnnn hauteur du code barre, par défaut 50 ;<whitesp>nnn ou <w>nnnn taille de l'espace devant le dessin du code barre ;<scale>nnn échelle de dessin par défaut 1 ; ;<border>nnn taille du bord autour du code barre ;<box> ajout du dessin d'une boite autour du code barre ;<bind> ajout de dessin de bord devant et dernière le code barre ; ;<reverse> ou <r> inverse le dessin noir/blanc devient blanc/noir ;<fg>hhhhhh couleur du fond ;<bg>hhhhhh couleur des barres ; ;<rotate>nnn rotation 0 ou 90 ou 180 ou 270 ; ;<p> ou <primary> texte bis pour les code barres Maxicode et els Composites ;<gs1> traite la donnée au format GS1 ;<null>nnn numéro du caractère représentant le caractère NULL ($00) ; ;<cols>nnnn nombre de colonnes pour le code barre PDF417 ;<vers>nnnn numéro de version pour le code barre QR Code ;<ver>nnnn numéro de version (champ option_2) ;<secure>nnnn numéro de niveau de correction pour les codes barres PDF417 et QR Code ;<mode>nnnn mode d'encodage pour les codes barres Maxicode et les Composites ; ;<option_1>nnnn pour ecrire dans le champ option_1 ;<option_2>nnnn pour ecrire dans le champ option_2 ;<option_3>nnnn pour ecrire dans le champ option_3 ;<rows>nnnn pour ecrire dans le champ rows ;<width>nnnn pour ecrire dans le champ width ;attention : ;- la commande <data> (ou <d>) DOIT TOUJOURS ETRE LA DERNIERE COMMANDE ; ;- si les données peuvent contenir les caractères < ou > alors il faut utiliser ;l'instruction hmpencode pour encoder la valeur de <data> (ou<d>) et la valeur de ;la commande <primary> (ou <p>) ; ;2) les types de codes barres ; ; 1: Code 11 51: Pharma One-Track 89: ITF-14 ; 2: Standard 2of5 52: PZN 90: KIX Code ; 3: Interleaved 2of5 53: Pharma Two-Track 92: Aztec Code ; 4: IATA 2of5 55: PDF417 93: DAFT Code ; 6: Data Logic 56: PDF417 Trunc 97: Micro QR Code ; 7: Industrial 2of5 57: Maxicode 98: HIBC Code 128 ; 8: Code 39 58: QR Code 99: HIBC Code 39 ; 9: Extended Code 39 60: Code 128-B 102: HIBC Data Matrix ;13: EAN 63: AP Standard Customer 104: HIBC QR Code ;16: GS1-128 66: AP Reply Paid 106: HIBC PDF417 ;18: Codabar 67: AP Routing 108: HIBC MicroPDF417 ;20: Code 128 68: AP Redirection 110: HIBC Codablock-F ;21: Leitcode 69: ISBN 128: Aztec Runes ;22: Identcode 70: RM4SCC 129: Code 23 ;23: Code 16k 71: Data Matrix 130: Comp EAN ;24: Code 49 72: EAN-14 131: Comp GS1-128 ;25: Code 93 74: Codablock-F 132: Comp Databar-14 ;28: Flattermarken 75: NVE-18 133: Comp Databar Ltd ;29: Databar-14 76: Japanese Post 134: Comp Databar Ext ;30: Databar Limited 77: Korea Post 135: Comp UPC-A ;31: Databar Extended 79: Databar-14 Stack 136: Comp UPC-E ;32: Telepen Alpha 80: Databar-14 Stack Omni 137: Comp Databar-14 Stack ;34: UPC-A 81: Databar Extended Stack 138: Comp Databar Stack Omni ;37: UPC-E 82: Planet 139: Comp Databar Ext Stack ;40: Postnet 84: MicroPDF 140: Channel Code ;47: MSI Plessey 85: USPS OneCode 141: Code One ;49: FIM 86: UK Plessey 171: data matrix carré ;50: Logmars 87: Telepen Numeric ;à partir de la version de la dll depuis 2017, on a ajouté le code 171, Data matrix comme le code 71 ;mais en forçant le mode "dessin carré" sinon selon la valeur du code barre le dessin du data matrix s'étale en largeur puis en hauteur etc ;ce qui donne parfois un dessin "rectangulaire" , un peu comme s'il y avait deux data matrix côte à côte et donc cela peut déborder de l'objet codebarre ;et donc devenir illisible, le code 171 est donc la même chose que le code 71 mais avec l'option3 a la valeur 100, ;on peut aussi écrire <b>71<option_3>100<d>01950902101015010 => cella donne toujours un dessin carré ; ;3) les erreurs possibles ;4) pour passer la dll ybarcode en mode debug ;créer le fichier ybarcode.ini ;et mettre dans le chapitre ;[ybarcode] ;debug=1 ;lancez votre programme , le résultat du debug se trouve dans le fichier ;ybarcode.log ; ;5) voir le site ; http://www.zint.org.uk/zintSite/Manual.aspx ; pour la doc complète de la bibliothèque zint ;6) au 31/08/2009 ybarcode.dll contient ;attention le maxicode ne marche pas dans cette version ;ybarcode.dll version 1.01 du 21/08/2009 ;zint version 2.2.1 du 18/08/2009 (plus correction jusqu'au 26/08/2009 patchset367) ;qrencode version 3.1.0 du 06/06/2009 ;zlib version 1.2.3 du 17/07/2005 ;libpng version 1.2.37 du 04/06/2009 ; ;au 17/08/2010 ybarcode.dll contient ;ybarcode.dll version 1.04 du 17/06/2010" ;zint version 2.3.2 du 29/05/2010" ;qrencode version 3.1.1 du 03/02/2010" ;zlib version 1.2.5 du 19/04/2010" ;libpng version 1.2.37 du 04/06/2009" ; ;7) affichage et impression ;La dll ybarcode génère le code barre dans un fichier de travail de type png ;Le runtime harmony prend en charge la création et la suppresion de ce fichier de travail ;Le programme diva n'a donc pas à traiter ce fichier. ;L'impression du code barre se fait selon la valeur du champ "largeur d'un élément" ;dans l'objet code barre de xwin ;la formule utilisée est ; nombre de point x du fichier png * largeur d'un élément ; nombre de point y du fichier png * largeur d'un élément ;Ceci donne une longueur et une largeur en dixième de millimètre. ;Vous pouvez augmenter ou réduire la taille du dessin du code barres ;en augmentant ou en réduisant la valeur du champ "largeur d'un élément" ; ;Exception, le code barre maxicode est généré par la dll ybarcode avec une taille de 1 pouce ;cette taille est multipliée par la valeur du champ "largeur d'un element" ;puis divisée par la valeur 34 ;Si la valeur du champ "largeur d'un élément" est égale à 34 ;ce qui correspond à la valeur par défaut de l'objet code barre ;alors la taille du maxicode est de "taille*34/34", c'est à dire de un pouce ;Ainsi la valeur par défaut (34) est la valeur 'pivot' de dessin ; ;En réduisant ou en agrandissant la valeur du champ "largeur d'un élément" ;vous pouvez réduire ou agrandir le dessin du code barre maxicode define masquexmi = "demoybarcode.dhoi" public record demoybarcode.dhsd test test = " " record * htdf tdf 1 st x 1 bb x ;http://www.zint.org.uk/zintSite/Manual.aspx?page=11 1 enreg 1024 1 CAR_RS 1 1 CAR_GS 1 1 CAR_ET 1 ;Postcode data which can consist of up to 9 digits (for mode 2) or up to 6 alphanumeric characters (for mode 3). Remaining unused characters should be filled with the SPACE character (ASCII 32). 1 codepostal 9 ;obligatoirement de 9 ;Three digit country code according to ISO 3166 (see Appendix B). ;http://www.zint.org.uk/zintSite/Manual.aspx?page=15 1 country 3 ;Three digit service code. This depends on your parcel courier. 1 servicecode 3 1 SHIFTC 1 procedure test_gs1_128c_b beginp SHIFTC = 94 enreg = \ "[)>" & CAR_RS & \ ;entête "01" & CAR_GS & "96" & \ ;Transportation data header. 5 caractères avec le code GS, obligatoire "1Z00004951" & CAR_GS & \ ;Tracking number. entre 10 et 11 caractères (uniquement des majuscules + chiffres), obligatoire "UPSN" & CAR_GS & \ ;Standard Carrier Alpha Code (SCAC). 4 carac + GS , obligatoire "9BCJ43" & CAR_GS & \ ;UPS shipper number. 6 carac (uniquement des majuscules + chiffres) obligatoire "365" & CAR_GS & \ ;Julian day of pickup. 3 caractères numériques , obligatoire "625TH9" & CAR_GS & \ ;Shipment ID number. optionnel, 0-30 carac majuscules+chiffres. mettre toujours le code GS même s'il n'y a pas de donnée "1/1" & CAR_GS & \ ;Package X of Y. obligatoire 1-3 chiffres pour x et 1-3 chiffres pour Y. et avec le caractere \ entre les deux "10" & CAR_GS & \ ;Package weight in pounds. obligatoire 1-3 chiffres "Y" & CAR_GS & \ ;Address validation. obligatoire . Y ou N "15 RUE ICARE" & CAR_GS & \ ;Ship-to address. optionnel . 0-35 carac majuscules+chiffees mettre toujours le code GS même s'il n'y a pas de donnée "TANNERIES" & CAR_GS & \ ;Ship-to city. obligatoire. 1-20 carac majuscules+chiffees "FR" & CAR_RS & \ ;Ship-to state. obligatoire. 2 carac majuscules , RS indique la fin du champ de du texte CAR_ET ;EOT indique la fin des datas test.text2 = enreg test.text2 = modify("[)>","",test.text2) test.text2 = modify(CAR_GS," ",test.text2) test.text2 = modify(CAR_RS," ",test.text2) test.text2 = modify(CAR_ET," ",test.text2) enreg = hmpencode(left(enreg)) test.text1 = "57 maxicode UPS" ;mode 2 et 3 son en fait identique test.ttt = "<b>57<mode>3<primary>" & codepostal & country & servicecode & "<d>" & left(enreg) PrintBegin xmiprint masquexmi 1 PrintEnd endp procedure test_maxicode_ups beginp CAR_RS = $1E ;30 CAR_GS = $1D ;29 CAR_ET = $04 ;04 ;primary message codepostal + contry + code du service codepostal = "67000" country = 250 ;france servicecode = 068 ;data enreg = \ "[)>" & CAR_RS & \ ;entête "01" & CAR_GS & "96" & \ ;Transportation data header. 5 caractères avec le code GS, obligatoire "1Z00004951" & CAR_GS & \ ;Tracking number. entre 10 et 11 caractères (uniquement des majuscules + chiffres), obligatoire "UPSN" & CAR_GS & \ ;Standard Carrier Alpha Code (SCAC). 4 carac + GS , obligatoire "9BCJ43" & CAR_GS & \ ;UPS shipper number. 6 carac (uniquement des majuscules + chiffres) obligatoire "365" & CAR_GS & \ ;Julian day of pickup. 3 caractères numériques , obligatoire "625TH9" & CAR_GS & \ ;Shipment ID number. optionnel, 0-30 carac majuscules+chiffres. mettre toujours le code GS même s'il n'y a pas de donnée "1/1" & CAR_GS & \ ;Package X of Y. obligatoire 1-3 chiffres pour x et 1-3 chiffres pour Y. et avec le caractere \ entre les deux "10" & CAR_GS & \ ;Package weight in pounds. obligatoire 1-3 chiffres "Y" & CAR_GS & \ ;Address validation. obligatoire . Y ou N "15 RUE ICARE" & CAR_GS & \ ;Ship-to address. optionnel . 0-35 carac majuscules+chiffees mettre toujours le code GS même s'il n'y a pas de donnée "TANNERIES" & CAR_GS & \ ;Ship-to city. obligatoire. 1-20 carac majuscules+chiffees "FR" & CAR_RS & \ ;Ship-to state. obligatoire. 2 carac majuscules , RS indique la fin du champ de du texte CAR_ET ;EOT indique la fin des datas test.text2 = enreg test.text2 = modify("[)>","",test.text2) test.text2 = modify(CAR_GS," ",test.text2) test.text2 = modify(CAR_RS," ",test.text2) test.text2 = modify(CAR_ET," ",test.text2) enreg = hmpencode(left(enreg)) test.text1 = "57 maxicode UPS" ;mode 2 et 3 son en fait identique test.ttt = "<b>57<mode>3<primary>" & codepostal & country & servicecode & "<d>" & left(enreg) PrintBegin xmiprint masquexmi 1 PrintEnd endp main xmiload masquexmi tdf.Name = "demoybarcode.txt" st = fopen(tdf,"p") if st <> 0 display "erreur à l'ouverture du fichier demoybarcode.txt" ProgramExit endif PrintBegin do st = fread (tdf, enreg) if st = 0 if mid(test,1,1) <> ";" ;c'est un commentaire ? bb = val(hmpseek(enreg,"b"," ")) ;c'est une commande code barre ? if bb = 0 test.text1 = enreg ;nom du code barre else test.text2 = enreg test.ttt = enreg if bb = 23 or bb = 24 or bb = 74 xmiprint masquexmi 2 ;code barre plus haut else xmiprint masquexmi 1 endif endif endif endif while st = 0 wend test_maxicode_ups test_gs1_128c_b PrintEnd fclose(tdf) ProgramExit
; Code 11 <b>1<height>40<border>10<d>8765432164 ; Code 2 of 5 Standard <b>2<height>40<border>10<d>87654321 ; Interleaved 2 of 5 <b>3<height>40<border>10<d>87654321 ; Code 2 of 5 IATA <b>4<height>40<border>10<d>87654321 ; Code 2 of 5 Data Logic <b>6<height>40<border>10<d>87654321 ; Code 2 of 5 Industrial <b>7<height>40<border>10<d>87654321 ; Code 39 <b>8<height>40<border>10<d>CODE39 ; Extended Code 39 <b>9<height>40<border>10<d>Code 39e ; EAN8 <b>13<height>40<border>10<d>7654321 ; EAN8 - 2 digits add on <b>13<height>40<border>10<d>7654321+21 ; EAN8 - 5 digits add-on <b>13<height>40<border>10<d>7654321+54321 ; EAN13 <b>13<height>40<border>10<d>210987654321 ; EAN13 - 2 digits add-on <b>13<height>40<border>10<d>210987654321+21 ; EAN13 - 5 digits add-on <b>13<height>40<border>10<d>210987654321+54321 ; GS1-128 <b>16<height>40<border>10<d>[01]98898765432106[3202]012345[15]991231 ; CodaBar <b>18<height>40<border>10<d>D765432C ; Code 128 <b>20<height>40<border>10<d>Code 128 ; Deutshe Post Leitcode <b>21<height>40<border>10<d>3210987654321 ; Deutche Post Identcode <b>22<height>40<border>10<d>10987654321 ; Code 16k <b>23<height>40<border>10<d>Demonstration Code 16k symbol generated by libzint ; Code 16k <b>23<gs1><border>10<d>[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231 ; Code 49 <b>24<d>Demonstration Code 49 ; Code 93 <b>25<height>40<border>10<d>Code 93 ; Flattermarken <b>28<height>40<border>10<d>87654321 ; GS1 DataBar-14 <b>29<height>40<border>10<d>2001234567890 ; GS1 DataBar Limited <b>30<w>2<height>40<border>10<w>2<d>31234567890 ; GS1 DataBar Expanded <b>31<height>40<border>10<d>[01]90012345678908[3103]001750 ; Telepen Alpha <b>32<height>40<border>10<d>Telepen ; UPC A <b>34<height>40<border>10<d>10987654321 ; UPC A - 2 digit add-on <b>34<height>40<border>10<d>10987654321+21 ; UPC A - 5 digit add-on <b>36<height>40<border>10<d>10987654321+54321 ; UPC E <b>37<height>40<border>10<d>654321 ; UPC E - 2 digit add-on <b>37<height>40<border>10<d>654321+21 ; UPC E - 5 digit add-on <b>37<height>40<border>10<d>654321+54321 ; PostNet-6 <b>40<height>40<border>10<d>54321 ; PostNet-10 <b>40<height>40<border>10<d>987654321 ; PostNet-12 <b>40<height>40<border>10<d>10987654321 ; MSI Code <b>47<height>40<border>10<d>87654321 ; FIM <b>49<height>40<border>10<d>D ; LOGMARS <b>50<height>40<border>10<d>LOGMARS ; Pharmacode One-Track <b>51<height>40<border>10<d>123456 ; Pharmazentralnumber <b>52<height>40<border>10<d>654321 ; Pharmacode Two-Track <b>53<height>40<border>10<d>12345678 ; PDF417 <b>55<border>10<d>Demonstration PDF417 symbol generated by libzint ; PDF417 Truncated <b>56<border>10<d>Demonstration PDF417 symbol generated by libzint ; Maxicode <b>57<primary>999999999840012<height>40<border>10<d>Demonstration Maxicode symbol generated by libzint ; QR Code <b>58<border>10<d>Demonstration QR Code symbol generated by libzint ; Code 128 Subset B <b>60<height>40<border>10<d>87654321 ; Australian Post Standard Customer <b>63<height>40<border>10<d>87654321 ; Australian Post Customer 2 <b>63<height>40<border>10<d>87654321AUSPS ; Australian Post Customer 3 <b>63<height>40<border>10<d>87654321 AUSTRALIA ; Australian Post Reply Paid <b>66<height>40<border>10<d>87654321 ; Australian Post Routing <b>67<height>40<border>10<d>87654321 ; Australian Post Redirection <b>68<height>40<border>10<d>87654321 ; ISBN Code <b>69<height>40<border>10<d>0333638514 ; Royal Mail 4 State <b>70<height>40<border>10<d>ROYALMAIL ; Data Matrix <b>71<border>10<d>Demonstration Data Matrix symbol generated by libzint ; Data Matrix <b>71<gs1><border>10<d>[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231 ; Data Matrix ECC 200 <b>71<mode>3<border>10<d>Demonstration Data Matrix symbol generated by libzint ; EAN-14 <b>72<height>40<border>10<d>3210987654321 ; Codablock-F <b>74<height>40<border>10<d>Demonstration Codablock-F symbol generated by libzint ; Codablock-F <b>74<height>40<gs1><border>10<d>[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231 ; NVE-18 <b>75<height>40<border>10<d>76543210987654321 ; Japanese Post <b>76<height>40<border>10<d>10000131-3-2-503 ; Korea Post <b>77<height>40<border>10<d>123456 ; GS1 DataBar Truncated <b>29<height>40<border>10<d>1234567890 ; GS1 DataBar Stacked <b>79<height>40<border>10<d>1234567890 ; GS1 DataBar Stacked Omnidirectional <b>80<height>40<border>10<d>3456789012 ; GS1 DataBar Expanded Stacker <b>81<height>40<border>10<d>[01]98898765432106[3202]012345[15]991231 ; Planet 12 Digit <b>82<height>40<border>10<d>10987654321 ; Planet 14 Digit <b>82<height>40<border>10<d>3210987654321 ; Micro PDF417 <b>84<height>40<border>10<d>Demonstration MicroPDF417 symbol generated by libzint ; USPS OneCode 4-State Customer Barcode <b>85<height>40<border>10<d>01234567094987654321 ; Plessey Code with bidirectional reading support <b>86<height>40<border>10<d>87654321 ; Telepen Numeric <b>87<height>40<border>10<d>87654321 ; ITF-14 <b>89<height>40<border>10<d>3210987654321 ; KIX Code <b>90<height>40<border>10<d>1231FZ13Xhs ; Aztec Code <b>92<border>10<d>Demonstration Aztec Code symbol generated by libzint ; Aztec Code <b>92<gs1><border>10<d>[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231 ; DAFT Code <b>93<height>40<border>10<d>daftdaftdaftdaftdaftdaftdaft ; Micro QR Code <b>97<border>10<d>MicroQR Code ; HIBC LIC 128 <b>98<height>40<border>10<d>A99912345/9901510X3 ; HIBC LIC 39 <b>99<height>40<border>10<d>A123BJC5D6E71 ; HIBC LIC Data Matrix <b>102<height>40<border>10<d>A99912345/9901510X3 ; HIBC LIC QR-Code <b>104<height>40<border>10<d>A99912345/9901510X3 ; HIBC LIC PDF417 <b>106<height>40<border>10<d>A99912345/9901510X3 ; HIBC LIC MicroPDF417 <b>108<height>40<border>10<d>A99912345/9901510X3 ; HIBC LIC Codablock F <b>110<height>40<border>10<d>A99912345/9901510X3 ; Aztec Runes <b>128<height>40<border>10<d>125 ; Code 23 <b>129<height>40<border>10<d>12345678 ; EAN-8 Composite with CC-A <b>130<mode>1<primary>1234567<height>40<border>10<d>[21]A12345678 ; EAN-13 Composite with CC-A <b>130<mode>1<primary>331234567890<height>40<border>10<d>[99]1234-abcd ; UCC/EAN-128 Composite with CC-A <b>131<mode>1<primary>[01]03212345678906<height>40<border>10<d>[10]1234567ABCDEFG ; UCC/EAN-128 Composite with CC-C <b>131<mode>3<primary>[00]030123456789012340<height>40<border>10<d>[02]13012345678909[10]1234567ABCDEFG ; RSS-14 Composite with CC-A <b>132<mode>1<primary>361234567890<height>40<border>10<d>[11]990102 ; RSS Limited Composite with CC-B <b>133<mode>2<primary>351234567890<height>40<border>10<d>[21]abcdefghijklmnopqrstuv ; RSS Expanded Composite with CC-A <b>134<mode>1<primary>[01]93712345678904[3103]001234<height>40<border>10<d>[91]1A2B3C4D5E ; UPC-A Composite with CC-A <b>135<mode>1<primary>10987654321<height>40<border>10<d>[15]021231 ; UPC-E Composite with CC-A <b>136<mode>1<primary>121230<height>40<border>10<d>[15]021231 ; RSS-14 Stacked Composite with CC-A <b>137<mode>1<primary>341234567890<height>40<border>10<d>[17]010200 ; RSS-14 Stacked Omnidirectional Composite with CC-A <b>138<mode>1<primary>341234567890<height>40<border>10<d>[17]010200 ; RSS Expanded Stacked Composite with CC-A <b>139<mode>1<primary>[01]00012345678905[10]ABCDEF<height>40<border>10<d>[21]12345678 ; Channel Code <b>140<height>40<border>10<d>12345 ; Code One <b>141<height>40<border>10<d>Demonstration Code One symbol generated by libzint ; Grid Matrix avec la derniere dll ybarcode version 2.43 pour ecrire un tres grand nombre d'infos <b>142<height>40<d>Grid Matrix avec la derniere dll ybarcode version 2.43 pour ecrire un tres grand nombre d'infos ; Data Matrix mais toujours carré en fait on <b>71<option_3>100<border>10<d>01950902101015010 <b>171<border>10<d>Demonstration Data Matrix symbol generated by libzint ; Data Matrix mais toujours carré en fait on <b>71<option_3>100<gs1><d>01950902101015010 <b>171<gs1><border>10<d>[01]98898765432106[02]13012345678909[10]1234567ABCDEFG[3202]012345[15]991231 ; Data Matrix ECC 200 mais toujours carré en fait on <b>71<option_3>100<mode>3<border>10<d>01950902101015010 <b>171<mode>3<border>10<d>Demonstration Data Matrix symbol generated by libzint