กลับมาแล้วครับหลังจากหายไปซะนาน... มัวแต่ไปบ้าปลากัดอยู่พักใหญ่(เชื่อผมเหอะทุกคนต้องมีสิ่งที่บ้าเหมือนกันหมดทุกคนเพียงแต่ว่าใครจะบ้าอะไรเท่านั้น) ในที่สุดก็ต้องกลับมาสู่วงเวียนของตัวเองในด้าน IT เมื่อวันที่ 17 มีนาคม 51 ได้เข้าประชุมคณะกรรมการดำเนินงานสำนักหอสมุด เห็นเจ๊ขวัญ(ขวัญตระกูล) มาพูดถึงเรื่องรหัส Barcode ที่บัตรประจำตัวนักศึกษา ก็เลยนึกขึ้นได้ว่ายังไม่เคยเขียนเรื่อง Barcode ที่เราใช้กันในสำนักหอสมุดเลย
วันนี้ก็เลยจะมาเขียนเรื่องรหัส Barcode ที่ใช้ในสำนักหอสมุด เริ่มเลยดีกว่า
รหัสที่ระบบ Innopac ใช้จะมีทั้งหมด 14 หลัก ไม่เชื่อลองไปหยิบหนังสือหรือบัตรประจำเจ้าหน้าที่มานับดูก็ได้ ตัวอย่างเช่น 3 1001 00283617 0 ซึ่งหลักแรกจะเป็นตัวบอกว่าเป็นหนังสือหรือว่าเป็นสมาชิกห้องสมุด ถ้าขึ้นต้นด้วยเลข 3 ก็จะเป็นหนังสือ แต่ถ้าขึ้นต้นด้วยเลข 2 จะเป็นสมาชิกก็พวกนิสิต บุคลากรนั่นแหละ สี่หลักต่อมาจะเป็นตัวแบ่งหน่วยงานหรือวิทยาเขต ที่สำนักหอสมุดของเราจะใช้ 1001 ส่วนที่พะเยาจะใช้ 1002 เป็นต้น อีกแปดหลักต่อมา ถ้าเป็นหนังสือจะใช้การนับเลขเพิ่มไปเรื่อย ๆ ซึ่งกลไกอันนี้ผมก็ไม่ทราบได้เพราะไปจ้างเค้าทำมา ส่วนนิสิตก็จะใช้รหัสประจำตัวนิสิตครับ ส่วนหลักสุดท้าย จะได้มาจากการคำนวณ Modulo 10(Mod-10) ซึ่งเอาไว้เช็ค digit ในระบบ Innopac ซึ่งเดี๋ยวจะอธิบายการคำนวณอีกทีครับ

สำหรับการคำนวนหาตัวเลข Check digit ทำได้ดังนี้ครับ
แรกสุดเราจะต้องมีตัวเลขทั้งหมด 13 หลักก่อน คือ 1 หลัก สำหรับ patron(2) หรือ item(3) 4 หลักสำหรับ รหัสมหาวิทยาลัยหรือวิทยาเขต 8 หลักสำหรับรหัสนักศึกษา ตัวอย่างเช่น 3065000870938 เมื่อได้เลข 13 หลักแล้วเราก็จะคำนวนหาผลรวมในหลักคู่ดังรูปครับ

คือดึงเอาค่าในหลักคู่ออกมาบวกกันก็จะได้ค่าจากตัวอย่างคือ 16 แล้วก็เก็บเลขนี้ไว้ก่อนครับ
ต่อมาก็จะมาหาผลรวมในหลักคี่ซึ่งจะแตกต่างจากหลักคู่คือ เราจะดึงเลขในหลักคี่แล้วเอามาคูณด้วย 2 แล้วเก็บค่าไว้ แต่ก็มีกรณีพิเศษคือถ้าคูณกันแล้วเกิน 10 ก็ให้แยกหลักสิบ กับ หลักหน่วย แล้วนำเอามาบวกกันอีกทีแล้วเก็บค่าไว้ เมื่อหาค่าได้หมดแล้วก็เอาค่าที่เก็บไว้แต่ละตัวนำเอามารวมกัน จากตัวอย่างจะได้ค่า 30 ดังรูปครับ

เมื่อได้ค่าผลรวมของหลักคู่กับหลักคี่แล้วก็นำค่าทั้ง 2 มารวมกันอีกทีคือ 16 + 30 = 46
เสร็จแล้วก็ให้นำค่าหลักหน่วยที่ได้จากผลรวมของทั้ง 2 มาลบ 10 ค่าที่ได้จะคือตัวเลข check digit จากตัวอย่างจะได้ดังนี้ 10 - 6 = 4 แต่มีกรณีพิเศษคือถ้าหลักหน่วยเราเป็น 0 อยู่แล้วเราก็ไม่ต้องนำไปลบ 10 ให้ใช้เลข 0 เป็นเลข check digit ไปเลย
4 คือเลข check digit ของเลข 13 หลักชุดนี้ 3065000870938
เมื่อเราเอาไปใช้งานในระบบ Innopac ของห้องสมุดเราก็จะได้รหัส Barcode 14 หลักดังนี้ 30650008709384
สำหรับในการทำบัตรสมาชิกห้องสมุดผมก็ใช้วิธีนี้แหละครับในการคำนวณหาเลข check digitg เมื่อได้เลขแล้วก็นำไปใส่ใน font barcode 3of9 ซึ่งหา download ได้ทั่วไปใน google
โดยใส่รหัส barcode ดังนี้ *30650008709384* ซึ่งเครื่องหมาย * จะแทน start bit และ stop bit สำหรับเครื่องอ่าน barcode เมื่อ print ออกมาเป็นบัตรสมาชิกก็สามารถใช้การได้ดีครับ
*** สำหรับผู้ที่จะลองทำรหัส Barcode เอาไปใช้ในด้านอื่นก็ลองวิธีผมก็ได้นะครับเพี่ยงแค่ ใส่เครื่องหมาย * ปิดหน้าปิดหลังรหัส barcode ที่ต้องการก็ใช้ได้แล้วครับ
ผมว่าเทคโนโลยี Barcode ทุกวันนี้ก็ยังใช้งานได้ดีอยู่นะครับ ง่ายและประหยัดดี ถึงแม้จะมีข้อเสียอยู่บ้างในเรื่องของการอ่านข้อมูลและความปลอดภัยของข้อมูล แต่ถ้าเราจัดการดี ๆ ก็ไม่น่าจะมีปัญหาอะไรมากมาย ไม่ไช่ผมไม่ชอบเทคโนโลยีใหม่ ๆ นะครับ แต่อย่าเปลี่ยนดีกว่าจนกว่าเราจะพร้อม
โอ้ หัวหน้า เรานี่เก่งจริงๆ อิอิ
ขึ้นอยู่กับว่าใช้เทคโนโลยีให้เหมาะสมครับ
เมื่อก่อนที่ทำเรื่องระบบกับเกดิษฐ เวลาเกดิษฐอธิบายทีไร พี่ไม่ค่อยเข้าใจหรอก 555 แต่แน่ใจว่าเกดิษฐทำได้ ซึ่งก็ดีมากเลยค่ะ ที่เอามาแนะนำ เพราะห้องสมุดอื่นสามารถนำวิธีการไปไช้ได้ด้วย
โห อัจฉริยะจริงๆ ตะก่อนตอนอยู่ห้องสมุดโรงพยาบาล ได้ฐานข้อมูลห้องสมุดมาแต่ว่า บาร์โค้ดใช้ไม่ได้ผลดี พอดีมีพี่นักคอมของรพ. เค้าเข้ามาช่วยบอกว่า ไอ้เจ้าfont 3of9 ก็ทำบาร์โค้ดได้
ก็เลยให้เค้าเขียนโปรแกรมที่เชื่อมกะฐานข้อมูลแล้วปริ้นออกมาเป็นบาร์โค้ดได้ ซึ่งก็ได้ผลเป็นที่น่าพอใจ ไม่งั้นอ่านบล็อก พี่เก เรื่องนี้ไม่รู้เรื่องแน่ๆ หุหุ แต่ว่าก็เพิ่งรู้ว่าตัวเลขบาร์โค้ดของหอสมุด เนี่ย มีที่มาที่ไปยังไง ......
แอบเข้ามาอ่านค่ะ ขอบคุณมากค่ะ ได้แบบนี้เหมือนกัน แต่ว่า ถ้าจะเอาไป gen หลาย ๆ ตัว ต้องเขียน vb เพิ่มใช่มั๊ยคะ จะเขียนยังไง ให้ได้เลข เยอะ ๆ แล้วเอามาให้ได้ ยังตันอยุ่เลยค่ะ อิอิ...