Przykład zapisu znaków alfanumerycznych w kodzie „Code39”. Znaki „*” są oznaczeniami Start/Stop, natomiast „$” jest znakiem kontrolnym wyliczonym na podstawie modulo43|thumb|right Code 39 (znany też jako „USS Code 39”, „Code 3/9”, „Kod 3 z 9”, „USD-3”, „Alpha39”) – alfanumeryczny kod kreskowy o stałej szerokości pojedynczego znaku. Kod ten powstał w 1974 roku, a rozpowszechnił się po zastosowaniu go przez Departament Obrony USA do oznaczania przesyłek od dostawców. Obecnie jest wykorzystywany w branży motoryzacyjnej do oznaczania części. Największą wadą kodu jest stosunkowo mała gęstość zapisu danych. Z tego względu kod ten nie nadaje się do umieszczania na małych przedmiotach. Zaletą kodu jest fakt, iż może on zostać odczytany przez prawie każdy czytnik kodów kreskowych.
Budowa kodu Wykorzystując podstawową wersję kodu można zakodować 43 znaki alfanumeryczne (duże litery od A do Z, cyfry, znaki specjalne: -, ., spacja, $, /, +, %) oraz symbol *, który służy do oznaczenia początku i końca kodu. Każdy znak składa się z dziewięciu pasków (występuje na przemian 5 pasków czarnych i 4 paski białe), przy czym 3 spośród nich mają większą szerokość (stąd nazwa kod 3 z 9). Stosunek szerokości pasków grubych do cienkich musi mieścić się w przedziale od 2:1 do 3:1.
W podstawowej wersji kod nie zawiera sumy kontrolnej. Jednakże jest on tak skonstruowany, iż pojedynczy błędnie odczytany pasek nie spowoduje rozpoznania znaku jako innego.
Tablica znaków Znak * jest wykorzystywany jedynie do oznaczenia początku i końca kodu. Ze względu na jego asymetryczną postać czytnik kodów kreskowych jest w stanie określić kierunek odczytu kodu.
Poniższa tabela prezentuje sposób zapisu wszystkich 44 znaków kodowanych w Kodzie 3 z 9:
+ Legenda Format1 Format2 Pasek W B szeroki – czarny N b wąski – czarny w W szeroki – biały n w wąski – biały
+ Tablica znaków Wartość Znak Format1 Format2 0 0 NnNwWnWnN bwbWBwBwb 1 1 WnNwNnNnW BwbWbwbwB 2 2 NnWwNnNnW bwBWbwbwB 3 3 WnWwNnNnN BwBWbwbwb 4 4 NnNwWnNnW bwbWBwbwB 5 5 WnNwWnNnN BwbWBwbwb 6 6 NnWwWnNnN bwBWBwbwb 7 7 NnNwNnWnW bwbWbwBwB 8 8 WnNwNnWnN BwbWbwBwb 9 9 NnWwNnWnN bwBWbwBwb 10 A WnNnNwNnW BwbwbWbwB 11 B NnWnNwNnW bwBwbWbwB 12 C WnWnNwNnN BwBwbWbwb 13 D NnNnWwNnW bwbwBWbwB 14 E WnNnWwNnN BwbwBWbwb 15 F NnWnWwNnN bwBwBWbwb 16 G NnNnNwWnW bwbwbWBwB 17 H WnNnNwWnN BwbwbWBwb 18 I NnWnNwWnN bwBwbWBwb 19 J NnNnWwWnN bwbwBWBwb 20 K WnNnNnNwW BwbwbwbWB 21 L NnWnNnNwW bwBwbwbWB 22 M WnWnNnNwN BwBwbwbWb 23 N NnNnWnNwW bwbwBwbWB 24 O WnNnWnNwN BwbwBwbWb 25 P NnWnWnNwN bwBwBwbWb 26 Q NnNnNnWwW bwbwbwBWB 27 R WnNnNnWwN BwbwbwBWb 28 S NnWnNnWwN bwBwbwBWb 29 T NnNnWnWwN bwbwBwBWb 30 U WwNnNnNnW BWbwbwbwB 31 V NwWnNnNnW bWBwbwbwB 32 W WwWnNnNnN BWBwbwbwb 33 X NwNnWnNnW bWbwBwbwB 34 Y WwNnWnNnN BWbwBwbwb 35 Z NwWnWnNnN bWBwBwbwb 36 - NwNnNnWnW bWbwbwBwB 37 . WwNnNnWnN BWbwbwBwb 38 (spacja) NwWnNnWnN bWBwbwBwb 39 $ NwNwNwNnN bWbWbWbwb 40 / NwNwNnNwN bWbWbwbWb 41 + NwNnNwNwN bWbwbWbWb 42 % NnNwNwNwN bwbWbWbWb — * NwNnWnWnN bWbwBwBwb
Pomiędzy znakmi wstawiany jest dodatkowy wąski biały pasek. Nie zostało to co prawda określone w standardzie, jednakże czytniki mogą nie odczytać kodu, który nie zawiera takich przerw. Dla przykładu kod składający się z litery „A” będzie wyglądał następująco: „[bWbwBwBwb]w[BwbwbWbwB]w[bWbwBwBwb]” i zostanie odczytany jako „*A*”.
Suma kontrolna (Code 39 mod 43) Czasem do kodu 3 z 9 dodawana jest dodatkowa suma kontrolna (odmiana kodu: Code 39 mod 43). Oblicza się ją następująco: Sumuje się wartości (od 0 do 42) wszystkich znaków występujących w kodzie (z wyjątkiem znaków start/stop) Od wyniku oblicza się wartość modulo 43 Otrzymany wynik jest wartością znaku sumy kontrolnej
Znak sumy kontrolnej dopisuje się do kodu przed znakiem stopu.
W Visual Basicu można przedstawić to w następujący sposób:
Const charSet As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%" Function Mod43(C39 As String) As String For i = 1 To Len(C39) total = InStr(charSet, Mid(C39, i, 1)) - 1 + total Next i Mod43 = C39 & Mid$(charSet, (total Mod 43 + 1), 1) End Function
Zapis całej tablicy znaków ASCII w Code 39 Istnieje rozwinięcie kodu 3 z 9 (Code 39 plus) pozwalające zakodować wszystkie 128 znaków kodu ASCII. Znacznik początku i końca kodu oraz 39 standardowych znaków (A–Z, 0–9, -, . i spacja) kodowanych jest identycznie, jak w odmianie podstawowej. Pozostałe symbole reprezentowane są przez sekwencje dwóch znaków podstawowych.
Kodowanie Code 39 plus Nr Znak Kodowanie 0 NUL %U 1 SOH $A 2 STX $B 3 ETX $C 4 EOT $D 5 ENQ $E 6 ACK $F 7 BEL $G 8 BS $H 9 HT $I 10 LF $J 11 VT $K 12 FF $L 13 CR $M 14 SO $N 15 SI $O 16 DLE $P 17 DC1 $Q 18 DC2 $R 19 DC3 $S 20 DC4 $T 21 NAK $U 22 SYN $V 23 ETB $W 24 CAN $X 25 EM $Y 26 SUB $Z 27 ESQ %A 28 FS %B 29 GS %C 30 RS %D 31 US %E Nr Znak Kodowanie 32 [spacja] [spacja] 33 ! /A 34 " /B 35 # /C 36 $ /D 37 % /E 38 & /F 39 ' /G 40 ( /H 41 ) /I 42 * /J 43 + /K 44 , /L 45 - - 46 . . 47 / /O 48 0 0 49 1 1 50 2 2 51 3 3 52 4 4 53 5 5 54 6 6 55 7 7 56 8 8 57 9 9 58 : /Z 59 ; %F 60 < %G 61 = %H 62 > %I 63 ? %J Nr Znak Kodowanie 64 @ %V 65 A A 66 B B 67 C C 68 D D 69 E E 70 F F 71 G G 72 H H 73 I I 74 J J 75 K K 76 L L 77 M M 78 N N 79 O O 80 P P 81 Q Q 82 R R 83 S S 84 T T 85 U U 86 V V 87 W W 88 X X 89 Y Y 90 Z Z 91 [ %K 92 \ %L 93 ] %M 94 ^ %N 95 _ %O Nr Znak Kodowanie 96 ` %W 97 a +A 98 b +B 99 c +C 100 d +D 101 e +E 102 f +F 103 g +G 104 h +H 105 i +I 106 j +J 107 k +K 108 l +L 109 m +M 110 n +N 111 o +O 112 p +P 113 q +Q 114 r +R 115 s +S 116 t +T 117 u +U 118 v +V 119 w +W 120 x +X 121 y +Y 122 z +Z 123 { %P 124 | %Q 125 } %R 126 ~ %S 127 DEL %T
Linki zewnętrzne Darmowy generator kodów Code 39 Generator kodów Code 39 online Specyfikacja Code 39 na Morovii na BARCODE Island na Barcode Man
Kategoria:Kody kreskowe
pt:Código de barras#Código 39