StartStruktury danychKody kreskowePharmacode two-track
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Pharmacode two-track
Ocena użytkowników:++++- / 1
SłabyŚwietny 
Wpisany przez Tomasz Lubiński
wtorek, 31 lipca 2007 21:37
Pharmacode two-track jest kodem kreskowym wykorzystywanym w przemyśle farmaceutycznym w celu kontroli opakowań. Pierwsza część nazwy pochodzi oczywiście od miejsca zastosowania kodu, druga część mówi nam co nieco o jego budowie. Two-track oznacza, że do odczytu muszą być wykorzystane dwie ścieżki. Jedna czyta górną część kodu, podczas gdy druga czyta dolną część kodu. Ten kod kreskowy koduje dane nie w gubości pasków ale poprzez ich wysokość i umiejscowienie. Pierwsza ścieżka odczytuje paski krótkie dolne oraz długie, natomiast druga odczytuje paski krótkie dolne i długie. Pharmacode two-track może kodować liczbę z zakresu od 4 (dwa paski) do 64570080 (szesnaście pasków) włącznie. Kod zapisywany jest od strony prawej do lewej. Rozmiary jego składowych elementów są następujące:
  • szerokość wszystkich pasków 1 mm,
  • szerokość odstępów pomiędzy paskami 1 mm,
  • wysokość paska długiego 8-12 mm,
  • Wysokość paska krótkiego 4-6 mm.
Wartości poszczególnych pasków zestawione są w tabeli poniżej, wartość całego kodu otrzymuje się poprzez zsumowanie wartości pasków składających się na kod:
Pozycja16151413121110987654321
Pasek dolny (below)14348907478296915943235314411771475904919683656121877292438127931
Pasek górny (above)28697814956593831886461062882354294118098393661312243741458486162541862
Pasek długi430467211434890747829691594323531441177147590491968365612187729243 812793

Jeżeli przez p oznaczymy pozycję to wartość poszczególnych rodzajów kresek możemy zapisać następująco:
  • Pasek krótki dolny = 3p-1
  • Pasek krótki górny = 2*3p-1
  • Pasek długi = 3*3p-1 = 3p
Spróbujmy zatem odczytać podany poniżej kod:
Pharmacode two-track
Jak już wpomnieliśmy kod czyta się od prawej do lewej. Początkowo nasz wynik wynosi zero. Pierwszy pasek po prawej jest długi, wartość długiego paska na pierwszej pozycji wynosi 3. Dodajemy tą wartość do wyniku, otrzymujemy 3. Kolejny pasek jest paskiem krótkim górnym, jego wartość odczytana z tabeli wynosi 6 (krótki górny pasek na drugiej pozycji), dodajemy do wyniku i otrzymujemy 9. Kolejny pasek krótki dolny, jego wartość to 9 (krótki dolny pasek na trzeciej pozycji), dodajemy do wyniku otrzymując tym samym 18. Kolejny ostatni już pasek krótki górny ma wartość 54 (górny krótki pasek na czwartej pozycji), dodajemy do wyniku i dostajemy otrzymując ostateczny rezultat 72.
Ponieważ pharmacode nie zawiera ani znaku sumy kontrolnej, ani znaku startu/końca sekwencji kod może być czytany albo z lewej do prawej albo z prawej do lewej dając różne wartości.
I tak gdyby nasz kod przeczytac "do góry nogami" jego wartość wynosiłaby 97.

Zajmijmy się teraz zamianą danej wartości na kod Pharmacode two-track. Algorytm generowania kodu jest dość prosty. By zamienić daną liczbę na postać kodu wykonujemy kolejne czyności tak długo, jak liczba jest większa od zera:
  • jeżeli liczba mod 3 = 0 (jest podzielna przez 3): do wyniku dopisujemy długi pasek, liczba = (liczba - 3)/3
  • jeżeli liczba mod 3 = 2: do wyniku dopisujemy krótki górny pasek, liczba = (liczba - 2)/3
  • jeżeli liczba mod 3 = 1: do wyniku dopisujemy krótki dolny pasek, liczba = (liczba - 1)/3

Przy czym należy zauważyć że paski do wyniku zapisujemy od strony prawej do lewej.

Przykład
Spróbujmy wygenerować Pharmacode two-track dla wartości liczba = 55.
Początkowo wynik = ''
55 mod 3 = 1. Zatem do wyniku dopisujemy pasek krótki dolny ('B'), wynik = 'B', liczba = 55 - 1 / 3 = 18
18 mod 3 = 0. A więc do wyniku dopisujemy pasek długi ('N'), wynik = 'NB' (wynik zapisujemy od prawej do lewej), liczba = 18 - 3 / 3 = 5
5 mod 3 = 2. Zatem do wyniku dopisujemy pasek krótki górny ('A'), wynik = 'ANB', liczba = 5 - 2 / 3 = 1
1 mod 3 = 1. Tak więc do wyniku dopisujemy pasek krótki dolny ('B'), wynik = 'BANB', liczba = 1 - 1 / 3 = 0
liczba wynosi 0, zatem kończymy nasze obliczenia, wynik = 'BANB' co przedstawione w wersji graficznej wygląda następująco:
Pharmacode two-track



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński C/C++ Borland Builder 6
Implementacja w C/C++
Implementacja w C/C++
+---- / 1
Tomasz Lubiński Delphi/Pascal Borland Delphi 5
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
+++-- / 2
Tomasz Lubiński Java
Implementacja w Java
Implementacja w 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: poniedziałek, 31 maja 2010 18:56

Dodaj komentarz

Kod antysapmowy
Odśwież