📄 mdumain.bas
字号:
Attribute VB_Name = "mduMain"
Option Explicit
Public Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Byte, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, ByVal lpOverlapped As Long) As Long
Public Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Byte, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, ByVal lpOverlapped As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Dim hPort As Long
Public InBuf(128) As Byte
Public InLen As Long
Public OutBuf(128) As Byte
Public OutLen As Long
Sub Main()
hPort = -1
frmST176.Show
End Sub
Function OpenDevice() As Boolean
hPort = SC_OpenReader("USB", "")
If (hPort < 0) Then
OpenDevice = False
Else
OpenDevice = True
End If
End Function
Sub CloseDevice()
SC_CloseReader hPort
End Sub
Public Function ReadCard(ByVal block As Byte, val0 As Byte, val1 As Byte) As Boolean
Dim chipID As Byte
Dim I As Integer
ReadCard = False
For I = 0 To 8
If 0 <> ST176_Active(hPort, chipID) Then
If 0 <> ST176_Read(hPort, block, val0, val1) Then
ReadCard = True
Exit For
End If
End If
Next I
End Function
Public Function ProtectCard(ByVal index As Byte) As Boolean
Dim chipID As Byte
Dim I As Integer
ProtectCard = False
For I = 0 To 8
If 0 <> ST176_Active(hPort, chipID) Then
If 0 <> ST176_Protect(hPort, 2 ^ index) Then
ProtectCard = True
Exit For
End If
End If
Next I
End Function
Public Function WriteCard(ByVal block As Byte, ByVal val0 As Byte, ByVal val1 As Byte) As Boolean
Dim chipID As Byte
Dim I As Integer
WriteCard = False
For I = 0 To 8
If 0 <> ST176_Active(hPort, chipID) Then
If 0 <> ST176_Write(hPort, block, val0, val1) Then
WriteCard = True
Exit For
End If
End If
Next I
End Function
Public Function ToByte(strVal As String) As String
Dim HighVal As String
Dim LowVal As String
HighVal = Left$(strVal, 1)
LowVal = Right$(strVal, 1)
If Asc(HighVal) >= Asc("0") And Asc(HighVal) <= Asc("9") Then
ToByte = (Asc(HighVal) - Asc("0")) * 16
ElseIf Asc(HighVal) >= Asc("A") And Asc(HighVal) <= Asc("F") Then
ToByte = (Asc(HighVal) - Asc("A") + 10) * 16
ElseIf Asc(HighVal) >= Asc("a") And Asc(HighVal) <= Asc("f") Then
ToByte = (Asc(HighVal) - Asc("a") + 10) * 16
End If
If Asc(LowVal) >= Asc("0") And Asc(LowVal) <= Asc("9") Then
ToByte = (Asc(LowVal) - Asc("0")) + ToByte
ElseIf Asc(LowVal) >= Asc("A") And Asc(LowVal) <= Asc("F") Then
ToByte = (Asc(LowVal) - Asc("A") + 10) + ToByte
ElseIf Asc(LowVal) >= Asc("a") And Asc(LowVal) <= Asc("f") Then
ToByte = (Asc(LowVal) - Asc("a") + 10) + ToByte
End If
End Function
Public Function ToHexString(ByVal val As Byte) As String
Dim HighVal As Byte
Dim LowVal As Byte
HighVal = val \ 16
LowVal = val Mod 16
If HighVal < 10 Then
ToHexString = Chr(Asc("0") + HighVal)
Else
ToHexString = Chr(Asc("A") + HighVal - 10)
End If
If LowVal < 10 Then
ToHexString = ToHexString & Chr(Asc("0") + LowVal)
Else
ToHexString = ToHexString & Chr(Asc("A") + LowVal - 10)
End If
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -