ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 4614|ตอบกลับ: 0

[VB6] การเชื่อมต่อคอมพิวเตอร์กับ RFID ภาค 1 (ทฤษฎี และ รูปแบบข้อมูล)

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583


การเชื่อมต่ออุปกรณ์ทดสอบ ทำได้แบบอนาถามาก 5555+ ...

RFID หรือ Radio Frequency IDentification ... RFID มันต้องอาศัยการเหนี่ยวนำของสนามแม่เหล็กไฟฟ้า และมีการผสมสัญญาณ (Modulation) ในรูปแบบต่างๆ โดยใช้คลื่นความถี่ ย่านนั้นย่านนี้ (ก็ว่าไป) เป็นพาหะ (Carrier) ในการนำพาข้อมูลไปยังปลายทาง และมี Tag ID มีตัวอ่านหรือเขียน (Reader/Writer) มีมาตรฐานต่างๆเยอะแยะ ขอสรุปเรื่อง RFID แบบง่ายๆ คือ เราต้องนำ Tag ขนาดเล็กที่ถูกซ่อนเอาไว้ในบัตร หรือพลาสติค ไปวางไว้ใกล้ๆกับรัศมีการทำงานของตัวอ่าน (Reader) เพื่อสร้างสนามแม่เหล็กไฟฟ้า (หรือพลังงานให้กับ Tag) เพื่อที่ Reader จะสามารถอ่านข้อมูลที่อยู่ใน Tag ออกมาได้ จากนั้นตัว Reader เองก็จะส่งข้อมูลแบบอนุกรม (Serial) ไปให้กับคอมพิวเตอร์ ผ่านทาง Serial Port (หรือ COM Port นั่นเอง) ... ส่วนของคอมพิวเตอร์ก็จะนำข้อมูลที่ได้ ไปประมวลผลต่อไป เช่น ค้นหาข้อมูลใน DataBase ว่ารหัสอันนี้น่ะ มันมีอยู่ในระบบหรือไม่ ... จบ

ทำความเข้าใจกันก่อน ...
  • แอดมินใช้ Tag ID แบบมีชุดข้อมูล 1 ชุด (ID ของมัน) และเป็นชนิดอ่านได้อย่างเดียว เขียนข้อมูลลงไปไม่ได้ (ว่าไปแล้วมันก็คือ Barcode 1 มิติดีๆนั่นเอง)
  • ใช้ Reader ID-20 Innovation เป็นตัวอ่านค่าจาก Tag ID (ด้วยคลื่นแม่เหล็กไฟฟ้า) จากนั้นจะส่งข้อมูลขนาด 16 ไบต์ให้กับคอมพิวเตอร์ ผ่านพอร์ทอนุกรม
  • การอินเทอร์เฟซ หรือ การเชื่อมต่อเข้ากับคอมพิวเตอร์ผ่านพอร์ทอนุกรม หรือ เรียกอีกอย่างว่า COM Port
  • มีการส่งข้อมูลออกไปจาก Reader อย่างเดียว โดยที่ไม่มีการตรวจสอบจังหวะการทำงาน (Hand Shaking) ... ปัญหาก็คือ บ่อยครั้งในการรับข้อมูลจะเกิด Error แต่เราสามารถแก้ไขได้ด้วยการใช้ Timer เป็นตัวควบคุมจังหวะการทำงานแทน

หลักการพื้นฐานของการเชื่อมต่อ (Interface)
- มาตรฐานการเชื่อมต่อผ่านพอร์ทอนุกรม (Serial Port) ในลักษณะของส่ง-รับข้อมูลมันจะไล่เรียงตามลำดับ (ห้ามแซงคิว 5555+) ใช้สายนำสัญญาณเพียงไม่กี่เส้น ทำให้มีข้อดีในเรื่องประหยัดสาย และมีการส่งข้อมูลออกไปได้ในระยะทางไกล ในอดีตใช้งานกันอย่างแพร่หลายมากในแวดวงสื่อสารโทรคมนาคม มันจึงมีชื่อเรียกอีกอย่างว่า Communication Port หรือ สั้นๆคือ COM Port นั่นเอง ซึ่งในคอมพิวเตอร์ก็จะมี COM Port เช่น COM1 หรือ COM2 เป็นต้น

มาตรฐานของ Serial Port
RS-232 (Recommended Standard-232) เป็นมาตรฐานการเชื่อมต่อข้อมูลแบบอนุกรม ที่ถูกพัฒนาจาก Electronic Industries Association (EIA) ... คำว่ามาตรฐาน ก็เพื่อให้เป็นข้อกำหนดที่แน่นอนในการรับส่งข้อมูลระหว่างผู้ส่ง และ ผู้รับ (คอมพิวเตอร์ และ อุปกรณ์สื่อสาร หรืออาจเป็นแบบใดแบบหนึ่งคู่กัน) รวมไปถึงการตรวจสอบความถูกต้องของข้อมูลด้วย ... นอกจากนี้ก็ยังมีมาตรฐาน RS-422 และ RS-485 ซึ่งทำการปรับปรุงแก้ไขต่อมา แอดมินไม่ขอบรรยายล่ะกัน เพราะหาอ่านศึกษาเพิ่มเติมได้ทั่วไปครับ

การกำหนดค่าในการรับส่งข้อมูล (Setting) (มันขึ้นอยู่กับอุปกรณ์ และ ค่าที่ต้องการใช้งานนะครับ)


ค่าทดสอบที่ใช้งาน คือ 9600, N, 8, 1 ... จะอธิบายเรียงตามลำดับดังนี้ คือ
  • Baud Rate อัตราความเร็วในการรับส่งข้อมูล เช่น 9600 บิตต่อวินาที (มีค่าต่ำกว่า หรือ สูงกว่า ขึ้นกับปัจจัยอื่นๆ เช่น ระยะทาง อุปกรณ์ หรือ การรบกวนของสาย)
  • Parity การตรวจสอบความถูกต้องของข้อมูล ใช้การนับจำนวนบิตที่ส่งมา ว่ามีจำนวนรวมเป็นเลขคู่ (Even) หรือ เลขคี่ (Odd) ... หากไม่ใช้ให้กำหนดเป็น None Parity หรือ N
  • Data Bit จำนวนบิตข้อมูล ปกติใช้ 7 บิต หรือ 8 บิต ... กรณีนี้ใช้ 8 บิต
  • Stop Bit มีขนาด 1, 1.5 หรือ 2 บิต เพื่อบอกให้รู้จุดสิ้นสุดของข้อมูล ... กรณีนี้ใช้ 1 บิต

อย่าพึ่งงงไปเลยนะครับ แค่ให้เข้าใจว่านี่คือ การกำหนดมาตรฐานของการเชื่อมต่อ (Interface) ก่อนที่รับส่งข้อมูลได้ ... เพราะในทางปฏิบัติแล้ว ประเด็นที่ต้องให้ความสนใจ มันจะไปอยู่ที่ชุดข้อมูลที่รับเข้ามามากกว่า

การกำหนดช่องทางสื่อสาร หรือ COM Port
เราสามารถดูได้จาก Control Panel --> System --> Hardware --> Device Manager


การขัดจังหวะการทำงานของ CPU แบ่งออกได้ 2 แบบ
  • Polling คือ การกำหนดช่วงเวลาใดๆให้ CPU มันมาถามเอาเองว่าจะมีอุปกรณ์ตัวไหนบ้าง ที่ต้องการจะใช้บริการของมัน ลักษณะนี้จะทำให้ CPU เสียเวลาของการทำงาน ในการประมวลผลงานหลักไป
  • Interrupt คือ การขัดจังหวะการทำงานของ CPU โดยมีการร้องขอ (Interrupt Request - IRQ) จากอุปกรณ์ ซึ่งอุปกรณ์ต่างๆที่พ่วงอยู่ในคอมพิวเตอร์มันมีหลายตัว ดังนั้นต้องจัดระเบียบสังคมให้พวกมัน โดยการกำหนดความสำคัญตามหมายเลขการร้องขอ (IRQ) โดยหมายเลข IRQ ยิ่งมีค่าต่ำเท่าไร ก็ยิ่งมีความสำคัญมากเท่านั้น สามารถหยุดการทำงานของ CPU ได้ก่อน (ดังภาพ)

Control Panel --> System --> Hardware --> Device Manager


เพิ่มเติม: จะเห็นได้ว่าตัวที่ความสำคัญสูงสุด คือ System Timer (IRQ0) ... แต่ให้ดูตัวสำคัญรองลงมา คือ IRQ1 ตัวนี้สำหรับแป้นคีย์บอร์ด นั่นคือ หากคอมฯมันทำงานค้างไปนานๆ เรายังสามารถสั่งให้ CPU หยุดการทำงาน ด้วยการกดปุ่ม Ctrl+Alt+Delete (พิชิตมาร) เพื่อนั่งไล่ฆ่างานที่กิน Process CPU สูงๆ หรือ สั่ง Shut Down เครื่องได้นั่นปะไรล่ะครับ นี่แหละคือความสำคัญของ Interrupt Request ... อธิบายกันแบบง่ายๆ เอาให้พอเข้าใจและมองภาพออกตามแอดมินมาครับ


ข้อมูลที่ถูกบรรจุไว้ใน Tag ID

รูปแบบข้อมูลใน Data Sheet (คู่มือ ID20)
  • STX (Start of Text) ASCII Code คือ 2 (1 ไบต์) บอกจุดเริ่มต้นของชุดข้อมูล ... ไม่งั้นฝั่งรับ (Received) มันก็จะไม่รู้ซิครับว่าอันไหนหัว อันไหนหาง 55555+ ... มันไม่ได้เล่นผีผ้าห่มนี่นา ... เอิ๊กๆๆๆๆ
  • DATA ข้อมูลมีขนาด 10 ไบต์
  • CHECK SUM คือ การตรวจสอบความถูกต้องของข้อมูล
  • CR (Carriage Return) ขนาด 1 ไบต์ มี ASCII Code 0D (ฐาน 16) หรือ 13 (ฐาน 10) ... กด Enter นั่นเองครับ
  • LF (Line Feed) ขนาด 1 ไบต์ มี ASCII Code 0A (ฐาน 16) หรือ 10 (ฐาน 10) ... เป็นการขึ้นบรรทัดใหม่
  • ETX (End Of Text) ASCII Code คือ 3 (1 ไบต์) บอกจุดสิ้นสุดของชุดข้อมูลที่เรียงกันมาแบบอนุกรม (Series)


ดังนั้นรูปแบบข้อมูลจะมีลักษณะดังนี้ครับ <02>1C006082946A<0D><0A><03> ...

หมายเหตุ: การที่ใช้ 02 หรือ 0A (มี 0 นำหน้า) เพื่อบอกให้รู้ว่ามันมีขนาด 1 ไบต์ (หรือ 8 บิต) เช่น 0A = 0000 1010 ... เพราะ 0A มันเป็นเลขฐาน 16 โดยทำการแยกออกชุดละ 4 บิต ...

แนวทางในการเขียนโปรแกรม ...

มุมมองในการเขียนโปรแกรมเพื่อทำการอ่านข้อมูล ในภาษา Basic
  • เนื่องจากว่า Tag ID นี้มันราคาถูก และ จัดเก็บข้อมูลในลักษณะของบาร์โค้ด 1 มิติ หรือ มองกันให้ง่ายๆ คือ มันมีข้อมูลอยู่ชุดเดียว
  • ข้อมูลที่อ่านได้ทั้งหมด คือ <02>1C006082946A<0D><0A><03> ... สังเกตว่ามีความยาว 16 ไบต์ หรือ 16 ตัวอักขระ (Characters)
  • แต่ข้อมูลที่เราต้องการจริง คือ 1C006082946A ขนาด 12 ไบต์ โดยไม่ต้องตรวจสอบความถูกต้อง (CHECK SUM) ... ซึ่งสามารถอ่านข้อมูลได้ตั้งแต่หลักที่ 2 และนับไปทางขวามือเพิ่มอีก 11 ตัว (รวมเป็น 12 ตัว)
  • ดังนั้นในการเขียนด้วย Visual Basic 6 แอดมินจึงไม่ใช้วิธีการแยกส่วน DATA ออกมาจากรหัส CR และ LF แต่ใช้วิธีการนับความยาวของ INPUT ทั้งหมดเอา

ทั้งนี้ และ ทั้งนั้น ก็ต้องศึกษาจากอุปกรณ์ที่คุณใช้งานกันอยู่ด้วยน่ะครับ เพราะการเก็บข้อมูลใน Tag ID นั้นมันไม่เหมือนกัน  ...

ID Series Data Sheet ซึ่งเราต้องศึกษาข้อมูลในแต่ละยี่ห้อ หรือรุ่นมันด้วย (ไม่งั้นจะเขียนโปรแกรมไปควบคุมมันได้อย่างไรล่ะ???)

ดูข้อมูล ID20 Data Sheet (PDF)



เมื่อทำความเข้าใจในหลักการและทฤษฎี ก็ไปดูภาคต่อไปได้ที่ การเชื่อมต่อคอมพิวเตอร์กับ RFID ภาค 2 (ปฏิบัติแบบไม่ต้องมีอุปกรณ์ก็ได้)
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 21:41 , Processed in 0.165980 second(s), 5 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้