algorytm.org

Code 39 mod 43

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?

Code 39 mod 43
Ocena użytkowników:***** / 3
SłabyŚwietny 
Wpisany przez Tomasz Lubiński, 14 września 2006 18:59

Code 39 mod 43 (Code 3 of 9) jest alfanumerycznym kodem kreskowym, wzbogaconym w stosunku do zwykłego Code 39 o sumę kontrolną. Został on zaprojektowany by przechowywać 26 wielkie litery, 10 cyfr i 7 znaków specjalnych. Szerszą gamę znaków może przechowywać rozszerzony Code 39 mod 43 (ang. Extended Code 39). Dlugość kodowanego ciągu jest dowolna.
Każdy znak kodowany jest przez 5 czarnych kresek (ang. bar) i 4 odstępy pomiędzy nimi (ang. space). W sumie daje nam to 9 elementów. Każdy taki element może być szeroki (ang. wide) bądź wąski (ang. narrow), przy czym dla każdego znaku 3 z 9 elementów są szerokie a pozostałe wąskie - stąd pierwsza część nazwy kodowania Code 3 of 9. Druga mod 43 pochodzi od sposobu obliczania sumy kontrolnej. Dodajemy do siebie wartości wszystkich znaków występujących w kodowanym ciągu, a następnie wynik dzielimy modulo 43, jako sumę kontrolną wybieramy znak o otrzymanej wartości.

Tabela kodowania znaków: (N - oznacza wąski, W - oznacza szeroki), pierwszy znak oznacza czarną kreskę, drugi wolną przestrzeń, trzeci kolejną kreskę, czwarty kolejną wolną przestrzeń, itd...
WartośćZnakKodowanieWartośćZnakKodowanie
00NNNWWNWNN22MWNWNNNNWN
11WNNWNNNNW23NNNNNWNNWW
22NNWWNNNNW24OWNNNWNNWN
33WNWWNNNNN25PNNWNWNNWN
44NNNWWNNNW26QNNNNNNWWW
55WNNWWNNNN27RWNNNNNWWN
66NNWWWNNNN28SNNWNNNWWN
77NNNWNNWNW29TNNNNWNWWN
88WNNWNNWNN30UWWNNNNNNW
99NNWWNNWNN31VNWWNNNNNW
10AWNNNNWNNW32WWWWNNNNNN
11BNNWNNWNNW33XNWNNWNNNW
12CWNWNNWNNN34YWWNNWNNNN
13DNNNNWWNNW35ZNWWNWNNNN
14EWNNNWWNNN36-NWNNNNWNW
15FNNWNWWNNN37.WWNNNNWNN
16GNNNNNWWNW38SPACJANWWNNNWNN
17HWNNNNWWNN39$NWNWNWNNN
18INNWNNWWNN40/NWNWNNNWN
19JNNNNWWWNN41+NWNNNWNWN
20KWNNNNNNWW42%NNNWNWNWN
21LNNWNNNNWW-*NWNNWNWNN


Element szeroki ma rozmiar będący wielokrotnością szerokości elementu wąskiego. Wielokrotność ta przyjmuje wartości od 2 do 3 jeżeli element wąski jest większy niż 0,508 milimetra w przeciwnym wypadku wielokrotność ta powinna znaleźć się w zakresie od 2 do 2,2. Pomiędzy kolejnymi kodowanymi znakami zostawia się wolną przestrzeń, w praktyce przyjmuje się, że jest ona szerokości elementu wąskiego.

    Kodowany ciąg ma następującą budowę:
  • znak początku - "*"
  • kodowany ciąg
  • suma kontrolna (mod 43)
  • znak końca - "*"
Znak gwiazdki "*" zarazerowany jest jako znacznik końca i początku zakodowanego ciągu i nie może występować nigdzie indziej.

Przykład:

Zakodujmy więc napis ALGORYTM.ORG
Najpierw znak początku - "*" NWNNWNWNN
następnie "A" WNNNNWNNW
"L" NNWNNNNWW
"G" NNNNNWWNW
"O" WNNNWNNWN
"R" WNNNNNWWN
"Y" WWNNWNNNN
"T" NNNNWNWWN
"M" WNWNNNNWN
"." WWNNNNWNN
"O" WNNNWNNWN
"R" WNNNNNWWN
"G" NNNNNWWNW
Teraz suma kontrolna: A + L + G + O + R + Y + T + M + . + O + R + G = 10 + 21 + 16 + 24 + 27 + 34 + 29 + 22 + 37 + 24 + 27 + 16 = 287 mod 43 = 29 - czyli NNNNWNWWN
i na końcu - "*" NWNNWNWNN
czyli całość wygląda następująco: NWNNWNWNN WNNNNWNNW NNWNNNNWW NNNNNWWNW WNNNWNNWN WNNNNNWWN WWNNWNNNN NNNNWNWWN WNWNNNNWN WWNNNNWNN WNNNWNNWN WNNNNNWWN NNNNNWWNW NNNNWNWWN NWNNWNWNN
co w zapisie graficznym daje nam:
Code 39 mod 43


Przykład w JavaScript:
Code 39 mod 43

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
Tomasz LubińskiJavaScriptFirefox 3.0+, Safari 3.0+, Chrome 3.0+, Opera 9.5+, IE 9.0+
.js
.js
***** / 0
 
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: 29 sierpnia 2012 18:32
Dodaj komentarz