Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

CelikApi problem kod očitavanja broja lične karte

[es] :: .NET :: CelikApi problem kod očitavanja broja lične karte

Strane: 1 2

[ Pregleda: 12508 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_owl_

Član broj: 318
Poruke: 1042
*.static.isp.telekom.rs.



+3 Profil

icon CelikApi problem kod očitavanja broja lične karte28.07.2011. u 12:46 - pre 95 meseci
Imam problem kod očitavanja elektronskih ličnih karata, koristim PInvoke (ispod se nalaze definicije u .NET-u).
Naizgled je sve ok, svi podaci se uspešno očitavaju jedino se podatak o broju lične karte (EID_DOCUMENT_DATA.DocRegNo) vraća sa 8 karaktera umesto 9 (fali poslednja cifra broja).
Da li neko ima ideju u čemu bi mogao biti problem?

Pokušao sam da predjem na CelikNET koji je mmx napravio ali sa njim imam problema u run-time-u (puca, i kaže da ne može da učita odgovarajuću verziju CelikNET-a, problem već prijavljen u tom thread-u).

Code:

    public class CelikApi {
        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;

        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;
        
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidStartup")]
        public static extern int EidStartup(int version);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidCleanup")]
        public static extern int EidCleanup();
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidBeginRead")]
        public static extern int EidBeginRead(string reader);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidEndRead")]
        public static extern int EidEndRead();
        //[DllImport("CelikApi.dll", CharSet = CharSet.Auto, EntryPopublic int = "EidReadFixedPersonalData")]
        //public static extern public int EidReadFixedPersonalData(EID_FIXED_PERSONAL_DATA fd);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidReadFixedPersonalData")]
        public static extern int EidReadFixedPersonalData(ref EID_FIXED_PERSONAL_DATA fd);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidReadDocumentData")]
        public static extern int EidReadDocumentData(ref EID_DOCUMENT_DATA dd);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidReadVariablePersonalData")]
        public static extern int EidReadVariablePersonalData(ref EID_VARIABLE_PERSONAL_DATA pd);
        [DllImport("CelikApi.dll", CharSet = CharSet.Ansi, EntryPoint = "EidReadPortrait")]
        public static extern int EidReadPortrait(ref EID_PORTRAIT pd);
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct EID_FIXED_PERSONAL_DATA {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 14)]
        public string personalNumber;
        public int personalNumberSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 60)]
        public string surname;
        public int surnameSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 40)]
        public string givenName;
        public int givenNameSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string parentGivenName;
        public int parentGivenNameSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string sex;
        public int sexSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string placeOfBirth;
        public int placeOfBirthSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string stateOfBirth;
        public int stateOfBirthSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)]
        public string dateOfBirth;
        public int dateOfBirthSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string communityOfBirth;
        public int communityOfBirthSize;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct EID_DOCUMENT_DATA {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
        public string docRegNo;
        public int docRegNoSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
        public string issuingDate;
        public int issuingDateSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 10)]
        public string expiryDate;
        public int expiryDateSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
        public string issuingAuthority;
        public int issuingAuthoritySize;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct EID_VARIABLE_PERSONAL_DATA {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string state;
        public int stateSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string community;
        public int communitySize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 25)]
        public string place;
        public int placeSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
        public string street;
        public int streetSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 5)]
        public string houseNumber;
        public int houseNumberSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 2)]
        public string houseLetter;
        public int houseLetterSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string entrance;
        public int entranceSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 3)]
        public string floor;
        public int floorSize;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
        public string apartmentNumber;
        public int apartmentNumberSize;
    }

    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
    public struct EID_PORTRAIT {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7700)]
        public byte[] portrait;
        public int portraitSize;
    }


CelikApi pozivam na sledeći način

Code:

                resultCode = CelikApi.EidBeginRead(readerName);
                ....
                EID_DOCUMENT_DATA dd = new EID_DOCUMENT_DATA();
                resultCode = CelikApi.EidReadDocumentData(ref dd);

Owl
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 5929



+4599 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte28.07.2011. u 12:53 - pre 95 meseci
Problem je sto platform invoke ne podrzava implicitno format stringova koje koristi celik. Apropo onog pitanja, ne postoji odgovarajuca verzija, postoji samo jedna i ako nju ne moze da ucita to moze samo da znaci da ili koristis 64bit proces ili DLL nije u exec folderu.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1042
*.static.isp.telekom.rs.



+3 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte28.07.2011. u 12:59 - pre 95 meseci
Ako je do formata stringova onda baš i nemam sreće da je puklo na jednom od podataka koji mi trebaju :P
Da li to znači da od PInovke-a nema leba?

Što se tiče CelikNET-a situacija je potpuno obrnuta :(
1. na Windows 7 x64 ConsoleTester radi kako treba.
2. na Windows XP x86 prijavljuje se greška oko učitavanja .dll-a (CelikNET.dll i CelikApi.dll se nalaze u istom direktorijumu u kome je i .exe)
Owl
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 5929



+4599 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte28.07.2011. u 13:04 - pre 95 meseci
Nema veze da li je OS 64bit, vazno je da li je proces 64bit. Na x86 su svi procesi x86 tako da treba da ga ucita, verovatno fali neko njegov depndency. Btw, en mogu da pronadjem tvoju poruku u celiknet temi
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte28.07.2011. u 15:59 - pre 95 meseci
Owl, fiksni niz u strukturi treba da maršaluješ kao niz bajtova, a ne kao string. Kad dobiješ .NET niz bajtova onda ga pretvori u string pomoću Encoding.UTF8, kao što je opisano u ovoj poruci: http://www.elitesecurity.org/t414992-0#2744334

Inače, mislim da je za sve bolje da napneš postojeće rešenje da radi i u tvom slučaju, i da ovde opišeš šta je potrebno unaprediti, nego da svako izmišlja sopstveno rešenje.
 
Odgovor na temu

_owl_

Član broj: 318
Poruke: 1042
*.static.isp.telekom.rs.



+3 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte29.07.2011. u 08:57 - pre 95 meseci
Problem je rešen, na osnovu predloga koji si dao u linkovanoj temi.
Umesto:
Code:

        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
        public string docRegNo;

Je stavljeno:
Code:

        [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.U8, SizeConst = 9)]
        public byte[] docRegNoMarshalled;

        public string docRegNo {
            get { return Encoding.UTF8.GetString(docRegNoMarshalled, 0, docRegNoSize); }
        }


Zanimljivo je da je u temi koju si linkovao problem bio sa očitavanjem JMBG-a (koji moj program bez problema očitava) a kod mene je problem bio u očitavanju broja lične karte. Pretpostavljam da ću sve znakovne podatke da očitavam kao bajtove pa da ću ih tek onda prebacivati u .NET stringove.



Owl
 
Odgovor na temu

savab

Član broj: 197447
Poruke: 6
212.200.85.*



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte24.01.2012. u 09:42 - pre 89 meseci
Zdravo svima.

Prvo da se puno zahvalim clanu _owl_ na kodu koji sam iskoristio a onda i ostalima na ovom forumu koji moraju da koriste taj celikapi.dll.
Imam sledeci problem. Napravio sam win aplikaciju u vs-2008 .net 3.5 i sve lepo radi cita sve sto mi treba iako sam morao da pravim i funkciju za prebacivanje cirilice u latinicu posto je licna karta pola na jednom a pola na drugom hahaha al dobro. Problem mi se javio kad sam hteo da sve to prebacim na web. Konkretno asp.net aplikaciju tu je krenuo da trazi jos neke dll koje kao fale ovom celikapi.dll-u. I sve sam ih skinuo stavio tamo al opet nece :( preko http://www.dependencywalker.com sam video sta mu sve treba. Takodje ni web servis nice da radi izbacuje istu gresku. Vrlo bih bio zahvalan ako neko ima neki predlog ideju kako da to resim.

U prilogu je i test win aplikacija VS 2008 .net 3.5 sa kompletnim kodom koja kod mene radi i to sa verzijama celikapi 1.0.2.1 celikapi 1.0.1.0

Pozdrav.

[Ovu poruku je menjao savab dana 24.01.2012. u 11:25 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

savab

Član broj: 197447
Poruke: 6
212.200.85.*



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte25.01.2012. u 09:30 - pre 89 meseci
Ljudi resenje je nadjeno i da se ne bi mucili sa direktivama kodom ili sta vec kako bi vam Celikapi radio u asp.net aplikacijama potrebno je samo isti Celikapi.dll prekopirati u windows\system32 folder i to je to.

Pozdrav.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 5929



+4599 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte25.01.2012. u 09:49 - pre 89 meseci
Jos da nadjes hostera koji ce da te pusti da bilo sta stavis u system32 folder
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12517



+4494 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte25.01.2012. u 09:58 - pre 89 meseci
Pa nije problem, samo ce morati da plati malko vise :) (vps/dedicated)
 
Odgovor na temu

DjBanchy
Beograd

Član broj: 168936
Poruke: 14
*.adsl.eunet.rs.



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte22.02.2012. u 10:47 - pre 88 meseci
Pozdrav svima,

Imam sledecu situaciju pa ako moze neka pomoc, a pokusacu da objasnim:

Firma u kojoj jos 'volontiram' ima softver pravljen u Access-u za ugostiteljske objekte, implementirali su citanje licnih karata u softver. I radi direktno citanje LK sa racunara i preko remote (inace nasa aplikacija uglavnom radi preko remote-a jer je palikacija na serveru). CelikApi radi na Windows Xp i WIndows 7, Windows Serveru 2003 i direktno. ALI, preko remote-a prijavljue: Greska broj -1. Opsta greska (CelikApi_citaj EidReadDocumentData) na Windows serveru 2008 i 2008 R2. Instalirao sam citac GEMALTO i uz njega ide GEMALTO minidriver, kopirao CelikApi.dll i .lib u c:\windows\system32. Da li ima neki detalj koji sam usput propustio ili je nesto vecih razmera, jer ne znam sta vise da probama ako gresim?

 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte22.02.2012. u 15:51 - pre 88 meseci
Znači imaš serversku mašinu, i imaš klijentsku mašinu, i sa klijentske mašine pristupaš serverskoj mašini preko Remote Desktop-a. Imam sledeća pitanja (donekle su povezana, ali ajmo jedno po jedno):

1. Gde se nalazi glavna aplikacija?
2. Gde se nalazi ČelikAPI?
3. Gde se nalazi čitač smart kartica?
4. Kad si konektovan na server preko remote desktopa i pokušavaš da pročitaš ličnu kartu, da li je istovremeno još neko konektovan?
5. Da li uz GEMALTOV minidrajver možda dolazi i neki alat koji može da čita osnovne podatke o kartici? Da li taj alat uspešno čita karticu?
 
Odgovor na temu

stmarko
Programer
Beograd

Član broj: 330283
Poruke: 2
195.46.53.*



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte21.08.2015. u 08:45 - pre 45 meseci
Zdravo svima :)

Ukoliko nije problem, mogao bih da se nadovežem na prethodna pitanja.
Dakle, na lokalnoj stanici (windows7, 64bits) postoji aplikacija koja poziva CelikNET.dll --> VS 2008, .NET 3,5. U Windows\system32 i Windows\SysWOW64 je postavljen CelikApi.dll, kao i u output direktorijumu. Aplikacija se bilduje kao 32-obitna, u release modu. Kada se aplikacija pokrene na lokalnoj stanici, čitanje kartice radi bez ikakvog problema.

Međutim, kada se bildovana aplikacija postavi na server (Windows server 2008 r2, 64bits, pristup serveru je putem RemoteDesktop-a), dolazi do greške (uz aplikaciju je postavljen i CelikApi.dll u odgovarajuće Windows direktorijume). Prvo čitanje LK prolazi bez problema (podaci se učitaju i prikažu), ali kada se ponovo pokrene akcija učitavanja LK, dolazi do greške: BeginRead nije izvršen; odnosno, prijavljuje se General error -1.
Deo koda koji izaziva grešku je u mojoj aplikaciji, prilikom instanciranja objekta iz CelikNet.dll-a:
using (CelikNET.CelikInterop x = new CelikNET.CelikInterop())
{
CelikNET.FixedPersonalData d1 = x.ReadFixedPersonalData();
...
}
Kod "puca" u prvoj liniji navedenog koda.


Da li je neko imao sličnih problema, kao i da li postoji rešenje? :)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte22.08.2015. u 09:50 - pre 45 meseci
Čelik zbog neke greške nije radio preko Remote Desktopa. Sačekaj do recimo utorka-srede na ispravku na sajtu MUP-a...
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte03.09.2015. u 15:46 - pre 45 meseci
Na sajtu MUP-a stoji nova verzija Čelika koja bolje radi preko Remote Desktopa. Tu je i novi API, ali tu nema ispravki koje se tiču Remote Desktopa. Doduše, tek sad vidim da ti imaš problem sa API-jem preko RD, a ne sa Čelik aplikacijom. Probaj novu verziju, pa ako radi onda super, a u suprotnom videćemo šta dalje.
 
Odgovor na temu

stmarko
Programer
Beograd

Član broj: 330283
Poruke: 2
195.46.53.*



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte02.10.2015. u 13:26 - pre 44 meseci
Izvinjavam se što se nisam ranije javio :)

Video sam novu verziju (čim je izašla) i ona nam je rešila problem. Hvala.
 
Odgovor na temu

sasafoto
fotograf
foto Sasa

Član broj: 332476
Poruke: 1
*.dynamic.isp.telekom.rs.



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte16.02.2016. u 11:18 - pre 39 meseci
problem sa citacem l.k. je sledeci windows 7, instalirana nova verzija softwera ocitava sve parametre sve verifikovano kad se stampa kad je pismo na cirilici sve su kockice sem imena i prezimena a kad je pismo na latinici samo je ime i prezime u kockicama; na drugom kompu koji je na XP stampa je kako treba
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Član broj: 37636
Poruke: 1223



+91 Profil

icon Re: CelikApi problem kod očitavanja broja lične karte16.02.2016. u 22:14 - pre 39 meseci
Probaj da napraviš prazan fajl na desktopu koji u imenu fajla ima ćirilična slova, restartuj kompjuter, pa vidi da li tada dobro štampa. Bitno je da fajl stoji na desktopu, i da ćirilična slova budu u imenu fajla.

 
Odgovor na temu

IkaZorkin
ivo ristović
održavanje sistema
ag kiki-ir
beograd, srbija

Član broj: 338199
Poruke: 7
*.dynamic.sbb.rs.



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte25.02.2018. u 13:37 - pre 15 meseci
Prijatelji, imam program koji ćita samo stare lične karte , znaći pre 18.08.2014, ali ne i nove,
pa me interesuje kako mogu da izmen postojeći program kako bi mogao da ćita i novije lične karte.
Unapred zahvalan Ivan
 
Odgovor na temu

IkaZorkin
ivo ristović
održavanje sistema
ag kiki-ir
beograd, srbija

Član broj: 338199
Poruke: 7
*.dynamic.sbb.rs.



Profil

icon Re: CelikApi problem kod očitavanja broja lične karte25.02.2018. u 13:48 - pre 15 meseci
Naravno koristim access 2003 i znam da je tema bajata, ali nemam kud.
 
Odgovor na temu

[es] :: .NET :: CelikApi problem kod očitavanja broja lične karte

Strane: 1 2

[ Pregleda: 12508 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.