StartStruktury danychKody kreskoweEAN-13
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
EAN-13
Ocena użytkowników:+++++ / 11
SłabyŚwietny 
Wpisany przez Tomasz Lubiński
czwartek, 27 października 2005 21:40
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


Przykład w JavaScript:
EAN13



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński C/C++ Borland Builder 6
Implementacja w C/C++
Implementacja w C/C++
++++- / 1
Tomasz Lubiński Delphi/Pascal Borland Delphi 5
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
++++- / 1
Tomasz Lubiński Java
Implementacja w Java
Implementacja w Java
++++- / 1
Tomasz Lubiński Java Script Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
Implementacja w Java Script
Implementacja w Java Script
----- / 0
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: środa, 11 stycznia 2012 20:14

Komentarze

 
photo
-1 # Artur 2010-01-12 00:04
Ciekawy artykul.
Odpowiedz | Odpowiedz z cytatem | Cytować
 

Dodaj komentarz

Kod antysapmowy
Odśwież