![]() |
| 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 สำหรับนักพัฒนาที่เขียนโปรแกรมเพื่ออ่านข้อมูลนั้น จะต้องรู้ว่า Command ในแต่ละยี่ห้อและรุ่น นั้นๆ ใช้ Command อย่างไร ซึ่งทาง ผู้ผลิตก็จะมีข้อมูลให้อยู่แล้วครับ ซึ่งบทความนี้ผมจะยกตัวอย่างของยี่ห้อ Omron นะครับ โดยจะใช้ Visual C++ 6 ในการเขียนโปรแกรมอ่าน RFID ชุดนี้ครับ ซึ่งวิธีการติดต่อก็ ผ่าน RS-232 ทาง Com Port เริ่มต้นเขียนโปรแกรม Step1 ![]() Step2 ![]() Step3 ![]() Step4 ![]() Step5 ![]() Step6 ![]() Step7 ![]() Step8 ![]() Step9 ![]() 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 ![]() เราจะได้ฟังช์ชั่นชื่อ 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 ![]() สามารถ Download source code ที่นี่ |
|
| Copyright
(c) |