⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cardcmd.bas

📁 s@T卡脚本解析标准范例
💻 BAS
字号:
Attribute VB_Name = "Card_Commands"
Global Const SELECT_3F00 = "A0A40000023F00"
Global Const SELECT_2FE2 = "A0A40000022FE2"
Global Const SELECT_7F10 = "A0A40000027F10"
Global Const SELECT_7F20 = "A0A40000027F20"
Global Const SELECT_6F07 = "A0A40000026F07"
Global Const SELECT_6FAE = "A0A40000026FAE"
Global Const SELECT_6F3A = "A0A40000026F3A"
Global Const SELECT_6F3B = "A0A40000026F3B"
Global Const SELECT_6F3C = "A0A40000026F3C"
Global Const SELECT_6F42 = "A0A40000026F42"
Global Const SELECT_6F78 = "A0A40000026F78"
Global Const READBIN_2FE2 = "A0B000000A"
Global Const READBIN_6F07 = "A0B0000009"
Global Const READBIN_6FAE = "A0B0000001"
Global Const READBIN_6F78 = "A0B0000002"
Global Const READRECORD = "A0B20002"
Global Const UPDATEBINARY = "A0D60000"
Global Const STATUS = "A0F2000017"
Global Const GETRESPONSE = "A0C000000F"

Public Function Read6F07(ByRef lenr As Long, ByRef Resp As String) As Long
  Read6F07 = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
  Read6F07 = SendCmd(ComCrw, fd, Len(SELECT_7F20) / 2, SELECT_7F20, lenr, Resp)
  Read6F07 = SendCmd(ComCrw, fd, Len(SELECT_6F07) / 2, SELECT_6F07, lenr, Resp)
  Read6F07 = SendCmd(ComCrw, fd, Len(READBIN_6F07) / 2, READBIN_6F07, lenr, Resp)
End Function
Public Function Read6FAE(ByRef lenr As Long, ByRef Resp As String) As Long
  Read6FAE = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
  Read6FAE = SendCmd(ComCrw, fd, Len(SELECT_7F20) / 2, SELECT_7F20, lenr, Resp)
  Read6FAE = SendCmd(ComCrw, fd, Len(SELECT_6FAE) / 2, SELECT_6FAE, lenr, Resp)
  Read6FAE = SendCmd(ComCrw, fd, Len(READBIN_6FAE) / 2, READBIN_6FAE, lenr, Resp)
End Function
Public Function Read2FE2(ByRef lenr As Long, ByRef Resp As String) As Long
    Read2FE2 = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Read2FE2 = SendCmd(ComCrw, fd, Len(SELECT_2FE2) / 2, SELECT_2FE2, lenr, Resp)
    Read2FE2 = SendCmd(ComCrw, fd, Len(READBIN_2FE2) / 2, READBIN_2FE2, lenr, Resp)
End Function
   
Public Function Read6F3A(ByRef lenr As Long, ByRef Resp As String) As Long
    Read6F3A = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Read6F3A = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Read6F3A = SendCmd(ComCrw, fd, Len(SELECT_6F3A) / 2, SELECT_6F3A, lenr, Resp)
    Read6F3A = SendCmd(ComCrw, fd, Len(GETRESPONSE) / 2, GETRESPONSE, lenr, Resp)
End Function
Public Function Read6F3B(ByRef lenr As Long, ByRef Resp As String) As Long
    Read6F3B = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Read6F3B = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Read6F3B = SendCmd(ComCrw, fd, Len(SELECT_6F3B) / 2, SELECT_6F3B, lenr, Resp)
    Read6F3B = SendCmd(ComCrw, fd, Len(GETRESPONSE) / 2, GETRESPONSE, lenr, Resp)
End Function

Public Function Read6F3C(ByRef lenr As Long, ByRef Resp As String) As Long
    Read6F3C = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Read6F3C = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Read6F3C = SendCmd(ComCrw, fd, Len(SELECT_6F3C) / 2, SELECT_6F3C, lenr, Resp)
    Read6F3C = SendCmd(ComCrw, fd, Len(GETRESPONSE) / 2, GETRESPONSE, lenr, Resp)
End Function
Public Function Read6F42(ByRef lenr As Long, ByRef Resp As String) As Long
    Dim Reclen As String
    Read6F42 = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Read6F42 = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Read6F42 = SendCmd(ComCrw, fd, Len(SELECT_6F42) / 2, SELECT_6F42, lenr, Resp)
    Read6F42 = SendCmd(ComCrw, fd, Len(GETRESPONSE) / 2, GETRESPONSE, lenr, Resp)
    Reclen = Mid(Resp, 15 * 2 - 1, 2)
    Read6F42 = SendCmd(ComCrw, fd, 5, "A0B20002" & Reclen, lenr, Resp)
End Function
Public Function GetStatus(ByRef lenr As Long, ByRef Resp As String) As Long
    GetStatus = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    GetStatus = SendCmd(ComCrw, fd, Len(STATUS) / 2, STATUS, lenr, Resp)
End Function
Public Function Update2FE2(data As String) As String
    ret = SendCmd(ComCrw, fd, 5, SELECT_3F00, lenr, Resp)
    ret = SendCmd(ComCrw, fd, 5, SELECT_2FE2, lenr, Resp)
    Update2FE2 = SendCmd(ComCrw, fd, 14, "A0D600000A" & data, lenr, Resp)
End Function

Public Function Update6F07(data As String) As String
    ret = SendCmd(ComCrw, fd, 5, SELECT_3F00, lenr, Resp)
    ret = SendCmd(ComCrw, fd, 5, SELECT_7F20, lenr, Resp)
    ret = SendCmd(ComCrw, fd, 5, SELECT_6F07, lenr, Resp)
    Update6F07 = SendCmd(ComCrw, fd, 14, "A0D6000009" & data, lenr, Resp)
End Function
Public Function UpdateKI(data As String) As String
    ret = SendCmd(ComCrw, fd, 5, SELECT_3F00, lenr, Resp)
    ret = SendCmd(ComCrw, fd, 5, SELECT_7F20, lenr, Resp)
    If Len(data) = 36 Then
        UpdateKI = SendCmd(ComCrw, fd, 21, "80D4330012" & data, lenr, Resp)
    Else
        UpdateKI = SendCmd(ComCrw, fd, 21, "80D4330010" & data, lenr, Resp)
    End If
End Function

Public Function Update6F3A(RecordNumber As String, data As String) As String
    Dim cmd As String
    fd = OpenPort(ComCrw, ReaderRate)
    cmd = "A0DC" + RecordNumber + "04" + ADN_LENGTH_STR + data
    Update6F3A = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Update6F3A = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Update6F3A = SendCmd(ComCrw, fd, Len(SELECT_6F3A) / 2, SELECT_6F3A, lenr, Resp)
    Update6F3A = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, lenr, Resp)
    ClosePort ComCrw, fd
End Function
Public Function Update6F3B(RecordNumber As String, data As String) As String
    Dim cmd As String
    fd = OpenPort(ComCrw, ReaderRate)
    cmd = "A0DC" + RecordNumber + "04" + FDN_LENGTH_STR + data
    Update6F3B = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Update6F3B = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Update6F3B = SendCmd(ComCrw, fd, Len(SELECT_6F3B) / 2, SELECT_6F3B, lenr, Resp)
    Update6F3B = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, lenr, Resp)
    ClosePort ComCrw, fd
End Function
Public Function Update6F3C(RecordNumber As String, data As String) As String
    Dim cmd As String
    fd = OpenPort(ComCrw, ReaderRate)
    cmd = "A0DC" + RecordNumber + "04" + SMS_LENGTH_STR + data
    Update6F3C = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    Update6F3C = SendCmd(ComCrw, fd, Len(SELECT_7F10) / 2, SELECT_7F10, lenr, Resp)
    Update6F3C = SendCmd(ComCrw, fd, Len(SELECT_6F3C) / 2, SELECT_6F3C, lenr, Resp)
    Update6F3C = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, lenr, Resp)
    ClosePort ComCrw, fd
End Function
Public Function VerifyCHV(Key As String, CHV As String) As Long
    Dim cmd As String
    Dim i As Integer
    cmd = "A02000" & CHV & "08"
    For i = 1 To Len(Trim(Key))
        cmd = cmd & Hex(asc(Mid(Key, i, 1)))
    Next
    cmd = Left(cmd & "FFFFFFFFFFFFFFFF", 26)
    fd = OpenPort(ComCrw, ReaderRate)
    If fd <= 0 Then
       MsgBox "打开" + ComCrw + "口失败!", 16, "提示"
       Exit Function
    End If
    VerifyCHV = ResetCard(ComCrw, fd, lenr, Resp)
    VerifyCHV = SendCmd(ComCrw, fd, 13, cmd, 0, Resp)
    ClosePort ComCrw, fd
End Function
Public Function ChangeCHV(OldKey As String, NewKey As String, CHV As String) As Long
    Dim cmd As String
    Dim i As Integer
      cmd = "A02400" & CHV & "10"
    For i = 1 To Len(OldKey)
      cmd = cmd & Hex(asc(Mid(OldKey, i, 1)))
    Next
    cmd = Left(cmd & "FFFFFFFFFFFFFFFF", 26)
    For i = 1 To Len(NewKey)
      cmd = cmd & Hex(asc(Mid(NewKey, i, 1)))
    Next
    cmd = Left(cmd & "FFFFFFFFFFFFFFFF", 42)
    fd = OpenPort(ComCrw, ReaderRate)
    If fd <= 0 Then
       MsgBox "打开" + ComCrw + "口失败!", 16, "提示"
       Exit Function
    End If
    ChangeCHV = ResetCard(ComCrw, fd, lenr, Resp)
    ChangeCHV = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, 0, Resp)
    ClosePort ComCrw, fd
End Function

Public Function DisableCHV(Key As String) As Long
    Dim cmd As String
    Dim i As Integer
    cmd = "A026000108"
    If Len(Key) <= 8 Then
       For i = 1 To Len(Key)
           cmd = cmd & Hex(asc(Mid(Key, i, 1)))
       Next i
       cmd = Left(cmd & "FFFFFFFFFFFFFFFF", 26)
    End If
    fd = OpenPort(ComCrw, ReaderRate)
    If fd <= 0 Then
       MsgBox "打开" + ComCrw + "口失败!", 16, "提示"
       Exit Function
    End If
    DisableCHV = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    DisableCHV = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, lenr, Resp)
    ClosePort ComCrw, fd
End Function
Public Function EnableCHV(Key As String) As Long
    Dim cmd As String
    Dim i As Integer
    cmd = "A028000108"
    If Len(Key) <= 8 Then
       For i = 1 To Len(Key)
           cmd = cmd & Hex(asc(Mid(Key, i, 1)))
       Next i
       cmd = Left(cmd & "FFFFFFFFFFFFFFFF", 26)
    End If
    fd = OpenPort(ComCrw, ReaderRate)
    If fd <= 0 Then
       MsgBox "打开" + ComCrw + "口失败!", 16, "提示"
       Exit Function
    End If
    EnableCHV = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    EnableCHV = SendCmd(ComCrw, fd, Len(cmd) / 2, cmd, lenr, Resp)
    ClosePort ComCrw, fd
End Function

Public Function ReadACC(ByRef lenr As Long, ByRef Resp As String) As Long
    ReadACC = SendCmd(ComCrw, fd, Len(SELECT_3F00) / 2, SELECT_3F00, lenr, Resp)
    ReadACC = SendCmd(ComCrw, fd, Len(SELECT_7F20) / 2, SELECT_7F20, lenr, Resp)
    ReadACC = SendCmd(ComCrw, fd, Len(SELECT_6F78) / 2, SELECT_6F78, lenr, Resp)
    ReadACC = SendCmd(ComCrw, fd, Len(READBIN_6F78) / 2, READBIN_6F78, lenr, Resp)
End Function

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -