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

📄 module1.bas

📁 ISO7816读卡器源码,接触式智能读卡器源码!
💻 BAS
📖 第 1 页 / 共 2 页
字号:
            Form1.sendList.Text = sndList
            J = J + 3
            M = M + 3
            If M > 48 Then
                M = 1
            End If
            Form1.PBar.Value = k
            SendChar Mid$(Temp2, k, 1)

        Next k
        sendText = Right$(Form1.sendList.Text, 2)
        If (sendText <> Chr$(13) + Chr$(10)) Then
            sndList = sndList + Chr$(13) + Chr$(10)
            Form1.sendList.Text = sndList
        End If
        
        Temp = ""
        PackDiff = Len(InBuf) - PackLen
        'convert read
        For k = 1 To Len(InBuf)
            TempAtr = Asc(Mid$(InBuf, k, 1))
            ConvertAtr
            If HoldAtr < &H10 Then
                Temp = Temp + "0" + Hex$(HoldAtr) + " "
            Else
                Temp = Temp + Hex$(HoldAtr) + " "
            End If
        Next k

        'Test = Test + " " + Mid$(Temp, 4, 2)
        If (InStr(1, Temp, Left$(Test, 5)) = False) Then
            Msg = "Unable to read EEProm."
            StartFlag = False
            Temp = Form1.Comm.Input
            GoTo Handler
        End If
                
        M = 1
        J = 1
        Test = Right$(Temp, PackDiff * 3)
        For k = 1 To Len(Test) Step 3
            If M = 16 Then
                sndList = sndList + Chr$(13) + Chr$(10)
            End If
            sndList = sndList + Mid$(Test, J, 3)
            Form1.sendList.Text = sndList
            If (PackDiff > 2) And (J = 1) Then
                If PackDiff < 512 Then
                    M = 1
                Else
                    M = M + 1
                End If
                
            Else
                M = M + 1
            End If
            If PackDiff > 500 Then
                If J = 1536 Then
                    M = 1
                End If
            Else
                If J = (PackDiff * 3) - 8 Then
                    M = 1
                End If
            End If
            
            J = J + 3
            If M > 16 Then
                M = 1
            End If
        Next k
        If (Right$(sndList, 2) <> Chr$(13)) Then
            sndList = sndList + Chr$(13) + Chr$(10)
            Form1.sendList.Text = sndList
        End If
        
    Z = I + 1
    
    If Z < Index Then
        If RetBytes > 256 Then
            ResetATR
        End If
        cnt = cnt + 1
        'If cnt = 2 Then
        '    cnt = 0
        '    ResetATR
       ' End If
        
        Temp = Form1.Comm.Input
        Form1.Comm.InputLen = 0
        Temp1 = ""
        Temp2 = ""
        InBuf = ""
        Temp = ""
        
        GoTo Top
    End If
    InTime = ByteDelay * 17
    Temp1 = Form1.Comm.Input
    Form1.Comm.InputLen = 0
    Temp1 = ""
    Temp2 = ""
    'XPLList.Clear
    If SendEEprom = True Then
        InBuf = Temp
        Exit Sub
    End If
    Form1.txtStat.Text = "XPL file complete."
    Exit Sub
        
Handler:
    Form1.txtStat.Text = Msg
    Temp = Form1.Comm.Input
    Form1.Comm.InputLen = 0
    Temp1 = ""
    Temp2 = ""
    InBuf = ""
    Temp = ""
    'XPLList.Clear
    InTime = ByteDelay * 17
End Sub

Public Sub ShowList()

    Form1.lblATR.Visible = False
    Form1.txtATR.Visible = False
    Form1.Label(10).Caption = "HIDE PACKET RESULTS"
    Form1.Label(10).Enabled = True
    Form1.sendList.Visible = True
    Form1.XPLList.Visible = True
    Form1.Label9.Visible = True
    Form1.Label10.Visible = True
End Sub

Public Sub HideList()
    
    Form1.lblATR.Visible = True
    Form1.txtATR.Visible = True
    Form1.Label(10).Caption = "SHOW PACKET RESULTS"
    Form1.Label(10).Enabled = True
    Form1.sendList.Visible = False
    Form1.XPLList.Visible = False
    Form1.Label9.Visible = False
    Form1.Label10.Visible = False
End Sub

Public Function ConvertHex(s As String) As Integer
    Dim I As Integer
    Dim Temp As String
    Dim Hold As Integer
    
    If Len(s) = 1 Then
        Select Case UCase(s)
            Case "0"
                ConvertHex = 0
            Case "1"
                ConvertHex = 1
            Case "2"
                ConvertHex = 2
            Case "3"
                ConvertHex = 3
            Case "4"
                ConvertHex = 4
            Case "5"
                ConvertHex = 5
            Case "6"
                ConvertHex = 6
            Case "7"
                ConvertHex = 7
            Case "8"
                ConvertHex = 8
            Case "9"
                ConvertHex = 9
            Case "A"
                ConvertHex = 10
            Case "B"
                ConvertHex = 11
            Case "C"
                ConvertHex = 12
            Case "D"
                ConvertHex = 13
            Case "E"
                ConvertHex = 14
            Case "F"
                ConvertHex = 15
            Case Else
                ConvertHex = 0
            Exit Function
        End Select
    ElseIf Len(s) = 2 Then
        Select Case UCase(Left$(s, 1))
            Case "0"
                Hold = 0
            Case "1"
                Hold = 1 * 16
            Case "2"
                Hold = 2 * 16
            Case "3"
                Hold = 3 * 16
            Case "4"
                Hold = 4 * 16
            Case "5"
                Hold = 5 * 16
            Case "6"
                Hold = 6 * 16
            Case "7"
                Hold = 7 * 16
            Case "8"
                Hold = 8 * 16
            Case "9"
                Hold = 9 * 16
            Case "A"
                Hold = 10 * 16
            Case "B"
                Hold = 11 * 16
            Case "C"
                Hold = 12 * 16
            Case "D"
                Hold = 13 * 16
            Case "E"
                Hold = 14 * 16
            Case "F"
                Hold = 15 * 16
            Case Else
                ConvertHex = 0
                Exit Function
        End Select
        Select Case UCase(Right$(s, 1))
            Case "0"
                ConvertHex = Hold
            Case "1"
                ConvertHex = Hold + 1
            Case "2"
                ConvertHex = Hold + 2
            Case "3"
                ConvertHex = Hold + 3
            Case "4"
                ConvertHex = Hold + 4
            Case "5"
                ConvertHex = Hold + 5
            Case "6"
                ConvertHex = Hold + 6
            Case "7"
                ConvertHex = Hold + 7
            Case "8"
                ConvertHex = Hold + 8
            Case "9"
                ConvertHex = Hold + 9
            Case "A"
                ConvertHex = Hold + 10
            Case "B"
                ConvertHex = Hold + 11
            Case "C"
                ConvertHex = Hold + 12
            Case "D"
                ConvertHex = Hold + 13
            Case "E"
                ConvertHex = Hold + 14
            Case "F"
                ConvertHex = Hold + 15
            Case Else
                ConvertHex = 0
        End Select
    Else
        ConvertHex = 0
    End If
    
End Function

'*******************************
'
'   Sub to convert data
'   by reversing the bits
'   then inverting all the bits
'
'   Paramaters: TempAtr is byte
'   to convert
'
'*******************************

Public Sub ConvertAtr()
    HoldAtr = 0
Top:
    Select Case TempAtr
        Case Is > 127
            HoldAtr = HoldAtr + 1
            TempAtr = TempAtr - 128
            GoTo Top
        Case Is > 63
            HoldAtr = HoldAtr + 2
            TempAtr = TempAtr - 64
            GoTo Top
        Case Is > 31
            HoldAtr = HoldAtr + 4
            TempAtr = TempAtr - 32
            GoTo Top
        Case Is > 15
            HoldAtr = HoldAtr + 8
            TempAtr = TempAtr - 16
            GoTo Top
        Case Is > 7
            HoldAtr = HoldAtr + 16
            TempAtr = TempAtr - 8
            GoTo Top
        Case Is > 3
            HoldAtr = HoldAtr + 32
            TempAtr = TempAtr - 4
            GoTo Top
        Case Is > 1
            HoldAtr = HoldAtr + 64
            TempAtr = TempAtr - 2
            GoTo Top
        Case Is = 1
            HoldAtr = HoldAtr + 128
            
    End Select
    TempAtr = HoldAtr
    HoldAtr = 255 Xor TempAtr
    
End Sub

'********************************
'
'   Sub to output 1 character
'   to communications port
'
'   Paramaters: s as output byte
'
'********************************

Public Sub SendChar(s As String)
    Dim Temp As String
    
    'clear input buffer
    Form1.Comm.InputLen = 0
    Temp = Form1.Comm.Input
    Form1.Comm.RTSEnable = False
    Form1.Comm.RThreshold = 1
    TimeOut = 0
    Form1.Timer1.Enabled = False
    Form1.Timer1.Interval = 200
    Form1.Timer1.Enabled = True
    Form1.Comm.Output = s
    Do While (TimeOut = 0) Or (StateChanged = 0)
        DoEvents
    Loop
    'StateChanged = 0
    'TimeOut = 0
    'Timer1.Enabled = False
    'Timer1.Interval = 200
    'Temp = Comm.Input
    'Timer1.Enabled = True
    'Do While (TimeOut = 0) Or (StateChanged = 0)
    '    DoEvents
    'Loop
    'Comm.InputLen = 0
    StateChanged = 0
    
End Sub

Public Sub ResetATR()
    Dim Temp As String
    Dim I As Integer
    
    InBuf = ""
    If Form1.Comm.PortOpen = True Then
        Form1.Comm.PortOpen = False
    End If
    Form1.Comm.Settings = "9600,O,8,2"
    Form1.Comm.PortOpen = True
    TimeOut = 0
    Form1.Timer1.Enabled = False
    Form1.Timer1.Interval = 200
    Form1.Comm.RTSEnable = True
    Form1.Comm.DTREnable = False
    Form1.Comm.RThreshold = 1
    Form1.Comm.InputLen = 0
    MaxP2Limit = 13
    MaxP3Limit = 20
    Form1.Timer1.Enabled = True
    Form1.Timer1.Interval = 200
    Do While TimeOut = 0
        DoEvents
    Loop
    
    StateChanged = 0
    TimeOut = 0
    Form1.Timer1.Enabled = False
    Form1.Timer1.Enabled = True
    Form1.Comm.RTSEnable = False
    'rem P3 card
    Do While Len(InBuf) < 16
        If TimeOut = 1 Then
            'rem P2 card
            If Len(InBuf) > 11 Then
                Exit Do
            Else
                GoTo SendEnd
            End If
        End If
        DoEvents
    Loop
    
    For I = 1 To Len(InBuf)
        TempAtr = Asc(Mid$(InBuf, I, 1))
        ConvertAtr
        If HoldAtr < &H10 Then
            Temp = Temp + "0" + Hex$(HoldAtr) + " "
        Else
            Temp = Temp + Hex$(HoldAtr) + " "
        End If
        If I = 3 Then
            Mask = HoldAtr And &HF
        End If
    Next I
    
    Select Case Mask
        Case 1
            Form1.Comm.Settings = "9600,O,8,2"
        Case 2
            Form1.Comm.Settings = "19200,O,8,2"
        Case 3
            Form1.Comm.Settings = "38400,O,8,2"
        Case 5
            Form1.Comm.Settings = "115200,O,8,2"
    End Select
SendEnd:
    StateChanged = 0
    Temp = Form1.Comm.Input
    Form1.Comm.InputLen = 0
    Temp = Form1.Comm.Input
    Form1.Timer1.Enabled = False
End Sub



⌨️ 快捷键说明

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