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

📄 mdumain.bas

📁 磁条读写机
💻 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 + -