Hallo,
ich muss eine Krankenversichertenkarte auslesen, Versichertennummer, Name, Adresse, etc. (cyberJack Kartenleser). Ich habe gesehen, dass die CT-API mittels ctrsct32.dll bzw. ct32.dll und der Funktion CT_data die Möglichkeit bietet dies zu tun. Leider finde ich nirgends eine brauchbare Parameterbeschreibung.
Hat jemand eine selbige für mich, bzw. kann mir sagen, wo ich eine finden kann?
Vielen Dank für Eure Hilfe
Timo
Krankenversichertenkarte auslesen
Moderator: Moderatoren
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hallo,
ich habe jetzt alle notwendigen Informationen und hänge am DLLCall fest. Dieser lautet:
DllCall( nDll, DLL_CDECL, "CT_data", 1, @dad, @sad, len, command, @lenr, response )
command erwartet eine Referenzadresse eines Feldes mit Elementen vom Typ integer unsigned 8Bit, die das Kommando enthalten,
len ist die Länge des Kommandos in Byte
response die entsprechende Adresse der Antwort und lenr die Länge der Antwort.
XBase kann ja nicht mit Pointer arbeiten, ist es somit richtig, dass ich mit XBase Bordmittel die Funktion nicht ausführen kann, oder gibt es dennoch eine Lösung?
Grüße
Timo
ich habe jetzt alle notwendigen Informationen und hänge am DLLCall fest. Dieser lautet:
DllCall( nDll, DLL_CDECL, "CT_data", 1, @dad, @sad, len, command, @lenr, response )
command erwartet eine Referenzadresse eines Feldes mit Elementen vom Typ integer unsigned 8Bit, die das Kommando enthalten,
len ist die Länge des Kommandos in Byte
response die entsprechende Adresse der Antwort und lenr die Länge der Antwort.
XBase kann ja nicht mit Pointer arbeiten, ist es somit richtig, dass ich mit XBase Bordmittel die Funktion nicht ausführen kann, oder gibt es dennoch eine Lösung?
Grüße
Timo
Hallo Timo
Hast du schon bei Orga angerufen? Die Sind sehr hilfsbereit und haben uns ein C-Beispiel zugeschickt.
Hier ein kleines Beispiel zum reseten eines SICCT, hab ich vom C-Beispiel von Orga umgemünzt.
Der Aufruf:
Die Reset-Function:
Grüße Rolf
Hast du schon bei Orga angerufen? Die Sind sehr hilfsbereit und haben uns ein C-Beispiel zugeschickt.
Hier ein kleines Beispiel zum reseten eines SICCT, hab ich vom C-Beispiel von Orga umgemünzt.
Der Aufruf:
Code: Alles auswählen
//## 1st STEP: Laden der ctApi.dll
//-- DLL-Laden
nDll := DllLoad( "CTORG32.dll" )
if(nDll != 0)
//## 2nd STEP: Verbinden mit dem Terminal
//-- DLL-Init
iCtn := 1 //-- Logical card terminal number
iPN := 1 //-- Port COM1
nInit:= dllCall( nDll, DLL_STDCALL, "CT_init",iCtn, iPN)
if(nInit != 0)
//## 3rd STEP: Reset The Terminal
//-- RESET - Kartenterminal
nReturn := resetCT ( nDll, iCtn )
Code: Alles auswählen
FUNCTION resetCT ( nDll, iCtn )
LOCAL nData := 0
LOCAL cDad := 0x01 //-- destination address (receiver)
LOCAL cSad := 0x02 //-- source address (sender)
LOCAL iLenc := 127 //-- length command
LOCAL cCommand := SPACE(127) //-- ICC or CT command.
LOCAL iLenr := 1031 //-- length response
LOCAL cResponse := SPACE(1031) //-- Response to the command
//-- Kommando für Reset
cCommand := Chr(0x20)+Chr(0x11)+Chr(0x00)+Chr(0x00)+Chr(0x00)
iLenc := LEN(cCommand)
//-- Rückgabe
iLenr := 1031
cResponse:= replicate(Chr(0x00),iLenr)
//-- DLL-Data
nData:= dllCall( nDll, DLL_STDCALL, "CT_data",iCtn, @cDad, @cSad, iLenc,;
@cCommand, @iLenr, @cResponse)
if(nData == 0)
if ((iLenr >= 2).And.(iLenr <= 1031)).And.;
(cResponse[iLenr-1] == Chr(0x90) ).And.;
(cResponse[iLenr] == Chr(0x00) )
cLog := cLog + "STATE: RESET CT successful!"+cEol
//? "STATE: RESET CT successful!"
else
cLog := cLog + "STATE: RESET CT unsuccessful!"+cEol
//? "STATE: RESET CT unsuccessful!"
endif
endif
RETURN nData