بارکد Code 128

نوشته حسین بهنودی در ۲۴ آبان ۱۳۹۸

استاندارد Code 128، بارکدی است که توسط Computer Identics Corporation در سال ۱۹۸۱ ساخته شده است. کد ۱۲۸ یک نوع بارکد با چگالی بالا است. یعنی نسبت به استانداردهای دیگر تعداد بیشتری کاراکتر در هر اینچ جا می‌دهد. کد ۱۲۸ می‌تواند همه کاراکترهای ASCII را نمایش دهد. (اعداد ، حروف بزرگ و کوچک ، نمادها و کدهای کنترل) از این رو یک بارکد مناسب برای کامپیوتر به شمار می‌رود.
ساخت کد ۱۲۸، نیاز به نرم افزار ویژه‌ای ندارد. و تنها با نصب یک فونت مناسب، می‌توان آن را چاپ کرد. این فونت را می‌توانید از گوگل فونت دریافت کنید.

استاندارد کد ۱۲۸، با اندک تفاوت‌هایی، به چند گونه تعریف شده‌است؛ و هر کدام برای یک نوع کاربردی، بهینه شده‌است.

  • Code 128A: شامل کاراکترهای کنترل بجای حروف کوچک
  • Code 128B: بدون کاراکترهای کنترل
  • Code 128C: بهینه شده برای اعداد
Value 128A 128B 128C ASCII Code
0 Space Space 00 32 / 194
1 ! ! 01 33
2 02 34
3 # # 03 35
4 $ $ 04 36
5 % % 05 37
6 & & 06 38
7 07 39
8 ( ( 08 40
9 ) ) 09 41
10 * * 10 42
11 + + 11 43
12 , , 12 44
13 13 45
14 . . 14 46
15 / / 15 47
16 0 0 16 48
17 1 1 17 49
18 2 2 18 50
19 3 3 19 51
20 4 4 20 52
21 5 5 21 53
22 6 6 22 54
23 7 7 23 55
24 8 8 24 56
25 9 9 25 57
26 : : 26 58
27 ; ; 27 59
28 < < 28 60
29 = = 29 61
30 > > 30 62
31 ? ? 31 63
32 @ @ 32 64
33 A A 33 65
34 B B 34 66
35 C C 35 67
36 D D 36 68
37 E E 37 69
38 F F 38 70
39 G G 39 71
40 H H 40 72
41 I I 41 73
42 J J 42 74
43 K K 43 75
44 L L 44 76
45 M M 45 77
46 N N 46 78
47 O O 47 79
48 P P 48 80
49 Q Q 49 81
50 R R 50 82
51 S S 51 83
52 T T 52 84
53 U U 53 85
54 V V 54 86
55 W W 55 87
56 X X 56 88
57 Y Y 57 89
58 Z Z 58 90
59 [ [ 59 91
60 \ \ 60 92
61 ] ] 61 93
62 ^ ^ 62 94
63 _ _ 63 95
64 NUL ` 64 96
65 SOH a 65 97
66 STX b 66 98
67 ETX c 67 99
68 EOT d 68 100
69 ENQ e 69 101
70 ACK f 70 102
71 BEL g 71 103
72 BS h 72 104
73 HT i 73 105
74 LF j 74 106
75 VT k 75 107
76 FF l 76 108
77 CR m 77 109
78 SO n 78 110
79 SI o 79 111
80 DLE p 80 112
81 DC1 q 81 113
82 DC2 r 82 114
83 DC3 s 83 115
84 DC4 t 84 116
85 NAK u 85 117
86 SYN v 86 118
87 ETB w 87 119
88 CAN x 88 120
89 EM y 89 121
90 SUB z 90 122
91 ESC { 91 123
92 FS | 92 124
93 GS } 93 125
94 RS ~ 94 126
95 US DEL 95 195
96 FNC 3 FNC 3 96 196
97 FNC 2 FNC 2 97 197
98 Shift B Shift A 98 198
99 Code C Code C 99 199
100 Code B FNC 4 Code B 200
101 FNC 4 Code A Code A 201
102 FNC 1 202
103 Start Code 128A 203
104 Start Code 128B 204
105 Start Code 128C 205
106 Stop 206

ساختار کد ۱۲۸

کد ۱۲۸ نیز همانند دیگر بارکدهای یک‌بعدی از بخش‌های زیر تشکیل شده است.

  • Start Code: بنابر استاندارد انتخابی کاراکتر ۲۰۳ یا ۲۰۴ یا ۲۰۵
  • Character Set: دیتای مورد نظر
  • Check Digit: کاراکتری برای چک کردن دیتای خوانده شده
  • Stop Code: کاراکتر ۲۰۶

روش محاسبه چک‌دیجیت

فرض کنید کلمه Nikparvar را می‌خواهید به بارکد تبدیل کنید. آن را در ستون اول جدولی بنویسید.

۱- جایگاه کاراکترها را روبروی هر کدام بنویسید.

۲- کد هر کاراکتر را از جدول بالا پیدا کنید.

۳- کد هر کاراکتر را در جایگاهش ضرب کنید.

۴- حاصل ضرب‌ها را با هم جمع کنید. (جمع وزنی)

Data Position Code Product
N 1 * 46 = 46
i 2 * 73 = 146
k 3 * 75 = 225
p 4 * 80 = 320
a 5 * 65 = 325
r 6 * 82 = 492
v 7 * 86 = 602
a 8 * 65 = 520
r 9 * 82 = 738
Weighted Sum 3414

۵- کد آغاز را نیز به آن بیفزایید. (با نگاه به جدول کدها برای استاندارد B مقدارش، ۱۰۴ است.)


sum = 3414 + 104 = 3518

۶- باقیمانده آن را به ۱۰۳ به دست بیاورید.


mod = 3518 % 103 = 16

۷- کاراکتر معادل عدد بدست آمده چک‌دیجیت است. (در اینجا 0 است.)

برای چک کردن ÌNikparvar0Î را در اینجا در کادر نمونه متن تایپ کنید؛ و نتیجه را با یک بارکد اسکنر ببینید.


در کادر زیر کلمه مورد نظرتان را وارد کنید. چک دیجیت و کاراکترهای آغاز و پایان را به آن اضافه می‌کند و آن را به بارکد تبدیل می‌کند. سپس می توانید آن را کپی و پیست نمایید.

HTML

<input type="text" id="in-box">
<button id="btn">OK</button>        
<div id="out-box"></div>    

CSS

@import url('https://fonts.googleapis.com/css2?family=Libre+Barcode+128+Text&display=swap');

#out-box{ font-family: 'Libre Barcode 128 Text'; }

JS

const inBox = document.getElementById("in-box");
const outBox = document.getElementById("out-box");
const btn = document.getElementById("btn");

btn.onclick = function() {
    let str = inBox.value.trim();
    let wSum = 104;

    for (let i = 0; i < str.length; i++)
        wSum += (str.charCodeAt(i) - 32) * (i + 1);

    let checkDigit = String.fromCharCode(wSum % 103 + 32);
    outBox.innerHTML = 'Ì' + str + checkDigit +'Î';
}