Dplus Geschrieben 11. März 2011 Geschrieben 11. März 2011 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 Zitieren
R1I9C8H5I Geschrieben 12. März 2011 Geschrieben 12. März 2011 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... Zitieren
Dplus Geschrieben 12. März 2011 Autor Geschrieben 12. März 2011 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 Zitieren
Dplus Geschrieben 12. März 2011 Autor Geschrieben 12. März 2011 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. Zitieren
Klotzkopp Geschrieben 12. März 2011 Geschrieben 12. März 2011 Und im Debug komtm diese Fehlermeldung: Die Länge des Arguments String muss größer als 0 (null) sein.Dein String a ist ja auch leer. Du solltest das schon mit Text machen, und zwar nach dem Auslesen. Zitieren
Dplus Geschrieben 12. März 2011 Autor Geschrieben 12. März 2011 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^^ Zitieren
Dplus Geschrieben 12. März 2011 Autor Geschrieben 12. März 2011 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. Zitieren
Empfohlene Beiträge
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.