Code 39 - Code 39
Code 39 (ook bekend als Alpha39 , Code 3 of 9 , Code 3/9 , Type 39 , USS Code 39 of USD-3 ) is een discrete barcodesymboliek van variabele lengte .
De Code 39-specificatie definieert 43 tekens, bestaande uit hoofdletters (A tot en met Z), cijfers (0 tot en met 9) en een aantal speciale tekens (-, ., $, /, +, % en spatie ). Een extra teken (aangeduid met '*') wordt gebruikt voor zowel start- als stopscheidingstekens. Elk karakter is samengesteld uit negen elementen: vijf maten en vier spaties. Drie van de negen elementen in elk teken zijn breed (binaire waarde 1) en zes elementen zijn smal (binaire waarde 0). De breedteverhouding tussen smal en breed is niet kritisch en kan gekozen worden tussen 1:2 en 1:3.
De streepjescode zelf bevat geen controlecijfer (in tegenstelling tot bijvoorbeeld Code 128 ), maar kan als zelfcontrolerend worden beschouwd omdat een enkele foutief geïnterpreteerde balk geen ander geldig teken kan genereren. Het grootste nadeel van Code 39 is misschien wel de lage gegevensdichtheid: er is meer ruimte nodig om gegevens in Code 39 te coderen dan bijvoorbeeld in Code 128. Dit betekent dat zeer kleine goederen niet kunnen worden gelabeld met een op Code 39 gebaseerde barcode. Code 39 wordt echter nog steeds door sommige postdiensten gebruikt (hoewel de Wereldpostunie in alle gevallen aanbeveelt om Code 128 te gebruiken) en kan met vrijwel elke barcodelezer worden gedecodeerd . Een voordeel van Code 39 is dat, aangezien er geen controlecijfer hoeft te worden gegenereerd, deze eenvoudig kan worden geïntegreerd in een bestaand afdruksysteem door een streepjescodelettertype aan het systeem of de printer toe te voegen en vervolgens de onbewerkte gegevens in dat lettertype af te drukken.
Code 39 is in 1974 ontwikkeld door Dr. David Allais en Ray Stevens van Intermec . Hun oorspronkelijke ontwerp omvatte twee brede balken en één brede spatie in elk teken, wat resulteerde in 40 mogelijke tekens. Door een van deze tekens opzij te zetten als start- en stoppatroon, bleven er 39 tekens over, wat de oorsprong was van de naam Code 39. Later werden vier leestekens toegevoegd, zonder brede balken en drie brede spaties, waardoor de tekenset werd uitgebreid tot 43 tekens. Code 39 werd later gestandaardiseerd als ANSI MH 10.8 M-1983 en MIL-STD-1189. MIL-STD-1189 is geannuleerd en vervangen door ANSI/AIM BC1/1995, Uniform Symbology Specification - Code 39.
codering
Het * -teken dat hieronder wordt weergegeven, is geen echt codeerbaar teken, maar is het start- en stopsymbool voor code 39. De asymmetrie van het symbool stelt de lezer in staat om de richting van de gescande streepjescode te bepalen. Deze code wordt traditioneel toegewezen aan de * karakter in barcode fonts en zal lijken vaak met de menselijke leesbare weergave naast de barcode.
In het algemeen kan de locatie van de twee brede balken worden beschouwd als een nummer tussen 1 en 10, en de locatie van de brede ruimte (die vier mogelijke posities heeft) kan worden beschouwd om het teken in een van de vier groepen te classificeren ( van links naar rechts): letters (+30) (U–Z), cijfers (+0) (1–9,0), letters (+10) (A–J) en letters (+20) (K– T). Bijvoorbeeld, van de letter P (de 16e letter van het alfabet) zijn de balken uitgelijnd om het getal 6 weer te geven, en de spatie helemaal rechts om de groep Letters (+20) te selecteren.
Wanneer weergegeven als een cijfer, wordt het getal "10" gebruikt om het getal nul te coderen. Omdat er slechts zes letters in de groep Letters (+30) zijn (letters 30-35 of U-Z), worden de andere vier posities in deze groep (36-39) gebruikt om drie symbolen weer te geven (streepje, punt, spatie ) en het start/stop-teken.
De twee brede balken, van de vijf mogelijke posities, coderen een getal tussen 1 en 10 met behulp van een twee-uit-vijf-code met de volgende numerieke equivalentie: 1, 2, 4, 7, 0. De getallen worden bij elkaar opgeteld. Het getal 6 is bijvoorbeeld gecodeerd NWWNN, met brede balken op de posities voor 2 en 4 (2+4=6). In het geval van NNWWN dat 4+7 = 11 is, wordt het toegewezen aan 0 voor cijfers (+0) en 10 voor de letterkolommen (+10 – +30). Bij het coderen van de (+10 tot +30) letters heeft de vergelijking een "-1" nodig, dus 'A' is WNNNW → 1 + 10 − 1 → 10 zoals weergegeven in de tabel.
De laatste vier karakters bestaan uit allemaal smalle balken en drie brede spaties. Er zijn vier mogelijke posities voor de enkele smalle ruimte.
Deze tabel geeft een overzicht van de Code 39-specificatie. De numerieke waarde die aan elk teken is toegewezen (behalve start/stop) wordt gebruikt in het hieronder beschreven controlesomalgoritme.
| Bars | Spaties | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| || ||| | +0 | ||| || | +10 | |||| | | +20 | | |||| | +30 | ||||||
| ▮|||▮ | 1 | | ||▮ | 1 | 1 | || |▮ | EEN | 10 | ▮||| ▮ | K | 20 | |||▮ | U | 30 |
| |▮||▮ | 2 | |▮ ||▮ | 2 | 2 | |▮| |▮ | B | 11 | |▮|| ▮ | L | 21 | | ||▮ | V | 31 |
| ▮▮||| | 3 | ||| | 3 | 3 | | || | C | 12 | || | | m | 22 | ▮||| | W | 32 |
| ||▮|▮ | 4 | || |▮ | 4 | 4 | ||▮ |▮ | NS | 13 | ||▮| ▮ | N | 23 | | |▮|▮ | x | 33 |
| ▮|▮|| | 5 | | || | 5 | 5 | ▮|▮ || | E | 14 | |▮| | | O | 24 | ▮ |▮|| | Y | 34 |
| |▮▮|| | 6 | |▮ ▮|| | 6 | 6 | |▮▮ || | F | 15 | |▮▮| | | P | 25 | | || | Z | 35 |
| |||▮▮ | 7 | || |▮▮ | 7 | 7 | ||| ▮▮ | G | 16 | |||▮ | Q | 26 | | ||▮▮ | - | 36 |
| ▮||▮| | 8 | | |▮| | 8 | 8 | || | | H | 17 | ▮||▮ | | R | 27 | ||▮| | . | 37 |
| |▮|▮| | 9 | |▮ |▮| | 9 | 9 | |▮| | | I | 18 | |▮|▮ | | S | 28 | | |▮| | ␣ | 38 |
| ||▮▮| | 10 | || | | 0 | 0 | ||▮ ▮| | J | 19 | ||▮▮ | | t | 29 | | |▮▮| | * | |
| ||||| | | | | || | $ | 39 | | | || | | / | 40 | | || | | | + | 41 | || | | | | % | 42 | |
Tekens worden gescheiden door een extra smalle spatie. De volledige codering voor de enkele letter "A", die feitelijk de start- en stoptekens als "*A*" bevat, is bijvoorbeeld "| |▮▮|▮|| |▮| |▮▮|" . De code wordt niet goed gelezen zonder deze spaties tussen tekens. Barcodelettertypen bevatten deze spatie altijd binnen de glyph voor het teken.
Code 39 mod 43
Code 39 wordt soms gebruikt met een optioneel modulo 43 controlecijfer . Om het te gebruiken, moet deze functie zijn ingeschakeld in de barcodelezer. De code met controlecijfer wordt Code 39 mod 43 genoemd .
Om dit te berekenen, krijgt elk teken een waarde toegewezen. De opdrachten staan in de tabel hierboven, en bijna, maar niet helemaal, systematisch.
Hier leest u hoe u de controlesomberekening uitvoert:
- Neem de waarde (0 tot en met 42) van elk teken in de streepjescode, exclusief start- en stopcodes.
- Tel de waarden op.
- Deel het resultaat door 43.
- De rest is de waarde van het toe te voegen controlesomteken.
Volledige ASCII-code 39
Code 39 is beperkt tot 43 tekens. In volledige ASCII- code 39 Symbolen 0-9, AZ, ".", "-" en spatie zijn hetzelfde als hun representaties in Code 39. Kleine letters, extra leestekens en controletekens worden weergegeven door reeksen van twee tekens van Code 39.
| Codedetails | ||||||||||||||
| nr | Karakter | codering | nr | Karakter | codering | nr | Karakter | codering | nr | Karakter | codering | |||
| 0 | NUL | %U | 32 | [de ruimte] | [de ruimte] | 64 | @ | %V | 96 | ` | %W | |||
| 1 | SOH | $A | 33 | ! | /EEN | 65 | EEN | EEN | 97 | een | +A | |||
| 2 | STX | $B | 34 | " | /B | 66 | B | B | 98 | B | +B | |||
| 3 | ETX | $C | 35 | # | /C | 67 | C | C | 99 | C | +C | |||
| 4 | EOT | $D | 36 | $ | /NS | 68 | NS | NS | 100 | NS | +D | |||
| 5 | ENQ | $E | 37 | % | /E | 69 | E | E | 101 | e | +E | |||
| 6 | ACK | $F | 38 | & | /F | 70 | F | F | 102 | F | +F | |||
| 7 | BEL | $G | 39 | ' | /G | 71 | G | G | 103 | G | +G | |||
| 8 | BS | $H | 40 | ( | /H | 72 | H | H | 104 | H | +H | |||
| 9 | HT | $ik | 41 | ) | /I | 73 | I | I | 105 | I | +ik | |||
| 10 | LF | $J | 42 | * | /J | 74 | J | J | 106 | J | +J | |||
| 11 | VT | $K | 43 | + | /K | 75 | K | K | 107 | k | +K | |||
| 12 | FF | $L | 44 | , | /L | 76 | L | L | 108 | ik | +L | |||
| 13 | CR | $M | 45 | - | - | 77 | m | m | 109 | m | +M | |||
| 14 | DUS | $Nee | 46 | . | . | 78 | N | N | 110 | N | +Nee | |||
| 15 | SI | $O | 47 | / | /O | 79 | O | O | 111 | O | +O | |||
| 16 | DLE | $P | 48 | 0 | 0 | 80 | P | P | 112 | P | +P | |||
| 17 | DC1 | $Q | 49 | 1 | 1 | 81 | Q | Q | 113 | Q | +Q | |||
| 18 | DC2 | $R | 50 | 2 | 2 | 82 | R | R | 114 | R | +R | |||
| 19 | DC3 | $S | 51 | 3 | 3 | 83 | S | S | 115 | s | +S | |||
| 20 | DC4 | $T | 52 | 4 | 4 | 84 | t | t | 116 | t | +T | |||
| 21 | NAK | $U | 53 | 5 | 5 | 85 | U | U | 117 | jij | +U | |||
| 22 | SYN | $V | 54 | 6 | 6 | 86 | V | V | 118 | v | +V | |||
| 23 | ETB | $W | 55 | 7 | 7 | 87 | W | W | 119 | met wie | +W | |||
| 24 | KAN | $X | 56 | 8 | 8 | 88 | x | x | 120 | x | +X | |||
| 25 | EM | $Y | 57 | 9 | 9 | 89 | Y | Y | 121 | ja | +Y | |||
| 26 | SUB | $Z | 58 | : | /Z | 90 | Z | Z | 122 | z | +Z | |||
| 27 | ESC | %EEN | 59 | ; | %F | 91 | [ | %K | 123 | { | %P | |||
| 28 | FS | %B | 60 | < | %G | 92 | \ | %L | 124 | | | %Q | |||
| 29 | GS | %C | 61 | = | %H | 93 | ] | %M | 125 | } | %R | |||
| 30 | RS | %NS | 62 | > | %I | 94 | ^ | %N | 126 | ~ | %S | |||
| 31 | ons | %E | 63 | ? | %J | 95 | _ | %O | 127 | DEL | %T, %X, %Y, %Z | |||
Software
Deze gratis en open source software kan Code 39-barcodes produceren:
