📄 cardcmd.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 + -