RFID Reader 13.56MHz (ISO14443A)
หัวข้อการอบรม ช่วงเช้า 9:00-12:00 เรียนรู้โครงสร้างและการทำงานของเครื่องอ่าน RFID 13.56MHz ตามมาตรฐานISO14443A เรียนรู้เทคนิคและคำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน RFID เรียนรู้โครงสร้างข้อมูลของTagที่ใช้งาน ช่วงบ่าย 13:00-16:00 พัฒนาซอฟต์แวร์สำหรับใช้งานจริงร่วมกับฐานข้อมูล(ด้วยโครงการตัวอย่างที่ใช้งานจริง) การออกแบบโครงสร้างข้อมูลบนบัตรเพื่อความปลอดภัยของข้อมูล เทคนิคการจัดเก็บข้อมูลบนบัตร การทำงานกับฟังก์ชั่นทางการเงินบนบัตร การทำงานร่วมกับฐานข้อมูล
เตรียมความพร้อมก่อนอบรม เครื่องคอมพิวเตอร์ มีโปรแกรม Visual Basic 6 มี USB Port ว่าง 1 Port มีสายแปลงสัญญาณ RS232 เป็น USB มีฐานข้อมูล My SQL version 5.0 (Win32) หรือversionใหม่กว่า แผงวงจรเครื่องอ่าน RFID 13.56MHz (ISO14443A) Tag ตัวอย่าง Mifare Card 1K และ 4K
โครงสร้างและการทำงานของเครื่องอ่าน RFID 13.56MHz ตามมาตรฐาน ISO14443A MF RC500 MCU STC89C52RC MAX232 LED
โครงสร้างและการทำงานของเครื่องอ่าน RFID 13.56MHz ตามมาตรฐาน ISO14443A แบบ USB แบบ RS232
โครงสร้างการจัดการหน่วยความจำบนบัตร Mifare 1 K
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน rf_init_com(ByVal port&, ByVal baud&) As Long คำสั่งในการเชื่อมต่อกับเครื่องอ่าน rf_ClosePort Lib () As Long คำสั่งในการยกเลือกการเชื่อมต่อกับเครื่องอ่าน rf_request(ByVal icdev%, ByVal model As Byte, _ ByRef TagType%) As Long คำสั่งในการเลือกโหมดในการอ่าน Tag 0x26 REQ_STD 0x52 REQ_ALL
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน rf_anticoll(ByVal icdev%, ByVal bcnt As Byte, _ ByRef ppsnr As Byte, ByRef pRLength As Byte) As Long คำสั่งในการอ่าน Serial Card rf_select(ByVal icdev%, ByRef pSnr As Byte, _ ByVal srclen As Byte, ByRef size As Byte) As Long คำสั่งในการเลือก Card สำหรับการอ่านเขียนข้อมูลใน Card นั้น
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน rf_M1_authentication2(ByVal icdev%, ByVal model As Byte, _ ByVal block As Byte, ByRef key As Byte) As Long คำสั่งในการเข้ารหัสในการอ่าน-เขียนข้อมูลแต่ละ Sactor rf_M1_read(ByVal icdev%, ByVal block As Byte, _ ByRef buff As Byte, ByRef pLen As Byte) As Long คำสั่งในการอ่านข้อมูลแต่ละBlock ของ Sactor
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน rf_M1_write(ByVal icdev%, ByVal block As Byte, _ ByRef buff As Byte) As Long คำสั่งในการเขียนข้อมูลลงแต่ละ Block rf_M1_initval(ByVal icdev%, ByVal block As Byte, ByVal Value As Long) As Long คำสั่งในการ Reset ค่าเงินให้เป็น 0 แต่ละ Block rf_M1_readval(ByVal icdev%, ByVal block As Byte, ByRef pValue As Byte) As Long คำสั่งในการอ่านค่าเงินจาก Block
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน rf_M1_increment(ByVal icdev%, ByVal block As Byte, ByVal Value As Long) As Long คำสั่งในการเพิ่มค่าเงินให้แต่ละ Block rf_M1_decrement(ByVal icdev%, ByVal block As Byte, ByVal Value As Long) As Long คำสั่งในการลบค่าเงินของแต่ละ Block rf_beep(ByVal icdev%, ByVal Value As Long) As Long คำสั่งสำหรับสั่งให้เครื่องอ่านส่งเสียง Alarm (ความยาวของ Alarm ตามค่า Parameter ที่ส่งไป) rf_light(ByVal icdev%, ByVal color As Long) As Long คำสั่งในการส่งค่าให้เครื่องอ่านเปลี่ยนสีของ LED 1: แดง 2: เขียว 3:เหลือง
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, j%, port&, baud&, buf1(200) As Byte, b1 As Byte, s1$ port = cb_ckh.ListIndex + 1 If (port = 0) Then lb_info.Caption = "Please select COM Port!" End If baud = CLng(cb_btl.Text) If (baud = 0) Then lb_info.Caption = "Please select Baud rate!" 'Open Port i = rf_init_com(port, baud)
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If (i <> 0) Then MsgBox "Open Port Fail!" Exit Sub Else MsgBox "Open Port succeed !" Command12.Enabled = False Command13.Enabled = True End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i As Long i = rf_ClosePort If (i <> 0) Then MsgBox "Close Port Fail!" Exit Sub Else MsgBox "Close Port succeed !" Command12.Enabled = True Command13.Enabled = False End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, j%, port&, baud&, buf1(200) As Byte, b1 As Byte, s1$ i = rf_request(0, &H52, j) If (i <> 0) Then lb_info.Caption = "Request Fail!" Exit Sub End If 'Anticollision i = rf_anticoll(0, 4, buf1(0), b1) lb_info.Caption = "Anticollision Fail!" s1 = "" For i = 0 To b1 - 1 s1 = s1 & Right("00" & Hex(buf1(i)), 2) Next i
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน tx_kh.Text = s1 'Select card i = rf_select(0, buf1(0), 4, b1) If (i <> 0) Then lb_info.Caption = "Select card fail!" Exit Sub Else lb_info.Caption = "Select card succeed!" End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Sub Authentication() Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte s1 = Trim(frm_main.tx_key.Text) If (Len(s1) <> 12) Then frm_main.lb_info.Caption = "Wrong Key Length!" frm_main.tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i 'm = cb_kh.ListIndex m = (frm_main.cboSacter.Text * 4) + frm_main.cb_kh.Text If (m = -1) Then frm_main.lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If (frm_main.op_a.Value) Then b1 = &H60 End If If (frm_main.op_b.Value) Then b1 = &H61 b3 = CByte(m) 'Authentication i = rf_M1_authentication2(0, b1, b3, buf1(0)) If (i <> 0) Then frm_main.lb_info.Caption = "Authentication Fail£¡" frm_main.tx_sj.Text = "" Exit Sub End Sub
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i 'm = cb_kh.ListIndex If Trim(cboSacter.Text) = "" Or Trim(cb_kh.Text) = "" Then MsgBox "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน m = (cboSacter.Text * 4) + cb_kh.Text If (m = -1) Then lb_info.Caption = "Select Block Please!" Exit Sub End If If (op_a.Value) Then b1 = &H60 If (op_b.Value) Then b1 = &H61 b3 = CByte(m) 'Authentication Call Authentication 'Read card
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน i = rf_M1_read(0, b3, buf2(0), b2) If (i <> 0) Then lb_info.Caption = "Read Card Fail!" Exit Sub End If s1 = "" For i = 0 To b2 - 1 s1 = s1 & Right("00" & Hex(buf2(i)), 2) Next i tx_sj.Text = s1 lb_info.Caption = "Read Succeed!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i 'm = cb_kh.ListIndex m = (cboSacter.Text * 4) + cb_kh.Text If (m = -1) Then lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If (op_a.Value) Then b1 = &H60 End If If (op_b.Value) Then b1 = &H61 s1 = Trim(tx_sj.Text) If (Len(s1) <> 32) Then lb_info.Caption = "Wrong Data length " tx_sj.SetFocus Exit Sub For i = 0 To 15 buf2(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน b3 = CByte(m) Call Authentication 'Write card i = rf_M1_write(0, b3, buf2(0)) If (i <> 0) Then lb_info.Caption = "Write Card Fail£¡" Exit Sub End If lb_info.Caption = "Write Succeed!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน ฟังก์ชั่นการเงิน
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte Call Authentication s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i m = cb_kh.ListIndex If (m = -1) Then lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If (op_a.Value) Then b1 = &H60 End If If (op_b.Value) Then b1 = &H61 'm = cb_kh.ListIndex m = (cboSacter.Text * 4) + cb_kh.Text b3 = CByte(m) 'Authentication
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน i = rf_M1_authentication2(0, b1, b3, buf1(0)) If (i <> 0) Then lb_info.Caption = "Authentication Fail£¡" tx_sj.Text = "" Exit Sub End If If rf_M1_initval(0, b3, 0) = 0 Then MsgBox "Initialize Value succeed !" Else MsgBox "Initialize Value Fail !"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte Dim a As Byte s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i m = cb_kh.ListIndex If (m = -1) Then lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน 'm = cb_kh.ListIndex m = (cboSacter.Text * 4) + cb_kh.Text If (op_a.Value) Then b1 = &H60 End If If (op_b.Value) Then b1 = &H61 b3 = CByte(m) 'Authentication i = rf_M1_authentication2(0, b1, b3, buf1(0)) If (i <> 0) Then lb_info.Caption = "Authentication Fail£¡" tx_sj.Text = "" Exit Sub
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If rf_M1_readval(0, b3, buf1(0)) = 0 Then ' MsgBox "Initialize Value succeed !" ' edAddMoney.Text = CLng(a) Dim xx As String Dim si As String Dim k As Integer For k = 0 To 3 si = si & IIf(Len(Hex(buf1(k))) < 2, "0" & Hex(buf1(k)), Hex(buf1(k))) Next edAddMoney.Text = a2hex(si, Len(si)) Else MsgBox "Initialize Value Fail !" End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte Call Authentication s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If m = (cboSacter.Text * 4) + cb_kh.Text If (m = -1) Then lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน 'm = cb_kh.ListIndex m = (cboSacter.Text * 4) + cb_kh.Text If (op_a.Value) Then b1 = &H60 End If If (op_b.Value) Then b1 = &H61 b3 = CByte(m) If rf_M1_increment(0, b3, (edAddMoney.Text)) = 0 Then MsgBox "increment Value succeed !" Else MsgBox "increment Value Fail !"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If If (m = -1) Then lb_info.Caption = "Select Block Please!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน m = (cboSacter.Text * 4) + cb_kh.Text If (op_a.Value) Then b1 = &H60 End If If (op_b.Value) Then b1 = &H61 b3 = CByte(m) 'Authentication i = rf_M1_authentication2(0, b1, b3, buf1(0)) If (i <> 0) Then lb_info.Caption = "Authentication Fail£¡" tx_sj.Text = "" Exit Sub
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If rf_M1_decrement(0, b3, CLng(edAddMoney.Text)) = 0 Then MsgBox "decrement Value succeed !" Else MsgBox "decrement Value Fail !" End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If rf_beep(0, CLng(txtbeeptime.Text)) <> 0 Then MsgBox "Alarm Fail!" End If
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim iColor As Long If Option1.Value = True Then iColor = 1 ElseIf Option2.Value = True Then iColor = 2 ElseIf Option3.Value = True Then iColor = 3
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Else iColor = 0 End If If rf_light(0, iColor) <> 0 Then MsgBox "Light Fail!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus Exit Sub End If For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน If Trim(cboSacter.Text) = "" Or Trim(cb_kh.Text) = "" Then MsgBox "Select Block Please!" Exit Sub End If m = (cboSacter.Text * 4) + 3 If (m = -1) Then lb_info.Caption = "Select Block Please!" If (op_a.Value) Then b1 = &H60 If (op_b.Value) Then b1 = &H61
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน b3 = CByte(m) i = rf_M1_authentication2(0, b1, b3, buf1(0)) 'Read card i = rf_M1_read(0, b3, buf2(0), b2) If (i <> 0) Then lb_info.Caption = "Read Card Fail!" Exit Sub End If s1 = "" For i = 0 To b2 - 1 s1 = s1 & Right("00" & Hex(buf2(i)), 2) Next i txtnewkey.Text = Mid(s1, 1, 12) txtAccessBit.Text = Mid(s1, 13, 8) txtnewkeyB.Text = Mid(s1, 21, 12) lb_info.Caption = "Read Succeed!"
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน Dim i&, m&, buf1(200) As Byte, buf2(200) As Byte, s1$, b1 As Byte, b2 As Byte, b3 As Byte If MsgBox("Be sure to write key", vbQuestion + vbYesNo, "") = vbNo Then Exit Sub If Trim(txtnewkey.Text) = "" Then MsgBox "Wrong Key Length!" txtnewkey.SetFocus Exit Sub End If s1 = Trim(tx_key.Text) If (Len(s1) <> 12) Then lb_info.Caption = "Wrong Key Length!" tx_key.SetFocus
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน For i = 0 To 5 buf1(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i 'm = cb_kh.ListIndex m = (cboSacter.Text * 4) + 3 If (m = -1) Then lb_info.Caption = "Select Block Please!" Exit Sub End If If (op_a.Value) Then b1 = &H60 If (op_b.Value) Then b1 = &H61
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน s1 = Trim(txtnewkey.Text) & txtAccessBit.Text & txtnewkeyB.Text '"FFFFFFFFFFFF" ' FF078069 : Key A 7F078869 : Key B Accessbit =============== If (Len(s1) <> 32) Then lb_info.Caption = "Wrong Data length " tx_sj.SetFocus Exit Sub End If For i = 0 To 15 buf2(i) = Val("&H" & Mid(s1, i * 2 + 1, 2)) Next i 'Authentication b3 = CByte(m) i = rf_M1_authentication2(0, b1, b3, buf1(0)) 'Write card
คำสั่งต่างๆที่เกี่ยวข้อง กับ เครื่องอ่าน i = rf_M1_write(0, b3, buf2(0)) If (i <> 0) Then lb_info.Caption = "Write Card Fail" Exit Sub End If lb_info.Caption = "Write Succeed!"