Wpisany przez Tomasz Lubiński,
28 sierpnia 2007 20:00
By kod UPC-A mógł być automatycznie przeczytany przez urządzenia skanujące musi zostać przetworzony do postaci kodu kreskowego. Kod kreskowy UPC-A 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. Zwróć uwagę że po prawej stronie wszystkie liczby zakodowane są z parzystą liczbą jedynek, a po lewej z nieparzystą liczbą jedynek - pozwala to na sprawdzenie czy kod nie jest czytany do góry nogami podczas jego skanowania.
10100011010110001010001100110010111101001001101010101000011101001100110101110010011101101100101
Co po zapisaniu w wersji graficznej (z wydłużonymi paskami ochronnymi, paskami kodującymi numer systemu oraz paskami kodującymi sumę kontrolną) wygląda nasepująco - numer systemu wstawiamy przed kodem, a cyfrę kontrolną za kodem:
- Kod kreskowy ma następującą strukturę
- lewe paski ochronne (ang. start sentinel) kodowane są jako: 101
- pierwszych 6 cyfr kodowanych lewostronnie
- środkowe paski ochronne (ang. central sentinel) kodowane jako: 01010
- kolejne 6 cyfr kodowanych prawostronnie
- prawe paski ochronne (ang. stop sentinel) kodowane są jako: 101
Poniżej przedstawiono tabelę kodowania lewo i prawostronnego. Zwróć uwagę że po prawej stronie wszystkie liczby zakodowane są z parzystą liczbą jedynek, a po lewej z nieparzystą liczbą jedynek - pozwala to na sprawdzenie czy kod nie jest czytany do góry nogami podczas jego skanowania.
cyfra | kodowanie lewostronne | kodowanie prawostronne |
0 | 0001101 | 1110010 |
1 | 0011001 | 1100110 |
2 | 0010011 | 1101100 |
3 | 0111101 | 1000010 |
4 | 0100011 | 1011100 |
5 | 0110001 | 1001110 |
6 | 0101111 | 1010000 |
7 | 0111011 | 1000100 |
8 | 0110111 | 1001000 |
9 | 0001011 | 1110100 |
Przykład:
- Zbudujemy zatem kod kreskowy dla kodu 054132691452
- lewe paski ochronne (ang. start sentinel) kodowane są jako: 101
- 1 cyfra to 0, kodujemy ją lewostronnie jako: 0001101
- 2 cyfra to 5, kodujemy ją lewostronnie jako: 0110001
- 3 cyfra to 4, kodujemy ją lewostronnie jako: 0100011
- 4 cyfra to 1, kodujemy ją lewostronnie jako: 0011001
- 5 cyfra to 3, kodujemy ją lewostronnie jako: 0111101
- 6 cyfra to 2, kodujemy ją lewostronnie jako: 0010011
- środkowe paski ochronne (ang. central sentinel) kodowane jako: 01010
- 7 cyfra to 6, kodujemy ją prawostronnie jako: 1010000
- 8 cyfra to 9, kodujemy ją prawostronnie jako: 1110100
- 9 cyfra to 1, kodujemy ją prawostronnie jako: 1100110
- 10 cyfra to 4, kodujemy ją prawostronnie jako: 1011100
- 11 cyfra to 5, kodujemy ją prawostronnie jako: 1001110
- 12 cyfra to 2, kodujemy ją prawostronnie jako: 1101100
- prawe paski ochronne (ang. stop sentinel) kodowane są jako: 101
10100011010110001010001100110010111101001001101010101000011101001100110101110010011101101100101
Co po zapisaniu w wersji graficznej (z wydłużonymi paskami ochronnymi, paskami kodującymi numer systemu oraz paskami kodującymi sumę kontrolną) wygląda nasepująco - numer systemu wstawiamy przed kodem, a cyfrę kontrolną za kodem:
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 | ***** / 1 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 2 |
Tomasz Lubiński | Java | .java | .java | ***** / 2 |
Poprawiony: 28 sierpnia 2012 20:26