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.
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.
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).
Zbudujemy zatem kod kreskowy dla kodu 7215260664210
Zatem gotowy kod kreskowy to:
10100100110110011011000100110110101111010011101010101000010100001011100110110011001101110010101
Co po zapisaniu w wersji graficznej (z wydłużonymi paskami ochronnymi) wygląda nasepująco:
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.
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.
- 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.
cyfra | kodowanie lewostronne | kodowanie prawostronne | |
nieparzyste | parzyste | ||
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 |
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 | |||||
2 | 3 | 4 | 5 | 6 | 7 | |
0 | N | N | N | N | N | N |
1 | N | N | P | N | P | P |
2 | N | N | P | P | N | P |
3 | N | N | P | P | P | N |
4 | N | P | N | N | P | P |
5 | N | P | P | N | N | P |
6 | N | P | P | P | N | N |
7 | N | P | N | P | N | P |
8 | N | P | N | P | P | N |
9 | N | P | P | N | P | N |
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:
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ść |
0 | 0,8 | 29,83 | 21,00 |
1 | 0,9 | 33,56 | 23,63 |
2 | 1,0 | 37,29 | 26,26 |
3 | 1,1 | 41,02 | 28,89 |
4 | 1,2 | 44,75 | 31,51 |
5 | 1,4 | 52,21 | 36,76 |
Przykład w JavaScript:
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual Studio 2010 | .cs | .cs | ***** / 0 |
Tomasz Lubiński | C/C++ | Borland Builder 6 | .cpp | .cpp | ***** / 5 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 1 |
Tomasz Lubiński | Java | .java | .java | ***** / 1 | |
Tomasz Lubiński | JavaScript | Firefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+ | .js | .js | ***** / 1 |
Poprawiony: 21 listopada 2019 07:30
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.