Reader ID-Karten

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
unavoda
Rookie
Rookie
Beiträge: 3
Registriert: Do, 25. Feb 2016 14:42

Reader ID-Karten

Beitrag von unavoda »

Ich bin aus Serbien.Ich habe Software für Hotel Geschäft. Initiale Version der Software in Clipper-u.Vor 6 Jahre geschrieben wurde, das visuelle Erscheinungsbild der Software zu verbessern, wird die Software nach Alaska Xbase ++ übertragen, da es das einzige Alaska Xbase ++ ist hat die Möglichkeit, Code From Software-Clipper zu importieren Teil des Codes der geschrieben in persönlichen tickets. Dieser teil des Codelese ist bis August 2014 zu funktionieren, wenn die MUP geändert struktur.Auf Internet möglich ist, einen Teil des Codes zu finden, die die ID-Karte ausliest, die in C # geschrieben ist.
Hat bereits Erfahrung jedermann mit Code-Finishing in ID-Karten zu lesen, nachdem August 2014?
Wenn jemand Erfahrung in Alaska Xbase ++ hat, würde ich um Hilfe bitten, wird jede Hilfe dankbar.

Vielen Dank im Voraus!
Dies ist der Code für in ID-Karten lesen:
Beginn einer LESE CIP ID-Karten

Code: Alles auswählen

FUNCTION CELIKCITAJ (hWnd,podaci,oComb,vrispr,brefr, wE,podaci2,oXbpPl,koj,oXbpZ,matrdod)
local qret:=12,qret2:=12,qret3:=12,qret4:=12,qret5:=12,qret6:=12,rret1:={},rret2:={},rret3:={},rret4:={},wslika:=""

if !memvar->StartovoCelik
    qret:=EidStartup(1)
    if qret < EID_OK
        * EidCleanup()
        nsgbox( lds(1673)+chr(13)+CelikErr(qret)+' :1', lds(3),hWnd,XBPMB_CRITICAL )
        return(NIL)
    endif
    memvar->StartovoCelik := .T.
endif
qret:=EidBeginRead("")
if qret < EID_OK
    EidEndRead()
    * EidCleanup()
    nsgbox( lds(1673)+chr(13)+CelikErr(qret)+' :2', lds(3),hWnd,XBPMB_CRITICAL )
    return(NIL)
endif
qret3:=CCITAJ1( rret1 )
if qret3 = -7 .or. ( qret3 = -10 .and. !empty(memvar->C4_Dok))      // Eid card missing
    EidEndRead()
    EidBeginRead("")
    qret3:=CekajiCitaj(hWnd,rret1)
endif
if qret3 = EID_OK
    qret4:=CCITAJ2( rret2 )
    if qret4 = EID_OK
       qret5:=CCITAJ3( rret3 )
       if qret5 = EID_OK
            *timerlog( rret2[1]+","+rret2[2]+","+rret2[3]+","+rret2[4]+","+rret2[5]+;
            *     rret2[6]+","+rret2[7]+","+rret2[8]+","+rret2[9]+;
            *     rret3[1]+","+rret3[2]+","+rret3[3]+","+rret3[4]+","+rret3[5]+","+rret3[6] )
            * nsgbox( rret1[1]+","+rret1[2]+","+rret1[3]+","+rret1[4]+CHR(13)+;
            *     ","+rret2[1]+","+rret2[2]+","+rret2[3]+","+rret2[4]+","+left(rret2[5],10)+CHR(13)+;
            *     ","+rret2[6]+","+rret2[7]+","+rret2[8]+chr(13)+;
            *     rret3[1]+","+rret33[2]+","+rret3[3]+","+rret3[4]+","+rret3[5]+","+rret3[6]+","+rret3[7]+","+rret3[8]+",",'Doc')
            qret6:=CCITAJ4 (rret4)
            if qret6 = EID_OK
                wslika:=rret4[1]
            endif
            EidEndRead()
            CITAC_CIPKART (hWnd,rret1,rret2,rret3,wslika,podaci,oComb,vrispr,brefr, wE,podaci2,oXbpPl,koj,oXbpZ,matrdod)
       else
            EidEndRead()
            nsgbox( lds(1673)+chr(13)+CelikErr(qret5)+' :5', lds(3),hWnd,XBPMB_CRITICAL )
            return(NIL)
       endif
    else
        EidEndRead()
        nsgbox( lds(1673)+chr(13)+CelikErr(qret4)+' :4', lds(3),hWnd,XBPMB_CRITICAL )
        return(NIL)
    endif
    * nsgbox( rret1[1]+","+rret1[2]+","+rret1[3]+","+rret1[4],'Doc 1')
else
    EidEndRead()
    * EidCleanup()
    if qret3 <> -20
        nsgbox( lds(1673)+chr(13)+CelikErr(qret3)+' :3', lds(3),hWnd,XBPMB_CRITICAL )
    else
        * nsgbox( "Nisam docekao. Kraj.",'to')
    endif
    return(NIL)
endif

return(NIL)
******

FUNCTION CCITAJ1( rret )
local aBin:={},cBin:="",qret:=12,bb:={},n,pd:=""
* Document Data


asize(rret,0)
aBin:= BaInit(8)
BaStruct( aBin, space(EID_MAX_DocRegNo+1) )
BaStruct( aBin, EID_MAX_DocRegNo )
BaStruct( aBin, space(EID_MAX_IssuingDate+1) )
BaStruct( aBin, EID_MAX_IssuingDate )
BaStruct( aBin, space(EID_MAX_ExpiryDate+1) )
BaStruct( aBin, EID_MAX_ExpiryDate )
BaStruct( aBin, space( EID_MAX_IssuingAuthority+10 ) )
BaStruct( aBin, EID_MAX_IssuingAuthority )
cBin := BaAccess( aBin)

* EidBeginRead("")


qret:=EidReadDocumentData( @cBin )


    aadd( rret,citStr(BaExValue( cBin,1,EID_MAX_DocRegNo ),1,1) )
    aadd( rret,citStr(BaExValue( cBin,17,EID_MAX_IssuingDate ),1,1) )
    aadd( rret,citStr(BaExValue( cBin,33,EID_MAX_ExpiryDate ),1,1) )
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,49,EID_MAX_IssuingAuthority ),1,1) ))



aBin:=NIL
cBin:=NIL

return(qret)
****
FUNCTION CCITAJ2( rret )
local aBin:={},cBin:="",qret:=12

* Fixed personal Data
asize(rret,0)

aBin:= BaInit(18)
BaStruct( aBin, space(EID_MAX_PersonalNumber+10) )
BaStruct( aBin, EID_MAX_PersonalNumber )
BaStruct( aBin, space(EID_MAX_Surname+10) )
BaStruct( aBin, EID_MAX_Surname )
BaStruct( aBin, space(EID_MAX_GivenName+10) )
BaStruct( aBin, EID_MAX_GivenName )
BaStruct( aBin, space( EID_MAX_ParentGivenName+10 ) )
BaStruct( aBin, EID_MAX_ParentGivenName )
BaStruct( aBin, space( EID_MAX_Sex+10 ) )
BaStruct( aBin, EID_MAX_Sex )
BaStruct( aBin, space( EID_MAX_PlaceOfBirth+10 ) )
BaStruct( aBin, EID_MAX_PlaceOfBirth )
BaStruct( aBin, space( EID_MAX_StateOfBirth+10 ) )
BaStruct( aBin, EID_MAX_StateOfBirth )
BaStruct( aBin, space( EID_MAX_DateOfBirth+10 ) )
BaStruct( aBin, EID_MAX_DateOfBirth )
BaStruct( aBin, space( EID_MAX_CommunityOfBirth+10 ) )
BaStruct( aBin, EID_MAX_CommunityOfBirth )
cBin := BaAccess( aBin )

qret:=EidReadFixedPersonalData( @cBin )


    aadd( rret,citStr(BaExValue( cBin,1,EID_MAX_PersonalNumber ),1,EID_MAX_PersonalNumber) )
    aadd( rret,KONV_LAT_LAT(KONV_CIR_LAT (citStr(BaExValue( cBin,21,EID_MAX_Surname ),1,EID_MAX_Surname) )))
    aadd( rret,KONV_LAT_LAT(KONV_CIR_LAT (citStr(BaExValue( cBin,85,EID_MAX_GivenName ),1,EID_MAX_GivenName ))))
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,129,EID_MAX_ParentGivenName ),1,EID_MAX_ParentGivenName) ))
    aadd( rret,citStr(BaExValue( cBin,160,EID_MAX_Sex ),1,EID_MAX_Sex) )
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,167,EID_MAX_PlaceOfBirth ),1,EID_MAX_PlaceOfBirth) ))
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,201,EID_MAX_StateOfBirth ),1,EID_MAX_StateOfBirth) ))
    aadd( rret,citStr(BaExValue( cBin,233,EID_MAX_DateOfBirth ),1,EID_MAX_DateOfBirth) )
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,250,EID_MAX_CommunityOfBirth ),1,EID_MAX_CommunityOfBirth)) )


aBin:=NIL
cBin:=NIL

return(qret)
****
FUNCTION CCITAJ3( rret )
local aBin:={},cBin:="",qret:=12

* Variable personal Data
asize(rret,0)

aBin:= BaInit(18)
BaStruct( aBin, space(EID_MAX_State+10) )
BaStruct( aBin, EID_MAX_State )
BaStruct( aBin, space(EID_MAX_Community+10) )
BaStruct( aBin, EID_MAX_Community )
BaStruct( aBin, space(EID_MAX_Place+10) )
BaStruct( aBin, EID_MAX_Place )
BaStruct( aBin, space( EID_MAX_Street+10 ) )
BaStruct( aBin, EID_MAX_Street )
BaStruct( aBin, space( EID_MAX_HouseNumber+10 ) )
BaStruct( aBin, EID_MAX_HouseNumber )
BaStruct( aBin, space( EID_MAX_HouseLetter+10 ) )
BaStruct( aBin, EID_MAX_HouseLetter )
BaStruct( aBin, space( EID_MAX_Entrance+10 ) )
BaStruct( aBin, EID_MAX_Entrance )
BaStruct( aBin, space( EID_MAX_Floor+10 ) )
BaStruct( aBin, EID_MAX_Floor )
BaStruct( aBin, space( EID_MAX_ApartmentNumber+10 ) )
BaStruct( aBin, EID_MAX_ApartmentNumber )
cBin := BaAccess( aBin )

qret:=EidReadVariablePersonalData( @cBin )


    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,1,EID_MAX_State ),1,1) ))
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,9,EID_MAX_Community ),1,1)) )
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,41,EID_MAX_Place ),1,1) ))
    aadd( rret,KONV_LAT_LAT(citStr(BaExValue( cBin,73,EID_MAX_Street ),1,1) ))
    aadd( rret,citStr(BaExValue( cBin,113,EID_MAX_HouseNumber ),1,1) )

    aadd( rret,citStr(BaExValue( cBin,122,EID_MAX_HouseNumber ),1,1) )
    aadd( rret,citStr(BaExValue( cBin,128,EID_MAX_HouseLetter ),1,1) )
    aadd( rret,citStr(BaExValue( cBin,134,EID_MAX_Entrance ),1,1) )


aBin:=NIL
cBin:=NIL

return(qret)

****
FUNCTION CCITAJ4( rret )
local aBin:={},cBin:="",qret:=12

* Personal picture
asize(rret,0)

aBin:= BaInit(2)
BaStruct( aBin, space(EID_MAX_Portrait+50) )
BaStruct( aBin, EID_MAX_Portrait )
cBin := BaAccess( aBin )

qret:=EidReadPortrait( @cBin )


    aadd( rret,BaExValue( cBin,1,EID_MAX_Portrait ),1,1)

aBin:=NIL
cBin:=NIL

return(qret)
******
FUNCTION CekajiCitaj(hWnd,rret1)         // cekam i probam kad je ubacio karticu
local nEvent,mp1,mp2,oXbp,qret3:=0,qret:=0
local autovr:=seconds(),pocet:=seconds(),oni:={},oD,oProg,prekini:={}

aadd(prekini,.F.)

oni:=N_PROGRES (hWnd,16,prekini,lds(1674)+'...')     // 'Ubacite karticu u citac

oD:=oni[1]
oProg:=oni[2]

    DO WHILE .T.        //         nEvent != xbeP_Close

      nEvent := AppEvent( @mp1, @mp2, @oXbp, 1 )    //   10
      if valtype(nEvent) = "N" .and. nEvent <> xbeP_None .and. nEvent <> 0
        oXbp:handleEvent( nEvent, mp1, mp2 )

      endif
      if autovr + 1.00 < seconds()      // ajd da citam
          oProg:increment()
          qret3:=CCITAJ1( rret1 )
          if qret3 = -7  .or. ( qret3 = -10 .and. !empty(memvar->C4_Dok))    // jos nije ubacio karticu
             EidEndRead()
             qret:=EidBeginRead("")
             if qret <> EID_OK
                    return(qret)
             endif
             autovr := seconds()
             loop
          else              // procito ok ili neka druga greska
                oProg:destroy()
                oD:destroy()
                return( qret3 )
          endif
      endif
      if pocet + 15.00 < seconds() .or. prekini[1]       // proslo cekanje
        qret3 := -20
        exit
      endif
    ENDDO
if !prekini[1]
    oProg:destroy()
    oD:destroy()
endif
return(qret3)
****
#else
FUNCTION CELIKCITAJ (hWnd,podaci,oComb,vrispr,brefr)        // dummy da ne puca linker

return(NIL)
#endif

************************************************************************************************************************
* Definition von Funktionen zum Lesen von Chipkarten

#ifdef CelikApi

DLLFUNCTION EidStartup(nApiVersion) USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidCleanup() USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidBeginRead(szReader) USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidEndRead() USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidReadDocumentData(@pData1) USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidReadFixedPersonalData(@pData2) USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidReadVariablePersonalData(@pData3) USING STDCALL FROM CELIKAPI.DLL
DLLFUNCTION EidReadPortrait(@pData4) USING STDCALL FROM CELIKAPI.DLL

#endif
**

Es wird auf der Basis aus
// CelikApi.h
//
#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#ifndef WINAPI
#define WINAPI __stdcall
#endif

#ifndef EID_API
#define EID_API
#endif

//
// Constants
//

// Size of all UTF-8 fields in bytes

const int EID_MAX_DocRegNo = 9;
const int EID_MAX_IssuingDate = 10;
const int EID_MAX_ExpiryDate = 10;
const int EID_MAX_IssuingAuthority = 30;

const int EID_MAX_PersonalNumber = 13;
const int EID_MAX_Surname = 60;
const int EID_MAX_GivenName = 40;
const int EID_MAX_ParentGivenName = 25;
const int EID_MAX_Sex = 2;
const int EID_MAX_PlaceOfBirth = 25;
const int EID_MAX_StateOfBirth = 25;
const int EID_MAX_DateOfBirth = 10;
const int EID_MAX_CommunityOfBirth = 25;

const int EID_MAX_State = 3;
const int EID_MAX_Community = 25;
const int EID_MAX_Place = 25;
const int EID_MAX_Street = 36;
const int EID_MAX_HouseNumber = 5;
const int EID_MAX_HouseLetter = 2;
const int EID_MAX_Entrance = 3;
const int EID_MAX_Floor = 3;
const int EID_MAX_ApartmentNumber = 6;

const int EID_MAX_Portrait = 7700;

//
// Function return values
//

const int EID_OK                            =  0;
const int EID_E_GENERAL_ERROR               = -1;
const int EID_E_INVALID_PARAMETER           = -2;
const int EID_E_VERSION_NOT_SUPPORTED       = -3;
const int EID_E_NOT_INITIALIZED             = -4;
const int EID_E_UNABLE_TO_EXECUTE           = -5;
const int EID_E_READER_ERROR                = -6;
const int EID_E_CARD_MISSING                = -7;
const int EID_E_CARD_UNKNOWN                = -8;
const int EID_E_CARD_MISMATCH               = -9;
const int EID_E_UNABLE_TO_OPEN_SESSION      = -10;
const int EID_E_DATA_MISSING                = -11;
const int EID_E_CARD_SECFORMAT_CHECK_ERROR  = -12;
const int EID_E_SECFORMAT_CHECK_CERT_ERROR  = -13;

//
// Structures
//

// NOTE: char arrays DO NOT have zero char at the end

typedef struct tagEID_DOCUMENT_DATA
{
	char docRegNo[EID_MAX_DocRegNo];
	int docRegNoSize;
	char issuingDate[EID_MAX_IssuingDate];
	int issuingDateSize;
	char expiryDate[EID_MAX_ExpiryDate];
	int expiryDateSize;
	char issuingAuthority[EID_MAX_IssuingAuthority];
	int issuingAuthoritySize;
} EID_DOCUMENT_DATA, *PEID_DOCUMENT_DATA;

typedef struct tagEID_FIXED_PERSONAL_DATA
{
	char personalNumber[EID_MAX_PersonalNumber];
	int personalNumberSize;
	char surname[EID_MAX_Surname];
	int surnameSize;
	char givenName[EID_MAX_GivenName];
	int givenNameSize;
	char parentGivenName[EID_MAX_ParentGivenName];
	int parentGivenNameSize;
	char sex[EID_MAX_Sex];
	int sexSize;
	char placeOfBirth[EID_MAX_PlaceOfBirth];
	int placeOfBirthSize;
	char stateOfBirth[EID_MAX_StateOfBirth];
	int stateOfBirthSize;
	char dateOfBirth[EID_MAX_DateOfBirth];
	int dateOfBirthSize;
	char communityOfBirth[EID_MAX_CommunityOfBirth];
	int communityOfBirthSize;
} EID_FIXED_PERSONAL_DATA, *PEID_FIXED_PERSONAL_DATA;

typedef struct tagEID_VARIABLE_PERSONAL_DATA
{
	char state[EID_MAX_State];
	int stateSize;
	char community[EID_MAX_Community];
	int communitySize;
	char place[EID_MAX_Place];
	int placeSize;
	char street[EID_MAX_Street];
	int streetSize;
	char houseNumber[EID_MAX_HouseNumber];
	int houseNumberSize;
	char houseLetter[EID_MAX_HouseLetter];
	int houseLetterSize;
	char entrance[EID_MAX_Entrance];
	int entranceSize;
	char floor[EID_MAX_Floor];
	int floorSize;
	char apartmentNumber[EID_MAX_ApartmentNumber];
	int apartmentNumberSize;
} EID_VARIABLE_PERSONAL_DATA, *PEID_VARIABLE_PERSONAL_DATA;

typedef struct tagEID_PORTRAIT
{
	BYTE portrait[EID_MAX_Portrait];
	int portraitSize;
} EID_PORTRAIT, *PEID_PORTRAIT;


//
// Functions
//
EID_API int WINAPI EidStartup(int nApiVersion);
EID_API int WINAPI EidCleanup();

EID_API int WINAPI EidBeginRead(LPCSTR szReader);
EID_API int WINAPI EidEndRead();

EID_API int WINAPI EidReadDocumentData(PEID_DOCUMENT_DATA pData);
EID_API int WINAPI EidReadFixedPersonalData(PEID_FIXED_PERSONAL_DATA pData);
EID_API int WINAPI EidReadVariablePersonalData(PEID_VARIABLE_PERSONAL_DATA pData);
EID_API int WINAPI EidReadPortrait(PEID_PORTRAIT pData);


#ifdef __cplusplus
};
#endif

************************************************************************************************************************
einschließlich Datei  CelikApi.dll
Für die neue Struktur erhielt ich folgende Datei
************************************************************************************************************************
// CelikApi.h
//
#pragma once

#ifdef __cplusplus
extern "C" {
#endif

#ifndef WINAPI
#define WINAPI __stdcall
#endif

#ifndef EID_API
#define EID_API
#endif

#pragma pack(push, 4)

//
// Constants
//

// Size of all UTF-8 and binary fields in bytes

const int EID_MAX_DocRegNo = 9;
const int EID_MAX_DocumentType = 2;
const int EID_MAX_IssuingDate = 10;
const int EID_MAX_ExpiryDate = 10;
const int EID_MAX_IssuingAuthority = 100;

const int EID_MAX_PersonalNumber = 13;
const int EID_MAX_Surname = 200;
const int EID_MAX_GivenName = 200;
const int EID_MAX_ParentGivenName = 200;
const int EID_MAX_Sex = 2;
const int EID_MAX_PlaceOfBirth = 200;
const int EID_MAX_StateOfBirth = 200;
const int EID_MAX_DateOfBirth = 10;
const int EID_MAX_CommunityOfBirth = 200;

const int EID_MAX_State = 100;
const int EID_MAX_Community = 200;
const int EID_MAX_Place = 200;
const int EID_MAX_Street = 200;
const int EID_MAX_HouseNumber = 20;
const int EID_MAX_HouseLetter = 8;
const int EID_MAX_Entrance = 10;
const int EID_MAX_Floor = 6;
const int EID_MAX_ApartmentNumber = 12;
const int EID_MAX_AddressDate = 10;
const int EID_MAX_AddressLabel = 60;

const int EID_MAX_Portrait = 7700;

const int EID_MAX_Certificate = 2048;

//
// Option identifiers, used in function EidSetOption
//

const int EID_O_KEEP_CARD_CLOSED     = 1;

//
// Certificate types, used in function EidReadCertificate
//

const int EID_Cert_MoiIntermediateCA = 1;
const int EID_Cert_User1             = 2;
const int EID_Cert_User2             = 3;

//
// Block types, used in function EidVerifySignature
//

const int EID_SIG_CARD               = 1;
const int EID_SIG_FIXED              = 2;
const int EID_SIG_VARIABLE           = 3;
const int EID_SIG_PORTRAIT           = 4;

// For new card version EidVerifySignature function will return EID_E_UNABLE_TO_EXECUTE for
// parameter EID_SIG_PORTRAIT. Portrait is in new cards part of EID_SIG_FIXED. To determine
// the card version use second parameter of function EidBeginRead

//
// Function return values
//

const int EID_OK                            =  0;
const int EID_E_GENERAL_ERROR               = -1;
const int EID_E_INVALID_PARAMETER           = -2;
const int EID_E_VERSION_NOT_SUPPORTED       = -3;
const int EID_E_NOT_INITIALIZED             = -4;
const int EID_E_UNABLE_TO_EXECUTE           = -5;
const int EID_E_READER_ERROR                = -6;
const int EID_E_CARD_MISSING                = -7;
const int EID_E_CARD_UNKNOWN                = -8;
const int EID_E_CARD_MISMATCH               = -9;
const int EID_E_UNABLE_TO_OPEN_SESSION      = -10;
const int EID_E_DATA_MISSING                = -11;
const int EID_E_CARD_SECFORMAT_CHECK_ERROR  = -12;
const int EID_E_SECFORMAT_CHECK_CERT_ERROR  = -13;
const int EID_E_INVALID_PASSWORD            = -14;
const int EID_E_PIN_BLOCKED                 = -15;

//
// Structures
//

// NOTE: char arrays DO NOT have zero char at the end

typedef struct tagEID_DOCUMENT_DATA
{
	char docRegNo[EID_MAX_DocRegNo];
	int docRegNoSize;
	char documentType[EID_MAX_DocumentType];
	int documentTypeSize;
	char issuingDate[EID_MAX_IssuingDate];
	int issuingDateSize;
	char expiryDate[EID_MAX_ExpiryDate];
	int expiryDateSize;
	char issuingAuthority[EID_MAX_IssuingAuthority];
	int issuingAuthoritySize;
} EID_DOCUMENT_DATA, *PEID_DOCUMENT_DATA;

typedef struct tagEID_FIXED_PERSONAL_DATA
{
	char personalNumber[EID_MAX_PersonalNumber];
	int personalNumberSize;
	char surname[EID_MAX_Surname];
	int surnameSize;
	char givenName[EID_MAX_GivenName];
	int givenNameSize;
	char parentGivenName[EID_MAX_ParentGivenName];
	int parentGivenNameSize;
	char sex[EID_MAX_Sex];
	int sexSize;
	char placeOfBirth[EID_MAX_PlaceOfBirth];
	int placeOfBirthSize;
	char stateOfBirth[EID_MAX_StateOfBirth];
	int stateOfBirthSize;
	char dateOfBirth[EID_MAX_DateOfBirth];
	int dateOfBirthSize;
	char communityOfBirth[EID_MAX_CommunityOfBirth];
	int communityOfBirthSize;
} EID_FIXED_PERSONAL_DATA, *PEID_FIXED_PERSONAL_DATA;

typedef struct tagEID_VARIABLE_PERSONAL_DATA
{
	char state[EID_MAX_State];
	int stateSize;
	char community[EID_MAX_Community];
	int communitySize;
	char place[EID_MAX_Place];
	int placeSize;
	char street[EID_MAX_Street];
	int streetSize;
	char houseNumber[EID_MAX_HouseNumber];
	int houseNumberSize;
	char houseLetter[EID_MAX_HouseLetter];
	int houseLetterSize;
	char entrance[EID_MAX_Entrance];
	int entranceSize;
	char floor[EID_MAX_Floor];
	int floorSize;
	char apartmentNumber[EID_MAX_ApartmentNumber];
	int apartmentNumberSize;
	char addressDate[EID_MAX_AddressDate];
	int addressDateSize;
	char addressLabel[EID_MAX_AddressLabel];
	int addressLabelSize;
} EID_VARIABLE_PERSONAL_DATA, *PEID_VARIABLE_PERSONAL_DATA;

typedef struct tagEID_PORTRAIT
{
	BYTE portrait[EID_MAX_Portrait];
	int portraitSize;
} EID_PORTRAIT, *PEID_PORTRAIT;

typedef struct tagEID_CERTIFICATE
{
	BYTE certificate[EID_MAX_Certificate];
	int certificateSize;
} EID_CERTIFICATE, *PEID_CERTIFICATE;

//
// Functions
//

EID_API int WINAPI EidSetOption(int nOptionID, UINT_PTR nOptionValue);

EID_API int WINAPI EidStartup(int nApiVersion);
EID_API int WINAPI EidCleanup();

EID_API int WINAPI EidBeginRead(LPCSTR szReader, int* pnCardVersion = 0);
EID_API int WINAPI EidEndRead();

EID_API int WINAPI EidReadDocumentData(PEID_DOCUMENT_DATA pData);
EID_API int WINAPI EidReadFixedPersonalData(PEID_FIXED_PERSONAL_DATA pData);
EID_API int WINAPI EidReadVariablePersonalData(PEID_VARIABLE_PERSONAL_DATA pData);
EID_API int WINAPI EidReadPortrait(PEID_PORTRAIT pData);
EID_API int WINAPI EidReadCertificate(PEID_CERTIFICATE pData, int certificateType);

EID_API int WINAPI EidChangePassword(LPCSTR szOldPassword, LPCSTR szNewPassword, int* pnTriesLeft);
EID_API int WINAPI EidVerifySignature(UINT nSignatureID);


#pragma pack(pop)

#ifdef __cplusplus
};
#endif
einschließlich Datei CelikApi.dll, CelikApi.lib
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Reader ID-Karten

Beitrag von Herbert »

Was für ein Produkt ist die ID-Card? Anschluss seriell? USB?
Grüsse Herbert
Immer in Bewegung...
unavoda
Rookie
Rookie
Beiträge: 3
Registriert: Do, 25. Feb 2016 14:42

Re: Reader ID-Karten

Beitrag von unavoda »

USB
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Reader ID-Karten

Beitrag von AUGE_OHR »

unavoda hat geschrieben:Dieser teil des Codelese ist bis August 2014 zu funktionieren, wenn die MUP geändert struktur.
welche Xbase++ Version ? welche Windows Version ?

ich sehe STRUCTURE mit BAP . haben sich vielleicht die STRUCTURE geändert (mehr Member) ?
gruss by OHR
Jimmy
unavoda
Rookie
Rookie
Beiträge: 3
Registriert: Do, 25. Feb 2016 14:42

Re: Reader ID-Karten

Beitrag von unavoda »

Windows Ultimate 7
Xbase++ Version 2.0 CTP

Das ist die Struktur celikapi.ch, vor August 2014

Code: Alles auswählen

#ifndef __BAP_CH

#define __BAP_CH

/* defines for BaCallBack() */

// special defines
#define BA_CB_LPOFNHOOKPROC  100
#define BA_CB_ADDZIP         200

/* generic defines:
 * the number designates the number 
 * of parameters passed
 */
#define BA_CB_GENERIC1       401
#define BA_CB_GENERIC2       402
#define BA_CB_GENERIC3       403
#define BA_CB_GENERIC4       404
#define BA_CB_GENERIC5       405
#define BA_CB_GENERIC6       406
#define BA_CB_GENERIC7       407
#define BA_CB_GENERIC8       408
#define BA_CB_GENERIC9       409
#define BA_CB_GENERIC10      410

#pragma library ("bap.lib")
#endif
********************************************************************
Das ist die Struktur celikapi.ch, vor August 2014

/ CelikApi.h
//

//
// Constants
//

// Size of all UTF-8 fields in bytes

#include "bap.ch"


#define EID_MAX_DocRegNo  9
#define EID_MAX_IssuingDate  10
#define EID_MAX_ExpiryDate  10
#define EID_MAX_IssuingAuthority  30

#define EID_MAX_PersonalNumber  13
#define EID_MAX_Surname  60
#define EID_MAX_GivenName  40
#define EID_MAX_ParentGivenName  25
#define EID_MAX_Sex  2
#define EID_MAX_PlaceOfBirth  25
#define EID_MAX_StateOfBirth  25
#define EID_MAX_DateOfBirth  10
#define EID_MAX_CommunityOfBirth  25

#define EID_MAX_State  3
#define EID_MAX_Community  25
#define EID_MAX_Place  25
#define EID_MAX_Street  36
#define EID_MAX_HouseNumber  5
#define EID_MAX_HouseLetter  2
#define EID_MAX_Entrance  3
#define EID_MAX_Floor  3
#define EID_MAX_ApartmentNumber  6

#define EID_MAX_Portrait  7700

//
// Function return values
//

#define EID_OK                              0
#define EID_E_GENERAL_ERROR                -1
#define EID_E_INVALID_PARAMETER            -2
#define EID_E_VERSION_NOT_SUPPORTED        -3
#define EID_E_NOT_INITIALIZED              -4
#define EID_E_UNABLE_TO_EXECUTE            -5
#define EID_E_READER_ERROR                 -6
#define EID_E_CARD_MISSING                 -7
#define EID_E_CARD_UNKNOWN                 -8
#define EID_E_CARD_MISMATCH                -9
#define EID_E_UNABLE_TO_OPEN_SESSION       -10
#define EID_E_DATA_MISSING                 -11
#define EID_E_CARD_SECFORMAT_CHECK_ERROR   -12
#define EID_E_SECFORMAT_CHECK_CERT_ERROR   -13
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Reader ID-Karten

Beitrag von AUGE_OHR »

unavoda hat geschrieben:Windows Ultimate 7
Xbase++ Version 2.0 CTP
hm ... v2.x und BAP ...

wenn du die v2.x hast musst du ja eine aktive Subscription haben.
ich würde Alaska fragen ob es Änderungen für BAP gibt z.b. UTF-8
unavoda hat geschrieben:Das ist die Struktur celikapi.ch, vor August 2014
ich sehe nur Constanten, keine "typedef struct" !
die Frage ist ob die sich seit 2014/08 geändert haben ?
gruss by OHR
Jimmy
Antworten