Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Visual Basic 2010] ATR einer Smartcard richtig auslesen

Empfohlene Antworten

Veröffentlicht

Hallo

beschäftige mich seit ein paar Tagen mit Visual Basic

Und möchte den ATR ener SmartCard auslesen.

Dies bekomme ich auch hin

Nur soll der ATR und auch die spätere Daten in HEX angezeigt werden.

Such nun schon den ganzen Tag udn find einfach nix was mir den Weg zeigt wie ich die Daten in Hex angezeigt bekomme.

Habe was gefunden für VB6 aber so wie ich das sehe ist dies in VB2010 nicht anwendbar

(Private Function InterpretarHex)

Hier mal mein Code


Public Class Form1


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Try

            SerialPort1.PortName = TextBox28.Text

            SerialPort1.BaudRate = TextBox31.Text

            SerialPort1.Open()

            SerialPort1.RtsEnable = True

            SerialPort1.RtsEnable = False

            SerialPort1.DtrEnable = True

            SerialPort1.RtsEnable = False

            Button1.Enabled = False

            Button2.Enabled = True

            Button3.Enabled = True

            Button4.Enabled = True

            Button4.Enabled = True

            Button5.Enabled = True

            Button6.Enabled = True

            Button7.Enabled = True

        Catch ex As Exception

            MsgBox("Verbindung zum Reader konnte nicht hergestellt werden")


        End Try



    End Sub


    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

        If SerialPort1.IsOpen = True Then

            SerialPort1.Close()

        End If

    End Sub


    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click


        Text = SerialPort1.ReadExisting

        ListBox1.Items.Add("RX: " + Text)



    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        SerialPort1.Close()

        Button1.Enabled = True

        Button2.Enabled = False

        Button3.Enabled = False

        Button4.Enabled = False

        Button4.Enabled = False

        Button5.Enabled = False

        Button6.Enabled = False

        Button7.Enabled = False

    End Sub

End Class

Der ATR der Karte kommt auch aber nicht in HEX wie es sein soll

Und schicke ich Befehle an die Karte so wird nicht die erwartete Antwort der Karte angezeigt sondern ganz komische zeichen so halbe Rechtecke und so.

Ich hoffe ihr könnt mir den zündenden Denkanstoss geben

Und schicke ich Befehle an die Karte so wird nicht die erwartete Antwort der Karte angezeigt sondern ganz komische zeichen so halbe Rechtecke und so.

Ich kenne mich jetzt zwar damit noch nicht so aus, aber das könnten doch die Daten sein oder? Es könnte doch sein, dass die Hexwerte von deiner Umgebung als String ausgewertet werden und dann die entsprechenden Assccii-Zeichen auftauchen...

  • Autor

Ja das ist auch die Karte

Also wenn ich einen Reset durchführe antwortet die Karte ja mit ihrem ATR

Der kommt auch wird halt nur nicht in HEX angezeigt.

Und genau das möchte ich tun, ich möchte der Anwendung sagen das alles was von der Karte kommt in HEX angezeigt werden soll.

Und da beiß ich mir die Zähne aus.

Alles was ich bei Google finde führt ins nichts oder ist zu alt und nicht mehr anwendbar :(

Und was ich bei msdn über die Hex-Funktion finden konnte ist mal recht mager.

Ich sprech die Karte ja auch mit Chr(&H) an was ja auch funzt

Nur die Antwort wird noch nicht richtig angezeigt

  • Autor

mmhhh....

ich raff det net^^

habs nu so versucht:


    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Dim a As String


            SerialPort1.RtsEnable = True

            SerialPort1.RtsEnable = False

            SerialPort1.DtrEnable = True

            SerialPort1.RtsEnable = False

            Text = (" ") + (Hex(Asc(Mid(a, 1, 2)))) + (" ") + (Hex(Asc(Mid(a, 2, 2)))) + (" ") + (Hex(Asc(Mid(a, 3, 2)))) + (" ") + (Hex(Asc(Mid(a, 4, 2))))

             Text = SerialPort1.ReadExisting

              ListBox1.Items.Add("RX: " + Text)



    End Sub

Dies bewirkt eigentlich einen reset und wirft den ATR aus.

Und im Debug komtm diese Fehlermeldung:

Die Länge des Arguments String muss größer als 0 (null) sein.

  • Autor

Ja das habe ich noch nicht gemacht

Aber habe es eben hinbekommen:


    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

        Dim TheHex As Object

        Dim a As String

        Dim Final As String

        a = SerialPort1.ReadExisting()

        Final = ""

        For i = 1 To Len(a)

            TheHex = Hex(Asc(Mid(a, i, 1)))

            If Len(TheHex) = 1 Then TheHex = "0" & TheHex

            Final = Final & TheHex + " "

        Next i

        SerialPort1.RtsEnable = True

        SerialPort1.RtsEnable = False

        SerialPort1.DtrEnable = True

        SerialPort1.RtsEnable = False

        ListBox1.Items.Add("RX: " + Final)



    End Sub

Muss zwar noch 2 mal klicken bis der ATR kommt, aber zumindest seh ich ihn nun so wie er sein soll.

Wie gesagt bin auf dem Gebiet VB völlig unwissend gewesen^^

  • Autor

Kleiner Nachtrag:

(Oder nächste Baustelle^^)

Die Antwort ist zwar nun in HEX aber immernoch nicht richtig.

Nach einem befehl an die Karte wo sie mit:

01 02 00 00 02 03 00 10 03 84 00 00 00 17 02 00 00 00 00 00 00 47 45 52 EF

Antworten sollte kommt:

01 02 02 03 00 00 3D 01 3F 6F 00 3F 3F 3F 00 51

PS:

Wollte eigentlich den Beitrag hier drüber editieren, dies ging aber leider nicht mehr.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.