Announcement

Collapse
No announcement yet.

Zugriff auf G8015012.DLL (Cherry Tastatur G80-1501)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf G8015012.DLL (Cherry Tastatur G80-1501)

    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

  • #2
    Hallo,

    wie sieht die Funktions-Deklaration im Original aus? Ich glaube nicht, dass dort "alte" Pascal-String (wie string[8]) bzw. Delphi-AnsiStrings verwendet werden. In der Regel wird wohl auch die Aufrufkonvention stdcall richtig sein (es sei denn, diese DLL wurde mit Delphi geschrieben)

    Comment


    • #3
      Scick mir mal das .h file und ich nehme es mir zur Brust. Dieses bischen an Funktionen konvertiere ich mit links. [email protected]

      Comment


      • #4
        Vielen Dank für die schnellen Antworten. Bin gerade erst wieder aus dem Urlaub zurück gekommen und habe es vorher irgendwie nicht mehr geschafft. Werde mir die Sache mit den stdcalls mal anschauen.<p>

        Robert: Habe dir die Header-Datei geschickt. Vielleicht kannst du sie für mich konvertieren.<p>

        So long

        Lar

        Comment


        • #5
          Hallo,
          habe vor Jahren mal ein Chipcard Terminal mit der G8015002.dll und einer anderen DLL geschrieben und die Daten über DDE versendet. Würde dir gerne den Quellcode zukommen lassen. Schreibe mir eine E-Mail mit deiner Adresse ([email protected]

          Comment

          Working...
          X