หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 3 3 7 7 5 0

7 ธันวาคม พ.ศ.2549
287 Users On-Line.
Visitors - Page views
 8 6 7 2 8 5 8
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

RFID และ การติดต่อฐานข้อมูล ด้วย VB6 ภาค 1 (ทฤษฎี และ รูปแบบข้อมูล)

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 1/12/2552   เวลา: 14:43
(อ่าน : 29720) 
RFID หรือ Radio Frequency IDentication ... พี่น้องคงสามารถศึกษาข้อมูลได้อย่างมากมายอยู่แล้วแหละครับ ว่ามันคืออะไร หลายคนคงได้อ่าน หรือเห็นลักษณะการทำงานของ RFID ไปบ้างแล้ว เช่น มันต้องอาศัยการเหนี่ยวนำของสนามแม่เหล็กไฟฟ้า มีการผสมสัญญาณ (Modulation) แบบต่างๆ ใช้คลื่นความถี่ ย่านนั้นย่านนี้ (ก็ว่าไป) เป็นพาหะ (Carrier) ในการนำพาข้อมูลไปยังปลายทาง มี Tag ID มีตัวอ่านหรือเขียน (Reader/Writer) มีมาตรฐานต่างๆมากมายก่ายกอง ... เอาแค่นี้เอง หากคนไม่ได้จบมาทางด้าน Telecommunication เป็นอันว่าต้องส่ายหน้าหนีไปให้พ้นๆเลย 55555+ ... โอ้ย แบบนี้มันออกจะ ... "เล่นของสูง" เกินตัวไปแล้ว ... เดี๋ยวผมจะร่ายมนต์ดำ ทำให้นางงามจักรวาล กลายมาเป็นนางงามประจำหมู่บ้านซ่ะเลย ก้ากๆๆๆๆ ... ผมรับรองได้ว่า มันไม่ได้เป็นสิ่งที่ไกล จนเอื้อมไม่ถึงขนาดนั้นหรอกครับ เพราะบทความนี้ไม่จำเป็นต้องใช้อุปกรณ์เสริม ก็สามารถเข้าถึงได้แล้ว เอิ๊กๆๆๆๆ ... ทำไมมุมมองของผม จึงมองเข้ามาได้ในหลายมิติล่ะ ก็เพราะผมมีพื้นฐาน ทั้งทฤษฎี หลักการ และ สิ่งที่สำคัญมาก คือ การได้ ประสบการณ์ ในงานทางด้าน Telecom + Data Com + DataBase ... จึงทำให้มองภาพรวมทั้งหมดออกอย่างไม่ยากเย็นนัก ... ดังนั้นก่อนที่จะเขียนบทความเรื่องนี้ออกมา ผมก็ดูแล้วว่าทั้งเว็บไทย หรือ ต่างประเทศ จะไม่กล่าวถึงการประยุกต์เข้าสู่งานระบบฐานข้อมูลเลยครับ ... พี่น้อง

    สรุปเรื่อง RFID แบบง่ายๆ ... เราต้องนำ Tag (เช่น บัตรนักศึกษา) ไปวางไว้ใกล้ๆกับรัศมีการทำงานของตัวอ่าน (Reader) เพื่อสร้างสนามแม่เหล็กไฟฟ้า (หรือพลังงานให้กับ Tag) เพื่อที่ Reader จะสามารถอ่านข้อมูลที่อยู่ใน Tag ออกมาได้ จากนั้นตัว Reader เองก็จะส่งข้อมูลแบบอนุกรมไปให้กับคอมพิวเตอร์ ผ่านทาง Serial Port (หรือ COM Port นั่นเอง) ... ส่วนของคอมพิวเตอร์ก็จะนำข้อมูลที่ได้ ไปประมวลผลต่อไป เช่น ค้นหาข้อมูลใน DataBase ว่ารหัสอันนี้น่ะ มันมีอยู่ในระบบหรือไม่ ... จบ
    เคยบอกไปแล้วว่าผมไม่ใช่นักวิชาเกิน เอ้ย วิชาการ ... 55555+

    ชุดทดสอบผม - Local บ้านนอกจริงๆ ... 55555+
    ก็ยื่นบัตรขาวๆ (Tag) หรือ พวงกุญแจ เข้าไปใกล้ๆตัว Reader (ID20) นั่นเองแหละครับ ... พี่น้อง
    จาก ID20 ก็จะมีสายส่งข้อมูล (D0) พ่วงต่อเข้าพอร์ทอนุกรม (Received) ของเครื่องคอมพิวเตอร์

    ผมคิดว่าคนที่ซื้ออุปกรณ์เหล่านี้มาทดสอบได้ ต้องมีความเข้าใจในเรื่องของวงจรดีพออยู่แล้ว ดังนั้นเลยไม่แสดงรูปการต่อเชื่อมสายต่างๆน่ะครับ ... เพราะงานนี้เจตนาก็เพื่อให้กลุ่มนักพัฒนาซอฟท์แวร์ ที่ไม่มีความรู้ทางด้านอิเล็กทรอนิกส์ ได้มองเห็นการประยุกต์ใช้งานมากกว่า
  • ผมใช้ Tag ID แบบมีชุดข้อมูล 1 ชุด (ID ของมัน) และเป็นชนิดอ่านได้อย่างเดียว เขียนข้อมูลลงไปไม่ได้ (ว่าไปแล้วมันก็คือ Barcode 1 มิติดีๆนั่นเอง)
  • ใช้ Reader ID-20 Innovation เป็นตัวอ่านค่าจาก Tag ID (ด้วยคลื่นแม่เหล็กไฟฟ้า) จากนั้นจะส่งข้อมูลขนาด 16 ไบต์ให้กับคอมพิวเตอร์ ผ่านพอร์ทอนุกรม
  • การอินเทอร์เฟซ หรือ การเชื่อมต่อเข้ากับคอมพิวเตอร์ผ่านพอร์ทอนุกรม หรือ เรียกอีกอย่างว่า Com Port
  • มีการส่งข้อมูลออกไปจาก Reader อย่างเดียว โดยที่ไม่มีการตรวจสอบจังหวะการทำงาน (Hand Shaking) ... ปัญหาก็คือ บ่อยครั้งในการรับข้อมูลจะเกิด Error แต่เรา (ผม) สามารถแก้ไขได้ด้วยการใช้ Timer เป็นตัวควบคุมจังหวะการทำงานแทน ... เหอๆๆๆๆ
    หลักการพื้นฐานของการเชื่อมต่อ (Interface)
  • มาตรฐานการเชื่อมต่อผ่านพอร์ทอนุกรม (Serial Port) ในลักษณะของส่ง-รับข้อมูลมันจะไล่เรียงตามลำดับ (ห้ามแซงคิว ... 55555+) ใช้สายนำสัญญาณเพียงไม่กี่เส้น ทำให้มีข้อดีในเรื่องประหยัดสาย และมีการส่งข้อมูลออกไปได้ในระยะทางไกล ในอดีตใช้งานกันอย่างแพร่หลายมากในแวดวง สื่อสารโทรคมนาคม มันจึงมีชื่อเรียกอีกอย่างว่า 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)
      • บางคนก็อย่าคิดมาก (หรือติ๊งต๊อง) เห็น ASCII Code 2 กับ 3 เนี่ย แล้วตกลงมันเป็นเลขฐาน 16 หรือ 10 ครับ ... 55555+ ... จะฐาน 16 หรือ ฐาน 10 มันก็คือๆกันน่ะครับ ... พี่น้อง
      ดังนั้นรูปแบบข้อมูลจะมีลักษณะดังนี้ครับ <02>1C006082946A<0D><0A><03> ... หากเป็นอดีตกาลเมื่อครั้งที่ผมยังเขียนโปรแกรมด้วย Assembly หรือ Turbo C ผมก็ต้องมองการแยกแยะข้อมูล (DATA) ออกจาก CR และ LF ... แต่ ณ วันนี้ที่ผมเลือกใช้ Visual Basic 6.0 ผมมองไปในอีกรูปแบบหนึ่งแล้วครับ ...

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

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

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

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


ติดตามชมตอนต่อไปในภาค 2
ดาวน์โหลด
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
ข้อมูลเพิ่มเติม
RFID และ การติดต่อฐานข้อมูล ด้วย VB6 ภาค 2 (การอ่านข้อมูล)
โค้ดและแนวคิดการแปลงเลขฐาน 10 เป็นฐาน 2 เรื่องหมูๆ ... ไม่บอกก็แทบจะไม่รู้กันเลย
การแปลงเลขฐาน 10 เป็นเลขฐาน 16 และ เลขฐาน 2 เป็นเลขฐาน 16 (แนวคิดของช่าง)
Conclusion:
อันที่จริงแล้ว รายละเอียดต่างๆมันมีมากกว่านั้น แต่ผมพยายามรวบรวม กล่าวถึงเฉพาะส่วนที่สำคัญ และ จำเป็น เท่านั้นเอามานำเสนอ ... โดยส่วนตัวของผมใช้หลักการเรียนรู้แบบทฤษฎีนำหน้ามา 20% ส่วนที่เหลืออีก 80% เป็นปฏิบัติงั้นเหรอ ... ไม่ใช่เลยครับ พอลงมือปฏิบัติไปสักระยะ ก็ต้องย้อนกลับมาหาทฤษฎีอีก ไปๆมาๆ แนวทางของผมมันเลยมาแบบ ทฤษฎี/ปฏิบัติ อย่างละ 50/50 ... ผมเองอาจโชคดีตั้งแต่เรียนช่างอิเล็กทรอนิกส์มา (เทคโนฯไทย - เยอรมัน ขอนแก่น) เจออาจารย์ที่ล้วนแล้วแต่ทำงาน หรือ มีประสบการณ์การทำงานในชีวิตจริง ก่อนที่จะมาสอนพวกผมได้ ทำให้ผมถูกฝึก ถูกสอนมา ให้สามารถนำไปประยุกต์ใช้ มากกว่าที่คิดจะเรียนเพื่อเอาเกรด เอาวุฒิการศึกษา อย่างเช่นที่เห็น และ เป็นอยู่อย่างมากมายในปัจจุบัน ...
จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] หรือ โทร. 08-6862-6560