Co su a ako funguju ciarove kody - 03

27.12.2002 22:38 | blackhole

V dnesnej casti serialu sa zoznamite s dvoma prikladmi kodovania. Na pochopenie jednoduchsim Industrial 2/5 a nasledne zlozitejsim, ale napokon u nas snad najpouzivanejsim EAN 13. Takze, kodovania chtivi, hor sa do citania... ;-

Princip kodovania znakov do ciaroveho kodu Industrial 2/5 je pomerne jednoduchy a z tohoto dovodu s nim samozrejme aj zacneme. Jedna sa o diskretny, cisto numericky kod premenlivej dlzky. Je tvoreny znakom start, prislusnym poctom datovych znakov (cislic 0 az 9) a znakom stop. Kod kazdeho znaku je tvoreny piatimi ciarami, z ktorych su 3 uzke a 2 siroke. Pomer sirky sirokej a uzkej ciary je 3 ku 1. Medzery nenesu ziadnu informaciu a sluzia len k oddeleniu ciar.

Na prevod znakov do ciaroveho kodu budeme samozrejme potrebovat kodovaciu tabulku. Hodnota 1 v tabulke znamena siroku ciaru (3 moduly) a hodnota 0 znamena uzku ciaru (1 modul).

Tabulka 1.: Kodovacia tabulka kodu Industrial 2/5

Ak zakodujeme teda cislo 01234, bude mat vysledny ciarovy kod nasledujuci vzhlad (pre nazornost su susedne znaky vyskovo posunute).

Kodovanie znakov do zlozitejsieho ciaroveho kodu si predvedieme na EAN 13. Je to numericky kod pevnej dlzky. Obsahuje dva rovnake okrajove znaky (start/stop), deliaci znak a 13 numerickych znakov (cislice 0 az 9).

Symbol ciaroveho kodu EAN 13 najdete na obale takmer kazdeho tovaru, ktory si zakupite. Symbol byva casto doplneny ludsky citatelnymi cislicami, ktore uvadzaju, co je vlastne ciarovym kodom zakodovane.

Nosicom informacii v kode EAN 13 su ciary aj medzery. Mozu mat roznu sirku, ktora je ale vzdy nasobkom sirky najuzsieho elementu. Sirka nauzsieho elementu predstavuje zakladnu jednotku. Kazdy zakodovany znak ma v symbole ciaroveho kodu EAN 13 dlzku presne 7 zakladnych jednotiek.

Na zaklade pevnej dlzky kodu znaku (7 jednotiek) boli vytvorene pre kodovanie cislic 0 az 9 tri znakove sady pomenovane A, B, C. Znakove sady su uvedene v nasledujucej tabulke. Symbol ciaroveho kodu EAN 13 je v prostriedku rozdeleny znakom na 2 casti nazyvane polia. Prve pole je vlavo od deliaceho znaku, druhe pole je vpravo.

Tabulka 2.: Kodovacia tabulka kodu EAN

Prve pole

Pokial by boli vsetky kody vybrate z jednej znakovej sady, bolo by mozne do kazdeho pola zakodovat 6 znakov. Ak sa vsak pozriete na vytlaceny EAN 13, uvidite, ze v prvom (lavom) poli je 7 znakov.

Je tu totiz pouzita finta, ktora umozni do tohoto pola pretlacit este jeden znak tym, ze sa pre kodovanie nepouzije len jedna znakova sada, ale sa pouziju dve. Robi sa to preto, lebo do prveho pola je potrebne umiestnit 7 znakov (kod krajiny a kod vyrobcu).

Prva cislica kodu krajiny nie je priamo reprezentovana ciarovym kodom, ale vyplyva z onacenia sady, z ktorej sa beru kody pre 2. az 7. cislicu, t. j. sesticu cisel v prvom poli. Pre zdoraznenie tejto anomalie sa v ludsky ciatelnej numerickej reprezentacii symbolu ciaroveho kodu pise prva cislica vlavo od laveho okrajoveho znaku a nie spolu s ostatnymi siestimi cislicami vo vnutri prveho pola.

Slovenska republika ma prideleny kod krainy 858, prva cislica je teda 8, ale v prvom poli budu kody cislic 5, 8 a dalsie 4 cislice patria k oznaceniu kodu vyrobcu. Ako vyplyva z nasledujucej tabulky, budu v nasom pripade brane kody siestich znakov v prvom poli zo znakovej sady A, B, A, B, B, A. Dekoder ciaroveho kodu potom z tejto skutocnosti odvodi, ze prva cislica ma byt cislica 8.

Tabulka 3.: Dekodovacia tabulka prvej cislice kodu EAN

Druhe pole

V tomto poli je zakodovane cislo vyrobku (5 cislic) a znak kontrolneho suctu (1 cislica). Vsetky znaky su tu kodovane zo znakovej sady C.

Znak kontrolneho suctu vypocitame tak, ze vsetkych 12 cislic podrobime nasledujucim matematickym operaciam. Rovnaku operaciu uskutocnuje po precitani ciaroveho kodu dekoder citacieho zariadenia.

Vypocet:

1. Scitaju sa hodnoty cislic na parnych poziciach a vysledok sa vynasobi tromi.
2. Scitaju sa hodnoty cislic na neparnych znakovych poziciach.
3. Scitaju sa obe vysledne hodnoty a vysledok sa zaokruhli nahor na cele desiatky.
4. Kontrola cislica je rozdiel zaokruhlenej a povodnej hodnoty.

Priklad:

Vypocet kontrolnej cislice pre retazec cisel 858123412345.

Sucet parnych pozicii: 18
Vynasobenie tromi: 54
Sucet neparnych pozicii: 28
Sucet obidvoch hodnot: 82
Zaokruhlenie nahor: 90
Rozdiel hodnot: 8

Pre kod EAN 13 sa teda bude kodovat retazec cisel 8581234123458.

Symbol ciaroveho kodu bude mat tento tvar (pre nazornost je kod podlozeny cervernou mriezkou o sirke 1 elementu). S su okrajove znaky start/stop, D je deliaci znak.

Note: V buducej casti serialu si povieme nieco o citani ciaroveho kodu.ddaemon