algorytm.org

EAN-13

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

EAN-13
Ocena użytkowników:***** / 18
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 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

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 3
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 1
Tomasz LubińskiJava
.java
.java
***** / 1
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 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: 28 sierpnia 2012 20:19
Komentarze
photo
-1 # Artur 2010-01-12 00:04
Ciekawy artykul.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # sparciek00@interia.p 2013-03-05 08:54
Witam! mam pytanie. Otoz posiadam kolo 50 pewnych kodow ale nie moge rozgryzc sposobu ich pisania. zgadzaja sie 1 trzy znaki natomiast pozostale 11 jest kodowanie jakims rodzajem algorytmu. jest sposob na znalezienie nastepnych kodow?
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Romek 2014-01-01 21:46
Cytuję sparciek00@inte ria.p:
Witam! mam pytanie. Otoz posiadam kolo 50 pewnych kodow ale nie moge rozgryzc sposobu ich pisania. zgadzaja sie 1 trzy znaki natomiast pozostale 11 jest kodowanie jakims rodzajem algorytmu. jest sposob na znalezienie nastepnych kodow?


Musiałbyś pokazać jak wyglądają te kody. Prawdopodobnie są to kody zgodne z Code128 - jest to najpopularniejs zy w użyciu sposób kodowania numerów i napisów.
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # marek dobrzanski 2016-01-05 12:07
swietne. przydatne w mojej firmie, teraz wszystko moge ladnie zakodowac goraco pozdrawiam marko
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz