algorytm.org Data structures Kody kreskowe EAN-13  
Home AlgorithmsData structuresAlgorithmics turorialPractiseDesign patternsIT Law SitemapPortal historyContributors ForumToolsWrite an articleSearch 

EAN-13
User Rating: / 6
PoorBest 
Written by Tomasz Lubiński   
Thursday, 27 October 2005 21:40
There are no translations available.

By kod EAN-13 mógł zostać automatycznie "przeczytany" przez urządzenia skanujące musi zostać przetworzony do postaci kodu kreskowego. Sposób kodowania jest na pierwszy rzut oka nieco skomplikowany a to wszystko za sprawą kodu UPC-A, z którym musiał być on zgodny. Jest on 12-cyfrowy a EAN-13 jest 13-cyfrowy. Trzeba było zatem zakodować w jakiś sprytny sposób 1 cyfrę, ale o tym za chwilę.
Kod kreskowy EAN-13 składa się z 95 białych i czarny prążków znajdujących się jeden przy drugim. Przyjmujemy, że 1 oznacza pasek ciemny, a 0 oznacza pasek jasny.
Budowa kodu
    Kod kreskowy ma następującą strukturę
  • lewe paski ochronne (ang. start sentinel) kodowane są jako: 101
  • cyfry 2-7 kodowane są lewostronnie
  • środkowe paski ochronne (ang. central sentinel) kodowane jako: 01010
  • cyfry 8-13 kodowane są prawostronnie
  • prawe paski ochronne (ang. stop sentinel) kodowane są jako: 101

Poniżej przedstawiono tabelę kodowania lewo i prawostronnego. Jak zauważysz w kodowaniu lewostronnym występuje kodowanie nieparzyste i parzyste, będzie ono potrzebne do zakodowania wspomnianej już dodadkowej liczby w kodzie EAN-13. Nazwa kodowania parzystego i nieparzystego bierze się z liczby jedynek w kodzie, jeżeli jest ona nieparzysta to mamy do czynienia z kodem nieparzystym. Zwróć też uwagę że po prawej stronnie wyszstkie liczby zakodowane są parzyście - pozwala to na sprawdzenie czy kod nie jest czytany do góry nogami podczas jego skanowania.

cyfrakodowanie lewostronnekodowanie
prawostronne
nieparzysteparzyste
0000110101001111110010
1001100101100111100110
2001001100110111101100
3011110101000011000010
4010001100111011011100
5011000101110011001110
6010111100001011010000
7011101100100011000100
8011011100010011001000
9000101100101111110100

Czy w kodowaniu lewostronnym dla kolejnych cyfr kodu EAN-13 wybrać kodowanie parzyste czy nieparzyste decyduje pierwsza cyfra. Jest ona w ten sposób kodowana w sposób niejawny. Dokładnie jest to rozpisane w tabeli poniżej (N - kodowanie nieparzyste, P - kodowanie parzyste). Warto tutaj jeszcze wspomnieć, że kod EAN-13 zaczynający się cyfrą 0, jest równoważny UPC-A (przy czym w kodzie UPC-A nie zapisuje się tego rozpoczynającego kod EAN-13 zera).

Wartość
pierwszej
cyfry
Cyfry kodu EAN-13
234567
0NNNNNN
1NNPNPP
2NNPPNP
3NNPPPN
4NPNNPP
5NPPNNP
6NPPPNN
7NPNPNP
8NPNPPN
9NPPNPN

Przykład
Zbudujemy zatem kod kreskowy dla kodu 7215260664210
  • lewe paski ochronne (ang. start sentinel) kodowane są jako: 101
  • 1 cyfra kodu to 7, zatem według tabeli powyżej do kolejnych cyfr kodowania lewostronnego używać będziemy kodowania N P N P N P
  • 2 cyfra to 2, kodujemy ją lewostronnie nieparzyście: 0010011
  • 3 cyfra to 1, kodujemy ją lewostronnie parzyście: 0110011
  • 4 cyfra to 5, kodujemy ją lewostronnie nieparzyście: 0110001
  • 5 cyfra to 2, kodujemy ją lewostronnie parzyście: 0011011
  • 6 cyfra to 6, kodujemy ją lewostronnie nieparzyście: 0101111
  • 7 cyfra to 0, kodujemy ją lewostronnie parzyście: 0100111
  • środkowe paski ochronne (ang. central sentinel) kodowane jako: 01010
  • 8 cyfra to 6, kodujemy ją prawostronnie: 1010000
  • 9 cyfra to 6, kodujemy ją prawostronnie: 1010000
  • 10 cyfra to 4, kodujemy ją prawostronnie: 1011100
  • 11 cyfra to 2, kodujemy ją prawostronnie: 1101100
  • 12 cyfra to 1, kodujemy ją prawostronnie: 1100110
  • 13 cyfra to 0, kodujemy ją prawostronnie: 1110010
  • prawe paski ochronne (ang. stop sentinel) kodowane są jako: 101

Zatem gotowy kod kreskowy to:
10100100110110011011000100110110101111010011101010101000010100001011100110110011001101110010101
Co po zapisaniu w wersji graficznej (z wydłużonymi paskami ochronnymi) wygląda nasepująco:
Wynikowy kod EAN-13

Ze względu na techniczne ograniczenia sprzętu odczytującego symbole kodów kreskowych, ich wielkość musi się mieścić w ściśle określonych przez odpowiednie normy granicach.

Oznaczenie
wymiarów
S.C.
współczynnik
powiększenia
szeroskośćwysokość
00,829,8321,00
10,933,5623,63
21,037,2926,26
31,141,0228,89
41,244,7531,51
51,452,2136,76


.

Author Progam language Comment Download Rate
Tomasz Lubiński C/C++ Borland Builder 6
Implementation in C/C++
/ 0
Tomasz Lubiński Delphi/Pascal Borland Delphi 5
Implementation in Delphi/Pascal
/ 0
Tomasz Lubiński Java
Implementation in Java
/ 0
 
Add your implementation for this algorithm
  • Login first
File:
Progam language:
Comment:
  To be able to add your implementation, login first



Last Updated on Monday, 31 May 2010 18:43
 

Add comment







Danation
Donate us


RSS Channels
Articles
Implementations
Comments
Forum


Bookmarks








Poll
Czy znalazłeś na stronach www.algorytm.org to czego szukałeś?
 

www.algorytm.org (c) 2000-2010