1、1. 概述精伦电子股份有限公司开发的二代身份证读卡系列机具适用于相关行业的联机型应用。产品提供了完善的二次软件开发接口(API) 。本手册针对提供的 ActiveX 控件,对开发接口的文件组成、函数定义格式、调用方法及返回值等进行了详细的说明。2. 接口文件说明接口文件包括:IdrControl.ocxDewlt.dllSavephoto.dll适用开发语言:网络脚本开发3. 接口函数说明3.1.身份证函数3.1.1. 读身份证函数原 型:short ReadCard(long iPort,BSTR PhotoPath)说 明:本函数用于打开串口或 USB 口并读取二代证卡内信息。参 数:1、
2、iPort : 设置串口、 USB 或 iDR210 免驱动 USB-HID。普通串口 1 16(十进制) 例如:1:串口 1(COM1)2:串口 2(COM2)USBUSB-HID(iDR210)1001 例如:1001:USB2、PhotoPath:生成图片文件的绝对路径,包括生成的照片文件photo.bmp,photo.jpg 和指定文件名的照片文件,和身份证正反面图片card.jpg。该参数为“时,默认将照片文件保存到 Windows 系统临时文件目录(GetTempPath()。也可自行设置保存的路径,比如: “d:photosphoto.bmp“,注意文件参数必须设置正确,才能正确
3、地将相片文件放在指定位置(相片文件夹若不存在,将会自动生成新文件夹) 。返 回 值:值 说明1 正确-1 端口初始化失败-2 卡认证失败(请重新将卡放到读卡器)-3 读取数据失败-4 生成照片文件失败(请检查设定路径和磁盘空间)注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本函数。否则,可以采用循环查找的方式调用本函数。3.1.2. 端口初始化函数原 型:short InitComm(long iPort)说 明:本函数用于打开串口或 USB 并检测读卡设备是否就绪。参 数:iPort: 设置串口或 USB(目前串口和 USB 都只支持 16个,即串口 116 和 USB100
4、1-1016)普通串口 1 16(十进制) 例如:1:串口 1(COM1)2:串口 2(COM2)USBUSB-HID(iDR210)1001 例如:1001:USB返 回 值:值 意义1 正确其它 错误注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本函数。否则,可以采用循环查找的方式调用本函数。3.1.3. 端口关闭接口原 型:int CloseComm(void)说 明:本函数用于关闭已打开的端口,一般在调用 InitComm 成功并完成读卡任务后调用。参 数:无返 回 值:值 意义1 正确其它 错误3.1.4. 卡认证接口原 型:short Authenticate (v
5、oid)说 明:本函数用于发现身份证卡并选择卡。参 数:无返 回 值:值 意义1 正确0 错误注:认证卡时,需要将身份证放置于读卡机具上方并做稍许时间的停留。如果函数返回错误表示没有发现卡或者卡停留时间太短。3.1.5. 获得身份证信息个人姓名原 型:BSTR GetName() ;说 明:本函数用于获取身份证个人姓名信息。返 回 值:个人姓名信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人姓名信息3.1.6. 获得身份证个人性别信息(汉字)原 型:BSTR GetSex();说 明:本函数用于获取身份证个人性别信息。返 回 值:个人性别信息,“男“ 或“女“
6、。注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人性别信息3.1.7. 获得身份证个人性别信息(数字)原 型:short GetSexN();说 明:本函数用于获取身份证个人性别代码。返 回 值: 值 说明1 男2 女注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人性别信息3.1.8. 获得身份证信息个人民族(汉字)原 型:BSTR GetFolk();说 明:本函数用于获取身份证个人民族信息。返 回 值:个人民族信息注:必须在 ReadCard 函数调用并调用并返回正确的情况下方能正确获得身份证个人民族信息3.1.9. 获得身份证信
7、息个人民族(数字)原 型:Short GetFolkN();说 明:本函数用于获取身份证个人民族数字代码。返 回 值:个人民族信息数字代码返回值以代码表示,下列是民族编码顺序,汉族编码为 1,蒙古为 2,依次递推。“汉“,“蒙古“,“回“,“藏“,“维吾尔“,“苗“,“彝“,“壮“,“布依“,“朝鲜“,“满“,“侗“,“瑶“,“白“,“土家“,“哈尼“,“哈萨克“,“傣“,“黎“,“傈僳“,“佤“,“畲“,“高山“,“拉祜“,“水“,“东乡“,“纳西“,“景颇“,“柯尔克孜“,“土“,“达斡尔“,“仫佬“,“羌“,“布朗“,“撒拉“,“毛南“,“仡佬“,“锡伯“,“阿昌“,“普米“,“塔吉克“
8、,“怒“,“乌孜别克“,“俄罗斯“,“鄂温克“,“德昂“,“保安“,“裕固“,“京“,“塔塔尔“,“独龙“,“鄂伦春“,“赫哲“,“门巴“,“珞巴“,“基诺“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“其他“,“芒人“,“摩梭人“,“革家人“,“穿青人“,“入籍“,“其他“注:必
9、须在 ReadCard 函数调用并调用并返回正确的情况下方能正确获得身份证个人民族信息3.1.10. 获得身份证个人身份证号信息原 型:BSTR GetCode();说 明:本函数用于获取身份证个人身份证号信息。返 回 值:个人身份证号信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人身份证号信息3.1.11. 获得身份证个人出生年信息原 型:BSTR GetBirthYear() ;说 明:本函数用于获取身份证个人出生年信息。返 回 值:个人出生年信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人出生年信息3.1.12. 获得身
10、份证个人出生月信息原 型:BSTR GetBirthMonth();说 明:本函数用于获取身份证个人出生月信息。返 回 值:个人出生月信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人出生月信息3.1.13. 获得身份证个人获得出生日信息原 型:BSTR GetBirthDay();说 明:本函数用于获取身份证个人获得出生日信息。返 回 值:个人出生日信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人获得出生日信息3.1.14. 获得身份证个人地址信息原 型:BSTR GetAddress();说 明:本函数用于获取身份证个人地址
11、信息。返 回 值:个人地址信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人地址信息3.1.15. 获得身份证个人发证机关信息原 型:BSTR GetAgency();说 明:本函数用于获取身份证个人发证机关信息。返 回 值:个人发证机关信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人发证机关信息3.1.16. 获得身份证个人有效日期信息原 型:BSTR GetValid();说 明:本函数用于获取身份证个人有效日期信息。返 回 值:个人有效日期信息注:必须在 ReadCard 函数调用并返回正确的情况下方能正确获得身份证个人有
12、效日期信息3.1.17. 读追加地址信息原 型:short ReadNewAppMsg() ;说 明:读附加地址信息。返 回 值:值 意义0-4 附加地址数目-1 错误注:读追加地址信息时,需要将身份证置于读卡机具上方做稍许时间的停留。附加地址数目一般有 0-4 个,获得具体哪个附加地址信息可在调用此函数获得附加地址数目后调用 GetNewAddress(short i)获得3.1.18. 获得身份证个人获得附加地址信息原 型:BSTR GetNewAddress(short i);说 明:本函数用于获取身份证个人附加地址信息。参数: i 附加地址序号返 回 值:附加地址注:必须在读卡基本信息
13、 ReadNewAppMsg()函数调用并返回正确的情况下方能正确获得身份证个人附加地址信息3.1.19. 获得身份证照片 Base64 编码原 型:BSTR GetPhotobuf ();说 明:本函数用于获取身份证照片 Base64 编码信息。参数: 无返 回 值:身份证照片 Base64 编码信息注:必须在读卡函数调用并返回正确的情况下方能正确获得身份证照片信息3.1.20. 获得阅读器安全模块号原 型:BSTR GetSAMID () ;说 明:本函数用于获取阅读器安全模块号。参数: 无返 回 值:阅读器安全模块号注: 3.1.21. 获得身份证照片 JPG 格式 Base64 编码原
14、 型:BSTR GetJPGPhotobuf ();说 明:本函数用于获取身份证照片 JPG 格式 Base64 编码信息。参数: 无返 回 值:身份证照片 Base64 编码信息注:必须在读卡函数调用并返回正确的情况下方能正确获得身份证照片信息3.1.22. 获得身份证卡号原 型:BSTR GetIDCardSN();说 明:本函数用于获取身份证卡号。返 回 值:身份证卡号注:必须在读卡函数调用并返回正确的情况下方能正确获得身份证照片信息3.2.TypeA 非接触 IC 卡函数3.2.1. 读 TypeA 卡函数原 型:short ReadICCard(long iPort)说 明:本函数用
15、于打开串口并读取卡内信息。参 数:1、iPort : 设置串口(目前串口只支持 16 个,即串口 116)普通串口 1 16(十进制) 例如:1:串口 1(COM1)2:串口 2(COM2)USB-HID(iDR210)8159(十进制)返 回 值:值 说明1 正确-1 端口初始化失败-2 读卡失败注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本函数。否则,可以采用循环查找的方式调用本函数。3.2.2. 获得 TypeA 卡序列号原 型:BSTR GetICCardSN();说 明:本函数用于获取 IC 卡序列号。返 回 值:IC 卡序列号注:必须在 ReadICCard 函数
16、调用并返回正确的情况下方能使用3.2.3. 读 TypeA 卡块内容原 型:BSTR ReadTypeABlock(short SID, short BID, short KeyType, LPCTSTR Key);说 明:本函数用于读取指定扇区的指定块的内容。参 数:SID 为扇区号,0-15(对 M1S50 卡) 。BID 为块号,0-3。KeyType 为密钥类型,两种:1 keyA,2 keyB。Key 为密钥,12 个字节的字符串。返 回 值:值 说明32 个字节字符串正确。每两个字节对应块内的一个字节内容。0 失败注:必须在 ReadICCard 函数调用并返回正确的情况下方能使用
17、3.2.4. 写 TypeA 卡块内容原 型:BSTR WriteTypeABlock(short SID, short BID, short KeyType, LPCTSTR Key, LPCTSTR Data);说 明:本函数用于写入指定扇区的指定块的内容。参 数:SID 为扇区号,0-15(对 M1S50 卡) 。BID 为块号,0-3。注意:若写每个扇区的 3 号块的数据不正确,卡将无法正常读写。KeyType 为密钥类型,两种:1 keyA,2 keyB。Key 为密钥,12 个字节的字符串。Data 为写入的内容,32 个字节的字符串。返 回 值:值 说明1 正确。0 失败注:必须
18、在 ReadICCard 函数调用并返回正确的情况下方能使用4. 接口使用流程及示例4.1.身份证函数示例在连接好读卡机具以后,调用控件的方法 ReadCard 读取卡中信息。示例一:var result;var username;result=IdrControl1.ReadCard(“1“,“);if (result=1) /读卡成功 username=IdrControl1.GetName() /此时可进行获取卡姓名,性别等信息else if (result=-1) /端口初始化失败if (result=-2) /卡认证失败if (result=-3) /读取数据失败if (result
19、=-4) /生成照片文件失败4.2.TypeA 卡函数示例示例二:var result;var ICSN;result=IdrControl1.ReadICCard(“1“);if (result=1) /读卡成功 ICSN =IdrControl1.GetICCardSN();/读卡序列号result=IdrControl1.ReadTypeABlock(0,0,1,“ffffffffffff“); /读 0 区 0块的内容result=IdrControl1.WriteTypeABlock(0,0,1,“ffffffffffff“); /写 0 区 0块的内容else if (result=-1) /端口初始化失败if (result=-2) /读卡失败实现可参照例程 test.htm提示: 一 例程只是控件开发的简单示范,具体二次开发功能实现,由开发人员进行设计和开发二 调试过程中请注意 找卡过程中包含选卡,目前公安部安全模块只支持一次选卡,因此如果找卡成功后,若想再次进行找卡读卡流程需将机具上卡拿开后再次放置到机具上三 ActiveX 控件在网页上运行以及下载受到安全级别的限制 (开发人员请注意)