国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > Delphi > 正文

二代身份證讀卡器接口函數Delphi聲明

2019-11-06 08:21:27
字體:
來源:轉載
供稿:網友

查看串口當前波特率function SDT_GetCOMBaud(iport: integer; puiBaudRate: Pinteger): integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口,puiBaudRate[out]無符號指針,指向普通串口當前波特率,返回值0X90-成功,0x1-端口打開失敗/端口號不合法,0x5無法獲得SAM_V的波特率,串口不可用。}

設置SAM_V的串口的波特率function SDT_StetCOMBaud(iPort: integer; uiCurrBaud: integer; uiSetBaud: integer): integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口, uiCurrBaud[in]調用改API前已設置的業務終端與SAM_V通信的波特率(出廠默認為115200)uiCurrBaud只能為115200,57600,378400,19200,9600。如果uiCurrBaud數值不是這些值之一,函數返回0x21,如果和已設置的不一樣,函數返回0x02表示不能設置調用API不成功。uiSetBaud[in]將要設置的SAM_V波特率,只能為(同上)那些值,如果不是這些數值,返回也同上函數返回0x90-成功,0x1-端口打開失敗/端口號不合法,0x2-超時,設置不成功,0x21-uiCurrBaud、uiSetBaud輸入參數數值錯誤}

打開串口/USBfunction SDT_OpenPort(iPort: integer): integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,1-16(十進制)為串口,1001-1016(十進制)為USB口,缺省的一個USB設備端口是1001。函數返回0x90-打開端口成功,1-打開端口失敗/端口號不合法}

關閉串口/USBfunction SDT_ClosePort(iPort: integer): integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,返回值0x90-關閉串口成功,0x01-端口號不合法}

對SAM_V復位function SDT_ResetSAM(iPort: integer; ilfOpen: integer): integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,目前串口和USB只支持16個,串口:0001-0016,USB:1001-1016。ilfOpen[in]表示不在該函數內部打開和關閉串口,非0表示在API函數內部包含了打開串口和關閉串口函數,之前不需要調用SDT_OpenPort和SDT_ClosePort返回值0x90-成功,其他 失敗}

設置射頻適配器最大通信字節數function SDT_SetMaxRFByte(iPort: integer;ucByte: Char;blfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,ucByte[in]無符號字符,24-255,表示射頻適配器最大通信字節數,ilfOpen[in]參見SDT_ResetSAM返回值0x90-成功,其他-失敗}

對SAM_V進行狀態檢測function SDT_GetSAMStatus(iPort: integer;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,ilfOpen參見SDT_ResetSAM返回值0x90-SAM_V正常,0x60-自檢失敗,不能接收命令,其他-命令失敗}

讀取SAM_V的編號function SDT_GetSAMID(iPort: integer;pusSAMID: Pbyte;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,pusSAMID[out]無符號字符串指針SAM_V編號,16字節,返回值0x90-成功,其他-失敗}

讀取SAM_V的編號function SDT_GetSAMIDToStr(iPort: integer;pcSAMID: Pbyte;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iport[in]表示端口號,pusSAMID[out]SAM_V編號,ilfOpen[in]整數,參見SDT_ResetSAM返回值0x90-成功,其他-失敗}

開始找卡function SDT_StartFindIDCard(iPort: integer;pucManaInfo: Pbyte; ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iport[in]表示端口號,pucManaInfo[out]無符號指針,證/卡芯片管理號,4個字節,ilfOpen[in]參見SDT_ResetSAM返回值0x9f-找卡成功,0x80-找卡失敗}選卡function SDT_SelectIDCard(iPort: integer;pucManaMsg: Pbyte;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,pucManaMsg[out]無符號指針,證/卡芯片序列號,8個字節,ilfOpen[in]參見SDT_ResetSAM返回值0x90-選卡成功,0x81-選卡失敗}

讀取卡體管理號function SDT_ReadMngInfo(iPort: integer;pucManageMsg: Pbyte;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,pucManageMsg[out]無符號字符指針,卡體管理號,28字節,ilfOpen[in]返回值0x90-成功,其他-讀失敗}

讀取證/卡固定信息function SDT_ReadBaseMsg(iPort: integer;pucCHMsg: Pbyte;puiCHMsgLen: Pinteger;pucPHMsg: Pbyte;puiPHMsgLen: Pinteger;ilfOpen: integer):integer;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,pucCHMsg[out]指向讀到的文字信息,puiCHMsgLen[out]指向讀到的文字信息長度pucPHMsg[out]指向讀到的照片信息,puiPHMsgLen[out]指向讀到的照片信息長度,ilfOpen[in]參見SDT_ResetSAM返回值0x90-讀固定信息成功,其他讀固定信息失敗}

讀取追加信息function SDT_ReadNewAppMsg(iPort: integer;pucAppMsg: Pbyte;puiAppMsgLen: Pinteger;ilfOpen: integer):integer;;stdcall;External'SDTAPI.DLL';{iPort[in]表示端口號,pucAppMsg[out]指向讀到的追加信息,puiAppMsgLen[out]指向讀到的追加信息長度,ilfOpen[in]參見SDT_ResetSAM返回值0x90-讀取追加信息成功,其他-讀取追加信息失敗}

照片解碼函數function GetBmp(Wlt_File: PChar,intf: integer):integer;stdcall;External'WltRS.dll';{Wlt_File-wlt文件名,intf閱讀設備通訊接口類型(1-RS-232C,2-USB)返回值:生成*.bmp和以下返回信息:1-相片解碼正確,0-調用sdtapi.dll錯誤,-1-相片解碼錯誤,-2-wlt文件后綴錯誤,-3-wlt文件打開錯誤,-4-wlt文件格式錯誤,-5-軟件未授權,-6-設備連接錯誤}

源代碼:

unit IdReader;interfaceusesSysUtils,Windows,Forms,uDatabase;constDLL_SDTAPI = 'sdtapi.dll';DLL_WLTRS = 'WltRS.dll';//提示信息TIP_TITLE = '提示';TIP_ICREADER_NO_CARD = '未放卡或者卡未放好,請重新放卡!';TIP_ICREADER_READ_FAILED = '讀卡失敗!';TIP_ICREADER_CALL_DLL_FAILED = '調用sdtapi.dll錯誤!';TIP_ICREADER_PICTURE_DECODE_FAILED = '相片解碼錯誤!';TIP_ICREADER_WLT_FILE_EXTEND_FAILED = 'wlt文件后綴錯誤!';TIP_ICREADER_WLT_FILE_OPEN_FAILED = 'wlt文件打開錯誤!';TIP_ICREADER_WLT_FILE_FORMAT_FAILED = 'wlt文件格式錯誤!';TIP_ICREADER_NO_LICENSE = '軟件未授權!';TIP_ICREADER_DEVICE_FAILED = '設備連接錯誤!';TIP_PRINT_NO_CARD_FOUND = '未找到身份證相關信息,請將證件放在天線上后重試!';TIP_ICREADER_SAVE_SUCCESS = '保存成功,身份信息已自動錄入本地數據庫!';TIP_ICREADER_BLACK_CARD_FOUND = '發現黑名單內包括的人員!';ERROR_ICREADER_OPEN_PORT = '端口打開失敗,請檢測相應的端口或者重新連接讀卡器!';typeTIdCardInfo = packed recordName: array[0..14] of WideChar;Sex : array[0..0] of WideChar;Nation: array[0..1] of WideChar;BirthDay:array[0..7] of WideChar;Addr : array[0..34] of WideChar;IdSN : array[0..17] of WideChar;IssueOrgan: array[0..14] of WideChar;VaildBegin: array[0..7] of WideChar;VaildEnd : array[0..7] of WideChar;theNewestAddr: array[0..34] of WideChar;end;function SDT_OpenPort(iPortID: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_OpenPort';function SDT_ClosePort(iPortID: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_ClosePort';function SDT_StartFindIDCard(iPortID: Integer; var pucIIN: Integer; iIfOpen: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_StartFindIDCard';function SDT_SelectIDCard(iPortID: Integer; var pucIIN: Integer; iIfOpen: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_SelectIDCard';function SDT_ReadBaseMsg(iPortID: Integer; pucCHMsg: PAnsiChar; var puiCHMsgLen: Integer; pucPHMsg: PAnsiChar; var puiPHMsgLen: Integer; iIfOpen: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_ReadBaseMsg';function SDT_ReadBaseMsgToFile(iPortID: Integer; fileName1: PAnsiChar; var puiCHMsgLen: Integer; fileName2: PAnsiChar; var puiPHMsgLen: Integer; iIfOpen: Integer): Integer; stdcall; external DLL_SDTAPI name 'SDT_ReadBaseMsgToFile';function GetBmp(file_name: PAnsiChar; intf: Integer): Integer; stdcall; external DLL_WLTRS name 'GetBmp';function ReadICCard(var ACardInfo: TCardInfo; var AErrMsg: string): Boolean;implementationusesClasses, Dialogs, uResource;varLstEthnic: TStrings;function EthnicNoToName(ANo: string): string;beginResult:= LstEthnic.Values[ANo];end;function FormatDateStr(AValue: string): string;beginResult:= Copy(AValue, 1, 4) + '-' +Copy(AValue, 5, 2) + '-' +Copy(AValue, 7, 2);end;function ReadICCard(var ACardInfo: TIdCardInfo; var AErrMsg: string): Boolean;variPort: Integer;intOpenPortRtn: Integer;bUsbPort: Boolean;EdziPortID: Integer;iRet: Integer;pucIIN: Integer;EdziIfOpen: Integer;pucSN: Integer;puiCHMsgLen: Integer;puiPHMsgLen: Integer;fs: TFileStream;idCardInfo:TIdCardInfo;//FileHandle: Integer;beginAErrMsg:= '';//Result:= False;bUsbPort:= False;EdziIfOpen:= 1;EdziPortID:= 0;puiCHMsgLen:= 0;puiPHMsgLen:= 0;//檢測usb口的機具連接,必須先檢測usbfor iPort := 1001 to 1016 dobeginintOpenPortRtn:= SDT_OpenPort(iPort);if intOpenPortRtn = 144 thenbeginEdziPortID:= iPort;bUsbPort:= true;break;end;end;//檢測串口的機具連接if not bUsbPort thenbeginfor iPort := 1 to 2 dobeginintOpenPortRtn:= SDT_OpenPort(iPort);if intOpenPortRtn = 144 thenbeginEdziPortID:= iPort;bUsbPort:= False;Break;end;end;end;if intOpenPortRtn <> 144 thenbegin//application.MessageBox(ERROR_ICREADER_OPEN_PORT, ERROR_TITLE);AErrMsg:= ERROR_ICREADER_OPEN_PORT;Result:= False;Exit;end;//下面找卡iRet:= SDT_StartFindIDCard(EdziPortID, pucIIN, EdziIfOpen);if iRet <> 159 thenbeginiRet:= SDT_StartFindIDCard(EdziPortID, pucIIN, EdziIfOpen);//再找卡if iRet <> 159 thenbeginSDT_ClosePort(EdziPortID);//Application.MessageBox(TIP_ICREADER_NO_CARD, TIP_TITLE);AErrMsg:= TIP_ICREADER_NO_CARD;Result:= False;Exit;end;end;//選卡iRet:= SDT_SelectIDCard(EdziPortID, pucSN, EdziIfOpen);if iRet <> 144 thenbeginiRet:= SDT_SelectIDCard(EdziPortID, pucSN, EdziIfOpen);if iRet <> 144 thenbeginSDT_ClosePort(EdziPortID);//Application.MessageBox(TIP_ICREADER_READ_FAILED, TIP_TITLE);AErrMsg:= TIP_ICREADER_READ_FAILED;Result:= False;Exit;end;end;//注意,在這里,用戶必須有應用程序當前目錄的讀寫權限if FileExists('wz.txt') then SysUtils.DeleteFile('wz.txt');if FileExists('zp.bmp') then SysUtils.DeleteFile('zp.bmp');if FileExists('zp.wlt') then SysUtils.DeleteFile('zp.wlt');//PAnsiChar(AnsiString(Str))iRet:= SDT_ReadBaseMsgToFile(EdziPortID, PAnsiChar(AnsiString('wz.txt')), puiCHMsgLen, PAnsiChar(AnsiString('zp.wlt')), puiPHMsgLen, 1);if iRet <> 144 thenbeginSDT_ClosePort(EdziPortID);//Application.MessageBox(TIP_ICREADER_READ_FAILED, TIP_TITLE);AErrMsg:= TIP_ICREADER_READ_FAILED;Result:= False;Exit;end;//下面解析照片,注意,如果在C盤根目錄下沒有機具廠商的授權文件Termb.Lic,照片解析將會失敗if bUsbPort theniRet:= GetBmp(PAnsiChar(AnsiString('zp.wlt')), 2)elseiRet:= GetBmp(PAnsiChar(AnsiString('zp.wlt')), 1);case iRet of0:beginApplication.MessageBox(TIP_ICREADER_CALL_DLL_FAILED, TIP_TITLE);end;1: //正常beginend;-1:beginApplication.MessageBox(TIP_ICREADER_PICTURE_DECODE_FAILED, TIP_TITLE);end;-2:beginApplication.MessageBox(TIP_ICREADER_WLT_FILE_EXTEND_FAILED, TIP_TITLE);end;-3:beginApplication.MessageBox(TIP_ICREADER_WLT_FILE_OPEN_FAILED, TIP_TITLE);end;-4:beginApplication.MessageBox(TIP_ICREADER_WLT_FILE_FORMAT_FAILED, TIP_TITLE);end;-5:beginApplication.MessageBox(TIP_ICREADER_NO_LICENSE, TIP_TITLE);end;-6:beginApplication.MessageBox(TIP_ICREADER_DEVICE_FAILED, TIP_TITLE);end;end;SDT_ClosePort(EdziPortID);fs:= TFileStream.Create('wz.txt', fmOpenRead);fs.Position:= 0;fs.Read(ACardInfo ,SizeOf(ACardInfo));fs.Free;//// 姓名 :AnsiString(idCardInfo.Name);// 性別 : if AnsiString(idCardInfo.Sex)= '1' then 性別:= '男' else 性別:= '女';// 民族 : EthnicNoToName(AnsiString(idCardInfo.Nation));// 出生年月日: FormatDateStr(AnsiString(idCardInfo.BirthDay));// 住址: Address:= Trim(AnsiString(idCardInfo.Addr));//身份證號碼: Id:= Trim(AnsiString(idCardInfo.IdSN));//發證機構: Place:= Trim(AnsiString(idCardInfo.IssueOrgan));//有效日期開始 ValidDateStart:= FormatDateStr(AnsiString(idCardInfo.VaildBegin));//有效日期結束 if Trim(AnsiString(idCardInfo.VaildEnd)) = '長期' then// ValidDateEnd:= FormatDateTime('yyyy-MM-dd', MaxDateTime)// else// ValidDateEnd:= FormatDateStr(AnsiString(idCardInfo.VaildEnd));//Result:= True;end;initializationLstEthnic:= TStringList.Create;with LstEthnic dobeginAdd('01' + '=' + '漢族');Add('02' + '=' + '蒙古族');Add('03' + '=' + '回族');Add('04' + '=' + '藏族');Add('05' + '=' + '維吾爾族');Add('06' + '=' + '苗族');Add('07' + '=' + '彝族');Add('08' + '=' + '壯族');Add('09' + '=' + '布依族');Add('10' + '=' + '朝鮮族');Add('11' + '=' + '滿族');Add('12' + '=' + '侗族');Add('13' + '=' + '瑤族');Add('14' + '=' + '白族');Add('15' + '=' + '土家族');Add('16' + '=' + '哈尼族');Add('17' + '=' + '哈薩克族');Add('18' + '=' + '傣族');Add('19' + '=' + '黎族');Add('20' + '=' + '傈僳族');Add('21' + '=' + '佤族');Add('22' + '=' + '畬族');Add('23' + '=' + '高山族');Add('24' + '=' + '拉祜族');Add('25' + '=' + '水族');Add('26' + '=' + '東鄉族');Add('27' + '=' + '納西族');Add('28' + '=' + '景頗族');Add('29' + '=' + '柯爾克孜族');Add('30' + '=' + '土族');Add('31' + '=' + '達翰爾族');Add('32' + '=' + '仫佬族');Add('33' + '=' + '羌族');Add('34' + '=' + '布朗族');Add('35' + '=' + '撒拉族');Add('36' + '=' + '毛南族');Add('37' + '=' + '仡佬族');Add('38' + '=' + '錫伯族');Add('39' + '=' + '阿昌族');Add('40' + '=' + '普米族');Add('41' + '=' + '塔吉克族');Add('42' + '=' + '怒族');Add('43' + '=' + '烏孜別克族');Add('44' + '=' + '俄羅斯族');Add('45' + '=' + '鄂溫克族');Add('46' + '=' + '德昂族');Add('47' + '=' + '保安族');Add('48' + '=' + '裕固族');Add('49' + '=' + '京族');Add('50' + '=' + '塔塔爾族');Add('51' + '=' + '獨龍族');Add('52' + '=' + '鄂倫春族');Add('53' + '=' + '赫哲族');Add('54' + '=' + '門巴族');Add('55' + '=' + '珞巴族');Add('56' + '=' + '基諾族');Add('57' + '=' + '其它');Add('98' + '=' + '外國人入籍');end;finalizationLstEthnic.Free;end.//事先請準備好sdtapi.dll WltRS.dll WltRS.lic 這三個文件,放在同目錄下


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
一本大道香蕉8中文在线视频| av在线资源网| 在线āv视频| 99热免费在线| 日本高清中文字幕| 丁香在线视频| 国产精品国产三级国产试看| 69久久久久| 嫩草在线播放| 国产视频二区在线观看| 国产成人精品久久一区二区小说 | 免费午夜一级| 天天操天天艹| 国产馆av播放| 久久久久久国产视频| 中文字幕人成高视频| 亚洲第一成年免费网站| 最新国产在线精品91尤物| 在线国产网址| 国产视频精品久久| 欧美日韩视频精品一区二区| 国产羞羞视频在线观看| sese在线视频| 18激情网站| 五月天婷婷基地| 波多野结衣中文字幕久久| 国产精品久久久精品a级小说| 欧美日韩在线精品成人综合网| 国产丝袜在线| 九九99精品| 欧美高清视频| 亚洲一道本在线| 国产二级c片l毛片| 国产视频你懂的| 日本中文字幕视频| 国产美女一区视频| 国产女人伦码一区二区三区不卡| 午夜影院免费| 天天草天天爽| av免费在线观看网站| 91av福利| 亚洲夜夜综合| 日韩国产成人| 欧美aaa一级片| 久久久久久久久亚洲精品| www.香蕉视频在线观看| 免费网站看黄yyy222| 老司机精品视频一区二区| 美女国产在线| 国产精品一卡二卡三卡| 国产亚洲精品一区二区在线观看| 天堂亚洲精品| 91嫩草在线播放| 亚洲图区欧美| 国产免费福利网站| 国产精品福利视频一区二区三区| 国产精美视频| h视频在线网站| 国产免费电影网站入口| 天天操天天艹| 99中文字幕一区| 久热中文字幕| 国产一二三四| 在线黄色国产电影| 国产女王在线**视频 | 美女av在线播放| 欧美日韩在线视频免费观看| 国产美女性感在线观看懂色av| 国产精品一品| 亚洲精品在线视频免费| 久久精品国产亚洲a∨麻豆| 国产色a在线| 亚洲精品在线播放视频| 国产一二在线观看| 日本在线视频www鲁啊鲁| 国产视频xxxx| 蜜桃视频中文字幕| 国产aa视频| 久久av少妇| 在线免费日韩| 国产精品免费视频一区一| 色欧美在线观看| 国产福利小视频在线| 国产美女性感在线观看懂色av| av大片在线播放| 国产网站av| 国产中文字幕在线视频| 亚洲日本久久久午夜精品| 1区2区3区在线| 国产在线观看18| 免费看成年人视频在线观看| 国产导航在线| 国产美女视频一区二区三区| 永久免费av片在线观看全网站| 黄色网址在线免费播放| 日本三级在线视频| 亚洲欧美精品日韩欧美| 国产91在线视频蝌蚪| 国产系列电影在线播放网址| 黄色av网站在线免费观看| 免费av在线| 狠狠狠综合7777久夜色撩人| www.国产精品.com| 亚洲欧美综合乱码精品成人网| 国产激情视频在线| 91中文在线| 在线视频中文字幕久| 在线播放av网站| 中文字幕av在线播放| 在线视频99| 欧美成人精品福利网站| 高清欧美精品xxxxx在线看| 国产精品一品| 国产超碰97| 午夜羞羞小视频在线观看| 免费中文字幕| 国产视频青青| 亚洲妇熟xxxx妇色黄| 超碰在线97国产| 国产蜜臀av在线播放| 国产欧美久久久久久久久| ·天天天天操| 九七电影韩国女主播在线观看| 九九精品视频在线观看九九| 尤物网址在线观看| 永久免费av片在线观看全网站| 色欧美在线观看| 超碰在线影院| 国产成+人+亚洲+欧美+综合| 四虎精品视频| 国产三区四区在线观看| free性亚洲| 国产无套粉嫩白浆在线2022年 | 九九热视频在线| 国产精品99999| 啪啪免费视频一区| 成人超碰在线| 99re在线视频| 国产视频福利| 激情视频国产| 亚洲天堂久久久| 国产激情视频在线| 国产在线传媒| www.夜夜操.com| 精品麻豆视频| 日本中文字幕在线看| 日本欧洲一区| 在线激情小视频| 国产精品18久久久久网站| 高清在线观看av| 日p在线观看| 国产极品一区二区三区| 久久久久久日本一区99| av在线网页| 在线欧美一级视频| 51成人精品网站| 国产区视频在线观看| 国产野外战在线播放| 久久久久久五月天久久久久久久久| 影音先锋日韩| 四虎中文字幕| 欧美xxxxx性| 超碰在线网址| 懂色av中文在线| 成人精品福利| 综合图区亚洲白拍在线| 五月婷婷导航| 国产精品入口麻豆免费看| 国产网红在线观看| 国产精品视频二区三区| 国产成人天天5g影院| 国产对白国语对白| 2019中文字幕在线电影免费| 在线观看av网站永久| av在线不卡网站| 精品中文字幕不卡在线视频| 久久精品蜜桃| 国产色在线播放| 亚洲夜夜综合| 国产美女自拍视频| 国产经典三级在线| 在线天堂视频| 好男人免费精品视频| 国产国产人免费人成免费视频| 国产成人亚洲综合小说区| 在线观看的网站你懂的| 国产在线麻豆精品| 999精品网| 成人av小说网| 伊人狠狠av| 最近久乱中文字幕| 四虎成人免费| 国产三级自拍| 免费男女羞羞的视频网站中文字幕| 91av久久| 超碰免费在线播放| 国产精彩视频在线观看免费蜜芽| av在线不卡网站| 国产福利在线播放麻豆| 狠狠操天天操夜夜操|