Koodi 128 - Code 128
Koodi 128 on ISO/IEC 15417: 2007 -standardissa määritelty suuritiheyksinen lineaarinen viivakoodisymboli . Sitä käytetään aakkosnumeerisiin tai vain numeerisiin viivakoodeihin . Se voi koodata kaikki 128 ASCII- merkkiä ja käyttämällä laajennussymbolia (FNC4) ISO/IEC 8859-1 -standardissa määriteltyjä latina-1-merkkejä . Se johtaa yleensä pienempiin viivakoodeihin verrattuna muihin menetelmiin, kuten koodi 39 , varsinkin kun tekstit sisältävät enimmäkseen numeroita.
GS1-128 (aiemmin tunnettu nimellä UCC/EAN-128) on koodin 128 osajoukko, ja sitä käytetään laajalti maailmanlaajuisesti merenkulku- ja pakkausteollisuudessa tuotekoodina kontin ja kuormalavan tasoille toimitusketjussa.
Erittely
Code 128 -viivakoodissa on seitsemän osaa:
- Hiljainen alue
- Aloitussymboli
- Koodatut tiedot
- Tarkista symboli (pakollinen)
- Stop -symboli
- Viimeinen palkki (pidetään usein osana stop -symbolia)
- Hiljainen alue
Sekkisymboli lasketaan kaikkien symbolien painotetusta summasta ( modulo 103).
Alatyypit
Koodi 128 sisältää 108 symbolia: 103 datasymbolia, 3 aloitussymbolia ja 2 pysäytyssymbolia. Jokainen symboli koostuu kolmesta mustasta palkista ja kolmesta eri leveydestä olevasta valkoisesta tilasta. Kaikki leveydet ovat perusmoduulin monikertoja. Jokainen palkki ja väli on 1-4 moduulia leveä ja symbolit ovat kiinteää leveyttä: kolmen mustan palkin ja kolmen valkoisen palkin leveyden summa on 11 moduulia.
Pysäytyskuvio koostuu kahdesta päällekkäisestä symbolista ja siinä on neljä palkkia. Pysäytyskuvio mahdollistaa kaksisuuntaisen skannauksen. Kun pysäytyskuvio luetaan vasemmalta oikealle (tavallinen tapaus), pysäytyssymboli (jota seuraa 2-moduulinen palkki) tunnistetaan. Kun pysäytyskuvio luetaan oikealta vasemmalle, peruutuspysäytyssymboli (jota seuraa 2-moduulinen palkki) tunnistetaan. Skannerin, joka näkee peruutuspysäytyssymbolin, tietää sitten, että sen on ohitettava 2-moduulinen palkki ja luettava loput viivakoodista taaksepäin.
Nimestä huolimatta koodissa 128 ei ole 128 erillistä symbolia, joten se ei voi edustaa 128 koodipistettä suoraan. Edustaakseen kaikkia 128 ASCII -arvoa se siirtyy kolmen koodijoukon (A, B, C) välillä. Yhdessä koodijoukot A ja B kattavat kaikki 128 ASCII -merkkiä. Koodijoukkoa C käytetään koodittamaan merkkijonoja tehokkaasti. Ensimmäinen osajoukko valitaan käyttämällä asianmukaista käynnistyssymbolia. Jokaisessa koodijoukossa jotkut 103 datakoodipisteestä on varattu siirtymään toiseen kahdesta koodijoukosta. Vaihdot tehdään käyttämällä koodipisteitä 98 ja 99 koodisarjoissa A ja B, 100 koodisarjoissa A ja C ja 101 koodisarjoissa B ja C vaihtaakseen niiden välillä):
- 128A (koodijoukko A) - ASCII -merkit 00-95 (0–9, A – Z ja ohjauskoodit), erikoismerkit ja FNC 1–4
- 128B (koodijoukko B) - ASCII -merkit 32–127 (0–9, A – Z, a – z), erikoismerkit ja FNC 1–4
- 128C (koodijoukko C) - 00–99 (koodaa kaksi numeroa yhdellä koodipisteellä) ja FNC1
Koodin 128 vasemmalla ja oikealla puolella olevan hiljaisen alueen vähimmäisleveys on 10x, missä x on moduulin vähimmäisleveys. Se on pakollinen viivakoodin vasemmalla ja oikealla puolella.
Käynnistys/pysäytys ja koodatut tiedot
Jokainen viivakoodin symboli koostuu kolmesta palkista ja kolmesta välilyönnistä. Jokainen palkki tai väli on 1, 2, 3 tai 4 yksikköä leveä, palkkien leveyden summan on oltava parillinen (4, 6 tai 8 yksikköä), välileveyden summan on oltava pariton (3, 5 tai 7 yksikköä) ja yhteensä 11 yksikköä symbolia kohden. Esimerkiksi ASCII -merkin "0" koodausta voidaan pitää muodossa 10011101100, jossa 1: n sekvenssi on palkki ja 0: n sekvenssi on välilyönti. Yksi 1 olisi ohuin viiva viivakoodissa. Kolme 1: tä peräkkäin (111) osoittaa palkkia, joka on kolme kertaa paksumpi kuin yksi 1 bar.
Mahdollisia 11 yksikön leveitä symboleja on 108, ja koodi käyttää kaikkia mahdollisia symboleja. Kahta symbolista käytetään pysäytyksen (viivakoodin lopun) osoittamiseen, pysäytykseen ja peruutuspysäytykseen. Kaksi pysäytyssymbolia ovat erityisiä, koska niiden jälkeen on aina 2 yksikön palkki, joka muodostaa 13 yksikön pitkän pysäytyskuvion. Pysäytyskuvion lukeminen vasemmalta oikealle on pysäytyssymboli (jota seuraa 2 yksikön palkki) ja pysäytyskuvion lukeminen oikealta vasemmalle on käänteinen pysäytyssymboli (jota seuraa 2 yksikön palkki).
Tarkista numeroiden laskenta
Tarkistusnumero on painotettu modulo-103-tarkistussumma. Se lasketaan summaamalla aloituskoodin "arvo" kunkin symbolin "arvon" tuotteisiin kerrottuna sen sijainnilla viivakoodijonossa. Aloitussymboli ja ensimmäinen koodattu symboli ovat kohdassa 1. Tuotteiden summa pienennetään sitten modulo 103. Loput muunnetaan sitten takaisin yhdeksi 103: sta rajaamattomasta symbolista ( alla annettujen ohjeiden mukaisesti ) ja liitetään viivakoodiin , juuri ennen pysäytyssymbolia.
Esimerkiksi seuraavassa taulukossa koodin 128 variantin A tarkistussumma lasketaan aakkosnumeeriselle merkkijonolle PJJ123C:
| Koodi | Arvo | Sijainti | Arvo × sijainti |
|---|---|---|---|
| Aloituskoodi A | 103 | 1 | 103 |
| P | 48 | 1 | 48 |
| J | 42 | 2 | 84 |
| J | 42 | 3 | 126 |
| 1 | 17 | 4 | 68 |
| 2 | 18 | 5 | 90 |
| 3 | 19 | 6 | 114 |
| C | 35 | 7 | 245 |
| Summa | 878 | ||
| Jäljellä oleva mod 103 | 54 | ||
Tarkistussymbolin laskemiseksi siirto- ja koodikytkimen symboleja käsitellään samalla tavalla kuin mitä tahansa muuta viivakoodin symbolia. Tarkistussumma lasketaan symboliarvojen perusteella riippumatta siitä, mikä koodijoukko on aktiivinen tuolloin. Esimerkiksi koodijoukon C arvoa "33" ja koodijoukon B arvoa "A" pidetään molemmat koodin 128 arvona 33, ja tarkistusnumero lasketaan sen arvon perusteella, joka on 33 kertaa symbolin sijainti viivakoodissa .
FNC4 -koodin käyttäminen korkeiden (128–255) merkkien koodaamiseen
Erikoissymbolilla FNC4 ("toiminto 4"), joka esiintyy vain koodisarjoissa A ja B, voidaan koodata kaikki latinalaisen 1 ( ISO-8859-1 ) merkit Code 128 -viivakoodissa. Ominaisuutta ei tueta laajasti, eikä sitä käytetä GS1-128: ssa. Kun merkkijonossa on yksi FNC4, seuraava symboli muunnetaan ASCII: ksi tavalliseen tapaan ja sitten 128 lisätään ASCII -arvoon. (Jos seuraava symboli on siirtymä, toista merkkiä käytetään merkin saamiseen.) Jos kahta FNC4: ää käytetään peräkkäin, kaikkia seuraavia merkkejä käsitellään sellaisina merkkijonon loppuun asti tai toiseen FNC4 -pariin . Kahden FNC4: n välillä käytetään yhtä FNC4: ää osoittamaan, että seuraava merkki on vakio ASCII .
Viivakoodin leveydet
Code128 määrittää kuuden vuorottelevan palkin ja välilyönnin yhdistelmän (3 kpl) kullekin symbolille. Näin ollen jokainen symboli alkaa palkilla ja päättyy välilyöntiin. Viivakoodifontteissa viimeinen palkki yhdistetään yleensä pysäytyssymboliin laajemman pysäytyskuvion luomiseksi. Seuraavassa taulukossa kuvataan kunkin palkin leveydet ja kunkin symbolin väli. Jokaisen palkin tai tilan leveys voi olla 1, 2, 3 tai 4 yksikköä (moduulia). Yllä olevan esimerkin avulla "A" esitetään kuviolla 10100011000 tai leveyksinä 111323 alla olevissa taulukoissa.
Leveysarvo lasketaan laskemalla mallin jokaisen 1: n ja sitten 0: n ajon pituus vasemmalta alkaen. Ajoja on aina 6 ja näiden kuuden ajon pituudet muodostavat Leveydet -arvon. Esimerkiksi kuvion 10100011000 avulla ajopituudet ovat 1 (numero 1), 1 (numero 0), 1 (numero 1), 3 (numero 0), 2 (numero 1), 3 (numero 0). Kun raportoidaan vain kunkin ajon pituudet, saadaan 1, 1, 1, 3, 2, 3, jolloin saadaan leveysarvo 111323.
| Arvo | Hex -arvo | 128A | 128B | 128C | Fontin sijainti (Yleinen/Melko harvinainen/Viivakoodit) |
Bar/Space | ||
|---|---|---|---|---|---|---|---|---|
| Koodi | Latinalainen-1 | Kuvio | Leveydet | |||||
| 0 | 00 | tilaa | tilaa | 00 | 32 tai 194 tai 207 /212 /252 | ␣ tai  tai Ï / Ô / ü | 11011001100 | 212222 |
| 1 | 01 | ! | ! | 01 | 33 | ! | 11001101100 | 222122 |
| 2 | 02 | " | " | 02 | 34 | " | 11001100110 | 222221 |
| 3 | 03 | # | # | 03 | 35 | # | 10010011000 | 121223 |
| 4 | 04 | $ | $ | 04 | 36 | $ | 10010001100 | 121322 |
| 5 | 05 | % | % | 05 | 37 | % | 10001001100 | 131222 |
| 6 | 06 | & | & | 06 | 38 | & | 10011001000 | 122213 |
| 7 | 07 | '' | '' | 07 | 39 | '' | 10011000100 | 122312 |
| 8 | 08 | ( | ( | 08 | 40 | ( | 10001100100 | 132212 |
| 9 | 09 | ) | ) | 09 | 41 | ) | 11001001000 | 221213 |
| 10 | 0a | * | * | 10 | 42 | * | 11001000100 | 221312 |
| 11 | 0b | + | + | 11 | 43 | + | 11000100100 | 231212 |
| 12 | 0c | , | , | 12 | 44 | , | 10110011100 | 112232 |
| 13 | 0d | - | - | 13 | 45 | - | 10011011100 | 122132 |
| 14 | 0e | . | . | 14 | 46 | . | 10011001110 | 122231 |
| 15 | 0f | / | / | 15 | 47 | / | 10111001100 | 113222 |
| 16 | 10 | 0 | 0 | 16 | 48 | 0 | 10011101100 | 123122 |
| 17 | 11 | 1 | 1 | 17 | 49 | 1 | 10011100110 | 123221 |
| 18 | 12 | 2 | 2 | 18 | 50 | 2 | 11001110010 | 223211 |
| 19 | 13 | 3 | 3 | 19 | 51 | 3 | 11001011100 | 221132 |
| 20 | 14 | 4 | 4 | 20 | 52 | 4 | 11001001110 | 221231 |
| 21 | 15 | 5 | 5 | 21 | 53 | 5 | 11011100100 | 213212 |
| 22 | 16 | 6 | 6 | 22 | 54 | 6 | 11001110100 | 223112 |
| 23 | 17 | 7 | 7 | 23 | 55 | 7 | 11101101110 | 312131 |
| 24 | 18 | 8 | 8 | 24 | 56 | 8 | 11101001100 | 311222 |
| 25 | 19 | 9 | 9 | 25 | 57 | 9 | 11100101100 | 321122 |
| 26 | 1a | : | : | 26 | 58 | : | 11100100110 | 321221 |
| 27 | 1b | ; | ; | 27 | 59 | ; | 11101100100 | 312212 |
| 28 | 1c | < | < | 28 | 60 | < | 11100110100 | 322112 |
| 29 | 1d | = | = | 29 | 61 | = | 11100110010 | 322211 |
| 30 | 1e | > | > | 30 | 62 | > | 11011011000 | 212123 |
| 31 | 1f | ? | ? | 31 | 63 | ? | 11011000110 | 212321 |
| 32 | 20 | @ | @ | 32 | 64 | @ | 11000110110 | 232121 |
| 33 | 21 | A | A | 33 | 65 | A | 10100011000 | 111323 |
| 34 | 22 | B | B | 34 | 66 | B | 10001011000 | 131123 |
| 35 | 23 | C | C | 35 | 67 | C | 10001000110 | 131321 |
| 36 | 24 | D | D | 36 | 68 | D | 10110001000 | 112313 |
| 37 | 25 | E | E | 37 | 69 | E | 10001101000 | 132113 |
| 38 | 26 | F | F | 38 | 70 | F | 10001100010 | 132311 |
| 39 | 27 | G | G | 39 | 71 | G | 11010001000 | 211313 |
| 40 | 28 | H | H | 40 | 72 | H | 11000101000 | 231113 |
| 41 | 29 | Minä | Minä | 41 | 73 | Minä | 11000100010 | 231311 |
| 42 | 2a | J | J | 42 | 74 | J | 10110111000 | 112133 |
| 43 | 2b | K | K | 43 | 75 | K | 10110001110 | 112331 |
| 44 | 2c | L | L | 44 | 76 | L | 10001101110 | 132131 |
| 45 | 2d | M | M | 45 | 77 | M | 10111011000 | 113123 |
| 46 | 2e | N | N | 46 | 78 | N | 10111000110 | 113321 |
| 47 | 2f | O | O | 47 | 79 | O | 10001110110 | 133121 |
| 48 | 30 | P | P | 48 | 80 | P | 11101110110 | 313121 |
| 49 | 31 | Q | Q | 49 | 81 | Q | 11010001110 | 211331 |
| 50 | 32 | R | R | 50 | 82 | R | 11000101110 | 231131 |
| 51 | 33 | S | S | 51 | 83 | S | 11011101000 | 213113 |
| 52 | 34 | T | T | 52 | 84 | T | 11011100010 | 213311 |
| 53 | 35 | U | U | 53 | 85 | U | 11011101110 | 213131 |
| 54 | 36 | V | V | 54 | 86 | V | 11101011000 | 311123 |
| 55 | 37 | W | W | 55 | 87 | W | 11101000110 | 311321 |
| 56 | 38 | X | X | 56 | 88 | X | 11100010110 | 331121 |
| 57 | 39 | Y | Y | 57 | 89 | Y | 11101101000 | 312113 |
| 58 | 3a | Z | Z | 58 | 90 | Z | 11101100010 | 312311 |
| 59 | 3b | [ | [ | 59 | 91 | [ | 11100011010 | 332111 |
| 60 | 3c | \ | \ | 60 | 92 | \ | 11101111010 | 314111 |
| 61 | 3d | ] | ] | 61 | 93 | ] | 11001000010 | 221411 |
| 62 | 3e | ^ | ^ | 62 | 94 | ^ | 11110001010 | 431111 |
| 63 | 3f | _ | _ | 63 | 95 | _ | 10100110000 | 111224 |
| 64 | 40 | NUL | ` | 64 | 96 | ` | 10100001100 | 111422 |
| 65 | 41 | SOH | a | 65 | 97 | a | 10010110000 | 121124 |
| 66 | 42 | STX | b | 66 | 98 | b | 10010000110 | 121421 |
| 67 | 43 | ETX | c | 67 | 99 | c | 10000101100 | 141122 |
| 68 | 44 | EOT | d | 68 | 100 | d | 10000100110 | 141221 |
| 69 | 45 | ENQ | e | 69 | 101 | e | 10110010000 | 112214 |
| 70 | 46 | ACK | f | 70 | 102 | f | 10110000100 | 112412 |
| 71 | 47 | BEL | g | 71 | 103 | g | 10011010000 | 122114 |
| 72 | 48 | BS | h | 72 | 104 | h | 10011000010 | 122411 |
| 73 | 49 | HT | i | 73 | 105 | i | 10000110100 | 142112 |
| 74 | 4a | LF | j | 74 | 106 | j | 10000110010 | 142211 |
| 75 | 4b | VT | k | 75 | 107 | k | 11000010010 | 241211 |
| 76 | 4c | FF | l | 76 | 108 | l | 11001010000 | 221114 |
| 77 | 4d | CR | m | 77 | 109 | m | 11110111010 | 413111 |
| 78 | 4e | NIIN | n | 78 | 110 | n | 11000010100 | 241112 |
| 79 | 4f | SI | o | 79 | 111 | o | 10001111010 | 134111 |
| 80 | 50 | DLE | s | 80 | 112 | s | 10100111100 | 111242 |
| 81 | 51 | DC1 | q | 81 | 113 | q | 10010111100 | 121142 |
| 82 | 52 | DC2 | r | 82 | 114 | r | 10010011110 | 121241 |
| 83 | 53 | DC3 | s | 83 | 115 | s | 10111100100 | 114212 |
| 84 | 54 | DC4 | t | 84 | 116 | t | 10011110100 | 124112 |
| 85 | 55 | NAK | u | 85 | 117 | u | 10011110010 | 124211 |
| 86 | 56 | SYN | v | 86 | 118 | v | 11110100100 | 411212 |
| 87 | 57 | ETB | w | 87 | 119 | w | 11110010100 | 421112 |
| 88 | 58 | VOI | x | 88 | 120 | x | 11110010010 | 421211 |
| 89 | 59 | EM | y | 89 | 121 | y | 11011011110 | 212141 |
| 90 | 5a | SUB | z | 90 | 122 | z | 11011110110 | 214121 |
| 91 | 5b | POISTU | { | 91 | 123 | { | 11110110110 | 412121 |
| 92 | 5c | FS | | | 92 | 124 | | | 10101111000 | 111143 |
| 93 | 5d | GS | } | 93 | 125 | } | 10100011110 | 111341 |
| 94 | 5e | RS | ~ | 94 | 126 | ~ | 10001011110 | 131141 |
| 95 | 5f | MEILLE | DEL | 95 | 195 /200 /240 | Ã / È / ð | 10111101000 | 114113 |
| 96 | 60 | FNC 3 | FNC 3 | 96 | 196 /201 /241 | Ä / É / ñ | 10111100010 | 114311 |
| 97 | 61 | FNC 2 | FNC 2 | 97 | 197 /202 /242 | Å / Ê / ò | 11110101000 | 411113 |
| 98 | 62 | Vaihto B | Vaihto A | 98 | 198 /203 /243 | Æ / Ë / ó | 11110100010 | 411311 |
| 99 | 63 | Koodi C | Koodi C | 99 | 199 /204 /244 | Ç / Ì / ô | 10111011110 | 113141 |
| 100 | 64 | Koodi B | FNC 4 | Koodi B | 200/205/245 | È / Í / õ | 10111101110 | 114131 |
| 101 | 65 | FNC 4 | Koodi A | Koodi A | 201 /206 /246 | É / Î / ö | 11101011110 | 311141 |
| 102 | 66 | FNC 1 | FNC 1 | FNC 1 | 202/207/247 | Ê / Ï / ÷ | 11110101110 | 411131 |
| 103 | 67 | Aloituskoodi A | 203/208/248 | Ë / Ð / ø | 11010000100 | 211412 | ||
| 104 | 68 | Aloituskoodi B | 204/209/249 | Ì / Ñ / ù | 11010010000 | 211214 | ||
| 105 | 69 | Aloita koodi C | 205/210/250 | Í / Ò / ú | 11010011100 | 211232 | ||
| 106 | 6a | Lopettaa | - | - | 11000111010 | 233111 | ||
| - | - | Peruutuspysäkki | - | - | 11010111000 | 211133 | ||
| - | - | Pysäytyskuvio (7 palkkia/välilyöntiä) | 206/211/251 | Î / Ó / û | 1100011101011 | 2331112 | ||
Symbolit "koodi A", "koodi B" ja "koodi C" saavat kaikki seuraavat symbolit tulkitsemaan vastaavan alikoodin mukaisesti (eli 128A, 128B tai 128C). "Shift" -symboli vaihtaa yhden seuraavan symbolin tulkinnan alikoodien A ja B välillä.
Koodattu ASCII-merkki riippuu todellisuudessa käytetystä viivakoodifontista. Erityisesti arvojen 0 ja 95 ja sitä suurempia ASCII -merkkejä voidaan määritellä eri tavalla asennetussa fontissa.
FNC x -koodeja käytetään erityistarkoituksiin. FNC1 viivakoodin alussa osoittaa GS1-128- viivakoodin, joka alkaa Uniform Code Councilin antamalla 2-3- tai 4-numeroisella sovellustunnuksella , joka selittää seuraavat numerot. Esimerkiksi sovellustunniste 421 osoittaa, että seuraa ISO 3166-1 -maakoodikoodi ja lähettäjä-postinumero. Niinpä Yhdysvaltain postinumero varten Valkoinen talo olisi yleensä painetaan "(421) 840 20500", mutta itse asiassa koodataan " "
[Start C] [FNC1] 42 18 40 20 50 [Code A] 16 [Check symbol 92] [Stop]
Tarkista numeroiden laskenta yllä olevasta postinumeron esimerkistä:
| Arvo | Paino | Paino × arvo | |
|---|---|---|---|
| Käynnistä C | 105 | 1 | 105 |
| FNC1 | 102 | 1 | 102 |
| 42 | 42 | 2 | 84 |
| 18 | 18 | 3 | 54 |
| 40 | 40 | 4 | 160 |
| 20 | 20 | 5 | 100 |
| 50 | 50 | 6 | 300 |
| Koodi A | 101 | 7 | 707 |
| 0 | 16 | 8 | 128 |
| Summa = | 1740 | ||
| 1740 | Mod 103 = | 92 |
Saatavuus
Loppukäyttäjälle koodin 128 viivakoodit voidaan luoda joko ulkopuolisen sovelluksen avulla viivakoodin kuvan luomiseksi tai kirjasinpohjaisella viivakoodilla. Joko ratkaisu edellyttää sovelluksen tai sovelluksen lisäyksen käyttöä tarkistusnumeron laskemiseksi ja viivakoodin luomiseksi.
Viivakoodin pituuden optimointi
Koodijoukko C edustaa yhtä koodisymbolia kahden numeron esittämiseen, joten kun teksti sisältää vain numeroita, se johtaa yleensä lyhyempiin viivakoodeihin. Kuitenkin, kun merkkijono sisältää vain muutaman numeron tai se on sekoitettu ei-numeroiseen merkkiin, se ei aina tuota kompaktimpaa koodia kuin koodijoukot A tai B. Koodijoukon C käyttäminen säästää yhden symbolin kahta numeroa kohden, mutta maksaa tilan -siirtosymboli sarjaan siirtymiseen ja siitä poistumiseen. Siksi sitä kannattaa käyttää vain, jos peräkkäisiä numeroita on riittävästi. Esimerkiksi merkkijonon "X00Y" koodaaminen koodijoukolla A tai B vaatii 7 koodisymbolia ( [Start B] 56 16 16 57 [checksum] [Stop]), kun taas koodisarjan C käyttäminen "00": lle johtaisi koodin 8 symbolin pituiseen ( [Start B] 56 [Code C] 00 [Code B] 57 [checksum] [Stop]).
Koodijoukon C käyttäminen on edullista vain seuraavissa olosuhteissa:
| Numeroiden sijainti | Peräkkäisten numeroiden määrä |
|---|---|
| tietojen alku | 4+ |
| tietojen loppu | 4+ |
| tietojen keskellä (koodisarjan A tai B symbolien ympäröimänä) | 6+ |
| koko data | joko 2 tai 4+ (mutta ei 3) |
Merkkijonon lopussa viivyttämällä siirtymistä koodijoukkoon C, kunnes jäljellä on parillinen määrä numeroita, vältetään ylimääräinen symboli. Harkitse merkkijonoa "... 01234": viivästetty kytkin tuottaa, ... 0 [Code C] 12 34 [checksum] [Stop]mutta varhainen kytkin tuottaa ... [Code C] 01 23 [Code A] 4 [checksum] [Stop].
Esimerkiksi merkkijonon "098x1234567y23" ansiosta viivakoodin pituutta voidaan säästää koodijoukon C avulla vain, jos sitä käytetään merkkijonon keskiosassa. Merkkijonon alku- ja loppukohdalle siirtyminen koodijoukkoon C ei ole tehokasta. Koska merkkijonon keskellä on pariton määrä numeroita, pariton on käytettävä eri koodia, joka on asetettu, mutta sillä ei ole väliä onko tämä ensimmäinen vai viimeinen; Kummassakin tapauksessa tarvitaan 16 symbolia:, [Start B] 0 9 8 x 1 [Code C] 23 45 67 [Code B] y 2 3 [checksum] [Stop]tai [Start B] 0 9 8 x [Code C] 12 34 56 [Code B] 7 y 2 3 [checksum] [Stop].
Tuloksena olevan viivakoodin pituuden optimointi on tärkeää, kun käytetään viivakoodilukijoita, joiden on tunnistettava koko viivakoodikuva kerralla, jotta ne voidaan lukea, kuten tavalliset laserskannerit . Mitä pidempi viivakoodi on, sitä enemmän laser viivakoodinlukijaa tarvitaan viivakoodikuvasta, mikä tekee lukemisesta vaikeaa tai mahdotonta joidenkin kynnyspituuksien/etäisyyksien yläpuolella.
Optimaalinen koodaus voidaan löytää käyttäen dynaamista ohjelmointia algoritmi.
Viitteet
Ulkoiset linkit
- GS1-128 Tekniset tiedot- Yksityiskohtainen luettelo sovellustunnisteista.
- Barcodesoft-Barcodesoftin fontin kartoitus, joka eroaa tavallisesta ascii-kartoituksesta (katso http://ascii-code.com/ ).
- 128-koodi- Opi Code 128 -koodausalgoritmi fonttipohjaisella viivakoodilla.
- Online -viivakoodigeneraattori - Ilmainen online -viivakoodigeneraattori erilaisille viivakoodityypeille.
Esimerkkikoodi
- ZXing - Monitasoinen avoimen lähdekoodin viivakoodinlukija / -generaattori, jonka versiot ovat saatavana Javalla ( ydinprojekti ) ja portit ActionScript-, C ++, C#, ObjectiveC- ja Ruby -versioihin.
- Python -viivakoodi 128 - Tämä koodi näyttää piirtävän yhden pikselin leveät laatikot. Näyttää siltä, että se on muokattu lyhyen rivin pitkän rivin viivakoodista, joka olisi vetänyt viivoja. "Mustien laatikoiden" tulisi olla samankokoiset kuin "valkoiset laatikot".
- GenCode128 - Ilmainen C# lähdekoodin toteutus Code128: sta. Lähes kaikki ominaisuudet on toteutettu, mutta se ei ole täysin valmis.
- Barcode1DTools Ruby -helmi - Ruby -lähdekoodi monille 1D -viivakoodisymboleille, mukaan lukien koodi 128.
- Perl -viivakoodin generointikoodi - Perl -lähdekoodi monille 1D -viivakoodisymboleille, mukaan lukien koodi 128.
- Viivakoodi :: Code128 - Ilmainen Perl -viivakoodinmuodostusmoduuli.
- GOCR - ilmainen tekstintunnistus koodilla 128.
- Viivakoodikoodi 128 - Code128: n ilmainen JavaScript -lähdekooditoteutus.
- Barcode4J - Ilmainen Java -sovellusliittymä, jossa on Code128 ja muut tavalliset viivakoodit.
- JavaScript-koodi 128 -Code128: n ja muiden lineaaristen viivakoodien avoimen lähdekoodin JavaScript-toteutus.
- Esittelyssä Code 128 -viivakoodien luominen Opas tekstin muuntamiseen Code 128 -viivakoodeiksi. Kirjoitettu Lazarukselle (avoimen lähdekoodin, monialustainen GUI Pascal), mutta yleiseen käyttöön.