Home Parallel Port Serial Port USB Webboard API I/O Today Project Directory .NET VB VC++


RFID Interfacing and Rading in Visual C++ Programming
This Article in English Version
         
              ระบบ RFID ไม่ใช่สิ่งที่ไกลตัวเรา หลายท่านอาจเคยใช้งานระบบ RFID ในชีวิตประจำวันโดยไม่รู้ตัวก็ได้ เรามาลองทำความรู้จักกับระบบ RFID กันให้มากขึ้นอีกนิด ระบบตรวจสอบรหัสโดยใช้ความถี่วิทยุ (RFID) เป็นที่ยอมรับอย่างสูงว่า เป็นเทคโนโลยีที่เอื้ออำนวยต่อการใช้งานที่ต้อง การการบ่งบอกความแตกต่างหรือข้อมูลจำเพาะของแต่ละบุคคล ที่สามารถทำงานได้ถูกต้องแม่นยำ รวดเร็ว  และมีความเป็นอัตโนมัติกว่าระบบตรวจ สอบรหัสในระบบอื่นๆ เช่น รหัสแบบแท่ง (Barcode)

การใช้งานที่ง่ายและยังเพิ่มขีดความสามารถในการให้บริการเสริมในเชิงพาณิชย์ด้านต่างๆ อีกทั้งยังสอดคล้องกับเทคโนโลยีทางการเก็บข้อมูลคอมพิวเตอร์ ยังผลให้การขยายตัวของการใช้งาน RFID/SmartCard สูงขึ้นอย่างก้าวกระโดด

RFID ย่อมาจากคำว่า Radio Frequency Identification

             เป็นระบบที่นำเอาคลื่นวิทยุมาเป็นคลื่นพาหะเพื่อใช้ในการสื่อสารข้อมูลระหว่างอุปกรณ์สองชนิดที่เรียกว่า แท็ก (Tag) และตัวอ่านข้อมูล (Reader หรือ Interrogator) ซึ่งเป็นการสื่อสารแบบไร้สาย (Wireless) โดยการนำข้อมูลที่ต้องการส่ง มาทำการมอดูเลต (Modulation) กับคลื่นวิทยุแล้วส่งออกผ่านทางสายอากาศที่อยู่ในตัวรับข้อมูล ดังแผนผังการทำงานของระบบ RFID ในรูปที่ 1 รูปที่ 1 แสดงระบบ RFID การประยุกต์ใช้งาน RFID จะมีลักษณะการใช้งานที่คล้ายกับบาร์โค้ด (Bar code)และยังสามารถรองรับความต้องการอีกหลายอย่างที่บาร์โค้ดไม่ สามารถตอบสนองได้ เนื่องจากบาร์โค้ดจะเป็นระบบที่อ่านได้อย่างเดียว (Read only) ไม่สามารถทำการเปลี่ยนแปลงข้อมูลที่อยู่บนบาร์โค้ดได้ แต่แท็กของระบบ RFID จะสามารถทั้งอ่านและบันทึกข้อมูลได้ ดังนั้นเราจึงสามารถเปลี่ยนแปลง หรือทำการบันทึกข้อมูลที่อยู่ในแท็กได้ตามความต้อง การของผู้ใช้งาน นอกจากนี้ระบบ RFID ยังสามารถใช้งานได้แม้ในขณะที่วัตถุที่กำลังเคลื่อนที่ เช่นในขณะสินค้ากำลังเคลื่อนที่อยู่บนสายพานการผลิต (Conveyor) หรือในบางประเทศก็มีการใช้ระบบ RFID ในการเก็บค่าผ่านทางด่วนโดยที่ผู้ใช้บริการทางด่วนไม่ต้องหยุดรถเพื่อจ่ายค่าบริการ ผู้ใช้บริการทางด่วนจะมีแท็กติดอยู่กับรถ และแท็กจะทำการสื่อสารกับตัวอ่านข้อมูล ผ่านสายอากาศขนาดใหญ่ที่ติดตั้งอยู่ตรงบริเวณทางขึ้นทางด่วน ในขณะที่รถแล่นผ่านสายอากาศ ตัวอ่านข้อมูลก็จะคิดค่าบริการและบันทึกจำนวนเงินที่เหลือลงในแท็กโดยอัตโนมัติ หรือแม้กระทั่งการใช้งานในปศุสัตว ์เพื่อบันทึกประวัติ หรือระบุความแตกต่างของสัตว์แต่ละตัวที่อยู่ในฟาร์ม ข้อดีของระบบ RFID อีกอย่างก็คือ แท็กและตัวอ่านข้อมูลสามารถสื่อสารผ่าน ตัวกลางได้หลายอย่างเช่น น้ำ, พลาสติก, กระจก หรือวัสดุทึบแสงอื่นๆในขณะที่บาร์โค้ดทำไม่ได้

rfid diagram

การเขียนโปรแกรมเพื่ออ่านข้อมูลจาก RFID

           สำหรับนักพัฒนาที่เขียนโปรแกรมเพื่ออ่านข้อมูลนั้น จะต้องรู้ว่า Command ในแต่ละยี่ห้อและรุ่น นั้นๆ ใช้ Command อย่างไร ซึ่งทาง ผู้ผลิตก็จะมีข้อมูลให้อยู่แล้วครับ
          ซึ่งบทความนี้ผมจะยกตัวอย่างของยี่ห้อ Omron นะครับ โดยจะใช้ Visual C++ 6 ในการเขียนโปรแกรมอ่าน RFID ชุดนี้ครับ
ซึ่งวิธีการติดต่อก็ ผ่าน RS-232 ทาง Com Port

เริ่มต้นเขียนโปรแกรม
Step1
rfid programming1

Step2
rfid programming 2

Step3
rfid programming 3

Step4
rfid programming

Step5
rfid programming 5

Step6
rfid programming 6

Step7
rfid programming 7

Step8
rfid programming 8

Step9
RFID program

Step 10 - Modify Source Code for RFID Reading

10.1  เลือก RFID_ProgramDlg.CPP   จากนั้นทำการเพิ่มบรรทัด 
                      #include "ComPort.h"
           ไว้บริเวณส่วนหัว
10.2   เนื่องจาก RFID Controller ในแต่ละรุ่นที่เราจะใช้นั้น มี Commmand ต่างกัน ในส่วนนี้ เพียงแค่เรา หา Command มาเปลี่ยนใน Source Code                ก็ใช้ได้แล้วครับ

  เลือก ไฟล์ ComPort.CPP
 หลังจากนั้น เลือก ฟังก์ชั่นชื่อ Read
 ให้เข้าไปแก้ไข Command ที่เราจะส่งออกไปทาง Com Port  
 ในที่นี้เป็น RFID controller ของ Omron ซึ่งสามารถหาข้อมูลรายละเอียดได้ในผลิตภัณฑ์นั้นๆ
 
 void CComPort::Read(CString& sResult)
{
    BOOL    bWriteRC;
    BOOL    bReadRC;
    DWORD    iBytesWritten;
    DWORD    iBytesRead;
    DWORD    dwError;
    char    s_WorkOrder[100];
    int        i;
    char    sBuffer[256];
    char    sMsg[512];

    iBytesWritten = 0;
   bWriteRC = WriteFile(m_hCom,"RDA1000010*\r",256,&iBytesWritten,NULL);
  
  if (!bWriteRC || iBytesWritten == 0)
    {
        dwError = GetLastError();
        sprintf(sMsg, "Write of length query failed: RC=%d,"
                "Bytes Written=%d, Error=%d",
                bWriteRC, iBytesWritten, dwError);
        AfxMessageBox(sMsg);       
    }

    memset(&sBuffer,0,sizeof(sBuffer));

     bReadRC = ReadFile(m_hCom, &sBuffer,256, &iBytesRead, NULL);

    if (bReadRC && iBytesRead > 0)
    {
        strncpy(s_WorkOrder,&sBuffer[5],100);
        sResult.Format("%s",s_WorkOrder);
        sResult=sResult.Left(2);  
    }
    else
    {
        sResult = "Read Failed";
        dwError = GetLastError();
       
        sprintf(sMsg, "Read length failed: RC=%d Bytes read=%d, "
                "Error=%d ",
                bReadRC, iBytesRead, dwError);
        AfxMessageBox(sMsg);
       
    }
   


Step 11 - Create Function and Button for RFID Reading

RFID project10

เราจะได้ฟังช์ชั่นชื่อ OnOK()  ซึ่งปุ่มนี้เราจะทำเป็นปุ่มอ่าน RFID  หลังจากนั้น ทำการเขียนโค๊ด

void CRFID_ProgramDlg::OnOK()
{
     CString mComport;
     mComport="Com1";
     CComPort* pComPort = new CComPort(mComport);
     CString sResults;
     if (pComPort->Initialize())
       {
          pComPort->Read(sResults);
          GetDlgItem(IDC_EDIT1)->SetWindowText(sResults); 
          pComPort->Terminate();
       }
       else
       {
         sResults = "Setup failed";
         GetDlgItem(IDC_EDIT1)->SetWindowText(sResults); 
        } // end if
    

}
 
Step 12 - Test  Program

RFID program11

สามารถ Download source code ที่นี่



Copyright (c) 2000 thaiio.com all rights reserved. Contact webmaster :webmaster@thaiio.com