29 มีนาคม 2554

ทดลองใช้งาน RFID module : การเขียนโปรแกรม RFID กับ VB6

การเขียนโปรแกรม RFID กับ VB6

โมดูลที่ใช้เป็นโมดูล RFID แบบอ่านอย่างเดียว รุ่น RF001 ของ i-Automation
http://www.weloveshopping.com/template/w15/showproduct.php?pid=13033468&shopid=166498

การใช้งานง่ายมากๆ แค่จ่ายไฟเลี้ยง เมื่อแตะบัตรโมดูลก็จะส่งข้อมูลออกมาทันที
เหมาะสำหรับผู้เริ่มต้นและงานที่ไม่ต้องการความซับซ้อน



















โมดูล RF001


ผู้เขียนจะไม่พูดถึงวิธีการต่อใช้งานและการทดสอบเบื้องต้น
แต่การใช้งานและการทดสอบเบื้องต้นสามารถศึกษาได้จาก
คู่มือการใช้งาน

ตัวอย่าง DEMO การเขียนโปรแกรม VB6 กับ Module RFID ศึกษาได้จาก
ตัวอย่าง Demo โปรแกรม


ทดลองเขียนโปรแกรมกับ VB6  
Access Control Project

Project นี้จะนำเอา RFID มาใช้งานในงาน Access Control ควบคุมด้วยคอมพิวเตอร์
เมื่อเราต่อ RF001 เข้ากับ PC แล้ว เราก็เริ่มเขียนโปรแกรมโดยเปิด VB6 ขึ้นมา
จะสร้างโปรเจคใหม่หรือจะแก้ไขจาก demo source code ที่โหลดจากใน web ก็ได้


เริ่มสร้าง Form ดังรูป



อธิบาย Code

ส่วนที่ 1 เมื่อกด run โปรแกรมโปรแกรมจะเริ่มทำงานตรงบรรทัดนี้ 
Private Sub Form_Load()
  
    'นำหมายเลข ID ที่อนุญาตให้ผ่านได้จาก Text File โหลดมาเก็บไว้ในอะเรย์ชื่อ Permission_ID  กำหนดไว้สูงสุดที่ 100 ID
    filepath = App.Path & "\Permission.txt"
    Open filepath For Input As #1
    Total_ID = 1
    Do While Not EOF(1)
        Line Input #1, tmp
        Permission_ID(Total_ID) = RTrim(LTrim(tmp))
        Total_ID = Total_ID + 1
    Loop
    
    'จำนวนสูงสุดของบัตรที่อนุญาตเก็บในตัวแปร Total_ID
    Total_ID = Total_ID - 1
    Close #1
  
    'กำหนดค่าของพอร์ทอนุกรมเพื่อใช้รับสัญญาณจาก RFID module
    MSComm1.CommPort = 1
    MSComm1.Settings = "9600,N,8,1"
    MSComm1.InputLen = 0
    MSComm1.RThreshold = 14
    MSComm1.PortOpen = True
  
    'กำหนดค่าการทำงานของ Timer
    Timer1.Interval = 150
    Timer1.Enabled = False
  
End Sub



เมื่อเรากดรันโปรแกรม โปรแกรมจะไปดึงเอาหมายเลขของบัตรที่เราอนุญาตจาก File Permission.txt ที่เราเก็บหมายเลขบัตรต่างๆไว้ มาเก็บไว้ในแรมก่อน ในโปรแกรมนี้กำหนดอะเรย์ไว้สูงสุดที่ 100 ตัว แต่ถ้าจะเพิ่มมากกว่านี้ก็แก้ได้ไม่ยาก

จากนั้นจะกำหนดค่า Comport ที่ใช้รับข้อมูลจาก RFID module
ในที่นี้เราใช้ port com1  แต่ถ้าคอมใครไม่มี port com1 หรือใช้สาย USB-to-Serial ซึ่งหมายเลข เป็น com อื่นๆก็สามารถแก้ให้ตรงได้ที่บรรทัดนี้
MSComm1.CommPort = 1    (เปลี่ยนเลข 1 เป็นเลข com port ที่ต้องการ)

จะเห็นได้ว่ามีการใช้ Timer มาช่วยในการรับข้อมูล เนื่องจากเมื่อ RFID module ส่งข้อมูลมาให้คอมข้อมูลจะยังมาไม่ครบ เราจึงหน่วงเวลาไปอีกประมาณ 150 ms เพื่อรอรับข้อมูลจนครบแล้วอ่านทีเดียว



ส่วนที่ 2 เมื่อมีข้อมูลมาที่พอร์ทอนุกรมของคอมพิวเตอร์ โปรแกรมจะมาทำงานที่จุดนี้

Private Sub MSComm1_OnComm()
    Timer1.Enabled = True            'if any receive in serail port, we wait for get all
End Sub

เมื่อมีข้อมูลมาที่พอร์ทอนุกรมของคอมพิวเตอร์ เราจะทำการเปิด Timer เพื่อหน่วงเวลาไปอีก 150ms
เพื่อรอรับข้อมูลทั้งหมด



ส่วนที่ 3 เมื่อ Timer หน่วงเวลามาจนครบ 150ms โปรแกรมจะมาทำงานที่จุดนี้

Private Sub Timer1_Timer()
  
    'อ่านค่าทั้งหมดจากพอร์ทอนุกรมมาเก็บไว้ในตัวแปรชื่อ inbuff
    inbuff = MSComm1.Input
  
    'แยกตัวอักขระตัวแรกออกมา
    start_char = Mid(inbuff, 1, 1)

    'ตรวจสอบว่าอักขระตัวแรกใช่ 02H หรือไม่
    If start_char = Chr(2) Then

        'ถ้าใช่ให้แยกเอา ID ของ Card ออกมาเก็บไว้ในตัวแปร card_id
        card_id = Mid(inbuff, 2, 10)
        Text1.Text = card_id

        'เริ่มแรกให้สถานะเป็น Fail ไว้ก่อน
        status = False
      
        'นำ ID ของ Card มาตรวจสอบกับ ID ที่เก็บไว้ในอะเรย์ทีละตัว จนครบ
        For i = 1 To Total_ID
            'ถ้ามี ID ใดตรงกับบัตรที่นำมาทาบ ให้สถาะนะเป็น Pass
            If card_id = Permission_ID(i) Then status = True
        Next i
      
        'แสดงค่าสถานะ
        If status = True Then
           Text2.Text = "PASS"
        Else
           Text2.Text = "FAIL"
        End If
    End If
End Sub

ส่วนนี้จะเป็นส่วนประมวลผลโดยการแยกรหัสบัตรแล้วนำไปเปรียบเทียบกับ
รหัสที่อนุญาต หากรหัสบัตรตรงกับรหัสใดรหัสหนึ่ง ก็จะแสดงผลผ่านขึ้นที่หน้าจอ








แล้วเราจะใส่รหัสบัตรที่ได้รับอนุญาติลงใน file  Permission.txt ได้อย่างไร ?
        ก็ไม่ยากครับ ใช้โปรแกรม Demo หรือโปรแกรมนี้ก็ได้ครับ เมื่อทาบบัตรไปแล้ว รหัสบัตรจะขึ้นแสดงที่ช่อง ID บนหน้าจอ  ก็เอารหัสนั้นละครับไปพิมพ์ลงใน file  Permission.txt
เป็นวิธีที่ง่ายที่สุดครับแต่เสียเวลาหน่อย ถ้าอยากสะดวกลองเขียนโปรแกรมขึ้นมาอีกโปรแกรมนึง อ่านรหัสบัตรแล้วนำไปเขียนลง file  แบบอัตโนมัติ จะสะดวกขึ้นเยอะเลยครับ


Download source code ที่ใช้ในบทความนี้ได้ที่นี่








ไม่มีความคิดเห็น:

แสดงความคิดเห็น