รหัสแถบ (Bar code) คือ แถบเส้นดำยาวพิมพ์เรียงเป็นแถบบนตัวภาชนะสำหรับบรรจุสินค้าที่วางขายกันตามร้านค้าหรือซูเปอร์มาร์เก็ททั่วไป สิ่งซึ่งแถบดำเหล่านี้เหมายถึงนั้นมักจะเป็น "ข้อความ" ที่ใช้บ่งบอกตัวสินค้านั้น ๆ เช่นว่า ยาสีฟัน เป็นต้น การใช้รหัสแถบบวกกับเครื่องอ่านรหัสแถบนี้ทำให้เกิดความสะดวกรวดเร็ว และความแม่นยำในการทำงานได้มาก ตัวอย่างในซูเปอร์มาร์เก็ท รหัสแถบที่ติดอยู่บนตัวสินค้า จะทำให้การคิดเงินทำได้อย่างรวดเร็วและแม่นยำ คือเมื่อพนักงานเพียงแต่ใช้ตัวอ่านรหัสแถบรูดผ่านรหัสแถบ ก็จะทราบว่าสินค้าชนิดนั้นเป็นสินค้าอะไร เมื่อบวกกับการโปรแกรมราคาสินค้าเข้ากับเครื่องคิดเงินบางประเภท ความผิดพลาดในการกดราคาสินค้าก็จะไม่เกิดขึ้น และในกรณีนี้ไม่มีความจำเป็นที่จะต้องติดราคาสินค้าลงบนสินค้าทุกตัว ทำให้สะดวกต่อการเปลี่ยนแปลงราคาสินค้าในอีกทางหนึ่ง อีกตัวอย่างของการใช้รหัสแถบได้แก่ ศูนย์แยกจดหมายหรือสิ่งของพัสดุภัณฑ์ ในปัจจุบันการแยกแยะจดหมายอัตโนมัติโดยการให้เครื่องอ่านที่อยู่บนซองจดหมายหรือพัสดุภัณฑ์นั้นยังทำไม่ได้ถึง 100 เปอร์เซ็นต์ และอีกประการหนึ่งความรวดเร็วก็ยังไม่ได้ระดับที่น่าพอใจ ระบบแยกจดหมายจึงใช้รหัสแถบเป็นสื่อกลาง โดยก่อนที่จะมีการส่งเข้าระบบแยก เราจะทำการตีรหัสแทนที่อยู่ปลายทางลงบนตัวจดหมายก่อน จากนั้นส่วนต่าง ๆ ในระบบแยกจดหมายก็จะอาศัยการอ่านรหัส ซึ่งสามารถทำได้อย่างง่ายดาย และแม่นยำในการแยกแยะจดหมายต่อไป
00-09 | สหรัฐอเมริกา, แคนาดา |
30-37 | ฝรั่งเศส |
40-43 | เยอรมันตะวันตก |
49 | ญี่ปุ่น |
50 | อังกฤษ |
54 | เบลเยี่ยม |
57 | เดนมาร์ก |
60 | อาฟริกาใต้ |
64 | ฟินแลนด์ |
70 | นอรเวย์ |
73 | สวีเดน |
76 | สวิส |
80-83 | อิตาลี |
84 | สเปน |
87 | เนเธอร์แลนด์ |
90-91 | ออสเตรีย |
93-94 | ออสเตรเลีย, นิวซีแลนด์ |
แถบรหัส EAN/UPC และเลขรหัสประเทศต่าง ๆ |
ในปัจจุบัน รหัสแถบนี้มีบทบาทอย่างมากในการประยุกต์ใช้ เพื่อการบ่งบอกวัตถุอย่างอัตโนมัติ (Automatic Identification) สืบเนื่องจากเทคนิคและอุปกรณ์สำหรับการ recognize รหัสแถบนี้อยู่ในขั้นปฏิบัติการได้อย่างแน่นอนแล้ว ซึ่งผิดกับการ Identification ด้วยภาพหรือเสียงที่ยังต้องค้นคว้าปรับปรุงกันอีกมาก หลักการอ่านรหัสแถบ
สำหรับการอ่านรหัสแถบ เขาใช้หลักการที่ว่า พื้นสว่างจะสะท้อนได้มากกว่าพื้นมืด ดังนั้นเมื่อตัวอ่านถูกกวาดไปบนรหัสแถบ ลำแสงที่ถูกปล่อยออกมาจากหัวอ่านจะสะท้อนกลับมาหรือน้อยก็ขึ้นอยู่กับว่า มันได้ตกกระทบแถบขาวหรือแถบดำ แสงสะท้อนกลับเหล่านี้จะถูกดัดแปลงเป็นสัญญาณไฟฟ้า โดย Photodiode ที่ติดอยู่ที่หัวอ่าน องค์ประกอบสำคัญของตัวอ่านรหัสแถบก็คือ ขนาดของลำแสงที่ส่งออกมานั้น จะต้องสัมพันธ์กับความละเอียด (resolution) ของแถบ กล่าวคือ ขนาดของมันจะต้องไม่ใหญ่กว่าความกว้างของแถบดำหรือแถบขาวที่แคบที่สุด ในทางปฏิบัติเขาใช้จุดลำแสงที่มีขนาดเส้นผ่าศูนย์กลางประมาณ 0.2 มม. ส่วนสำคัญอีกส่วนหนึ่งก็คือความยาวคลื่นของแสงที่ใช้ ซึ่งขึ้นกับว่าจะใช้อ่านรหัสแถบสีอะไร โดยทั่วไปเขาใช้แสงอินฟราเรด (Infrared) ที่มีความยาวคลื่นประมาณ 0.95 ไมครอน (micron) สำหรับอ่านแถบขาวดำ และใช้แสงสีแดงที่มีความยาวคลื่น 0.65 ถึง 0.7 ไมครอน สำหรับอ่านรหัสแถบสีเขียวหรือสีน้ำเงินที่พิมพ์บนพื้นสีเหลืองหรือส้ม ลักษณะของรหัส
ในการอธิบายลักษณะของรหัสนั้น เขาจะใช้พารามิเตอร์อยู่สองสามตัว กล่าวคือ สิ่งแรก ดูว่ารหัสแถบนั้นเป็นชนิด NRZ (Not Return to Zero) หรือว่าชนิดโมดูเลชัน (Modulation) ด้วยความกว้าง ในกรณีที่เป็น NRZ การรักษาระดับลอจิค (logic) ไม่จำเป็นต้องเปลี่ยนระดับสัญญาณ กล่าวคือ ถ้าแถบขาวแทนเลข 0 เราสามารถจะแทนเลข 0 หลายตัวที่อยู่ติดกันได้ด้วยแถบขาวยาว โดยไม่ต้องมีแถบดำสลับกันไป แต่ในกรณีที่รหัสเป็นแบบโมดูเลชันด้วยความกว้างนั้น เราจะกำหนดเอาว่า 1 คือ แถบขาวหรือแถบดำที่กว้าง และ 0 คือ แถบขาวหรือแถบดำที่แคบ ดังนั้นการแทนตัวเลขสองตัวที่เหมือนกันและอยู่ติดกัน จึงต้องมีการ "สับเปลี่ยน" ตัวอย่างเช่น เลข 0 สองตัวติดกันจะต้องแทนด้วยแถบขาวและแถบดำ ไม่ใช่แถบดำหรือแถบขาวสองแถบติดกัน เพราะจะทำให้กลายเป็นการแทนเลข 1 หนึ่งตัว ซึ่งไม่ใช่เลข 0 สองตัวตามที่ต้องการไป เรายังมักเรียกรหัสแถบชนิดโมดูเลขันตามความกว้างว่าเป็นรหัสสองระดับ (แคบ/กว้าง) สิ่งที่สองที่เราพูดกันก็คือ รหัสนั้นเป็นชนิดต่อเนื่องหรือไม่ต่อเนื่อง (Discrete) กล่าวคือ ในชนิดไม่ต่อเนื่องจะมีการแทรกช่องว่าง (เปรียบได้กับการเว้นวรรค) ระหว่างตัวอักษร ดังนั้นรหัสแถบชนิดนี้จะกินเนื้อที่มาก เพื่อเปรียบเทียบการกินเนื้อที่มากน้อย เขาจึงได้นิยามความหนาแน่นของรหัสขึ้น โดยให้มันเท่ากับ จำนวนอักษรต่อความยาวหนึ่งหน่วย (นิ้วหรือ ซม.) ความหนาแน่นนี้จะขึ้นด้วยตรงกับความกว้างของแถบขาวและแถบดำ ทั้งชนิดกว้างและชนิดแคบ พื้นที่ที่เป็นอักษรควบคุม (control character) และช่องไฟระหว่างอักษร โดยทั่วไปแล้ว สำหรับรหัสที่มีความหนาแน่นสูง ความกว้างของแถบขาวหรือดำจะต่ำกว่า 0.009 นิ้ว (0.23 มม.) ซึ่งจะให้ความหนาแน่นของตัวอักษรสูงกว่า 8 ตัวอักษรต่อนิ้วโดยทั่วไป และสำหรับความหนาแน่นขนาดกลาง ความกว้างของแถบดำหรือแบบขาวจะอยู่ระหว่าง 0.009 นิ้ว ถึง 0.020 นิ้ว (0.23 มม. ถึง 0.50 มม.) ให้ความหนาแน่นอยู่ระหว่าง 4 ถึง 8 ตัวอักษรต่อนิ้ว และสุดท้ายสำหรับกรณีความหนาแน่นต่ำกว่า 4 ตัวอักษรต่อนิ้ว ความแม่นยำในการอ่านรหัส
สำหรับพารามิเตอร์ต่อไปนั้นเกี่ยวข้องกับความแม่นยำแน่นอนในการอ่านรหัส ซึ่งได้แก่ ความละเอียด, ความแตกต่างของความเข้ม (Contrast) และความไม่สมบูรณ์ของแถบรหัส ความละเอียดนั้นจะหมายถึง ขีดความสามารถของตัวอ่านในการอ่านแถบดำหรือแถบขาวที่แคบที่สุด ดังได้กล่าวไปแล้วว่า ขึ้นอยู่กับขนาดของจุดลำแสงที่ตัวอ่านใช้สำหรับความแตกต่างของความเข้มนั้น เราวัดจาก C เท่ากับ พลังงานที่สะท้อนจากแถบสว่าง ลบ พลังงานที่สะท้อนจากแถบมืด หารด้วย พลังงานที่สะท้อนจากแถบสว่าง ซึ่ง C นี้ไม่ควรต่ำกว่า 0.7 สุดท้ายความไม่สมบูรณ์ของแถบรหัส มักจะเกิดจากความบกพร่องของการพิมพ์ ซึ่งอาจทำให้เกิดการบิดเบี้ยวของแถบ, ความกว้างของแถบไม่แน่นอน หรือความคมชัดไม่ดีพอ เป็นต้น จึงจำเป็นที่เราจะต้องเลือกเครื่องพิมพ์ให้เหมาะสมกับงานและรหัสที่ใช้ ความหลากหลายของรหัส
นอกจากนี้ รหัสยังมีลักษณะอื่นที่แตกต่างกันอีกเช่น เป็นรหัสแทนตัวเลข หรือรหัสแทนทั้งตัวเลขและตัวอักษร ความยาวของแถบรหัสคงที่หรือแปรเปลี่ยนได้ เป็นต้น การเลือกใช้นั้นก็ขึ้นอยู่กับลักษณะงาน โดยเราจะพิจารณาเลือกรหัสจากชุดตัวอักษรที่รหัสสามารถแทนได้ ความยากง่ายในการใส่รหัส ความแม่นยำของรหัส ความยืดหยุ่นต่อความเร็วที่ใช้ในการอ่าน และความต้านทานต่อความไม่สมบูรณ์ในการพิมพ์ เป็นต้น อย่างไรก็ตามรหัสที่ใช้กันแพร่หลายในปัจจุบันเห็นจะได้แก่ UPC (Universal Product Code), EAN (European Artich number), Codebar, "2 ใน 5" และรหัส 39 รหัส EAN/UPC
รหัส EAN/UPC เป็นรหัสแทนตัวเลขเท่านั้น แถบรหัสหนึ่งประกอบด้วยเลข 8 ตัว หรือ 13 ตัว แต่ขนาด 13 ตัวเป็นแบบที่ใช้กันแพร่หลายมากที่สุด แถบรหัสจะขึ้นต้นและลงท้ายด้วยรหัส 101 เสมอ ตัวเลข 13 หลักนี้จะถูกแบ่งเป็นสามส่วน ส่วนแรกประกอบด้วยเลข 2 ตัว ซึ่งบ่งบอกประเทศ ส่วนที่สองประกอบด้วยเลข 4 ตัว บ่งบอกผู้ผลิตและส่วนสุดท้าย ซึ่งแยกจากส่วนที่สองโดยมีรหัส 01010 เป็นตัวคั่นนั้น จะบ่งบอกรหัสตัวสินค้า รหัสแต่ละตัวจะใช้แถบ 7 แถบ แต่ละแถบมีความกว้างตายตัวเท่ากัน โดยแถบดำคือ 1 และแถบขาวคือ 0 รหัส EAN/UPC นี้เป็นรหัสที่ใช้กับสินค้าอุปโภคบริโภค และเป็นที่ใช้กันแพร่หลายทั่วโลก รหัสตระกูล "2 ใน 5"
1
2
3
4
5
6
7
8
9
0 | 1 0 0 0 1
0 1 0 0 1
1 1 0 0 0
0 0 1 0 1
1 0 1 0 0
0 1 1 0 0
0 0 0 1 1
1 0 0 1 0
0 1 0 1 0
0 0 1 1 0 |
Code Start
Code Stop | 1 1 0
1 0 1 |
2 ใน 5 อุตสาหกรรม สำหรับรหัส "2 ใน 5" ซึ่งตามความเป็นมาแล้ว เป็นรหัสชนิดแรกที่ถูกใช้อย่างเป็นกิจจะลักษณะ หนึ่งตัวรหัสจะประกอบด้วยแถบห้าแถบ ซึ่งสองในจำนวนนี้จะมีลักษณะผิดแผกจากที่เหลือ ซึ่งเราจะได้เห็นกันต่อไป รหัสในตระกูลนี้ได้แก่ "2 ใน 5 อุตสาหกรรม", "2 ใน 5 แมทริกซ์" และ "2 ใน 5 สอดแทรก" ทั้งหมดเป็นรหัสแทนตัวเลข
รหัส "2 ใน 5 อุตสาหกรรม" นั้น แถบรหัสหนึ่งจะมีความยาวระหว่าง 1 ถึง 32 ตัว ในรหัสชนิดนี้แถบดำเท่านั้นที่ถือเป็นองค์ประกอบของแถบรหัส โดยแถบดำแคบถือเป็น 0 และแถบดำกว้างถือเป็น 1 รหัส "2 ใน 5 อุตสาหกรรม" นี้ เป็นรหัสที่ง่ายต่อการพิมพ์ แต่ว่าขาดความแน่นอนในการอ่าน ดังนั้นจึงมีการเติมเอาอักษรควบคุมที่ท้ายแถบรหัส รหัสชนิดนี้ใช้กันแพร่หลายในโรงงานอุตสาหกรรมต่าง ๆ บนตั๋วเครื่องบิน และเครื่องแยกจดหมาย
สำหรับรหัส "2 ใน 5 แมทริกซ์" นั้น แถบดำและแถบขาวล้วนถือเป็นองค์ประกอบของรหัส หนึ่งตัวรหัสประกอบด้วยสามแถบดำและสองแถบขาว ระหว่างรหัสแต่ละตัวจะมีช่องไฟคั่น แถบรหัสจะขึ้นต้นและลงท้ายด้วยรหัส 10000 เสมอ การถือเอาแถบขาว ซึ่งก็คือ พื้นที่ที่ใช้ในการพิมพ์รหัสเข้าเป็นส่วนหนึ่งของรหัส ทำให้รหัสชนิดนี้กินเนื้อที่น้อยกว่ารหัสชนิดแรก จาก 28 ถึง 33 เปอร์เซ็นต์ ข้อเสียคือความต้านทานต่อความผิดพลาดจะลดต่ำลง
รหัส "2 ใน 5 สอดแทรก" นั้น อาจถือได้ว่าเป็นรหัสที่น่าสนใจที่สุดในรหัสตระกูลนี้ ในรหัสชนิดนี้แถบดำและขาวล้วนถือเป็นองค์ประกอบของรหัสเช่นเดียวกับ "2 ใน 5 แมทริกซ์" แต่จะไม่มีช่องไฟระหว่างรหัส และการใส่รหัสนั้นจะทำในลักษณะ "สอดแทรก" คือ อักษรตัวแรกจะถูกใส่รหัสด้วยรหัส "2 ใน 5 อุตสาหกรรม" โดยใช้แถบดำเป็นตัวประกอบ แต่ตัวอักษรตัวต่อมาจะถูกใส่รหัสด้วย "2 ใน 5 อุตสาหกรรม" ที่ใช้คราวนี้แถบขาวเป็นตัวประกอบ แถบขาวที่ได้มีห้าแถบด้วยกัน คือแบ่งเป็นสองแถบกว้างและสามแถบแคบ ซึ่งจะถูกแทรกเข้าสลับกับแถบดำห้าแถบที่ได้จากการใส่รหัสตัวอักษรแรก แถบรหัสของ "2 ใน 5 สอดแทรก" นี้จะขึ้นต้นด้วยรหัส 0000 และลงท้ายด้วยรหัส 100 เมื่อเทียบกับรหัส "2 ใน 5 อุตสาหกรรม" รหัสชนิดนี้ให้ความหนาแน่นมากกว่าจาก 36 ถึง 42 เปอร์เซ็นต์ และจาก 10 ถึง 12 เปอร์เซ็นต์ เมื่อเทียบกับรหัส "2 ใน 5 แมทริกซ์" มันจึงเป็นที่ใช้กันอย่างแพร่หลายในวงการอุตสาหกรรม
รหัส 39
รหัส 39 เป็นรหัสชนิดแรกที่ใช้แทนตัวอักษรด้วย ปัจจุบันได้มีรหัสซึ่งขยายจากรหัส 39 แล้ว คือ รหัส 128 รหัส 39 นั้น ประกอบด้วยสัญลักษณ์ 43 ตัว (เดิม 39 ตัว) ซึ่งแบ่งเป็นพยัญชนะ 26 ตัว ตัวเลข 10 ตัว และอักษรพิเศษที่เหลือรหัส 39 นี้สามารถถือเป็นรหัส "3 ใน 9) เพราะหนึ่งตัวรหัสประกอบด้วย 9 ตัวประกอบ โดยสามตัวในนั้นจะเป็นแถบกว้าง และอีกสองตัวจะเป็นแถบแคบ หนึ่งแถบรหัสจะมีหนึ่งถึงสามตัวอักษรเท่านั้นซึ่งตามด้วย Check digit ดังนั้นรหัส 39 จึงมีความแน่นอนในการอ่านสูง แต่เปลืองเนื้อที่ รหัสชนิดนี้มีใช้กันมากในอุตสาหกรรมอิเล็คทรอนิค โดยใช้ในการแยกชนิดแผงวงจร
Codabar
Codabar เป็นรหัสสำหรับตัวเลขและมีความยาวของแถบรหัสจาก 1 ถึง 32 ตัว เป็นรหัสที่ใช้ในธนาคารเลือดของสหรัฐอเมริกา และในอุตสาหกรรมยาและทางการแพทย์ หนึ่งตัวรหัสประกอบด้วย 7 บิท ซึ่งแบ่งเป็น 4 แถบดำ และ 3 แถบขาว แถบดำหรือขาวที่แคบแทน 0 และแถบดำหรือขาวกว้างแทน 1
รหัสในตระกูลอื่น
นอกเหนือจากรหัสที่กล่าวแล้ว ยังมีรหัสอื่น ๆ ที่เราสามารถพบเห็นได้ เพียงแต่ว่าไม่เป็นที่แพร่หลายเท่าพวกแรกเท่านั้น รหัสเหล่านี้ได้แก่ รหัส 128, รหัส "2 ใน 7" และรหัส 11
รหัส 128 เป็นรหัสที่ใหม่มาก มันประกอบด้วยชุดตัวอักษร 128 ตัวของแอสกี (ASCII) รหัสชนิดนี้เป็นรหัสต่อเนื่องและให้ความแน่นอนในการอ่านสูงมาก ส่วนรหัส "2 ใน 7" เป็นรหัสชนิดโมดูเลชัน ตามความกว้างสำหรับแทนตัวเลขและอักษรพิเศษ 6 ตัว คือ $-: /. และ + ความกว้างของแถบในรหัสชนิดนี้ไม่ได้ถูกกำหนดไว้เพียงขนาดเดียว แต่มีถึง 18 ขนาดให้เลือกใช้ สามารถให้ความหนาแน่นได้ถึง 11 ตัวอักษรต่อนิ้ว แต่ว่ามีกฎเกณฑ์ที่ซับซ้อนจึงไม่เป็นที่นิยมใช้กันมากนัก และสุดท้ายรหัส 11 เป็นรหัสตัวเลขเช่นกัน มีลักษณะใกล้เคียงกับรหัส "2 ใน 5 แมทริกซ์" หนึ่งรหัสประกอบด้วย 3 แถบดำ และ 2 แถบขาว
รหัส 11 นี้ให้ความหนาแน่นสูงมาก เนื่องจากว่ามีการออกแบบให้สัดส่วนของแถบกว้างต่อแถบแคบดีที่สุดในแต่ละรหัส แต่ผลก็คือความซับซ้อนซึ่งทำให้สู้แบบ "2 ใน 5" ไม่ได้ ที่มา : ดร.สุวิทชัย คุ้มปีติ วารสารคอมพิวเตอร์ สมาคมคอมพิวเตอร์แห่งประเทศไทย ปีที่ 15 ฉบับที่ 75/2531 |
0 ความคิดเห็น:
แสดงความคิดเห็น