Kod 39 - Code 39
Code 39 (znany również jako Alpha39 , Code 3 of 9 , Code 3/9 , Type 39 , USS Code 39 lub USD-3 ) to dyskretna symbolika kodu kreskowego o zmiennej długości .
Specyfikacja Code 39 definiuje 43 znaki, składające się z wielkich liter (A do Z), cyfr (0 do 9) oraz szeregu znaków specjalnych (-, ., $, /, +, % i spacja ). Dodatkowy znak (oznaczony '*') jest używany zarówno dla ograniczników początku, jak i końca. Każda postać składa się z dziewięciu elementów: pięciu taktów i czterech spacji. Trzy z dziewięciu elementów w każdym znaku są szerokie (wartość binarna 1), a sześć elementów jest wąskich (wartość binarna 0). Stosunek szerokości pomiędzy wąskim a szerokim nie jest krytyczny i może być wybrany pomiędzy 1:2 a 1:3.
Sam kod kreskowy nie zawiera cyfry kontrolnej (w przeciwieństwie do – na przykład – Code 128 ), ale można go uznać za samosprawdzanie, ponieważ pojedyncza błędnie zinterpretowana kreska nie może wygenerować innego ważnego znaku. Prawdopodobnie najpoważniejszą wadą Code 39 jest niska gęstość danych: wymaga więcej miejsca do zakodowania danych w Code 39 niż na przykład w Code 128. Oznacza to, że bardzo małe towary nie mogą być oznaczone kodem kreskowym opartym na Code 39. Jednak kod 39 jest nadal używany przez niektóre usługi pocztowe (chociaż Universal Postal Union zaleca używanie kodu 128 we wszystkich przypadkach) i można go dekodować za pomocą praktycznie dowolnego czytnika kodów kreskowych . Jedną z zalet Code 39 jest to, że ponieważ nie ma potrzeby generowania cyfry kontrolnej, można go łatwo zintegrować z istniejącym systemem drukowania, dodając czcionkę kodu kreskowego do systemu lub drukarki, a następnie drukując surowe dane w tej czcionce.
Code 39 został opracowany przez dr Davida Allaisa i Raya Stevensa z firmy Intermec w 1974 roku. Ich oryginalny projekt zawierał dwie szerokie kreski i jedną szeroką spację w każdym znaku, co dało 40 możliwych znaków. Odłożenie jednego z tych znaków jako wzorca początku i końca pozostawiło 39 znaków, co było początkiem nazwy Code 39. Później dodano cztery znaki interpunkcyjne, bez użycia szerokich pasków i trzech szerokich spacji, rozszerzając zestaw znaków do 43 znaków. Kod 39 został później znormalizowany jako ANSI MH 10.8 M-1983 i MIL-STD-1189. MIL-STD-1189 został anulowany i zastąpiony przez ANSI/AIM BC1/1995, Uniform Symbology Specification — Code 39.
Kodowanie
* Znak przedstawiony poniżej nie jest prawdziwy kodowane charakter, ale jest start i stop symbol Kodeksu 39. Asymetria symbolu pozwala czytelnikowi, aby określić kierunek skanowania kodów kreskowych. Ten kod jest tradycyjnie mapowany na znak * w czcionkach kodów kreskowych i często pojawia się wraz z kodem kreskowym w postaci czytelnej dla człowieka.
Ogólnie rzecz biorąc, położenie dwóch szerokich słupków można uznać za kodujące liczbę od 1 do 10, a położenie szerokiej przestrzeni (która ma cztery możliwe pozycje) można uznać za klasyfikację znaku do jednej z czterech grup ( od lewej do prawej): Litery (+30) (U–Z), Cyfry (+0) (1–9,0), Litery (+10) (A–J) i Litery (+20) (K– T). Na przykład litera P (będąca szesnastą literą alfabetu) ma wyrównane paski, aby reprezentować cyfrę 6, a spację po prawej stronie, aby wybrać grupę Litery(+20).
Gdy jest reprezentowana jako cyfra, liczba „10” służy do kodowania liczby zero. Ponieważ w grupie Letters(+30) jest tylko sześć liter (litery 30-35 lub U-Z), pozostałe cztery pozycje w tej grupie (36-39) są używane do reprezentowania trzech symboli (myślnik, kropka, spacja ) oraz znak start/stop.
Dwie szerokie kreski, z pięciu możliwych pozycji, kodują liczbę od 1 do 10 przy użyciu kodu dwa z pięciu o następującej równoważności numerycznej: 1, 2, 4, 7, 0. Liczby są sumowane. Na przykład liczba 6 jest zakodowana jako NWWNN, z szerokimi kreskami zajmującymi pozycje dla 2 i 4 (2+4=6). W przypadku NNWWN, który wynosi 4+7 = 11 , jest przypisywany 0 dla cyfr (+0) i 10 dla kolumn z literami (+10 – +30). Podczas kodowania liter (+10 do +30) równanie wymaga dodania „-1”, więc „A” to WNNNW → 1 + 10 − 1 → 10, jak pokazano w tabeli.
Ostatnie cztery znaki składają się z wszystkich wąskich pasków i trzech szerokich spacji. Istnieją cztery możliwe pozycje pojedynczej wąskiej przestrzeni.
Ta tabela przedstawia specyfikację Code 39. Wartość liczbowa przypisana do każdego znaku (z wyjątkiem start/stop) jest używana w algorytmie sumy kontrolnej opisanym poniżej.
| Słupy | Przestrzenie | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| || ||| | +0 | ||| || | +10 | |||| | | +20 | | |||| | +30 | ||||||
| |||▮ | 1 | | ||▮ | 1 | 1 | || |▮ | A | 10 | ||| ▮ | K | 20 | |||▮ | U | 30 |
| |▮||▮ | 2 | |▮ ||▮ | 2 | 2 | |▮| |▮ | b | 11 | |▮|| ▮ | L | 21 | | ||▮ | V | 31 |
| ||| | 3 | ||| | 3 | 3 | | || | C | 12 | || | | m | 22 | ▮||| | W | 32 |
| ||▮|▮ | 4 | || |▮ | 4 | 4 | ||▮ |▮ | D | 13 | ||▮| ▮ | n | 23 | | |▮|▮ | x | 33 |
| |▮|| | 5 | | || | 5 | 5 | |▮ || | mi | 14 | |▮| | | O | 24 | |▮|| | Tak | 34 |
| |▮▮|| | 6 | |▮ ▮|| | 6 | 6 | |▮▮ || | F | 15 | |▮▮| | | P | 25 | | || | Z | 35 |
| |||▮▮ | 7 | || |▮▮ | 7 | 7 | ||| ▮▮ | g | 16 | |||▮ | Q | 26 | | ||▮▮ | - | 36 |
| ||▮| | 8 | | |▮| | 8 | 8 | || | | h | 17 | ▮||▮ | | r | 27 | ||▮| | . | 37 |
| |▮|▮| | 9 | |▮ |▮| | 9 | 9 | |▮| | | i | 18 | |▮|▮ | | S | 28 | | |▮| | ␣ | 38 |
| ||▮▮| | 10 | || | | 0 | 0 | ||▮ ▮| | J | 19 | ||▮▮ | | T | 29 | | |▮▮| | * | |
| ||||| | | | | || | $ | 39 | | | || | | / | 40 | | || | | | + | 41 | || | | | | % | 42 | |
Znaki są oddzielone dodatkową wąską przestrzenią. Na przykład pełne kodowanie pojedynczej litery „A”, która w rzeczywistości zawiera znaki początku i końca jako „*A*”, to „| |▮▮|▮|| |▮| |▮▮|” . Kod nie zostanie poprawnie odczytany bez tych spacji między znakami. Czcionki kodów kreskowych niezmiennie zawierają tę przestrzeń w glifie znaku.
Kod 39 mod 43
Kod 39 jest czasami używany z opcjonalną cyfrą kontrolną modulo 43 . Korzystanie z niego wymaga włączenia tej funkcji w czytniku kodów kreskowych. Kod z cyfrą kontrolną to kod 39 mod 43 .
Aby to obliczyć, każdemu znakowi przypisywana jest wartość. Zadania są wymienione w powyższej tabeli i prawie, ale nie do końca systematyczne.
Oto jak wykonać obliczenie sumy kontrolnej :
- Weź wartość (od 0 do 42) każdego znaku w kodzie kreskowym, z wyjątkiem kodów początkowych i końcowych.
- Zsumuj wartości.
- Podziel wynik przez 43.
- Reszta to wartość znaku sumy kontrolnej, który ma zostać dołączony.
Pełny kod ASCII 39
Kod 39 jest ograniczony do 43 znaków. W Full ASCII Code 39 Symbole 0-9, AZ, ".", "-" i spacja są takie same jak ich reprezentacje w Code 39. Małe litery, dodatkowe znaki interpunkcyjne i kontrolne są reprezentowane przez sekwencje dwóch znaków Code 39.
| Szczegóły kodu | ||||||||||||||
| Nr | Postać | Kodowanie | Nr | Postać | Kodowanie | Nr | Postać | Kodowanie | Nr | Postać | Kodowanie | |||
| 0 | NUL | %U | 32 | [przestrzeń] | [przestrzeń] | 64 | @ | %V | 96 | ` | %W | |||
| 1 | SOH | $A | 33 | ! | /A | 65 | A | A | 97 | a | +A | |||
| 2 | STX | $B | 34 | " | /B | 66 | b | b | 98 | b | +B | |||
| 3 | ETX | $C | 35 | # | /C | 67 | C | C | 99 | C | +C | |||
| 4 | EOT | $D | 36 | $ | /D | 68 | D | D | 100 | D | +D | |||
| 5 | ENQ | $E | 37 | % | /MI | 69 | mi | mi | 101 | mi | +E | |||
| 6 | POTWIERDZ | $F | 38 | & | /F | 70 | F | F | 102 | F | +F | |||
| 7 | BEL | $G | 39 | ' | /G | 71 | g | g | 103 | g | +G | |||
| 8 | BS | $H | 40 | ( | /H | 72 | h | h | 104 | h | +H | |||
| 9 | HT | $I | 41 | ) | /I | 73 | i | i | 105 | i | +Ja | |||
| 10 | LF | $J | 42 | * | /J | 74 | J | J | 106 | J | +J | |||
| 11 | VT | $K | 43 | + | /K | 75 | K | K | 107 | k | +K | |||
| 12 | FF | $L | 44 | , | /L | 76 | L | L | 108 | ja | +L | |||
| 13 | CR | $M | 45 | - | - | 77 | m | m | 109 | m | +M | |||
| 14 | WIĘC | $N | 46 | . | . | 78 | n | n | 110 | n | +N | |||
| 15 | SI | $O | 47 | / | /O | 79 | O | O | 111 | o | +O | |||
| 16 | DLE | $P | 48 | 0 | 0 | 80 | P | P | 112 | P | +P | |||
| 17 | DC1 | $Q | 49 | 1 | 1 | 81 | Q | Q | 113 | Q | +Q | |||
| 18 | DC2 | $R | 50 | 2 | 2 | 82 | r | r | 114 | r | +R | |||
| 19 | DC3 | $S | 51 | 3 | 3 | 83 | S | S | 115 | s | +S | |||
| 20 | DC4 | $T | 52 | 4 | 4 | 84 | T | T | 116 | T | +T | |||
| 21 | NAK | $U | 53 | 5 | 5 | 85 | U | U | 117 | ty | +U | |||
| 22 | SYN | $V | 54 | 6 | 6 | 86 | V | V | 118 | v | +V | |||
| 23 | ETB | $W | 55 | 7 | 7 | 87 | W | W | 119 | w | +W | |||
| 24 | MÓC | $X | 56 | 8 | 8 | 88 | x | x | 120 | x | +X | |||
| 25 | EM | $Y | 57 | 9 | 9 | 89 | Tak | Tak | 121 | tak | +Y | |||
| 26 | POD | $Z | 58 | : | /Z | 90 | Z | Z | 122 | z | +Z | |||
| 27 | WYJŚCIE | %A | 59 | ; | %F | 91 | [ | %K | 123 | { | %P | |||
| 28 | FS | %B | 60 | < | %G | 92 | \ | %L | 124 | | | %Q | |||
| 29 | GS | %C | 61 | = | %H | 93 | ] | %M | 125 | } | %R | |||
| 30 | RS | %D | 62 | > | %I | 94 | ^ | %N | 126 | ~ | %S | |||
| 31 | nas | %MI | 63 | ? | %J | 95 | _ | %O | 127 | DEL | %T, %X, %Y, %Z | |||
Oprogramowanie
To bezpłatne oprogramowanie o otwartym kodzie źródłowym może tworzyć kody kreskowe Code 39:
