Hallo,
ich habe einige Probleme, Krankenversichertenkarten mit der Cherry Tastatur G80-1501 auszulesen. Ich benutze D6 Prof. deutsch und Windows 2000. Der mitgelieferte Treiber und die Testsoftware funktionieren anstandslos. Auch das OCX-Modul (als ActiveX in D6 eingebunden) funcktioniert tadellos.<p>
Aber ich möchte gerne direkt auf die o.g. DLL zugreifen. Die Funktionen sind alle in einer Hilfe-Datei beschrieben und ich habe eine kleine Delphi-Unit mit den Funktionen geschrieben:
<pre>
unit UnitCherry;
interface
const
G1501_PARAM_READSTART = 1;
G1501_PARAM_READBETWEEN = 2;
G1501_PARAM_FORMATDATE = 3;
G1501_PARAM_RETRIES = 4;
type
PKBVCardRecord = ^TKBVCardRecord;
TKBVCardRecord = record
KKName : string[29];
KKNummer : string[8];
VKNR : string[6];
VNummer : string[13];
VStatus : string[5];
StatusErgaenzung : string[4];
Titel : string[16];
Vorname : string[29];
NamensZusatz : string[16];
FamilienName : string[29];
Geburtsdatum : string[11];
Strasse : string[29];
LaenderCode : string[4];
Plz : string[8];
Ortsname : string[24];
Gueltigkeitsdatum : string[6];
Pruefsumme : Byte;
end;
function G801501_Init: Longint; external 'g8015012.dll';
procedure G801501_Close; external 'g8015012.dll';
function G801501_ReadCardRecord(var KBVCardRecord: PKBVCardRecord): Longint; external 'g8015012.dll';
function ReadCardString(var HADName: string;var HADNumber: string; var VKNR: string; var AssurancyNumber: string;
var AssurancyStatus: string; var StatusSuppl: string; var Title: string;
var Forename: string; var NameSuppl: string; var Surname: string; var DateOfBith: string;
var Street: string; var CountryCode: string; var PostalCode: string; var City: string;
var ExpiryDate: string; var Checksum : string): Longint; external 'g8015012.dll' name 'G801501_ReadCardString';
function G801501_BytesRead : Longint; external 'g8015012.dll';
function G801501_SetParameter(Param, Value: Longint): Longint; external 'g8015012.dll';
function G801501_GetParameter(Param: Longint): Longint; external 'g8015012.dll';
function G801501_GetError: Longint; external 'g8015012.dll';
implementation
end.
</pre>
<p>
Leider ist es mir weder gelungen einen Record einzulesen, noch der Funktion ReadCardString Informationen zu entlocken.<p>
Hat jemand eine Idee oder einen Tipp für mich? Vielleicht sind die Deklarationen für die Funktionen ja nicht richtig. Im Testprogramm führe ich zuerst ein Init aus (Fehlercode 0 - also kein Fehler), dann versuche ich die definierte Struktur zu füllen. Dies schlägt leider komplett fehl, das Programm stürzt ab ins Nirwana.
Also, help is appreciated
Lars
ich habe einige Probleme, Krankenversichertenkarten mit der Cherry Tastatur G80-1501 auszulesen. Ich benutze D6 Prof. deutsch und Windows 2000. Der mitgelieferte Treiber und die Testsoftware funktionieren anstandslos. Auch das OCX-Modul (als ActiveX in D6 eingebunden) funcktioniert tadellos.<p>
Aber ich möchte gerne direkt auf die o.g. DLL zugreifen. Die Funktionen sind alle in einer Hilfe-Datei beschrieben und ich habe eine kleine Delphi-Unit mit den Funktionen geschrieben:
<pre>
unit UnitCherry;
interface
const
G1501_PARAM_READSTART = 1;
G1501_PARAM_READBETWEEN = 2;
G1501_PARAM_FORMATDATE = 3;
G1501_PARAM_RETRIES = 4;
type
PKBVCardRecord = ^TKBVCardRecord;
TKBVCardRecord = record
KKName : string[29];
KKNummer : string[8];
VKNR : string[6];
VNummer : string[13];
VStatus : string[5];
StatusErgaenzung : string[4];
Titel : string[16];
Vorname : string[29];
NamensZusatz : string[16];
FamilienName : string[29];
Geburtsdatum : string[11];
Strasse : string[29];
LaenderCode : string[4];
Plz : string[8];
Ortsname : string[24];
Gueltigkeitsdatum : string[6];
Pruefsumme : Byte;
end;
function G801501_Init: Longint; external 'g8015012.dll';
procedure G801501_Close; external 'g8015012.dll';
function G801501_ReadCardRecord(var KBVCardRecord: PKBVCardRecord): Longint; external 'g8015012.dll';
function ReadCardString(var HADName: string;var HADNumber: string; var VKNR: string; var AssurancyNumber: string;
var AssurancyStatus: string; var StatusSuppl: string; var Title: string;
var Forename: string; var NameSuppl: string; var Surname: string; var DateOfBith: string;
var Street: string; var CountryCode: string; var PostalCode: string; var City: string;
var ExpiryDate: string; var Checksum : string): Longint; external 'g8015012.dll' name 'G801501_ReadCardString';
function G801501_BytesRead : Longint; external 'g8015012.dll';
function G801501_SetParameter(Param, Value: Longint): Longint; external 'g8015012.dll';
function G801501_GetParameter(Param: Longint): Longint; external 'g8015012.dll';
function G801501_GetError: Longint; external 'g8015012.dll';
implementation
end.
</pre>
<p>
Leider ist es mir weder gelungen einen Record einzulesen, noch der Funktion ReadCardString Informationen zu entlocken.<p>
Hat jemand eine Idee oder einen Tipp für mich? Vielleicht sind die Deklarationen für die Funktionen ja nicht richtig. Im Testprogramm führe ich zuerst ein Init aus (Fehlercode 0 - also kein Fehler), dann versuche ich die definierte Struktur zu füllen. Dies schlägt leider komplett fehl, das Programm stürzt ab ins Nirwana.
Also, help is appreciated
Lars
Comment