Čárové kódy (teorie)
- Jaké jsou základní typy čárových kódů
- Code 39 a Code 39 Mod 43
- U.P.C. A
- U.P.C. E0 a U.P.C. E1
- EAN 13 a EAN 8
- Code 93
- Interleaved 2/5 a Interleaved 2/5 Mod 10
- Code 128
- Codabar
- MSI
- Kódování znaků do čárových kódů
- Složitější kódování znaků do čárových kódů
- 2D kódy
- PDF417
- DataMatrix
- QR code
- Code16k
- Code49k
Jaké jsou základní typy čárových kódů
Odpověď
Symbol čárového kódu se skládá z určitého počtu čar a mezilehlých mezer. Před a za symbolem musí být klidová zóna - prázdné místo určité šířky bez jakéhokoliv potisku. Symbol začíná znakem start, pak následují vlastní data s případným kontrolním součtem a na konci je znak stop.
Šířka čar a mezer, jakož i jejich počet, je dán specifikací symboliky příslušného kódu. Termín "symbolika" se používá pro popis pravidel, specifikujících způsob, jakým se kódují data do čar a mezer čárových kódů. Je to něco podobného, jako termín "jazyk". Komunikují-li mezi sebou lidé psanou nebo mluvenou řečí, mohou používat jakýkoliv jazyk za předpokladu, že jej obě strany znají a dovedou jej používat. Stejná koncepce je použita u čárových kódů.
Existují dva základní typy symbolik čárových kódů: souvislé a diskrétní. Diskrétní čárové kódy začínají čárou, končí čárou a mezi jednotlivými znaky se nachází meziznaková mezera. Souvislé čárové kódy začínají čárou, končí mezerou a nemají meziznakové mezery. Která symbolika se v dané konkrétní aplikaci použije, závisí na charakteru dat.
K nejpoužívanějším symbolikám čárových kódů patří:
Code 39 a Code 39 Mod 43
U.P.C. A
UPC E0 a UPC E1
EAN 13 a EAN 8
Code 93
Interleaved 2/5 a Interleaved 2/5 Mod 10
Code 128
Codabar
MSI
Code 39 a Code 39 Mod 43
Odpověď
Code 39 byl vyvinut jako první plně alfanumerická symbolika v roce 1974. Jedná se o nejčastěji používanou symboliku čárových kódů, neboť umožňuje zakódovat číslice, písmena a některé interpunkční znaky. Code 39 je diskrétní, s proměnnou délkou. Každý znak obsahuje 5 čar a 4 mezery. Z těchto devíti prvků jsou vždy 3 široké a 6 úzkých. Malá písmena nejsou podporována a jsou na vstupu automaticky konvertována na velká. Znak "hvězdička" je vyhrazen pro znaky start a stop. Code 39 Mod 43 obsahuje navíc kontrolní znak. Tento kontrolní znak se vypočítává ze součtu hodnot všech znaků řetězce celočíselným dělením modulo 43.
U.P.C. A
Odpověď
Universal Product Code - univerzální kód výrobků - (U.P.C.) byl úspěšně zaváděn v supermarketech od roku 1973. Je navržen z hlediska jednoznačné identifikace výrobku a jeho výrobce. Jeho symbolika je pevné délky, numerická, souvislá. Každý znak má 4 prvky. UPC verze A se používá k zakódování 12-místného čísla. První číslice je znak systému číslování, dalších 5 je identifikační číslo výrobce, dalších 5 je číslo výrobku a poslední číslice je kontrolní znak.
U.P.C. E0 a U.P.C. E1
Odpověď
U.P.C E0 je variantou kódu UPC A s potlačením nul. První znak této symboliky - znak systému číslování - je vždy 0 (nula). Ostatní znaky mají stejný význam, jako u UPC A. Pro správné číslo výrobku platí následující čtyři pravidla:
- Jsou-li poslední 3 číslice v čísle výrobce 000, 100 nebo 200, jsou platná čísla výrobku 00000 až 00999.
- Jsou-li poslední 3 číslice v čísle výrobce 300, 400, 500, 600, 700, 800 nebo 900, jsou platná čísla výrobku 00000 až 00099.
- Jsou-li poslední 2 číslice v čísle výrobce 10, 20, 30, 40, 50, 60, 70, 80 nebo 90, jsou platná čísla výrobku 00000 až 00009.
- Jestliže číslo výrobce nekončí nulou, jsou platná čísla výrobku 00005 až 00009.
U.P.C. E1 je také numerický kód pevné délky a jeho typické použití je pro zboží na regálech v maloobchodě. Délka vstupního řetězce je 6 číslic.
EAN 13 a EAN 8
Odpověď
European Article Numbering (EAN) je nadstavbou U.P.C. Snímače EAN dovedou dekódovat U.P.C., opačně to ale nemusí platit. EAN má dvě verze: EAN 13 a EAN 8. Obě jsou numerické, pevné délky. EAN 13 kóduje 13 číslic, EAN 8 kóduje 8 číslic. Správu kódu EAN na evropském teritoriu provádí nekomerční organizace EAN se sídlem v Belgii. Jejími dobrovolnými členy jsou národní komise EAN všech evropských zemí. Česká republika má přidělen kód země 859.
Code 93
Odpověď
Code 93 je alfanumerická symbolika proměnné délky, souvislá. Kóduje všech 128 znaků ASCII. Z nich 43 odpovídá znakové sadě Code 39, další 4 znaky se používají jako řídicí znaky při kódování úplné znakové sady ASCII do rozšířeného módu Code 93. Každý znak je zakódován pomocí 9 modulů, složených do 3 čar a 3 mezer. Šířka každé čáry a mezery může být 1, 2, 3, nebo 4 moduly.
Interleaved 2/5 a Interleaved 2/5 Mod 10
Odpověď
Interleaved 2/5 je samoopravný numerický kód, používaný především v průmyslových a maloobchodních aplikacích ke značení přepravních obalů distribučních jednotek. Tato symbolika páruje dohromady vždy dva znaky, první kóduje do 5 čar a druhý znak z páru do 5 mezer mezi čarami prvního znaku. Jinak řečeno všechny znaky na lichých pozicích jsou kódovány do čar a všechny znaky na sudých pozicích jsou kódovány do mezer. Dvě z 5 čar jsou široké a stejně tak jsou široké 2 z 5 mezer. Odtud také pochází jméno kódu. Celý symbol čárového kódu Interleaved 2/5 sestává ze znaku start (dvě úzké čáry a dvě úzké mezery), datových znaků a znaku stop (široká čára, úzká mezera a úzká čára). Pro zakódování informace je potřebný sudý počet znaků. V případě lichého počtu znaků se volné místo obsadí kontrolním znakem, nebo se použije úvodní nula. Struktura symbolu Interleaved 2/5 Mod 10 je stejná, obsahuje ale navíc kontrolní znak. Tento se vypočítá ze součtu hodnot všech datových znaků symbolu celočíselným dělením modulo 10.
Code 128
Odpověď
Code 128 je alfanumerická symbolika proměnné délky, souvislá. Znaky sestávají ze 3 čar a 3 mezer tak, že celková šířka znaku je 11 modulů. Čáry a mezery mohou mít šířku 1, 2, 3, nebo 4 moduly. Code 128 B je rovněž alfanumerický kód, který podporuje velká i malá písmena. Navíc má 4 řídicí kódy FNC1 až FNC4. Code 128 C pouze numerický čárový kód o délce 19 znaků, začíná znakem FNC1 a obsahuje kontrolní číslici modulo 10.
Codabar
Odpověď
Codabar je diskrétní samoopravný kód proměnné délky. Každý znak je reprezentován samostatnou skupinou 4 čar a 3 mezilehlých mezer. Znaková sada Codabar zahrnuje 16 znaků: číslice 0 až 9 a speciální znaky: $, :, /, ., +, -. Používají se 4 různé znaky start/stop (a, b, c, d) složené z jedné čáry a dvou mezer.
MSI
Odpověď
MSI je pouze numerická symbolika proměnné délky. Její obvyklé použití je na cenových etiketách regálového zboží v maloobchodě. Tento čárový kód má vždy na konci kontrolní součet modulo 10. Před něj je možno vadit další kontrolní znak modulo 10 nebo modulo 11. Podle toho se kód označuje jako MSI+10, MSI+10+10, MSI+11+10.
Kódování znaků do čárových kódů
Odpověď
Princip kódování znaků do čárových kódů si předvedeme na velmi jednoduchém kódu Industrial 2/5. Jedná se o čistě numerický kód proměnné délky, diskrétní. Je tvořen znakem start, příslušným počtem datových znaků (číslice 0 až 9) a znakem stop. Kód každého znaku je tvořen 5 čarami, z nichž jsou 3 úzké a 2 široké. Poměr šířky široké a úzké čáry je 3:1. Mezery nenesou žádnou informaci a slouží jen k oddělení čar.
Převod znaků do čárových kódů se provádí podle následující kódovací tabulky. Hodnota 1 znamená širokou čáru (3 moduly), hodnota 0 znamená úzkou čáru (1 modul):
Kódovací tabulka kódu Industrial 2/5 | |||||
---|---|---|---|---|---|
Znak | 1.čára | 2.čára | 3.čára | 4.čára | 5.čára |
0 | 0 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 0 | 1 |
2 | 0 | 1 | 0 | 0 | 1 |
3 | 1 | 1 | 0 | 0 | 0 |
4 | 0 | 0 | 1 | 0 | 1 |
5 | 1 | 0 | 1 | 0 | 0 |
6 | 0 | 1 | 1 | 0 | 0 |
7 | 0 | 0 | 0 | 1 | 1 |
8 | 1 | 0 | 0 | 1 | 0 |
9 | 0 | 1 | 0 | 1 | 0 |
start | 1 | 1 | 0 | ||
stop | 1 | 0 | 1 |
Zakódujeme-li číslo "01234", bude mít výsledný symbol čárového kódu tento vzhled (pro názornost jsou sousední znaky výškově posunuty):
Složitější kódování znaků do čárových kódů
Odpověď
Kódování znaků do složitějšího čárového kódu si předvedeme na kódu EAN 13. Je to numerický kód pevné délky. Obsahuje dva stejné okrajové znaky (start/stop), dělicí znak a 13 numerických znaků (číslice 0 až 9).
Symbol čárového kódu EAN 13 najdete na obalu téměř každého zboží, které si zakoupíte v obchodě. Symbol bývá často doplněn "lidsky čitelnými" číslicemi, které uvádí, co je vlastně symbolem čárového kódu zakódováno. Pokud jsou první tři číslice 859, jedná se o zboží, vyrobené v České republice.
Nosičem informace v kódu EAN 13 jsou čáry i mezery. Mohou mít různou šířku, která je ale vždy násobkem šířky nejužšího elementu. Šířka nejužšího elementu představuje základní délkovou jednotku. Každý zakódovaný znak má v symbolu čárového kódu EAN 13 délku přesně 7 základních jednotek.
Na základě pevné délky kódu znaku (7 jednotek) byly vytvořeny pro kódování číslic 0 až 9 tři znakové sady, pojmenované A, B a C. Znakové sady jsou uvedeny v následující tabulce. Symbol čárového kódu EAN 13 je uprostřed rozdělen dělicím znakem na dvě části, zvané pole. První pole je vlevo od dělicího znaku, druhé pole je vpravo.
První pole
Pokud by byly všechny kódy brány z jedné znakové sady, bylo by možno do každého pole zakódovat 6 znaků. Podíváte-li se ale na vytištěný symbol EAN 13, uvidíte, že v prvním (levém) poli je 7 znaků.
Je zde totiž použita finta, která umožní do tohoto pole protlačit ještě jeden znak tím, že se pro kódování nepoužije jen jedna znaková sada, ale použijí se dvě. Dělá se to pro to, že do prvního pole je třeba umístit 7 znaků (kód země a kód výrobce).
První číslice kódu země není přímo reprezentována čárovým kódem, ale vyplývá z označení sad, z níž se berou kódy pro 2. až 7. číslici, tj. šestici číslic v prvním poli. Pro zdůraznění této anomálie se v "lidsky čitelné" numerické reprezentaci symbolu čárového kódu píše první číslice vlevo od levého okrajového znaku a ne spolu s ostatními šesti číslicemi uvnitř prvního pole.
Česká republika má přidělen kód země 859, první číslice je tedy 8, ale v prvním poli budou kódy číslic 5, 9 a další 4 číslice patřící k označení kódu výrobce. Jak vyplývá z následující tabulky, budou v našem případě brány kódy šesti znaků v prvním poli ze znakových sad A, B, A, B, B, A. Dekodér čárového kódu pak z této skutečnosti odvodí, že první číslicí má být číslice 8.
Číslice | Znakové sady | Číslice | Znakové sady |
---|---|---|---|
0 | AAAAAA | 5 | ABBAAB |
1 | AABABB | 6 | ABBBAA |
2 | AABBAB | 7 | ABABAB |
3 | AABBBA | 8 | ABABBA |
4 | ABAABB | 9 | ABBABA |
Druhé pole
V tomto poli je zakódováno číslo výrobku (5 číslic) a znak kontrolního součtu (1 číslice). Všechny znaky jsou zde kódovány ze znakové sady C.
Znak kontrolního součtu vypočteme tak, že všech 12 číslic podrobíme následující matematické operaci. Stejnou operaci pak provede po sejmutí čárového kódu dekodér čtecího zařízení a dospěje-li ke stejnému výsledku, bude pokládat čtení za úspěšné.
Výpočet:
- Sečtou se hodnoty číslic na sudých pozicích a výsledek se vynásobí třemi.
- Sečtou se hodnoty číslic na lichých znakových pozicích.
- Sečtou se obě výsledné hodnoty a výsledek se zaokrouhlí nahoru na celé desítky.
- Kontrolní číslice je rozdíl zaokrouhlené a původní hodnoty.
Příklad:
Výpočet kontrolní číslice pro řetězec čísel 859123412345
Součet sudých pozic: 5+1+3+1+3+5 = 18
Vynásobení třemi: 18*3 = 54
Součet lichých pozic: 8+9+2+4+2+4 = 29
Součet obou hodnot: 54+29 = 83
Zaokrouhlení nahoru: 90
Rozdíl hodnot: 90-83 = 7
Kontrolní číslice: 7
Pro kód EAN 13 se tedy bude kódovat řetězec čísel 8591234123457.
Symbol čárového kódu bude mít tento tvar (pro názornost je kód podložen červeným rastrem o šířce 1 elementu).
S = okrajové znaky start/stop, D = dělicí znak.
2D kódy
Odpověď
Objem informací, zakódovaných pomocí běžných „lineárních“ čárových kódů, není nikterak velký. Pro názornost si připomeňme, že nejběžnější čárové kódy EAN-8 a EAN-13, se kterými se setkáváme na obalech potravin a spotřebního zboží, umožňují zakódovat pouze 8 resp. 13 číslic. Jiné symboliky čárových kódů umožňují zakódovat větší objem informací avšak i zde jsme omezeni délkou výsledného symbolu čárového kódu. Velmi dlouhé symboly zabírají velkou plochu a obtížně se snímají. Následující obrázek znázorňuje běžně používané symboly „lineárních“ 1D čárových kódů a jimi zakódovaných numerických informací:
Zásadní změnu v této oblasti přináší aplikace „dvourozměrných“ symbolik čárových kódů, které kódují alfanumerické znaky do maticové struktury buněk.
Na příklad v tomto symbolu 2D kódu QR CODE je zakódováno 80 alfanumerických znaků:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
123456789012345678901234
ABCDEFGHIJKLMNOPQRSTUVWXYZ1234
K běžným symbolikám 2D kódů patří:
PDF417
DataMatrix
QR Code
Code 49
Code 16K
Všechny 2D kódy disponují možností automatické korekce chyb, takže je možno přečíst i špatně vytištěné nebo znečištěné symboly.
PDF417
Odpověď
Kód Portable Data File 417 (PDF417) je dvourozměrný čárový kód. Z tohoto důvodu poskytuje vysokou hustotu informací (schopnost zakódovat velký objem informací do velmi malé plochy). Do jednoho čárového kódu je možno zakódovat až 1 KB dat. PDF417 podporuje všechna data ASCII, binární a numerická a může kódovat také národní znakové sady. Tradiční čárový kód je obvykle klíčem k záznamu v externí databázi, která obsahuje potřebné informace. PDF417 ale obsahuje potřebné informace sám v sobě. Výhodou je, že přístup do databáze není nezbytný.
Korekce chyb PDF417
Funkce korekce chyb umožňuje tomuto kódu provádět opravy chybějících dat, způsobené poškozením nebo počmáráním etikety. Část etikety může dokonce chybět, avšak redundance zabudovaná v PDF417 může způsobit, že budou čitelné veškeré zakódované informace. Pokud nelze přečíst veškeré informace, nebudou k dispozici žádná data.
Úrovně korekce chyb jsou v rozsahu 0 (žádné chyby) až 8 (maximální korekce); čím je vyšší úroveň korekce, tím je čárový kód rozměrnější.
DataMatrix
Odpověď
Čárový kód Data Matrix je neobyčejně pružný z hlediska fyzických rozměrů a informační kapacity. Tiskárna s rozlišitelností 300 dpi může vytisknout kód Data Matrix jako čtverec s délkou hrany 1,5 mm. Tato technologie používá ke čtení kódu standardní videokameru namísto laserových snímačů. Videokamera je připojena k řadiči, který dekóduje sejmutý čárový kód Data Matrix. Symboly Data Matrixu připomínají šachovnici s přeházenými čtverci. Vyznačuje se tím, že má dvě strany souvislé a dvě strany se střídajícími se buňkami.
Černé a bílé buňky v matici reprezentují binární kód. To umožňuje automatické kódování libovolných znaků v libovolném jazyce a vylučuje potřebu překladových tabulek znaků, potřebných u lineárních čárových kódů. Kód Data Matrix je možno číst v libovolném natočení a čtecí zařízení vám může sdělit přesný úhel, v jakém proběhlo čtení. Malé fyzické rozměry, malé požadavky na kontrast tisku (20%) a snadnost čtení jsou příčinou, proč se tento kód široce rozšířil v oblasti identifikace mikroelektroniky, křemíkových čípů a farmaceutických výrobků. Může být použit také pro ověřování identifikace součástek, jejich orientace a rozmisťování v automatizovaných výrobních a řídicích systémech.
QR code
Odpověď
QR (Quick Response) Code je maticová symbolika kódu, vyvinutá firmou Toyota Denso (Japonsko).Skládá se z čtvercových buněk a umožňuje všesměrové a velmi rychlé načtení velkých objemů dat.
Tři symboly pro detekci pozice slouží k orientaci čtecího zařízení a umožňují tím super rychlé načtení dat.
QR Code může kódovat numerické a alfanumerické znaky a binární (8-bit) data. Do jednoho symbolu lze zakódovat až 7 366 znaků (numerických).
V porovnání s běžnými čárovými kódy umožňuje QR Code zakódovat stejný objem dat na mnohem menší ploše a tím zmenšit rozměry etikety, nebo podstatně zvětšit objem informací, zakódovaných do strojově čitelného kódu.
K vlastnostem QR Code patří schopnost korekce chyb. Data je možno číst i v případě, že je část symbolu znečištěná nebo poškozená. Úroveň obnovy poškozených dat je nastavitelná až na 30% z celkového počtu znaků v symbolu.
Code16k
Odpověď
Čárový kód Code 16K je víceřádkový čárový kód, který umožňuje kódovat všechny znaky ASCII pod hodnotou 128. Používá znakové sady UPC a Code 128. Je možno zakódovat až 77 alfanumerických znaků nebo až 154 numerických znaků. Znaky jsou zakódovány do 2 až 16 řádků. Každý řádek je oddělen oddělovacím pruhem. Horní a dolní hrana symbolu má rovněž oddělovací pruhy, které jsou prodlouženy k okrajům minimálních klidových zón.
Code 16K se podobá Code 128 v tom, že můžete volit mezi třemi podmnožinami Code 16K přímo, nebo můžete zvolit Code 16K Auto pro režim s automatickým přepínáním.
Zvolíte-li Code 16K Auto, pak má-li čárový kód čtyři nebo více po sobě následujících číslic, budou číslice zakódovány v režimu s dvojitou hustotou. Znamená to, že dvě číslice jsou zakódovány na šířku jednoho znaku, čímž se zmenší velikost čárového kódu. Čárový kód Code 16K má tři druhy detekce chyb. U každého znaku se kontroluje parita, pro identifikaci každého řádku jsou použity znaky start a stop, na konci čárového kódu jsou vždy dva znaky kontrolního součtu.
Code49k
Odpověď
Čárový kód Code 49 je víceřádkový čárový kód, který může kódovat všechny znaky ASCII pod hodnotou 128. Je možno kódovat až 49 alfanumerických znaků nebo 81 numerických znaků. Znaky se kódují do dvou až osmi řádků. Každý řádek je oddělen oddělovacím pruhem. Horní a dolní hrana symbolu má rovněž oddělovací pruhy, které jsou prodlouženy k okrajům minimálních klidových zón.
Všechny znaky jsou kódovány v režimu dvojité hustoty. Znamená to, že na šířku jednoho znaku jsou zakódovány dva znaky, což má za následek menší šířku čárového kódu. Pokud váš vstupní řetězec obsahuje sekvenci alespoň pěti číslic, provede se komprese. Sekvence pěti číslic jsou reprezentovány jako tři znaky kódu. Je-li počet číslic násobkem pěti plus čtyři, budou poslední čtyři číslice také reprezentovány jako tři znaky kódu. Je-li počet číslic násobkem pěti plus tři, poslední tři číslice budou reprezentovány jako dva znaky kódu. Je-li počet číslic násobkem pěti plus dva, pokládají se za čtyři plus tři a jsou reprezentovány jako tři a dva znaky kódu. Je-li počet číslic násobkem pěti plus jedna, je poslední číslice reprezentována jedním znakem kódu. Čárový kód Code 49 má tři druhy detekce chyb. U každého znaku se kontroluje parita, každý řádek má na konci znak kontrolního součtu a na konci čárového kódu jsou vždy dva nebo tři znaky kontrolního součtu. Symboly se šesti nebo méně řádky mají dva znaky kontrolního součtu. Symboly se sedmi nebo osmi řádky mají tři znaky kontrolního součtu. Code 49 má šest speciálních funkčních řídicích kódů, které některá čtecí zařízení rozpoznávají.