Überprüfen Sie die aktuelle Baudrate -Rate -Funktion SDT_GetCombaud (iPort: Integer; Puibaudrate: Pinteger): Integer; stdcall; external'Sdtapi.dll '; {iport [in] die Port, Puibaudrate [OUT] Unsigned Trottel, zeigte auf die aktuelle Welle von der aktuellen Welle der Welle von der gegenwärtigen Welle der Welle von der gegenwärtigen Welle der Welle von Puibaudrate [out], der auf die aktuelle Welle von der aktuellen Welle von der gegenwärtigen Welle von der gegenwärtigen Welle von Puibaudrate zeigt, auf die aktuelle Welle von der aktuellen Welle von Puibaudrate, die auf die aktuelle Welle von der gegenwärtigen Welle von Zeugnis zu Der normale serielle Port-Sonderpreis, der Rückgabewert 0x90-SUCCESS, der 0x1-Port-Öffnen fehlgeschlagen/Portnummer ist illegal, 0x5 kann die Baud-Rate von SAM_V nicht erhalten und der serielle Port ist nicht verfügbar. }
Legen Sie die Baud -Rate -Funktion des sam_v seriellen port sdt_stetcombaud (iport: Integer; uicurrbaud: Integer; Uisetbaud: Integer): Integer; stdcall; external'sdtapi.dll '; Um die API zu ändern, kann die zuvor festgelegte Kommunikation mit SAM_V festgelegt werden (Fabrikverlagerung beträgt 115200). Wenn der UICURBAUD -Wert nicht einer dieser Werte ist, gibt die Funktion 0x21 zurück. Die von UISETBAUD [IN] festgelegte SAM_V-Baud-Rate kann nur für diese Werte verwendet werden (wie oben) , 0x1-Port-Öffnung fehlgeschlagen/Portnummer ist illegal, 0x2-Zeitout, die Einstellung ist nicht erfolgreich, die Eingabeparameter von 0x21-Uicurrbaud und UisetBaud sind falsch}
Open Serial Port/USB-Funktion SDT_OPENPORT (IPORT: Integer): Integer; stdcall; external'Sdtapi.dll '; ) ist der USB -Anschluss, der Standard -USB -Geräteport beträgt 1001. Funktion Rückgabe 0x90 - Der Port wird erfolgreich geöffnet, 1 - Der Port ist fehlgeschlagen / die Portnummer ist illegal}
Schließen Sie den seriellen Port/USBfunction SDT_CLOSEST (iPort: Integer): Integer; stdcall; external'Sdtapi.dll '; }
Reset-Funktion SDT_RESETSAM (IPORT: Integer; Ilfopen: Integer): Integer; Stdcall; externe'sdtapi.dll '; , USB: 1001-1016. Ilfopen [IN] bedeutet, dass der serielle Anschluss nicht in der Funktion geöffnet und geschlossen wird. Wert 0x90 - erfolgreich, andere Fehler}
Legen Sie die maximale Anzahl von Kommunikationsbytes der RF -Adapterfunktion SDT_SetMaxrfByte (IPORT: Integer; UcByte: char; blfopen: Integer): Integer; Stdcall; external'Sdtapi.dll '; ] ist unsignedes Zeichen, 24-255, repräsentiert die maximale Anzahl von Kommunikationsbytes des RF-Adapters, ilfopen [in] siehe SDT_RESETSAM-RETSAM-Wert 0x90-SUCCESS, Other-Failure}
Statuserkennungsfunktion auf SAM_V SDT_GetSamStatus (IPORT: Integer; Ilfopen: Integer): Integer; 0x60 -selbst konnte nicht überprüft werden, dass keine Befehle empfangen werden können, andere - Befehl fehlgeschlagen}
Lesen Sie die Anzahl der SAM_V -Funktion sdt_getsamid (iPort: Integer; pussamid: pByte; ilfopen: Integer): Integer; stdcall; external'Sdtapi.dll '; Nummer, 16 Bytes, Rückgabewert 0x90 - erfolgreich, andere - fehlgeschlagen}
Lesen Sie die Anzahl der SAM_V -Funktion sdt_getsamidtostr (iPort: Integer; pcsamid: pByte; ilfopen: Integer): Integer; stdcall; external'sdtapi.dll '; [In] Integer siehe SDT_RESETSAM RETURAUS VALUE 0x90 - SUPACT, ONDERE - FAILED}
Beginnen Sie mit der Suche nach Kartenfunktion SDT_StartFindidCard (iPort: Integer; pucmanainfo: pByte; ilfopen: Integer): Integer; stdcall; external'sdtapi.dll '; Kartenchip-Verwaltungsnummer, 4 Bytes, Ilfopen [in] siehe erfolgreich SDT_RESETSAM-Rückgabewert 0x9f-Card-Suche, 0x80-Card-Suche fehlgeschlagen} Kartenauswahlfunktion SDT_SELECTIDCARD (IPORT: INTEGER; PUCMANAMSG: PBYTE; External'Sdtapi.dll '; {iport [in] zeigt die Portnummer an, die serielle Nummer, die Nr. Kartenauswahl fehlgeschlagen}
Lesen Sie die Kartenverwaltungsnummer -Funktion SDT_READMNGINFO (iPort: Integer; pucmanagemsg: pByte; ilfopen: Integer): Integer; Stdcall; external'sdtapi.dll '; Verwaltungsnummer, 28 Bytes, Ilfopen [in] Rückgabewert 0x90 - erfolgreich, andere - gelesen fehlgeschlagen}
Lesen Sie Zertifikat/Card Fixe Information Function SDT_READBASEMSG (IPORT: Integer; pucchmsg: pByte; puichmsglen: pinterger; pucphmsg: pByte; puiphmsglen: pinteger; Repräsentiert die Portnummer, pucchmsg [out] verweist auf die Lesetextinformationen, Puichmsglen [Out] zeigt auf die Lesetextinformationen Länge PUCPHMSG [OUT] auf die Lesefotoinformationen, Puiphmsglen [out] auf die Länge der Lesenfotoinformationen, Länge, Länge der Lesen. Ilfopen [in] siehe SDT_RESETSAM RETURACH VURTE 0x90 - Lesen Sie die festgelegten Informationen erfolgreich. Andere Lesendinformationen fehlgeschlagen}
Lesen Sie zusätzliche Informationsfunktion SDT_READNEWAPPMSG (IPORT: Integer; pucappmsg: pByte; puiappmsglen: pinteger; ilfopen: Integer): Ganzzahl; stdcall; external'sdtapi.dll '; Zeigt auf die zusätzlichen Informationen an, puiappmsglen [out] auf die zusätzliche Informationslänge, ilfopen [in] siehe SDT_RESETSAM RETSAM -Wert 0x90 - Die zusätzlichen Informationen sind erfolgreich, andere - die zusätzlichen Informationen fehlgeschlagen}}}
Fotodekodierungsfunktion Funktion getbmp (Wlt_file: pchar, intf: Integer): Integer; stdcall; external'wltrs.dll '; Rückgabewert: Generieren *.bmp und die folgenden Rückgabeinformationen: 1-Photo-Dekodierung ist korrekt, 0-Call-Fehler beim Aufrufen von sdtapi.dll, -1-Photo-Decodierung ist Fehler, -2-WLT-Datei-Suffixfehler, -3-WLT Eröffnungsfehler, -4 -WLT -Dateiformatfehler, -5 -Software nicht autorisiert, -6 -Device -Verbindungsfehler}
Quellcode:
Einheit Idreader; Bitte ersetzen Sie die Karte! '; TIP_ICREADER_READ_FAILED =' KARTE -LESUNG fehlgeschlagen! '; TIP_ICREADER_CALL_DLL_FAILED =' CALL ERROR RUFEN SDTAPI.DLL! '; TIP_ICREADER_PICTURE_DECODE_FAILED =' FOTO -Decodierungsfehler! '; TIP_ICREADER_WLT_FILE_EXTEND_FAILED =' WLT -Datei -Suffix -Fehler! '; TIP_ICREADER_WLT_FILE_OPEN_FAILED =' WLT -Datei Öffnungsfehler! '; TIP_ICREADER_WLT_FILE_FORMAT_FAILED =' WLT -Dateiformat ist falsch! '; Tip_icreader_no_license =' Software ist nicht autorisiert! '; TIP_ICREADER_DEVICE_FAILED =' Geräteverbindungsfehler! '; TIP_PRINT_NO_CARD_FOUND =' Es wurden keine ID -Karteninformationen gefunden. '; TIP_ICREADER_SAVE_SUCCESS =' erfolgreich speichern. Die Identitätsinformationen wurden automatisch in die lokale Datenbank eingegeben! '; TIP_ICREADER_BLACK_CARD_FOUND =' Die in der Blacklist enthaltenen Personen wurden gefunden! '; Error_icreader_open_port =' Der Port hat nicht geöffnet. Überprüfen Sie bitte den entsprechenden Port oder verbinden Sie den Kartenleser wieder! '; TypetidcardInfo = Packed RecordName: Array [0..14] von Widechar; Sex: Array [0..0] von Widechar; Nation: Array [0..1] von Widechar; Geburtstag: Array [0..7] von Widechar; ADDR: Array [0..34] von Widechar; IDSN: Array [0..17] von Widechar; Effektivitätsorganis: Array [0..14] von Widechar; Vaildbein: Array [0..7] von Widechar ; VailDend: Array [0..7] von Widechar; : Integer): Integer; SelectIdCard (iPortID: Integer; Var Puciin: Integer; en: Ganzzahl) : Integer; ternaler dll_sdtapi Name ' SDT_READBASEMSGTOFILE '; IC: TStrings; Funktion Ethnicnotoname (Ano: String): String; beginResult: = lstethnisch. Copy (Avalue, 5, 2) + '-' + Copy (Avalue, 7, 2); Ende; Funktion lesende Karten (var acardInfo: tidcardInfo; var aermsg: String): boolIport: variport: Integer; integer; Boolean; edziportid: Integer; Iret: Integer; Puciin: Integer; Edziifopen: Integer; Pucsn: Integer; Puichmsglen: Integer; Puiphmsglen: Integer; // Ergebnis: = false; Busbport: = false; edziifopen: = 1; edziportid: = 0; = 1001 bis 1016 DEBEGINININGOPENPORTRTN: = SDT_OPENPORT (IPORT); wenn intopenportrtn = 144 ThenBeginedIportid: = IPORT; BUSBPORT: = True; Ende; Ende; Ende; // Erkennung der Geräteverbindung des Seriennports, wenn nicht bubporther -thenfegin -iport iport iport iPort: = 1 bis 2 doBeginIntopenPorTrtn: = SDT_OPENPORT (iPort); wenn intopenportrtn = 144 thenBeginedziportid: = iport; busbport: = false; end; end; end; end; if intopenportertn <> 144 thenbegin/application.messagebox (error_icrader); AERRMSG: = ERROR_ICREADER_OPEN_PORT; ERGEBNIS: = FALSE; END; // Suchen Sie nach Karten iret: = sdt_startfindidcard (edziportid, puciin, edziifopen); if iRet <> 159 thenbeginiret: = Sdtartfindfindidcard (edziportidcard (edziportidcard); Suchen Sie nach Karte, wenn iret <> 159 thenbeginsdt_closeport (edziportid); // application.messageBox (TIP_ICREADER_NO_CARD, TIP_TITLE); , pucsn, edziifopen); wenn iret <> 144 thenbeginiret: = sdt_selectCard (edziportid, pucsn, edziifopen); Er_Read_Failed; Ergebnis : = False; beenden; Ende; Ende; // Beachten Sie, dass der Benutzer hier hier die Berechtigungen des aktuellen Verzeichnisses der Anwendung gelesen und geschrieben haben muss, wenn File ('wz.txt') dann sysutils.deleteFile ('wz.txt' ); wenn file exists ('zp.bmp'), dann sysutils.deleteFile ('zp.bmp'); if FileExists ('zp.wlt'), dann sysutils.deletefile ('zp.wlt'); // pansichar (ansistring (ansistring (ansistring STR)) IRET: = SDT_READBASEMSGTOFILE (EDZIPORTID, PANsichar (Ansistring ('Wz.txt'), Puichmsglen, Pansichar (Ansistring ('Zp.wlt'), Puiphmsglen, 1); ; // Application.MessageBox (TIP_ICREADER_READ_FAILED, TIP_TITLE); Hersteller im Wurzelverzeichnis der C -Festplatte scheitert die Fotoauflösung, wenn Busbport theniret: = getbmp (Pansichar (Ansistring ('Zp.wlt'), 2) anhersiret: = getbmp (Pansichar (Ansistring ('Zp.wlt' )), 1); Case IRET OF0: BeginnAntplication Extend_failed , Tip_title); Ende; -3: beginAntplication _Title); Ende; -6 : beginApplication.messagebox (TIP_ICREADER_DEVICE_FAILED, TIP_TITLE); End; Ende; Sdt_closeport (edziportid); AcardInfo)); ; // Ethnisch: Ethnicnotoname (AnSstring (idcardInfo.nation)); // Jahr des Geburtsjahres und Datum: FormatDatestern (Ansistring (idcardInfo.birthday)); // Adresse: Adresse: = trim (Ansisting (idcardInfo.Addr)))))) ; // ID -Nummer: id: = trim (Ansistring (idCardInfo.idsn));//Zertifikatausstellungsbehörde: Ort: = Trim (Ansistring (idCardInfo.Issueorgan)); // Gebührendatum begin ValidDatestart: = FormatDestest (ANSISTRING (ANSISTRING (ANSISTRING idcardInfo.vaildbegin)); // Fee Datum End If TRIM (Ansisting (idcardInfo.vailDend)) = 'Long-Term' then // validDateend: = formatDateTime ('yyy-mm-dd', MaxDatetime) // sonst // ValidDateend: = formatdateSt (ansisting (idCardInfo.VailDend)); // Ergebnis: = true; ' +' = ' +' Mongol '); add ('03' + '=' + 'hui people'); = ' +' Uyghur people '); add ('06' + '=' + 'miao people'); + 'Zhuang people'); add ('09 ' +' = ' +' buyi people '); add (' 10 ' +' = ' +' Korean '); '); Add ('12' + '=' + 'dong'); add ('13 ' +' = ' +' yao people '); add ('14' + '=' + 'bai people'); Add ('15 ' +' = ' +' tujia people '); add ('16' + '=' + 'hani people'); 18 ' +' = ' +' dai people '); add ('19' + '=' + 'li people'); + '=' + 'Wa people'); add ('22 ' +' = ' +' sie people '); add (' 23 ' +' = ' +' High Mountain Tribe '); '=' + 'Lahu Tribe'); add ('25 ' +' = ' +' Aqua Tribe '); ' +' Naxi people '); add ('28' + '=' + 'Jingpo people'); add ('29 ' +' = ' +' kirgiz '); add ('30' + '=' + '' Tu '); add ('31' + '=' + 'Dahan'); add ('32 ' +' = ' +' mullao '); add ('33' + '=' + 'qiang'); ('34' + '=' + 'Brown'); add ('35 ' +' = ' +' Salar Tribe '); add ('36' + '=' + 'Maonan Tribe'); ' +' = ' +' Gelao Tribe '); add ('38' + '=' + 'xibe Stamm'); '=' + 'Pumi Tribe'); add ('41 ' +' = ' +' Tajik Tribe '); ' +' Uzbek Tribe '); add ('44' + '=' + 'Russian Tribe'); De'ang '); add ('47' + '=' + 'baoan'); add ('48 ' +' = ' +' yugu Tribe '); add ('49' + '=' + 'Jing Tribe '); Add ('50' + '=' + 'Tatar Tribe'); add ('51 ' +' = ' +' Dulong Clan '); ; Add ('53 ' +' = ' +' hezhe clan '); 56 ' +' = ' +' Kino '); add ('57' + '=' + 'Andere'); .//Please vorab vorab sdtapi.