Home    Impressum / Datenschutz    Shop    Download    Links     Blog  

I2C-Chipkartenleser Programmierbeispiel

Auslesen und beschreiben von I2C-Chipkarten mit dem I2C-RS232-Modem

Option Explicit


Private Sub Command_CHIPK_S_Click()         'Text auf Karte schreiben
Dim AnzG, Anz, ZZ, A, W, I, II, StByAdr
Dim Zeichen As String
 
AnzG = Len(TextBox_CHIPK_S.Text)            'Anzahl Zeichen ermitteln
MsgBox ("Schreibe " & AnzG & " Zeichen")    'Meldung ausgeben

ZZ = 0                                          'Zeichen-Zeiger auf 1 setzen
StByAdr = 0                                     'Start-Byteadresse auf 0 Setzen
For I = 0 To 31                                 'Blockschleife max. 32*8=256 Bytes
    If AnzG - ZZ < 8 Then                       'Wie viele zeichen werden geschrieben
        Anz = AnzG - ZZ                         'Restliche Zeichen
    Else
        Anz = 8                                 '8 Zeichen
    End If
 
    SENDBYTE (64 + Anz)                         'Befehl 64 = Multiwrite + (Anzahl Bytes -1)
    SENDBYTE (160)                              'Bus-Adresse der I2C-Chipkarte
    SENDBYTE (StByAdr)                              'START-Byteadresse übertragen
    For II = 1 To Anz
        Zeichen = Mid$(TextBox_CHIPK_S.Text, _
                II + ZZ, 1)                          'Ein Zeichen aus der Textbox holen
        W = Asc(Zeichen)                             'ASCI-Umwandlung
        If W > 255 Then W = 0                        'ungültiges Zeichen
        SENDBYTE (W)                                 'Wert ausgeben
    Next II
    ZZ = ZZ + Anz                                    'Zeichen-Zeiger erhöhen
    StByAdr = StByAdr + 8                            'Start-Byteadresse erhöhen
   
    A = READBYTE                                'Status vom Modem abfragen
    If A = 192 Then
        TextBox_LESE_16.Text = "OK"
    Else
        TextBox_LESE_16.Text = "FEHLER " & A
    End If
 
    If ZZ = AnzG Then Exit For                  'FERTIG ?
Next I
End Sub


Private Sub Command_CHIPK_L_Click() 'Text von Karte lesen
Dim A, W, I, II
 
TextBox_CHIPK_L.Text = "" 'Textbox löschen

For I = 0 To 31                     'Blockschleife max. 32*8=256 Bytes
  '1. START-Byteadresse übertragen
  SENDBYTE (64)                       'Befehl 64 = Multiwrite + (Anzahl Bytes -1)
  SENDBYTE (160)                      'Bus-Adresse der I2C-Chipkarte
  SENDBYTE (I * 8)                    'START-Byteadresse übertragen
   
  A = READBYTE                        'Status vom Modem abfragen
  If A = 192 Then
      TextBox_LESE_16.Text = "OK"
  Else
      TextBox_LESE_16.Text = "FEHLER " & A
      MsgBox ("Fehler beim Schreiben der Start-Adresse" & I * 8)
      Exit Sub
  End If
 
  '2. Daten-Bytes auslesen
  SENDBYTE (128 + 7)                    'Befehl 128 = Multiread + (Anzahl Bytes -1)
  SENDBYTE (160)                        'Bus-Adresse zur I2C-Chipkarte schreiben
   
  A = READBYTE                              'Status vom Modem abfragen
  If A = 192 Then
    TextBox_LESE_16.Text = "OK"
    Do                                      'Puffer auslesen
      W = READBYTE
          If W = -1 Then Exit Do
              TextBox_CHIPK_L.Text = _
              TextBox_CHIPK_L.Text & Chr(W) 'Zeichen in Textbox eintragen
    Loop
  Else
    TextBox_LESE_16.Text = "LESEFEHLER " & A
  End If
Next I
End Sub


Private Sub Command_CHIPK_CLR_Click()       'Karte löschen

Dim A, W, I, II
Dim Zeichen As String
 
For I = 0 To 31                                 'Blockschleife max. 32*8=256 Bytes
    SENDBYTE (64 + 8)                           'Befehl 64 = Multiwrite + (Anzahl Bytes -1)
    SENDBYTE (160)                              'Bus-Adresse der I2C-Chipkarte
    SENDBYTE (I * 8)                            'START-Byteadresse übertragen
   
    For II = 1 To 8
        SENDBYTE (0)                            '0 senden
    Next II
 
    A = READBYTE                                'Status vom Modem abfragen
    If A = 192 Then
        TextBox_LESE_16.Text = "OK"
    Else
        TextBox_LESE_16.Text = "FEHLER " & A
    End If
Next I
End Sub


Screenshot vom der Excel-Tabelle

 

Beispiele als Excel Makro
II2C-PM-Chipkarten-Test.zip und port.dll (55 kB)
Excel-Makro für das I2C-Modem mit einem Beispiel zum Auslesen und Beschreiben von I2C-Chipkarte
vba-makros.pdf (528 kB)
Bei den Makros kann es je nach Sicherheitseinstellungen zu Fehlermeldungen kommen. Eine Anleitung wie Sie die Makros ausführen können finden Sie in diesem Dokument

 

Bausätze können Sie günstig in unserem Onlineshop in der Rubrik
"I2C-Komponenten" bestellen.