อ่าน 7 นาที
ดอทโค้ด
DotCode เป็น บาร์โค้ดเมทริกซ์สองมิติ (2D) ที่คิดค้นขึ้นในปี 2551 [ 1 ] โดย Hand Held Products เพื่อใช้แทน Code 128 ที่ล้าสมัย ในขณะนี้...
ดอทโค้ด

DotCode เป็นบาร์โค้ดเมทริกซ์สองมิติ (2D)ที่คิดค้นขึ้นในปี 2551 [ 1 ]โดยHand Held Productsเพื่อใช้แทนCode 128 ที่ล้าสมัย ในขณะนี้สมาคมเพื่อการระบุตัวตนอัตโนมัติและการเคลื่อนที่ (AIM) ได้ออก ให้เป็น “ISS DotCode Symbology Specification 4.0” [ 2 ] DotCode ประกอบด้วยจุดกลมสีดำที่กระจายตัวและช่องว่างสีขาวบนพื้นหลังสีขาว ในกรณีที่พื้นหลังเป็นสีดำ จุดอาจเป็นสีขาว DotCode ได้รับการพัฒนาขึ้นเพื่อใช้กับเครื่องพิมพ์อุตสาหกรรมความเร็วสูง[ 3 ]ซึ่งความแม่นยำในการพิมพ์อาจต่ำ เนื่องจาก DotCode ตามมาตรฐานไม่ต้องการองค์ประกอบที่ซับซ้อน เช่น เส้นต่อเนื่องหรือรูปทรงพิเศษ จึงสามารถนำไปใช้กับการแกะสลักด้วยเลเซอร์ หรือสว่านอุตสาหกรรมได้
DotCode สามารถแสดงเป็นอาร์เรย์สี่เหลี่ยมผืนผ้าที่มีขนาดด้านละ 5X จุด ขนาดสูงสุดของ DotCode ไม่ได้ถูกจำกัดโดยมาตรฐาน[ 4 ] (เช่นเดียวกับ Code 128 ที่ไม่ถูกจำกัด) แต่แนะนำให้ใช้ขีดจำกัดในทางปฏิบัติที่ 100x99 [ 2 ] : 5.2.1.4 ซึ่งสามารถเข้ารหัสตัวเลขได้ประมาณ 730 หลัก อักขระตัวอักษรและตัวเลข 366 ตัว หรือ 304 ไบต์
DotCode เป็นส่วนขยายของบาร์โค้ด Code 128 ซึ่งช่วยให้สามารถเข้ารหัสอาร์เรย์ข้อมูล 8 บิตและUnicode ได้อย่างกะทัดรัดยิ่งขึ้น พร้อม คุณสมบัติ การตีความช่องสัญญาณแบบขยายนอกจากนี้ DotCode ยังให้ความหนาแน่นของข้อมูลมากกว่ามาก และการแก้ไขข้อผิดพลาดแบบ Reed–Solomonซึ่งช่วยให้สามารถกู้คืน dotcode ที่เสียหายบางส่วนได้ อย่างไรก็ตาม การใช้งานหลักของ DotCode เช่นเดียวกับ Code 128 คือการเข้ารหัสข้อมูลGS1 ที่มีประสิทธิภาพ [ 5 ]ซึ่งใช้ในอุตสาหกรรมการขนส่งและบรรจุภัณฑ์ทั่วโลก
ประวัติและมาตรฐาน
บาร์โค้ด DotCode ถูกคิดค้นขึ้นในปี 2008 [ 1 ]โดย ดร. แอนดรูว์ ลองแอครี จาก บริษัท Hand Held Productsและได้รับการกำหนดมาตรฐานในปี 2009 [ 6 ]โดยAIMในชื่อ “ข้อกำหนดสัญลักษณ์บาร์โค้ด - DotCode” [ 7 ]ในปี 2019 DotCode ได้รับการทบทวนในชื่อ “ข้อกำหนดสัญลักษณ์ DotCode ของ ISS เวอร์ชัน 4.0” [ 2 ]
มีการจดทะเบียนสิทธิบัตรหลายฉบับที่เกี่ยวข้องกับการเข้ารหัสและถอดรหัส DotCode:
- สิทธิบัตรของสหรัฐอเมริกา US20090200386A1 โดย Hand Held Products Inc "สัญลักษณ์ 2 มิติที่อ่านได้ด้วยเครื่องจักร พิมพ์ได้ตามต้องการ" [ 1 ]
- สิทธิบัตรของสหรัฐอเมริกา US20090200386A1 โดย Datalogic IP Tech SRL "ระบบและวิธีการสกัดข้อมูลบิตสตรีมในรหัสออปติคอลสองมิติ" [ 8 ]
- สิทธิบัตรจีน CN113297872A โดยบริษัท Fuzhou Symbol Information Technology จำกัด "วิธีการและอุปกรณ์ระบุรหัสจุด" [ 9 ]
แอปพลิเคชัน
บาร์โค้ด DotCode สามารถใช้งานได้ในลักษณะเดียวกับCode 128หรือบาร์โค้ดเมทริกซ์ (2D) ใดๆ ในขณะนี้ ส่วนใหญ่ใช้เพื่อเข้ารหัสข้อมูล GS1 ในอุตสาหกรรมยาสูบ [ 10 ] [ 11 ] เครื่องดื่มแอลกอฮอล์และเครื่องดื่ม ไม่มีแอลกอฮอล์[ 12 ]ยา และร้านขายของชำ การใช้งานหลักในขณะนี้คือในอุตสาหกรรมยาสูบ[ 13 ] [ 14 ]
ข้อดีหลักของ DotCode คือ: [ 15 ]
- รองรับและทดแทน ชุดรหัส Code 128 อย่างเต็มรูปแบบ ;
- การเข้ารหัสข้อมูลแบบกะทัดรัดสำหรับอาร์เรย์ข้อมูล8 บิต ;
- รองรับ Unicode พร้อมคุณสมบัติการตีความช่องสัญญาณแบบขยาย (Extended Channel Interpretation );
- การเข้ารหัสข้อมูล GS1 อย่างมีประสิทธิภาพ
- การแก้ไขข้อผิดพลาดของ Reed–Solomon
- ความสามารถในการ พิมพ์บาร์โค้ดด้วยเครื่องพิมพ์อุตสาหกรรมความเร็วสูงและวิธีการอื่นๆ เช่นการแกะสลักด้วยเลเซอร์
การออกแบบบาร์โค้ด
ดอทโค้ดแสดงข้อมูลในโครงสร้างสี่เหลี่ยมผืนผ้า ซึ่งประกอบด้วยจุดกลมสีดำและช่องว่างสีขาวบนพื้นหลังสีขาว หรือจุดกลมสีขาวบนพื้นหลังสีดำ ดอทโค้ดไม่มีรูปแบบตัวค้นหาเหมือนบาร์โค้ด 2 มิติอื่นๆ และต้องตรวจจับด้วยอัลกอริธึมการตรวจจับกลุ่ม ข้อมูลที่ช้า เช่นตัวกรองกาบอร์หรือการแปลงฮอฟแบบวงกลมข้อมูล เมตาเดต้า และรหัสแก้ไขข้อผิดพลาดทั้งหมดถูกเข้ารหัสในอาร์เรย์จุดเดียวกัน ซึ่งไม่มีความแตกต่างทางสายตาใดๆ
ต่อไปนี้เป็นตัวอย่างบางส่วนของโค้ด DotCode:
- โค้ดดอทที่มีความกว้าง 25 และความสูง 10
- โค้ดดอทที่มีความกว้าง 23 และความสูง 22
- โค้ดดอทที่มีความกว้าง 57 และความสูง 60

สัญลักษณ์ DotCode สร้างขึ้นจากองค์ประกอบต่อไปนี้: [ 2 ] : 5.1
- บิตมาสก์สองบิตซึ่งแสดงในแผนภาพด้วยจุดสีเขียวสองจุด
- บิตข้อมูล (บิตข้อมูลและบิตแก้ไขข้อผิดพลาด) ซึ่งต้องอ่านจากบนลงล่าง (ด้านบาร์โค้ดคู่) และจากซ้ายไปขวา (ด้านบาร์โค้ดคี่)
- จุดมุมที่ทำเครื่องหมายสีแดงในแผนภาพ สามารถใช้เป็นบิตข้อมูลหรือบิตเติม (จุดสีดำ) ได้
- พื้นที่เงียบสงบต้องมีขนาดอย่างน้อย 3 เท่าของขนาดจุด
อาร์เรย์บิต DotCode แสดงได้ดังนี้: (บิตมาสก์สองบิต: M2, M1) (บิตข้อมูล) (บิตมุม ซึ่งอาจเป็นบิตข้อมูลหรือบิตเติม: C1 – C6)
รหัสคำข้อมูลในช่วง 0 – 112 จะถูกเข้ารหัสในรูปแบบจุดไบนารี 5 ใน 9 [ 2 ] : 5.2 ซึ่งเข้ารหัสจากจุด 9 จุด โดยมีจุดสีดำ 5 จุดและช่องว่างสีขาว 4 จุด ส่วนที่เหลือของเมทริกซ์บาร์โค้ด (ส่วนที่เหลือจากการหารด้วย 9) จะถูกเติมด้วยบิตเติมสีดำ[ 2 ] : 5.2.3 บิตเติมสามารถเป็นได้ตั้งแต่ 0 ถึง 8 อาร์เรย์บิต DotCode ทางตรรกะแสดงเป็น: (บิตมาสก์ 2 บิต) (รหัสคำข้อมูล 9 บิตต่อคำ) (บิตเติม 0 – 8 บิต)
ขนาด DotCode มีข้อกำหนดดังต่อไปนี้: [ 2 ] : 5.1
- ผลรวมของความกว้างและความสูงของ DotCode ต้องเป็นเลขคี่: ;
- ขนาดขั้นต่ำของแต่ละด้านต้องมี 5 ส่วนขนาดสูงสุดไม่มีข้อจำกัด
- ขอแนะนำให้ใช้ความกว้างและความสูงเพื่อให้มีบิตสีดำสำหรับเติมอย่างน้อย 6 บิต โดยที่ความจุของบิตข้อมูลจะมาจากผลหารของ 9 บวกหรือเท่ากับ 6: [ 2 ] : 5.2.1.4
การปกปิดข้อมูล
เพื่อลดปัญหาของสัญลักษณ์ DotCode รหัสคำข้อมูลจะถูกปิดบังเพื่อสร้างลำดับภาพอื่น รูปแบบการปิดบังจะถูกนำไปใช้กับลำดับข้อมูลเท่านั้นและไม่ส่งผลกระทบต่อรหัสคำแก้ไขข้อผิดพลาด มาตรฐาน DotCode มีรูปแบบการปิดบัง 4 แบบ ซึ่งเข้ารหัสเป็น 2 บิตและวางไว้เป็น 2 บิตแรกของอาร์เรย์บิตสัญลักษณ์[ 2 ] : 5.2.4
| หน้ากาก | บิต | ตัวอย่าง การดำเนินการมาสก์: 099 099 099 099 099 099 099 099 106 |
|---|---|---|
| 0 | 00 | เพิ่มค่า 0 ทีละเท่าๆ กันให้กับแต่ละค่า กล่าวคือ ไม่มีการเปลี่ยนแปลง(000) 099 099 099 099 099 099 099 099 106 |
| 1 | 01 | เพิ่มจำนวนทวีคูณของ 3 ต่อเนื่องกันให้กับแต่ละค่า โดยหารด้วย 113 (001) 099 102 105 108 111 001 004 007 017 |
| 2 | 10 | เพิ่มจำนวนทวีคูณของ 7 ต่อเนื่องให้กับแต่ละค่า โดยหารด้วย 113 (002) 099 106 000 007 014 021 028 035 049 |
| 3 | 11 | เพิ่มจำนวนทวีคูณของ 17 ต่อเนื่องกันให้กับแต่ละค่า โดยหารด้วย 113 (003) 099 003 020 037 054 071 088 105 016 |
การแก้ไขข้อผิดพลาด
DotCode ใช้การแก้ไขข้อผิดพลาด Reed–Solomon [ 2 ] : 5.3 ด้วยกำลังเฉพาะของ 3 และฟิลด์จำกัด หรือGF(113)รหัสคำข้อมูลแสดงด้วยค่าตั้งแต่ 0 ถึง 112 และค่ามาสก์นับเป็นรหัสคำข้อมูลนำหน้าตั้งแต่ 0 ถึง 3 ด้วยวิธีนี้ ความยาวของอาร์เรย์ที่ได้รับการป้องกันข้อมูลคือ (1 + ND) แต่จำนวนรหัสคำแก้ไขข้อผิดพลาดจะคำนวณจาก ND เท่านั้น: โดย ที่ ND คือรหัสคำข้อมูล และ NC คือรหัสคำแก้ไขข้อผิดพลาด
รหัสคำ NW ที่ได้จากการใช้รหัสคำแก้ไขข้อผิดพลาดคือ: โดย ที่ NW คือรหัสคำเข้ารหัสทั้งหมด: 1 รหัสคำมาสก์ + รหัสคำข้อมูล (ND) + รหัสคำแก้ไขข้อผิดพลาด (NC)
เนื่องจากการแก้ไขข้อผิดพลาดแบบ Reed–Solomon ไม่สามารถแก้ไขจำนวนรหัสคำที่มากกว่าพหุนามได้ ดังนั้นหาก NW เกิน 112 ข้อมูลจะถูกแบ่งออกเป็นบล็อกแก้ไขข้อผิดพลาด โดย ที่ B คือจำนวนบล็อก
สามารถแบ่งข้อมูลออกเป็นบล็อกได้ดังนี้ สำหรับแต่ละบล็อก '''n''' โดยที่ n มีค่าตั้งแต่ 1 ถึง B:
ข้อมูลการแก้ไขข้อผิดพลาดจะถูกเขียนหลังจากบล็อกข้อมูลเดี่ยวในโหมดสุ่ม: [ 16 ] (ND)(NC1_1)(NC2_1)(NC3_1)...(NC1_n)(NC2_m)(NC3_k)
การเข้ารหัส
ขนาดการเข้ารหัส DotCode ไม่ได้ถูกจำกัดด้วยมาตรฐาน แต่ขนาดการเข้ารหัสที่ใช้งานได้จริงในเวอร์ชัน 100x99 ซึ่งประกอบด้วยจุด 4950 จุด สามารถเข้ารหัสคำข้อมูลดิบได้ 366 คำ, ตัวเลข 730 หลัก, ตัวอักษรและตัวเลข 365 ตัว หรือ 304 ไบต์ ข้อความข้อมูลใน DotCode จะถูกแทนด้วยคำข้อมูลตั้งแต่ 0 ถึง 112 ซึ่งเข้ารหัสด้วยรูปแบบจุดไบนารี 5 ใน 9
DotCode รองรับคุณสมบัติต่อไปนี้: [ 2 ] : 5.2.1
- เข้ารหัสตัวเลขหรือชุดอักขระ ASCII (ระหว่าง 0 ถึง 127) ด้วยชุดรหัส A, B และ C และค่า ASCII แบบขยาย (128 ถึง 255) ด้วยการเลื่อนขึ้น (Upper Shift)
- เข้ารหัสไบต์ได้อย่างมีประสิทธิภาพ (5 ไบต์เป็น 6 รหัสคำ) ด้วย Binary Latch;
- เข้ารหัสข้อมูล GS1; [ 5 ]
- เข้ารหัสสัญลักษณ์ Unicode ด้วยคุณสมบัติการตีความช่องสัญญาณแบบขยาย (Extended Channel Interpretation );
- รองรับการเข้ารหัสแบบต่อเติมที่มีโครงสร้าง (โดยใช้สัญลักษณ์บาร์โค้ดหลายตัวเป็นกระแสข้อมูลเดียวในเชิงตรรกะ)
- รองรับการเข้ารหัสแบบ “มาโคร”
| สัญลักษณ์ข้อมูล | สัญลักษณ์ข้อมูล | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| รหัสลับ | ชุดรหัส A | ชุดรหัส B | ชุดรหัส C | ลายจุด | รหัสลับ | ชุดรหัส A | ชุดรหัส B | ชุดรหัส C | ลายจุด | ||||
| ชาร์ | เอเอสซีไอ | ชาร์ | เอเอสซีไอ | ชาร์ | เอเอสซีไอ | ชาร์ | เอเอสซีไอ | ||||||
| 0 | เอสพี | 32 | เอสพี | 32 | 00 | 101010101 | 57 | วาย | 89 | วาย | 89 | 57 | 110101100 |
| 1 | ! | 33 | ! | 33 | 01 | 010101011 | 58 | ซ | 90 | ซ | 90 | 58 | 110110010 |
| 2 | " | 34 | " | 34 | 02 | 010101101 | 59 | [ | 91 | [ | 91 | 59 | 110110100 |
| 3 | # | 35 | # | 35 | 03 | 010110101 | 60 | \ | 92 | \ | 92 | 60 | 111001010 |
| 4 | $ | 36 | $ | 36 | 04 | 011010101 | 61 | ] | 93 | ] | 93 | 61 | 111010010 |
| 5 | % | 37 | % | 37 | 05 | 101010110 | 62 | ^ | 94 | ^ | 94 | 62 | 111010100 |
| 6 | & | 38 | & | 38 | 06 | 101011010 | 63 | _ | 95 | _ | 95 | 63 | 001011110 |
| 7 | ' | 39 | ' | 39 | 07 | 101101010 | 64 | นูแอล | 00 | ` | 96 | 64 | 001101110 |
| 8 | ( | 40 | ( | 40 | 08 | 110101010 | 65 | เอสโอเอช | 01 | เอ | 97 | 65 | 001110110 |
| 9 | ) | 41 | ) | 41 | 09 | 010101110 | 66 | เอสทีเอ็กซ์ | 02 | ข | 98 | 66 | 001111010 |
| 10 | * | 42 | * | 42 | 10 | 010110110 | 67 | อีทีเอ็กซ์ | 03 | ค | 99 | 67 | 010011110 |
| 11 | + | 43 | + | 43 | 11 | 010111010 | 68 | อีโอที | 04 | ง | 100 | 68 | 010111100 |
| 12 | , | 44 | , | 44 | 12 | 011010110 | 69 | เอ็นคิว | 05 | อี | 101 | 69 | 011001110 |
| 13 | - | 45 | - | 45 | 13 | 011011010 | 70 | แอก | 06 | เอฟ | 102 | 70 | 011011100 |
| 14 | . | 46 | . | 46 | 14 | 011101010 | 71 | เบล | 07 | จี | 103 | 71 | 011100110 |
| 15 | / | 47 | / | 47 | 15 | 100101011 | 72 | ปริญญาตรี | 08 | ชม. | 104 | 72 | 011101100 |
| 16 | 0 | 48 | 0 | 48 | 16 | 100101101 | 73 | เอชที | 09 | ฉัน | 105 | 73 | 011110010 |
| 17 | 1 | 49 | 1 | 49 | 17 | 100110101 | 74 | แอลเอฟ | 10 | เจ | 106 | 74 | 011110100 |
| 18 | 2 | 50 | 2 | 50 | 18 | 101001011 | 75 | วีที | 11 | เค | 107 | 75 | 100010111 |
| 19 | 3 | 51 | 3 | 51 | 19 | 101001101 | 76 | เอฟเอฟ | 12 | ล | 108 | 76 | 100011011 |
| 20 | 4 | 52 | 4 | 52 | 20 | 101010011 | 77 | ซีอาร์ | 13 | ม | 109 | 77 | 100011101 |
| 21 | 5 | 53 | 5 | 53 | 21 | 101011001 | 78 | ดังนั้น | 14 | n | 110 | 78 | 100100111 |
| 22 | 6 | 54 | 6 | 54 | 22 | 101100101 | 79 | ไอเอส | 15 | โอ | 111 | 79 | 100110011 |
| 23 | 7 | 55 | 7 | 55 | 23 | 101101001 | 80 | ดีแอลอี | 16 | พี | 112 | 80 | 100111001 |
| 24 | 8 | 56 | 8 | 56 | 24 | 110010101 | 81 | ดีซี1 | 17 | q | 113 | 81 | 101000111 |
| 25 | 9 | 57 | 9 | 57 | 25 | 110100101 | 82 | ดีซี2 | 18 | ร | 114 | 82 | 101100011 |
| 26 | : | 58 | : | 58 | 26 | 110101001 | 83 | ดีซี3 | 19 | ส | 115 | 83 | 101110001 |
| 27 | ; | 59 | ; | 59 | 27 | 001010111 | 84 | ดีซี4 | 20 | ที | 116 | 84 | 110001011 |
| 28 | < | 60 | < | 60 | 28 | 001011011 | 85 | นาค | 21 | คุณ | 117 | 85 | 110001101 |
| 29 | = | 61 | = | 61 | 29 | 001011101 | 86 | ซิน | 22 | วี | 118 | 86 | 110010011 |
| 30 | > | 62 | > | 62 | 30 | 001101011 | 87 | อีทีบี | 23 | ว | 119 | 87 | 110011001 |
| 31 | ? | 63 | ? | 63 | 31 | 001101101 | 88 | สามารถ | 24 | x | 120 | 88 | 110100011 |
| 32 | @ | 64 | @ | 64 | 32 | 001110101 | 89 | อีเอ็ม | 25 | y | 121 | 89 | 110110001 |
| 33 | เอ | 65 | เอ | 65 | 33 | 010010111 | 90 | ซับ | 26 | z | 122 | 90 | 111000101 |
| 34 | บี | 66 | บี | 66 | 34 | 010011011 | 91 | เอสเอส | 27 | { | 123 | 91 | 111001001 |
| 35 | ซี | 67 | ซี | 67 | 35 | 010011101 | 92 | เอฟเอส | 28 | | | 124 | 92 | 111010001 |
| 36 | ดี | 68 | ดี | 68 | 36 | 010100111 | 93 | จีเอส | 29 | } | 125 | 93 | 000101111 |
| 37 | อี | 69 | อี | 69 | 37 | 010110011 | 94 | อาร์เอส | 30 | ~ | 126 | 94 | 000110111 |
| 38 | เอฟ | 70 | เอฟ | 70 | 38 | 010111001 | 95 | เรา | 31 | เดล | 127 | 95 | 000111011 |
| 39 | จี | 71 | จี | 71 | 39 | 011001011 | 96 | กะ B | ซีอาร์/แอลเอฟ | 13/10 | 96 | 000111101 | |
| 40 | ชม | 72 | ชม | 72 | 40 | 011001101 | 97 | 2x เกียร์ B | เอชที * | 09 | 97 | 001001111 | |
| 41 | ฉัน | 73 | ฉัน | 73 | 41 | 011010011 | 98 | 3x เกียร์ B | เอฟเอส * | 28 | 98 | 001100111 | |
| 42 | เจ | 74 | เจ | 74 | 42 | 011011001 | 99 | 4x เกียร์ B | จีเอส * | 29 | 99 | 001110011 | |
| 43 | เค | 75 | เค | 75 | 43 | 011100101 | 100 | 5x เกียร์ B | อาร์เอส * | 30 | (17)...(10) | 001111001 | |
| 44 | แอล | 76 | แอล | 76 | 44 | 011101001 | 101 | 6x เกียร์ B | กะ A | สลัก A | 010001111 | ||
| 45 | เอ็ม | 77 | เอ็ม | 77 | 45 | 100101110 | 102 | สลัก B | สลัก A | กะ B | 011000111 | ||
| 46 | เอ็น | 78 | เอ็น | 78 | 46 | 100110110 | 103 | 2x ชิฟต์ C | 2x ชิฟต์ C | 2x เกียร์ B | 011100011 | ||
| 47 | โอ | 79 | โอ | 79 | 47 | 100111010 | 104 | 3x เกียร์ C | 3x เกียร์ C | 3x เกียร์ B | 011110001 | ||
| 48 | พี | 80 | พี | 80 | 48 | 101001110 | 105 | 4x เกียร์ C | 4x เกียร์ C | 4x เกียร์ B | 100011110 | ||
| 49 | คิว | 81 | คิว | 81 | 49 | 101011100 | 106 | สลัก C | สลัก C | สลัก B | 100111100 | ||
| 50 | อาร์ | 82 | อาร์ | 82 | 50 | 101100110 | 107 | เอฟเอ็นซี1 | เอฟเอ็นซี1 | เอฟเอ็นซี1 | 101111000 | ||
| 51 | เอส | 83 | เอส | 83 | 51 | 101101100 | 108 | เอฟเอ็นซี2 | เอฟเอ็นซี2 | เอฟเอ็นซี2 | 110001110 | ||
| 52 | ที | 84 | ที | 84 | 52 | 101110010 | 109 | เอฟเอ็นซี3 | เอฟเอ็นซี3 | เอฟเอ็นซี3 | 110011100 | ||
| 53 | ยู | 85 | ยู | 85 | 53 | 101110100 | 110 | เลื่อนขึ้น A | เลื่อนขึ้น A | เลื่อนขึ้น A | 110111000 | ||
| 54 | วี | 86 | วี | 86 | 54 | 110010110 | 111 | การเปลี่ยนแปลงขึ้นบน B | การเปลี่ยนแปลงขึ้นบน B | การเปลี่ยนแปลงขึ้นบน B | 111000110 | ||
| 55 | ว | 87 | ว | 87 | 55 | 110011010 | 112 | สลักไบนารี | สลักไบนารี | สลักไบนารี | 111001100 | ||
| 56 | X | 88 | X | 88 | 56 | 110100110 | * ในตำแหน่งข้อมูลหลัก สิ่งเหล่านี้จะกลายเป็น “มาโคร” | ||||||
มีกฎหลักสามข้อในการเข้ารหัสข้อความ:
- การเข้ารหัสเริ่มต้นตามค่าเริ่มต้นคือชุดรหัส C;
- ในกรณีที่ตัวเลขสองหลักในชุดรหัส C (ค่า 0 – 100) ถูกเข้ารหัสในตำแหน่งของคำรหัสแรก ข้อความจะถูกถอดรหัสเป็นข้อความ GS1
- หากมีการเข้ารหัส FNC1 (ซึ่งมีผลตรงข้ามกับรหัส 128 ) หรือรหัสคำที่ไม่ใช่ตัวเลขอื่นๆ (101 - 112) ในตำแหน่งรหัสคำแรก ข้อความจะถูกถอดรหัสเป็นข้อความที่ไม่ใช่ GS1
การเข้ารหัสไบต์ไบนารี
DotCode สามารถเข้ารหัสชุดอักขระ 8 บิตเต็มรูปแบบได้สองวิธี: [ 2 ] : 5.2.1.1
- ด้วยการเลื่อนขึ้นด้านบน ซึ่งต้องใช้รหัสคำ 2 คำในสัญลักษณ์เดียว (128 ถึง 255)
- ด้วย Binary Latch ซึ่งต้องการสัญลักษณ์ Binary Latch 1 ตัว และรหัสคำ 6 คำ ในทุกๆ 5 ไบต์
โหมด Upper Shift สามารถเข้ารหัสอักขระ ASCII แบบขยาย (128 ถึง 255) ในสองรหัสคำ โดยกลับไปยังโหมดก่อนหน้าได้:
| ประเภทกะบน | รหัสลับ | เอเอสซีไอ |
|---|---|---|
| เลื่อนขึ้น A | 64 ถึง 95 | 128 ถึง 159 |
| การเปลี่ยนแปลงขึ้นบน B | 0 ถึง 95 | 160 ถึง 255 |
โหมด Binary Latch สามารถเข้ารหัสชุดอักขระ 8 บิตและลำดับ ECI ตั้งแต่ 1 ถึง 5 สัญลักษณ์ โดยใช้กฎต่อไปนี้:
- ข้อมูลจะถูกแบ่งออกเป็นบล็อกละ 5 สัญลักษณ์ (ไบต์หรือตัวระบุโหมด ECI) หรือ 6 รหัสคำ;
- ค่า 0 – 258 ถูกแปลงจากฐาน 259 จำนวน 5 ค่า ไปเป็นฐาน 103 จำนวน 6 ค่า
- ค่าตั้งแต่ 0 ถึง 255 เป็นค่าไบต์;
- ค่า 256, 257 หรือ 258 ใช้สำหรับเข้ารหัสลำดับ ECI ใน 1, 2 หรือ 3 ไบต์ถัดไปตามลำดับ
- รหัส DotCode ใดๆ ในลำดับการเข้ารหัสที่สูงกว่า 102 (ตั้งแต่ 103 ถึง 112) จะขัดจังหวะหรือเปลี่ยนโหมด
| รหัสลับ | การดำเนินการ |
|---|---|
| 103 | ขัดจังหวะด้วยการกด Shift C สองครั้ง |
| 104 | ขัดจังหวะด้วยการกด Shift C 3 ครั้ง |
| 105 | ขัดจังหวะด้วยการกด Shift C 4 ครั้ง |
| 106 | ขัดจังหวะด้วยการกด Shift C 5 ครั้ง |
| 107 | ขัดจังหวะด้วยการกด Shift C 6 ครั้ง |
| 108 | ขัดจังหวะด้วยการกด Shift C 7 ครั้ง |
| 109 | สิ้นสุดด้วยสลักไปยัง A |
| 110 | ยุติด้วยสลักไปยัง B |
| 111 | ยุติด้วยสลักไปยัง C |
| 112 | จบด้วยการแยกสัญลักษณ์ ล็อคไปที่ C |
ดังที่เราจะเห็นในตารางต่อไปนี้ Binary Latch เข้ารหัสข้อมูลได้อย่างมีประสิทธิภาพมากขึ้น โดยเริ่มต้นจาก 3 ไบต์ขึ้นไป
| จำนวนไบต์ | ต้องใช้รหัสคำ | ต้องใช้รหัสคำที่มีตัวล็อคและตัวส่งคืน | ต้องใช้รหัสคำสั่งของกะการทำงานบน |
|---|---|---|---|
| 1 | 2 | 4 | 2 |
| 2 | 3 | 5 | 4 |
| 3 | 4 | 6 | 6 |
| 4 | 5 | 7 | 8 |
| 5 | 6 | 8 | 10 |
การเข้ารหัส ECI
DotCode สามารถเข้ารหัส ตัวบ่งชี้ ECIได้สองวิธี: [ 2 ] : 5.2.1.2
- ในโหมด Binary Latch (ดูรายละเอียดด้านบน);
- ด้วยตัวอักษร FNC2
FNC2 ในตำแหน่งใดๆ ยกเว้นตำแหน่งสุดท้ายของสัญญาณข้อมูล จะส่งสัญญาณการแทรกซีเควนซ์ ECI – "\nnnnnn" ซึ่งแทนค่าระหว่าง 000000 ถึง 811799 โดยค่าเหล่านี้สามารถเข้ารหัสได้ด้วยรหัสคำ 1 หรือ 3 คำ:
- ในกรณีที่รหัสคำถัดไป < 40 จะเข้ารหัสค่า ECI 000000 เป็น 000039 โดยตรง
- มิฉะนั้น รหัสคำสามคำถัดไปที่มีค่าเป็น A, B และ C จะเข้ารหัสค่า ECI เป็น.
การเข้ารหัส GS1
ตัวเลขสองหลักใดๆ ในตำแหน่งรหัสคำแรกจะระบุสัญลักษณ์ที่เข้ารหัสแบบ GS1 (ตรงข้ามกับรหัส 128 ) ในกรณีที่สัญลักษณ์ที่มีตัวเลขสองหลักในตำแหน่งรหัสคำแรกจะต้องถูกถอดรหัสเป็นข้อมูลทั่วไป จะต้องแทรก FNC1 (ละเว้นในข้อความที่ถอดรหัสแล้ว) ในตำแหน่งของรหัสคำแรก[ 2 ] : 5.2.1.2 FNC1 ในตำแหน่งอื่นที่ไม่ใช่ตำแหน่งแรกจะทำงานเป็นตัวแยกตัวระบุแอปพลิเคชัน GS1 และถอดรหัสเป็นอักขระ GS (ค่า ASCII 29)
รหัสคำ 100 ในชุดรหัส C เข้ารหัสแอปพลิเคชัน GS1 AI (17) [ 5 ]รหัสคำ 3 คำถัดไปคือวันหมดอายุและแทรก GS1 AI (10) ก่อนถอดรหัสรหัสคำอื่นๆ: (100)(24)(12)(30)(56)(64) -> 17241230105664
โหมดมาโคร
รหัสคำข้อมูลบางส่วน 97 – 100 ในตำแหน่งข้อมูลนำในชุดรหัส B สามารถเข้ารหัส “Macros” ได้[ 17 ] [ 2 ] : 5.2.1.1 ในตำแหน่งอื่น ๆ จะเข้ารหัสสัญลักษณ์ ASCII: (Latch B)(HT) -> [)>RS05GS … RSEoT (Shift B)(HT) -> [)>RS05GS … RSEoT
| รหัสลับ | ในตำแหน่งข้อมูลแรก | ในตำแหน่งข้อมูลถัดไป | |
|---|---|---|---|
| ชาร์ | เอเอสซีไอ | ||
| 97 | [)>RS05GS ... RSEoT | เอชที | 09 |
| 98 | [)>RS06GS ... RSEoT | เอฟเอส | 28 |
| 99 | [)>RS12GS ... RSEoT | จีเอส | 29 |
| 100 | [)>RSxx ... EoT โดยที่ตัวเลขสองหลัก “xx” เป็นค่าระหว่าง 00 ถึง 99 | อาร์เอส | 30 |
| 1. การขยาย "มาโคร" เหล่านี้ประกอบด้วยส่วนหัวและส่วนท้ายสำหรับข้อมูล2. ในการเข้ารหัส HT, FS, GS หรือ RS ในตำแหน่งข้อมูลแรก ให้ใช้ชุดรหัส A 3. การขยายมาโครสำหรับรหัสคำ 100 จงใจละเว้น GS จากส่วนหัวและ RS จากส่วนท้าย เนื่องจากค่าเหล่านี้อาจไม่ถูกต้องสำหรับค่า "xx" บางค่า อย่างไรก็ตาม อาจยังคงเข้ารหัส GS และ/หรือ RS ได้ตามต้องการ | |||
การต่อเติมแบบมีโครงสร้าง
DotCode สามารถสร้างสัญลักษณ์ผสมได้ โดยที่ข้อมูลจากสัญลักษณ์ DotCode หลายตัวสามารถรวมกันได้ในเชิงตรรกะ สามารถทำได้โดยใช้สัญลักษณ์ FNC2 ในตำแหน่งข้อมูลสุดท้าย เมื่อ FNC2 อยู่ในตำแหน่งข้อมูลสุดท้าย[ 2 ] : 5.2.1.2 อักขระข้อความสองตัวก่อนหน้า ตัวเลขและตัวอักษรพิมพ์ใหญ่ตามลำดับ 1 ถึง 9 จากนั้น A ถึง Z (สำหรับค่า 10 ถึง 35) จะถูกใช้เป็น "m" และ "n" เพื่อระบุตำแหน่งของข้อความนี้ในลำดับ "m จาก n" ตัวอย่างเช่น สัญลักษณ์ที่มีข้อความลงท้ายว่า "4 B FNC2" จะเป็นสัญลักษณ์ที่ 4 จาก 11 สัญลักษณ์ที่ประกอบกันเป็นข้อความทั้งหมด
การเข้ารหัสโหมดพิเศษ
FNC3 ในตำแหน่งรหัสคำแรกบ่งชี้ว่าข้อความ[ 2 ] : 5.2.1.2 เป็นคำสั่งสำหรับการเริ่มต้นหรือการตั้งโปรแกรมใหม่ของเครื่องอ่านบาร์โค้ด
FNC3 หากอยู่ในตำแหน่งอื่นใดนอกจากตำแหน่งแรก แสดงว่าข้อความที่เข้ารหัสจะต้องถูกแยกออกเป็นสองข้อความที่แตกต่างกันในเชิงตรรกะ (ก่อนและหลัง)
การเติมข้อมูล
ความจุของรหัสคำสัญลักษณ์ DotCode คือ:
ความจุของรหัสข้อมูลสัญลักษณ์ DotCode คือ:
ด้วยวิธีนี้เราจำเป็นต้องเติมข้อมูลรหัสคำในกรณีที่มีพื้นที่ว่าง มีกฎสองข้อ: [ 2 ] : 5.2.3
- โหมดไบนารีต้องสิ้นสุดด้วย Latch to Code Set A (รหัสคำ 109)
- ในโหมดอื่นๆ ต้องใช้รหัสคำ 106 (Latch to Code Set C / Latch to Code Set B)
ดูเพิ่มเติม
- ระบบการระบุตัวตนและการเก็บรวบรวมข้อมูลอัตโนมัติ (AIDC)
- บาร์โค้ด
- รหัส 128
- การตีความช่องสัญญาณแบบขยาย
- GS1
- ผลิตภัณฑ์แบบพกพา
ลิงก์ภายนอก
- สิทธิบัตร DotCode
- โปรแกรมสร้าง DotCode ฟรี
- โปรแกรมอ่าน DotCode ฟรี
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ดอทโค้ด
DotCode เป็น บาร์โค้ดเมทริกซ์สองมิติ (2D) ที่คิดค้นขึ้นในปี 2551 [ 1 ] โดย Hand Held Products เพื่อใช้แทน Code 128 ที่ล้าสมัย ในขณะนี้...
ประวัติและมาตรฐาน
บาร์โค้ด DotCode ถูกคิดค้นขึ้นในปี 2008 [ 1 ] โดย ดร. แอนดรูว์ ลองแอครี จาก บริษัท Hand Held Products และได้รับการกำหนดมาตรฐานในปี 2009 [ 6 ] โดย AIM ในชื่อ “ข้อกำหนดสัญลักษณ์บาร์โค้ด - DotCode” [ 7 ] ในปี 2019 DotCode ได้รับการทบทวนในชื่อ “ข้อกำหนดสัญลักษณ์...
แอปพลิเคชัน
บาร์โค้ด DotCode สามารถใช้งานได้ในลักษณะเดียวกับ Code 128 หรือบาร์โค้ดเมทริกซ์ (2D) ใดๆ ในขณะนี้ ส่วนใหญ่ใช้เพื่อเข้ารหัสข้อมูล GS1 ใน อุตสาหกรรมยาสูบ [ 10 ] [ 11 ] เครื่องดื่มแอลกอฮอล์และเครื่องดื่ม ไม่มี แอลกอฮอล์ [ 12 ] ยา และร้านขายของชำ...
การออกแบบบาร์โค้ด
ดอทโค้ดแสดงข้อมูลในโครงสร้างสี่เหลี่ยมผืนผ้า ซึ่งประกอบด้วยจุดกลมสีดำและช่องว่างสีขาวบนพื้นหลังสีขาว หรือจุดกลมสีขาวบนพื้นหลังสีดำ ดอทโค้ดไม่มีรูปแบบตัวค้นหาเหมือนบาร์โค้ด 2 มิติอื่นๆ และต้องตรวจจับด้วย อัลกอริธึมการตรวจจับกลุ่ม ข้อมูลที่ช้า เช่น...