بارکد 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Î
را در اینجا در کادر نمونه متن تایپ کنید؛ و نتیجه را با یک بارکد اسکنر ببینید.
در کادر زیر کلمه مورد نظرتان را وارد کنید. چک دیجیت و کاراکترهای آغاز و پایان را به آن اضافه میکند و آن را به بارکد تبدیل میکند. سپس می توانید آن را کپی و پیست نمایید.
<input type="text" id="in-box">
<button id="btn">OK</button>
<div id="out-box"></div>
@import url('https://fonts.googleapis.com/css2?family=Libre+Barcode+128+Text&display=swap');
#out-box{ font-family: 'Libre Barcode 128 Text'; }
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 +'Î';
}