algorytm.org

UPC-E

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?

UPC-E
Ocena użytkowników:***** / 2
SłabyŚwietny 
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.

    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. kodowanie kresek
cyfrakodowanie lewostronne
nieparzysteparzyste
000011010100111
100110010110011
200100110011011
301111010100001
401000110011101
501100010111001
601011110000101
701110110010001
801101110001001
900010110010111

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
0PPPNNNNNNPPP
1PPNPNNNNPNPP
2PPNNPNNNPPNP
3PPNNNPNNPPPN
4PNPPNNNPNNPP
5PNNPPNNPPNNP
6PNNNPPNPPPNN
7PNPNPNNPNPNP
8PNPNNPNPNPPN
9PNNPNPNPPNPN

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:
UPC-E

Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Tomasz LubińskiC/C++Borland Builder 6
.cpp
.cpp
***** / 1
Tomasz LubińskiDelphi/PascalBorland Delphi 5
.pas
.pas
***** / 2
Tomasz LubińskiJava
.java
.java
***** / 2
 
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:26
Dodaj komentarz