Wpisany przez Tomasz Lubiński,
29 sierpnia 2007 21:15
By kod UPC-E mógł zostać autmatycznie przeczytany przez urządzenia skanujące musi zostać przetworzony do postaci kodu kreskowego UPC-E. Składa się on z 51 białych i czarny prążków znajdujących się jeden przy drugim.
Jak widać w budowie kodu kreskowego nie ma ujętego numeru systemu ani cyfry kontrolnej. Będą one zakodowane niejawnie w sposobie kodowania pozostałych 6 cyfr. Do przekształcenia kodu UPC-E do jego postaci kodu kreskowego używane jest parzyste i nieparzyste kodowanie lewostronne. Przyjmujemy, że 1 oznacza pasek ciemny, a 0 oznacza pasek jasny.
O tym czy użyć kodowania parzystego czy nieparzystego decydować będą właśnie numer systemu i cyfra kontrolna. Prawidłowe systemy numerowania kodu UPC-E to jedynie 0 lub 1. Sposób wyboru kodowania kolejnych liczb zestawiony jest w tabeli poniżej (N - kodowanie nieparzyste, P - kodowanie parzyste):
Z tabeli powyżej odczytać możemy, dla cyfry kontrolnej 1 i systemu numerowania 0: PPNPNN. Oznacza to, że druga cyfra kodu będzie zakodowana lewostronnie parzyście, trzecia cyfra kodu będzie zakodowana lewostronnie parzyście, czwarta cyfra kodu będzie zakodowana lewostronnie nieparzyście, piąta cyfra kodu będzie zakodowana lewostronnie parzyście, szósta cyfra kodu będzie zakodowana lewostronnie nieparzyście, siódma cyfra kodu będzie zakodowana lewostronnie nieparzyście.
Wszystko razem da nam zatem:
101001110100110010010111001001101110010111101010101
Co zapisane w postaci kodu kreskowego z wydłużonymi znakami startu i końca, numerem systemu zapisanym z lewej strony kodu kreskowego oraz cyfrą kontrolną zapisaną po prawej stronie kodu kreskowego wygląda następująco:
- Kod kreskowy UPC-E, ma następującą budowę:
- znak początku kodu: 101,
- cyfry 2-7 zakodowane zgodnie kodowaniem lewostronnym,
- znak końca kodu: 010101,
Jak widać w budowie kodu kreskowego nie ma ujętego numeru systemu ani cyfry kontrolnej. Będą one zakodowane niejawnie w sposobie kodowania pozostałych 6 cyfr. Do przekształcenia kodu UPC-E do jego postaci kodu kreskowego używane jest parzyste i nieparzyste kodowanie lewostronne. Przyjmujemy, że 1 oznacza pasek ciemny, a 0 oznacza pasek jasny.
cyfra | kodowanie lewostronne | |
nieparzyste | parzyste | |
0 | 0001101 | 0100111 |
1 | 0011001 | 0110011 |
2 | 0010011 | 0011011 |
3 | 0111101 | 0100001 |
4 | 0100011 | 0011101 |
5 | 0110001 | 0111001 |
6 | 0101111 | 0000101 |
7 | 0111011 | 0010001 |
8 | 0110111 | 0001001 |
9 | 0001011 | 0010111 |
O tym czy użyć kodowania parzystego czy nieparzystego decydować będą właśnie numer systemu i cyfra kontrolna. Prawidłowe systemy numerowania kodu UPC-E to jedynie 0 lub 1. Sposób wyboru kodowania kolejnych liczb zestawiony jest w tabeli poniżej (N - kodowanie nieparzyste, P - kodowanie parzyste):
cyfra kontorlna | sytem numerowania 0 | sytem numerowania 1 |
0 | PPPNNN | NNNPPP |
1 | PPNPNN | NNPNPP |
2 | PPNNPN | NNPPNP |
3 | PPNNNP | NNPPPN |
4 | PNPPNN | NPNNPP |
5 | PNNPPN | NPPNNP |
6 | PNNNPP | NPPPNN |
7 | PNPNPN | NPNPNP |
8 | PNPNNP | NPNPPN |
9 | PNNPNP | NPPNPN |
Z tabeli powyżej odczytać możemy, dla cyfry kontrolnej 1 i systemu numerowania 0: PPNPNN. Oznacza to, że druga cyfra kodu będzie zakodowana lewostronnie parzyście, trzecia cyfra kodu będzie zakodowana lewostronnie parzyście, czwarta cyfra kodu będzie zakodowana lewostronnie nieparzyście, piąta cyfra kodu będzie zakodowana lewostronnie parzyście, szósta cyfra kodu będzie zakodowana lewostronnie nieparzyście, siódma cyfra kodu będzie zakodowana lewostronnie nieparzyście.
Przykład:
- Wygenerujmy kod kreskowy dla UPC-E 04192537
- numer systemu to 0, cyfra kontrolna to 7 zatem do kodowania pozostałych cyfr użyjemy schematu PNPNPN
- znak początku kodu: 101
- druga cyfra to 4, zgodnie ze schematem zakodujemy ją lewostronnie parzyście jako: 0011101
- kolejna cyfra to 1, zgodnie ze schematem zakodujemy ją lewostronnie nieparzyście jako: 0011001
- druga cyfra to 9, zgodnie ze schematem zakodujemy ją lewostronnie parzyście jako: 0010111
- kolejna cyfra to 2, zgodnie ze schematem zakodujemy ją lewostronnie nieparzyście jako: 0010011
- druga cyfra to 5, zgodnie ze schematem zakodujemy ją lewostronnie parzyście jako: 0111001
- kolejna cyfra to 3, zgodnie ze schematem zakodujemy ją lewostronnie nieparzyście jako: 0111101
- znak końca kodu: 010101
Wszystko razem da nam zatem:
101001110100110010010111001001101110010111101010101
Co zapisane w postaci kodu kreskowego z wydłużonymi znakami startu i końca, numerem systemu zapisanym z lewej strony kodu kreskowego oraz cyfrą kontrolną zapisaną po prawej stronie kodu kreskowego wygląda następująco:
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual Studio 2010 | .cs | .cs | ***** / 1 |
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