2017-09-12 2 views
0
Private Sub Read(sender As Object, e As EventArgs) Handles MyBase.Load  

    Dim ReaderCount As Integer 
    Dim ReaderCount As Integer 
    Dim ctr As Integer 
    Dim sReaderList As String 
    Dim ctr As Integer 
    Dim sReaderList As String 


    For ctr = 0 To 255 
    sReaderList = sReaderList + vbNullChar 

    Next 

    ReaderCount = 255 

    ' 1. Establish context and obtain hContext handle 
    retCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER, 0, 0, hContext) 


    ' 2. List PC/SC card readers installed in the system 
    retCode = ModWinsCard.SCardListReaders(hContext, "", sReaderList, ReaderCount) 



    ' Load Available Readers 
    Call LoadListToControl(cbReader, sReaderList) 
    cbReader.SelectedIndex = 0 

    If connActive Then 
     retCode = ModWinsCard.SCardDisconnect(hCard, ModWinsCard.SCARD_UNPOWER_CARD) 
    End If 

    ' Shared Connection 
    retCode = ModWinsCard.SCardConnect(hContext, cbReader.SelectedItem.ToString(), ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 Or ModWinsCard.SCARD_PROTOCOL_T1, hCard, Protocol) 

    connActive = True 


    Connect() 

End Sub 

Public Sub Connect() 

    Dim tmpStr As String 
    Dim indx As Integer 


    validATS = False 
    Call ClearBuffers() 
    SendBuff(0) = &HFF        ' CLA 
    SendBuff(1) = &HCA        ' INS 


    SendBuff(3) = &H0        ' P2 
    SendBuff(4) = &H0        ' Le : Full Length 

    SendLen = SendBuff(4) + 5 
    RecvLen = &HFF 

    retCode = SendAPDUandDisplay(3) 

    If retCode <> ModWinsCard.SCARD_S_SUCCESS Then 

     Exit Sub 

    End If 


    For indx = 0 To (RecvLen - 3) 

     tmpStr = tmpStr + Microsoft.VisualBasic.Right("00" & Hex(RecvBuff(indx)), 2) + " " 

    Next indx 

    cardUID = tmpStr 

    Attendace_Menu.Show() 
    Me.Hide() 

End Sub 

私のコードで助けが必要です。スマートカードのUIDは、フォームを読み込むときだけでなく、カードを取り出してもう一度挿入するときにも読んでほしい。私はフォームをロードするときだけカードを読み込みます。プログラミングに慣れていないので、私は何をすべきか分かりません。これは学校のための私のプロジェクトです。カードを読む際にACR122uヘルプ

答えて

0

WinSCardライブラリのSCardGetStatusChange関数を使用して、バックグラウンドワーカースレッドによる変更を観察できます。

関連する問題