mdumain.bas
来自「磁条读写机」· BAS 代码 · 共 124 行
BAS
124 行
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 + =
减小字号Ctrl + -
显示快捷键?