Zum Inhalt springen

[Visual Basic 2010] ATR einer Smartcard richtig auslesen


Dplus

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...