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

📄 newlib.bas

📁 这是一个读取银行卡上的磁条信息的例程
💻 BAS
字号:
Attribute VB_Name = "NewLib"
Option Explicit
Global Const Opened = True
Global Const Closed = False
Global Const MaxPortNum = 9
Type PORTSTATE
    Name As String
    fd As Long
    State As Boolean
End Type
Global PortQ(0 To MaxPortNum) As PORTSTATE
'读写器操作接口函数
'打开USB读写器
 Declare Function CT_open Lib "wdCrwv.dll" (ByVal portname As String, ByVal Param1 As Long, ByVal param2 As Byte) As Long
'关闭与IC卡读写器相连的USB口
 Declare Function CT_close Lib "wdCrwv.dll" (ByVal fd As Long) As Long
 '对IC卡复位
 Declare Function ICC_resetVB Lib "wdCrwv.dll" (ByVal fd As Long, ByRef Lenr As Long, ByVal Resp As String) As Long

'从外设向CPU卡或读卡器发送命令并接收返回的数据
 Declare Function ICC_tsi_apiVB Lib "wdCrwv.dll" (ByVal fd As Long, ByVal Lens As Integer, ByVal Comm As String, ByRef Lenr As Long, ByVal Resp As String) As Long
         
'设置CPU卡读写地址NAD
 Declare Function ICC_set_NAD Lib "wdCrwv.dll" (ByVal fd As Long, ByVal char As Byte) As Long

'ASCII码字符串转换为十六进制字符串
 Declare Function CHexToBin Lib "wdCrwv.dll" (ByVal bin As String, ByVal asc As String, ByVal Lenr As Byte) As Long
   
'十六进制字符串转换为ASCII码字符串
 Declare Function BinToCHex Lib "wdCrwv.dll" (ByVal asc As String, ByVal bin As String, ByVal Lenr As Byte) As Long
 
'哈什摘要
 Declare Function SHA1 Lib "wdCrwv.dll" (ByVal sour As String, ByVal Lenr As Byte, ByVal digest As String) As Long
 
'DES加密/解密
 Declare Function SingleDESVB Lib "wdCrwv.dll" (ByVal DESType As Byte, ByVal SingleDESKey As String, ByVal SourDataLen As Long, ByVal SourData As String, ByVal DestData As String) As Long

'3DES加密/解密
 Declare Function TripleDESVB Lib "wdCrwv.dll" (ByVal DESType As Byte, ByVal TripleDESKey As String, ByVal SourDataLen As Long, ByVal SourData As String, ByVal DestData As String) As Long
     
'DES认证码
 Declare Function SingleMACVB Lib "wdCrwv.dll" (ByVal SingleMACKey As String, ByVal InitData As String, ByVal SourDataLen As Long, ByVal SourData As String, ByVal MACData As String) As Long

'3DES认证码
 Declare Function TripleMACVB Lib "wdCrwv.dll" (ByVal TtripleMACKey As String, ByVal InitData As String, ByVal SourDataLen As Long, ByVal SourData As String, ByVal MACData As String) As Long
 
 
 
Public Function OpenPort(ByVal portname As String, ByVal Rate As Long) As Long
     If UCase(Left(portname, 3)) = "COM" Then
        OpenPort = CT_open(portname, 9600, &H45)
     Else
        OpenPort = CT_open(portname, 1, 1)
     End If
     If OpenPort > 0 Then Q_ADD portname, OpenPort
End Function
Public Function ClosePort(ByVal portname As String, ByVal fd As Long) As Long
     CT_close (fd)
     Q_DEL portname, fd
End Function
Public Function SendCmd(ByVal portname As String, ByVal fd As Long, ByVal Lens As Integer, _
                         ByVal Comm As String, ByRef Lenr As Long, _
                         ByRef Resp As String) As Long

    SendCmd = ICC_tsi_apiVB(fd, Len(Comm) / 2, Comm, Lenr, Resp)
 End Function
Public Function ResetCard(ByVal portname As String, ByVal fd As Long, ByRef Lenr As Long, ByRef Resp As String) As Long
    ResetCard = ICC_resetVB(fd, Lenr, Resp)
End Function
Public Sub MySetNad(ByVal fd As Long, ByVal nad As Long)
    ICC_set_NAD fd, nad
End Sub
Public Sub Q_ADD(ByVal portname As String, ByVal fd As Long)
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name = "" Then
            PortQ(i).Name = portname
            PortQ(i).State = Opened
            PortQ(i).fd = fd
        End If
        Exit For
    Next i
End Sub
Public Sub Q_DEL(ByVal portname As String, ByVal fd As Long)
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name = portname Then
            PortQ(i).Name = ""
            PortQ(i).State = Closed
            PortQ(i).fd = -1
        End If
        Exit For
    Next i
End Sub
Public Function Q_IsOpened(ByVal portname As String) As Boolean
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name = portname Then
            Q_IsOpened = True
            Exit Function
        End If
    Next i
    Q_IsOpened = False
End Function
Public Sub Q_CLEAR()
    Dim i As Integer
    For i = 0 To MaxPortNum
        PortQ(i).Name = ""
        PortQ(i).State = Closed
        PortQ(i).fd = -1
    Next i
End Sub
Public Function Q_IsEmpty() As Boolean
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name <> "" Then
            Q_IsEmpty = False
            Exit Function
        End If
    Next i
    Q_IsEmpty = True
End Function
Public Function Q_Find(ByVal portname As String) As Long
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name = portname Then
            Q_Find = PortQ(i).fd
            Exit Function
        End If
    Next i
End Function
Public Function Q_Opened(ByVal portname As String) As Boolean
    Dim i As Integer
    For i = 0 To MaxPortNum
        If PortQ(i).Name = portname Then
            Q_Opened = True
            Exit Function
        End If
    Next i
    Q_Opened = False
End Function


⌨️ 快捷键说明

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