Jump to content
Abschaltung der Forum zum 03.01.2024 ×

Windows API für CyberJack Standard RFID


Empfohlene Beiträge

Hallo,

ich möchte eine Software für Windows entwickeln, anhand deren man Versichertenkarten von Krankenkassen auslesen kann. Es wäre sehr praktisch, wenn es eine Windows-API für den ReinerSCT CyberJack Standard RFID geben würde. Also wenn ich die Kartendaten z. B. über die Kommandozeile (CMD) auslesen könnte. Gibt es eine solche Schnittstelle?

Beste Grüße

Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo René,

ich verwende nun in meinem Projekt CTAPI.

Declare Function init Lib "Ctrsct32" Alias "CT_init" (ctn As UInt16, pn As UInt16) As Int8
Declare Function data Lib "Ctrsct32" Alias "CT_data" (ctn As UInt16, ByRef dad As Int8, ByRef sad As Int8, lenc As UInt16, command As Ptr, ByRef lenr As UInt16, response As Ptr) As Int8
Declare Function close1 Lib "Ctrsct32" Alias "CT_close" (ctn As UInt16) As Int8

Var value_init As Int8
Var value_close As Int8
Var value_data As Int8

Try 
  value_init = init(1,1)
  If value_init = 0 Then
    MessageBox("success")
    
  Else
    MessageBox(value_init.ToString)
  End If
Catch e As FunctionNotFoundException
  MessageBox(e.Message)
End Try

value_close = close1(1)

Ich nehme an, dass der Rückgabewert 0 der Funktion CT_init bedeutet, dass die Initialisierung erfolgreich war. Ist das korrekt?

Ansonsten frage ich mich, wie man die Funktion CT_data verwendet? Zu der Funktion CT_data steht in der Doku nur eine kurze Beschreibung. Das hilft mir aber in dem Fall nicht so viel weiter.

Ich möchte Krankenkassen Chipkarten auslesen. Dazu gibt es von der Gematik ein PDF-Dokument: https://www.dkgev.de/fileadmin/default/Mediapool/2_Themen/2.1_Digitalisierung_Daten/2.1.5._Telematik-Infrastruktur/2.1.5.2_Einfuehrung_und_Betrieb/2013_11_06_364_eGK_Veroeffentlichung_Dokuaenderungen.pdf

Vielleicht übersehe ich da auch etwas, würde mich freuen, wenn man mir dazu etwas sagen kann.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es gibt ja noch die Möglichkeit zur Ansteuerung über PC/SC alternativ zur CT-API.

Aber ich bin schon etwas weiter gekommen mit der CT-API.

Beim Ausführen der Methode GetCardMonStatus() erhalte ich den Fehler "Tag 80". Was bedeutet das?

Bevor jemand fragt: Das Kartenlesegerät ist angeschlossen und es steckt eine Versichertenkarte drin.

Der Fehler tritt hier auf (siehe Kommentar im Code):

Const CT_DEST_CARD = 0
Const CT_DEST_CT = 1
Const CT_DEST_APPLICATION = 2

Declare Function init Lib "Ctrsct32" Alias "CT_init" (ctn As UInt16, pn As UInt16) As Int8
Declare Function data Lib "Ctrsct32" Alias "CT_data" (ctn As UInt16, ByRef dad As Int8, ByRef sad As Int8, lenc As UInt16, command As Ptr, ByRef lenr As UInt16, response As Ptr) As Int8
Declare Function close1 Lib "Ctrsct32" Alias "CT_close" (ctn As UInt16) As Int8

Var Dad As Int8 = CT_DEST_CT
Var Sad As Int8 = CT_DEST_APPLICATION
Var nRelevantByte As Integer = 0

Var Cmd As New MemoryBlock(5)
Cmd.Int8Value(0) = &h20
Cmd.Int8Value(1) = &h13
Cmd.Int8Value(2) = &h00
Cmd.Int8Value(3) = &h80
Cmd.Int8Value(4) = &h00
Var Lc As UInt16 = Cmd.Size

Var Rsp As New MemoryBlock(65535)
Var Lr As UInt16 = Rsp.Size

Var nRet As Integer = -1

nRet = data(1, Dad, Sad, Lc, Cmd, lr, Rsp)

If nRet < 0 Then
  Return "error nret < 0"
End If

If Lr < 3 Then
  return "error lr < 3"
End If

If CType((Rsp.Int8Value(lr - 2) * &h0100) + (Rsp.Int8Value(Lr - 1)), UInt16) <> &h9000 Then
  Return "error h0100"
End If

Select Case Lr
Case 3
  nRelevantByte = 0
Case 4
  nRelevantByte = 0
Case 5
  If ((Rsp.Int8Value(0) <> &h80) Or (Rsp.Int8Value(1) <> &h01)) Then
    return "error h80" // hier tritt der Fehler auf
  End If
  nRelevantByte = 2
Else
  Return "error default case"
End Select

If CType(rsp.Int8Value(nRelevantByte) And 1, Boolean) Then
  return "Card inserted"
Else
  return "Card released"
End If

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

×
×
  • Neu erstellen...

Wichtige Information

Diese Website verwendet Cookies – nähere Informationen dazu und zu Ihren Rechten als Benutzer finden Sie in unserer Datenschutzerklärung am Ende der Seite. Klicken Sie auf „Ich stimme zu“, um Cookies zu akzeptieren und direkt unsere Website besuchen zu können.