Napadlo vás někdy zkoumat, jak jsou vlastně v čárových kódech uložené informace? Mě ano, takže jsem měřil šířky černých čar, zjistil že jsou možné až čtyři velikosti a uvažoval o čtyřkové soustavě. Nikam to nevedlo, tak jsem to vzdal. Až Nová mamutí kniha techniky mě navedla na správnou stopu. Smysl mají totiž nejen černé čáry, ale i bílé pruhy mezi nimi.
Všechno je to ve dvojkové soustavě, černé čáry kódují jedničky, relativní tloušťka čáry určuje jejich počet. Bílé mezery kódují nuly, o tloušťkách čar platí totéž.
Takže jsem si vzal čárový kód na zmíněné knize a začal dekódovat. Nejtenčí čáru vezmu jako měřítko, pak máme na začátku 101 (tenká černá, tenká bílá, tenká černá), následuje 0 (tenká bílá), pak 111 (černá o trojnásobné síle) atd. atd. atd. Mamutí kniha ještě zmínila, že na začátku a na konci kódu je identifikační sekvence 101 a uprostřed dělící 01010 (to jsou ty delší dvojčáry) a že se pro každé písmeno používá 7 bitů.
první polovina kódu pak vypadá takhle (bez okrajové a dělící sekvence):
0 111 0 11 000 1 00 1 000 1 00 1 000 11 0 1 00 1 000 1 00 1 00 11
Je to sedmibitový kód, takže přeřadíme do skupin po sedmi
0111011 0001001 0001001 0001101 0010001 0010011
A teď se to pokusíme převést do čísel. Máme nápovědu, na čárovém kódu je to číslo dole napsané normálně, takže cílem je 7 8 8 0 7 2 . Prostý převod binárního čísla na dekadické nepomůže (0111011 je decimálně 59, ASCII znak s číslem 59 je středník, to také ne), takže nezbývá než začít hledat na Internetu.
Čárových kódů je spousta, jestli jsem to vyčetl ze stránek Morovia library dobře, pak běžně používaný kód na zboží je EAN-13 (galerie GS1 BarCodes to potvrzuje).
EAN-13 je navržen společností International Article Numbering Association (EAN) a sestává ze čtyř oblastí - systém číslování, kód výrobce, kód produktu a kontrolní součet. Obvykle je systém číslování vytištěn vlevo a kontrolní součet vpravo od čárového kódu. Samotný kód začíná sekvencí 010, uprostřed je předělen sekvencí 01010 a končí opět 010. A teď to kódování - v levé části od předělu začínají všechna čísla mezerou (0) a končí čárou (1), v pravé je to naopak. Vlevo se používá kódovací schéma A nebo B, vpravo C. Tabulka znaků (zdroj):
číslo | kód A | kód B | kód C |
---|---|---|---|
0 | 0001101 | 0100111 | 1110010 |
1 | 0011001 | 0110011 | 1100110 |
2 | 0010011 | 0011011 | 1101100 |
3 | 0111101 | 0100001 | 1000010 |
4 | 0100011 | 0011101 | 1011100 |
5 | 0110001 | 0111001 | 1001110 |
6 | 0101111 | 0000101 | 1010000 |
7 | 0111011 | 0010001 | 1000100 |
8 | 0110111 | 0001001 | 1001000 |
9 | 0001011 | 0010111 | 1110100 |
Nyní už je to jasné, dekódování odpovídá. Jen mi není jasné, proč se některá písmena kódují schématem A a jiná schématem B. Možná v tom hraje roli paritní kontrola.
Aktualizace 14.11.2007: Díky komentáři od Radose, který mě odkázal na stránky firmy Gaben, jsem se dozvěděl i proč se některá písmena kódují tak a jiná onak. Dokonce i v tom je kód! Šestiprvková kombinace znaků A a B vytváří znak sedmý, úvodní číslici...
Aktualizace 22.9.2009: Ziggy do komentářů doplnil vynikající odkaz - generátor čárových kódů! vyzkoušejte.
Hodnocení hvězdičkami používá jako prevenci
opakovaného kliknutí anonymní cookie.
Pokud s tím nesouhlasíte, neklikejte.
Další podrobnosti k cookies zde.