精伦多功能读写器OCX插件配置使用教程

        • 一、简介
        • 二、配置使用
        • 三、接口文档说明
        • 四、代码示例

一、简介

精伦多功能射频卡读写器iDR210是最新推出销售的一款多功能、免装驱动程序的射频卡读写器,可根据需求配置不同部件实现不同射频卡的读取和写入功能。当配置了专用身份证安全控制模块(SAM)时,可作为第二代居民身份证阅读器使用。

产品内置部授权的专用身份证安全控制模块(SAM),采用国际上先进的TypeB非接触IC卡阅读技术,完成对身份证有效性验证和信息的实时读取,并通过通讯口将身份证信息上传到计算机进行解码、显示、存储和查询等处理。同时可兼容读写其他行业定制的基于Type A、Type B规范的行业非接触卡(包括但不限于公交卡、员工卡等),也可单独作为TYPE A卡的射频卡读写器使用。

可选配两个内置PSAM卡座,实现自定义的卡片认证和管理方式。

■ 身份证信息的读取、显示和保存

与随机阅读软件配合,可自动找卡、实时读取和显示第二代身份证的文字和照片信息,具有黑名单检索和实时报警功能。具备保存、查找、删除、导出、打印等多种功能,可灵活设置信息滞留时间、保存方式、相同记录保存时间间隔等。

■ 操作简单

采用HID USB接口,无需安装驱动、无需外接电源,可直接使用。客户也可以根据需要定制使用RS232接口。
  随机阅读软件自动设置通讯口和通讯参数,自动找卡和读卡。

■ 行业应用扩展功能

可根据不同行业应用需求提供WindowsXP、WindowsCE、Linux和UNIX等不同操作系统下的二次开发支持。可兼容读取其他行业定制的基于Type A、Type B规范的行业非接触卡(包括但不限于公交卡、员工卡等)。

二、配置使用

读卡器图片,如下图

精伦多功能读写器OCX插件配置使用教程-编程知识网

注意:安装前先把360等杀毒软件退出,否则可能会影响读卡器的正常使用 准备:先将读卡机设备连接到电脑usb接口,确定连接成功之后在进行一下操作

以管理员身份运行SetupOCXv4.1.0.5.exe,如下图

精伦多功能读写器OCX插件配置使用教程-编程知识网

精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网
精伦多功能读写器OCX插件配置使用教程-编程知识网

精伦多功能读写器OCX插件配置使用教程-编程知识网

9.硬件配置已完成接下来就可以使用啦!

三、接口文档说明

1.概述 精伦电子股份有限公司开发的二代身份证读卡系列机具适用于相关行业的联机型应用。产品提供了完善的二次软件开发接口(API)。本手册针对提供的ActiveX控件,对开发接口的文件组成、方法定义格式、调用方法及返回值等进行了详细的说明。

2.接口文件说明 接口文件包括: IdrControl.ocx Dewlt.dll Savephoto.dll Wltrs.dll
适用开发语言: 网络脚本开发
第一次使用时,需要以管理员身份运行SetupOCX.exe对控件进行安装注册。

更新说明:
V4.1.0.1增加了Routon_ReadForeignBaseInfos、Routon_DecideIDCardType、DecideReadCardType、GetenName、GetcnName、GetNation方法,修改了ReadCard方法,可读取外国人永久居留证。
V4.0.1.0增加对编码设备支持,可设置日志文件。
V4.0.0.6增加RepeatRead 方法,可设置后进行连续读身份证。
V4.0.0.0增加对210-P的支持。
V3.4.1.4解决和13002相关在20130726的读卡体管理号问题。
V3.4.1.3解决一个潜在导致内存泄漏的问题。
V3.4.1.2增加GetCardPhotobuf方法,用于获取身份证正反面图片JPG格式Base64编码信息。
V3.4.1.0增加ExportPhoto方法,可在读卡结束后生成指定照片和卡图片文件名。

3.接口方法说明

3.1.身份证方法
3.1.1.读身份证方法
原 型:short ReadCard(long iPort,BSTR PhotoPath)
说 明:本方法将打开端口、找卡、读卡等功能进行了集成,可用于打开串口或USB口,并判断卡片类型以读取二代证卡内信息和外国人居留证卡内信息。
参 数:
1、iPort: 设置串口、USB或iDR210免驱动 USB-HID。
普通串口 1 – 16(十进制) 例如:
1:串口1(COM1)
2:串口2(COM2)
USB
USB-HID
(iDR210) 1001 例如:
1001:USB
2、PhotoPath:生成图片文件的绝对路径,包括生成的照片文件photo.bmp,photo.jpg和指定文件名的照片文件,和身份证正反面图片card.jpg。该参数为"“时,默认将照片文件保存到Windows系统临时文件目录(GetTempPath())。也可自行设置保存的路径,比如: “d:\photos\photo.bmp”,注意文件参数必须设置正确,才能正确地将相片文件放在指定位置(相片文件夹若不存在,将会自动生成新文件夹)。
返 回 值:
值 说明
1 正确
-1 端口初始化失败
-2 卡认证失败(请重新将卡放到读卡器)
-3 读取数据失败
-4 生成照片文件失败(请检查设定路径和磁盘空间)
注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
3.1.2.端口初始化方法 原 型:short InitComm(long iPort) 说 明:本方法用于打开串口或USB并检测读卡设备是否就绪。 参 数:iPort: 设置串口或USB(目前串口和USB都只支持16个,即串口1~16和USB1001-1016)
普通串口 1 – 16(十进制) 例如: 1:串口1(COM1) 2:串口2(COM2) USB USB-HID (iDR210) 1001 例如: 1001:USB
返 回 值:
值 意义
1 正确
其它 错误
注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
3.1.3.端口关闭接口
原 型:int CloseComm(void)
说 明:本方法用于关闭已打开的端口,一般在调用InitComm成功并完成读卡任务后调用。
参 数:无
返 回 值:
值 意义
1 正确
其它 错误
3.1.4.卡认证接口
原 型:short Authenticate (void)
说 明:本方法用于发现身份证卡并选择卡。
参 数:无
返 回 值:
值 意义
1 正确
0 错误
注:认证卡时,需要将身份证放置于读卡机具上方并做稍许时间的停留。如果方法返回错误表示没有发现卡或者卡停留时间太短。
3.1.5.读卡信息接口
原 型:short ReadBaseMsg();
说 明:本函数用于读取卡中基本信息,包括文字信息与图像信息。
返 回 值:
值 意义
1 正确
-1 错误,缺少照片解码DLL库文件
-2 生成wlt文件错
-4 读基本信息错
-5 照片解码错
注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
3.1.6.读卡信息并设定照片文件接口
原  型:short ReadBaseMsgP(BSTR photopath);
说  明:本函数用于读取卡中基本信息,包括文字信息与图像信息。
参  数:BSTR photopath 放置照片信息绝对路径名
返 回 值:
值 意义
1 正确
-1 缺少照片解码DLL库文件
-2 生成wlt文件错
-3 照片文件名错
-4 读基本信息错
-5 照片解码错
-6 缺少生成正反面图片DLL库文件
-7 生成正反面图片错
注:和ReadBaseMsg功能相仿(读卡实现中两个函数只需调用一个),参数为相片信息文件绝对路径名,可根据开发人员需要放置相片为指定目录文件,如"d:\photos\photo.bmp”,注意文件参数必须设置正确,才能正确地将相片文件放在指定位置(相片文件夹若不存在,将会自动生成新文件夹)
3.1.7.获得身份证信息个人姓名
原 型:BSTR GetName();
说 明:本方法用于获取身份证个人姓名信息。
返 回 值:个人姓名信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人姓名信息
3.1.8.获得身份证个人性别信息(汉字)
原 型:BSTR GetSex();
说 明:本方法用于获取身份证个人性别信息。
返 回 值:个人性别信息,“男"或"女”。
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人性别信息
3.1.9.获得身份证个人性别信息(数字)
原 型:short GetSexN();
说 明:本方法用于获取身份证个人性别代码。
返 回 值:
值 说明
1 男
2 女
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人性别信息
3.1.10.获得身份证信息个人民族(汉字)
原 型:BSTR GetFolk();
说 明:本方法用于获取身份证个人民族信息。
返 回 值:个人民族信息
注:必须在读卡方法或读卡信息方法调用并调用并返回正确的情况下方能正确获得身份证个人民族信息
3.1.11.获得身份证信息个人民族(数字)
原 型:Short GetFolkN();
说 明:本方法用于获取身份证个人民族数字代码。
返 回 值:个人民族信息数字代码
返回值以代码表示,下列是民族编码顺序,汉族编码为1,蒙古为2,依次递推。
“汉”,“蒙古”,“回”,“藏”,“维吾尔”,“苗”,“彝”,“壮”,“布依”,“朝鲜”,“满”,“侗”,“瑶”,“白”,“土家”,“哈尼”,“哈萨克”,“傣”,“黎”,“傈僳”,“佤”,“畲”,“高山”,“拉祜”,“水”,“东乡”,“纳西”,“景颇”,“柯尔克孜”,“土”,“达斡尔”,“仫佬”,“羌”,“布朗”,“撒拉”,“毛南”,“仡佬”,“锡伯”,“阿昌”,“普米”,“塔吉克”,“怒”,“乌孜别克”,“俄罗斯”,“鄂温克”,“德昂”,“保安”,“裕固”,“京”,“塔塔尔”,“独龙”,“鄂伦春”,“赫哲”,“门巴”,“珞巴”,“基诺”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“其他”,“芒人”,“摩梭人”,“革家人”,“穿青人”,“入籍”,“其他”
注:必须在读卡方法或读卡信息方法调用并调用并返回正确的情况下方能正确获得身份证个人民族信息
3.1.12.获得身份证个人身份证号信息
原 型:BSTR GetCode();
说 明:本方法用于获取身份证个人身份证号信息。
返 回 值:个人身份证号信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人身份证号信息
3.1.13.获得身份证个人出生年信息
原 型:BSTR GetBirthYear();
说 明:本方法用于获取身份证个人出生年信息。
返 回 值:个人出生年信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人出生年信息
3.1.14.获得身份证个人出生月信息
原 型:BSTR GetBirthMonth();
说 明:本方法用于获取身份证个人出生月信息。
返 回 值:个人出生月信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人出生月信息
3.1.15.获得身份证个人获得出生日信息
原 型:BSTR GetBirthDay();
说 明:本方法用于获取身份证个人获得出生日信息。
返 回 值:个人出生日信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人获得出生日信息
3.1.16.获得身份证个人地址信息
粗体 型:BSTR GetAddress();
说 明:本方法用于获取身份证个人地址信息。
返 回 值:个人地址信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人地址信息
3.1.17.获得身份证个人发证机关信息
原 型:BSTR GetAgency();
说 明:本方法用于获取身份证个人发证机关信息。
返 回 值:个人发证机关信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人发证机关信息
3.1.18.获得身份证个人有效日期信息
原 型:BSTR GetValid();
说 明:本方法用于获取身份证个人有效日期信息。
返 回 值:个人有效日期信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人有效日期信息
3.1.19.读追加地址信息
原 型:short ReadNewAppMsg();
说 明:读附加地址信息。
返 回 值:
值 意义
0-4 附加地址数目
-1 错误
注:读追加地址信息时,需要将身份证置于读卡机具上方做稍许时间的停留。附加地址数目一般有0-4个,获得具体哪个附加地址信息可在调用此方法获得附加地址数目后调用GetNewAddress(short i)获得
3.1.20.获得身份证个人获得附加地址信息
原 型:BSTR GetNewAddress(short i);
说 明:本方法用于获取身份证个人附加地址信息。
参数: i附加地址序号
返 回 值:附加地址
注:必须在读卡基本信息ReadNewAppMsg()方法调用并返回正确的情况下方能正确获得身份证个人附加地址信息
3.1.21.获得身份证照片Base64编码
原 型:BSTR GetPhotobuf ();
说 明:本方法用于获取身份证照片Base64编码信息。
参数: 无
返 回 值:身份证照片Base64编码信息
注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
3.1.22.获得阅读器安全模块号
原 型:BSTR GetSAMID ();
说 明:本方法用于获取阅读器安全模块号。
参数: 无
返 回 值:阅读器安全模块号
注:
3.1.23.获得身份证照片JPG格式Base64编码
原 型:BSTR GetJPGPhotobuf ();
说 明:本方法用于获取身份证照片JPG格式Base64编码信息。
参数: 无
返 回 值:身份证照片Base64编码信息
注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
3.1.24.获得身份证正反面图片JPG格式Base64编码
原 型:BSTR GetCardPhotobuf ();
说 明:本方法用于获取身份证正反面图片JPG格式Base64编码信息。
参数: 无
返 回 值:身份证照片Base64编码信息
注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
3.1.25.获得身份证卡号
原 型:BSTR GetIDCardSN();
说 明:本方法用于获取身份证卡号。
返 回 值:身份证卡号
注:必须在读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
3.1.26.输出指定照片文件和正反面图片
原 型:Short ExportPhoto(BSTR PhotoFile,BSTR CardFile);
说 明:本方法用于生成指定的照片和正反面图片文件名。
返 回 值:
值 意义
1 成功
-3 未调用ReadCard指定照片文件名
-1 生成照片文件错
-2 生成正反面图片文件错
注:必须在ReadCard读卡方法调用并返回正确的情况下方能正确获得身份证照片信息
3.1.27.设置是否可连续读身份证
原 型:short RepeatRead (short isRepeat);
说  明:本函数用于设置在不从阅读器上移开身份证的情况下连续读身份证。
参  数:short isRepeat,1为连续读,0为不连续读。
返 回 值:
值 意义
1 正确
其他 错误
注:默认是不连续读身份证
3.1.28. 判断卡片类型
原 型:short Routon_DecideIDCardType();
说 明:本函数用于判断当前证件类型是身份证,还是外国人居留证
返 回 值:
值 意义
100 中国身份证
101 外国人居留证
其他 其他错误
注:该函数需在调用Authenticate函数后再调用。
3.1.29. 读外国人永久居留证信息
原 型:short Routon_ReadForeignBaseInfos(char enName,char Gender,char Code, char Nation, char cnName,char BirthYear,char BirthMonth,char BirthDay,char Valid);
说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息。
参 数:
char
enName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
char
Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
char
Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
char
Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
char
cnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
char
BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
char
BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
char
BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
char
Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
返 回 值:
值 意义
1 正确
0 错误
-4 缺少dewlt.dll、savephoto.dll等DLL
已废弃,如需使用该功能,请使用3.1.35接口Routon_ReadAllForeignBaseInfos
注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
3.1.30. 判断读取的卡片类型
原 型:short DecideReadCardType()
说 明:在卡片读取完成之后,返回一个卡片类型的标志。
返 回 值:
值 说明
1 身份证
2 外国人居留证
注:调用该函数之前必须调用ReadCard()函数,读取卡片成功之后,在调用该函数以返回卡片类型。
3.1.31. 获取外国人居留证信息英文名字
原 型:BSTR GetenName();
说 明:本方法用于获取外国人永久居留证个人英文姓名信息。
返 回 值:个人英文姓名信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人英文姓名信息
3.1.32. 获取外国人居留证信息英文名字
原 型:BSTR GetcnName();
说 明:本方法用于获取外国人永久居留证个人中文姓名信息。
返 回 值:个人中文姓名信息
注:必须在读卡方法或读卡信息方法调用并返回正确的情况下方能正确获得身份证个人中文姓名信息
3.1.33 获得外国人居留证国籍或所在地区代码
原 型:Short GetNation();
说 明:本方法用于获取外国人永久居留证国籍或所在地区代码。
返 回 值:外国人国籍或所在地区代码。
3.1.34. 读外国人永久居留证信息带照片路径
原 型:short Routon_ReadForeignBaseInfosP(char enName,char Gender,char Code, char Nation, char cnName,char BirthYear,char BirthMonth,char BirthDay,char Valid,BSTR photopath);
说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息,并保存到指定路径中。
参 数:
char
enName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
char
Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
char
Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
char
Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
char
cnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
char
BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
char
BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
char
BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
char
Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
BSTR photopath 放置照片信息绝对路径名。
返 回 值:
值 意义
1 正确
0 错误
-4 缺少dewlt.dll、savephoto.dll等DLL
已废弃,如需使用该功能,请使用3.1.36接口Routon_ReadAllForeignBaseInfosP
注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
3.1.35读外国人永久居留证全部信息
原 型:short Routon_ReadAllForeignBaseInfos(char EnName,char Gender,char Code, char Nation, char CnName,char BirthYear,char BirthMonth,char BirthDay,char Valid,char CardVersion,char Agency,char CardType, char FutureItem);
说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息。
参 数:
char
EnName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
char
Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
char
Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
char
Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
char
CnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
char
BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
char
BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
char
BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
char
Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
char
CardVersion,指向外国人居留证证件版本号。需要在调用时分配内存,字节数不小于5。
char
Agency,指向外国人居留证当次申请受理机关代码。需要在调用时分配内存,字节数不小于9。
char
CardType,指向外国人居留证证件类型标识。需要在调用时分配内存,字节数不小于2。
char
FutureItem,指向外国人居留证预留项。需要在调用时分配内存,字节数不小于7。
返 回 值:
值 意义
1 正确
0 错误
-4 SDT_ReadBaseMsg读卡失败
注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
补充说明:1、Agency是机关代码,其对应的机关全称未知。
2、FutureItem是预留项,未存放实际内容。
3.1.36. 读外国人永久居留证全部信息带照片路径
原 型:short Routon_ReadAllForeignBaseInfosP(char EnName,char Gender,char Code, char Nation, char nName,char BirthYear,char BirthMonth,char BirthDay,char Validchar CardVersion,char Agency,char CardType, char FutureItem,LPCTSTR photopath);
说 明:本函数用于读取外国人永久居留证基本信息,包括文字信息和图像信息,并保存到指定路径中。
参 数:
char
EnName, 指向外国人英文姓名信息。需要在调用时分配内存,字节数不小120。
char
Gender, 指向外国人的性别信息。需要在调用时分配内存,字节数不小于3;
char
Code,指向外国人永久居留证号码信息。需要在调用时分配内存,字节数不小于30;
char
Nation,指向外国人国籍或所在地区代码。需要在调用时分配内存,字节数不小于6;
char
CnName,指向外国人中文姓名信息。需要在调用时分配内存,字节数不小于31;
char
BirthYear,指向出生年份信息。需要在调用时分配内存,字节数不小于5;
char
BirthMonth,指向出生月份信息。需要在调用时分配内存,字节数不小于3;
char
BirthDay,指向出生日信息。需要在调用时分配内存,字节数不小于3;
char
Valid,指向外国人居留证有效日期。需要在调用时分配内存,字节数不小于32。
char
CardVersion,指向外国人居留证证件版本号。需要在调用时分配内存,字节数不小于5。
char
Agency,指向外国人居留证当次申请受理机关代码。需要在调用时分配内存,字节数不小于9。
char
CardType,指向外国人居留证证件类型标识。需要在调用时分配内存,字节数不小于2。
char
FutureItem,指向外国人居留证预留项。需要在调用时分配内存,字节数不小于7。
LPCTSTR photopath 放置照片信息绝对路径名。
返 回 值:
值 意义
1 正确
0 错误
-4 缺少dewlt.dll、savephoto.dll等DLL
-5 获取接口SaveForeignCardAllJPG地址失败
-6 接口SaveForeignCardAllJPG调用失败
注:读卡基本信息时,需要将身份证置于读卡机具上方做稍许时间的停留。
调用返回正确后,可进行下一步获取身份证个人姓名、性别等信息获取调用,
照片文件photo.bmp放置在当前系统的临时文件目录(GetTempPath())。
返回的有效日期是以“XXXX.XX.XX-XXXX.XX.XX”的格式存放的。
补充说明:1、Agency是机关代码,其对应的机关全称未知。
2、FutureItem是预留项,未存放实际内容。
3.2.TypeA 非接触IC卡方法
3.2.1.读TypeA卡

原 型:short ReadICCard(long iPort)
说 明:本方法用于打开串口并读取卡内信息。
参 数:
1、iPort: 设置串口(目前串口只支持16个,即串口1~16)
普通串口 1 – 16(十进制) 例如:
1:串口1(COM1)
2:串口2(COM2)
USB-HID
(iDR210) 8159(十进制)
返 回 值:
值 说明
1 正确
-1 端口初始化失败
-2 读卡失败
注:如果读卡机具连接的端口是确定的,可以直接使用相应端口号调用本方法。否则,可以采用循环查找的方式调用本方法。
3.2.2.获得TypeA卡序列号
原 型:BSTR GetICCardSN();
说 明:本方法用于获取IC卡序列号。
返 回 值:IC卡序列号
注:必须在ReadICCard方法调用并返回正确的情况下方能使用
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方法调用并返回正确的情况下方能使用
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 失败
注:必须在ReadICCard方法调用并返回正确的情况下方能使用
3.3.CPU卡方法
注意:在读市民卡信息和发送第一条APDU命令前,必须先找卡。
3.3.1.找CPU卡
原 型:int FindICCard (void)
说 明:本方法用于查找当前卡片类型。在做CPU卡相关操作前(比如读市民卡信息、发APDU命令等),必须先调用本方法找到CPU卡。
参 数:无
返 回 值:
值 意义
1 M1-S50卡
2 CPU卡
3 M1-S70卡
0 未找到卡
其他 不明卡错误码
3.3.2.读顺德市民卡信息
原 型:int ReadCitizenCard (void)
说 明:本方法用于读出顺德市民卡信息。在调用本方法前,必须先使用FindICCard找到CPU卡。
参 数:无
返 回 值:
值 意义
1 成功
-1 解密失败
-2 读数据错
-3 设备类型错
3.3.3.取顺德市民卡卡号信息
原 型:BSTR GetCityCardNO (void)
说 明:本方法用于读出顺德市民卡卡号信息。在调用本方法前,必须先使用ReadCitizenCard方法。
参 数:无
返 回 值:顺德市民卡卡号
3.3.4.取顺德市民卡姓名信息
原 型:BSTR GetCityCardName (void)
说 明:本方法用于读出顺德市民卡姓名信息。在调用本方法前,必须先使用ReadCitizenCard方法。
参 数:无
返 回 值:顺德市民卡姓名
3.3.5.取顺德市民卡证件类型信息
原 型:BSTR GetCityCardIDType (void)
说 明:本方法用于读出顺德市民卡证件类型信息。在调用本方法前,必须先使用ReadCitizenCard方法。
参 数:无
返 回 值:顺德市民卡证件类型
3.3.6.取顺德市民卡证件号码信息
原 型:BSTR GetCityCardIDCode(void)
说 明:本方法用于读出顺德市民卡证件号码信息。在调用本方法前,必须先使用ReadCitizenCard方法。
参 数:无
返 回 值:顺德市民卡证件号码
3.3.7.取顺德市民卡附加信息
原 型:BSTR GetCityCardAppInfo(void) 说 明:本方法用于读出顺德市民卡附加信息。在调用本方法前,必须先使用ReadCitizenCard方法。 参 数:无 返 回 值:顺德市民卡附加信息
3.3.8.APDU命令及应答
原 型:BSTR Routon_APDU (BSTR APDU_CMD) 说 明:本方法用于CPU卡的APDU命令交互。 参 数:BSTR APDU_CMD,APDU命令字符串 返 回 值: 值 意义 字符串 成功 -1 APDU_CMD不正确 -2 读数据错
4.接口使用流程及示例
实现请参照例程 test.htm
提示:
一 例程只是控件开发的简单示范,具体二次开发功能实现,由开发人员进行设计和开发
二 调试过程中请注意 找卡过程中包含选卡,目前公安部安全模块只支持一次选卡,因此如果找卡成功后,若想再次进行找卡读卡流程需将机具上卡拿开后再次放置到机具上
三ActiveX控件在网页上运行以及下载受到安全级别的限制(开发人员请注意)

四、代码示例

jl_card.js的代码内容如下:

/*** 精伦电子控件。读身份证 参数 deviceObjectId 控件id 必须 photonPath 头像输出路径 可为空 cardPath 身份证正反面输出路径 可为空<br>* 返回:{type:类型, idCardNum:身份证号,realname:姓名,gender:性别文字,genderNum:性别数字,<br>* nation:民族,address:地址,photoBase64:照片(Base64编码),cardPhotoBase64:身份证正反面照片(Base64编码), <br>* birthYear:生日年,birthMonth:生日月,birthDay:生日日,agency:签发机关,valid:有效日期,samId:安全模块号,idCardSN:身份证卡号 <br>* code = 1:正常,code = -1:端口初始化失败,code =-2:请重新将卡片放到读卡器上,code = -3:读取数据失败,code = -4:生成照片文件失败,请检查设定路径和磁盘空间,code = 500:控件未安装}*/
function tg_readIdCard4JLDZ(deviceObjectId, photonPath, cardPath) {var result = { // 返回结果code : 1,type : 'idCard' // 身份证};try {var ax = new ActiveXObject("IDRCONTROL.IdrControlCtrl.1");} catch (e) {console.log("控件未安装");result.code = 500;}var code = deviceObjectId.ReadCard("1001", ""); // 注意:第一个参数为对应的设备端口,USB型为1001,串口型为1至16result.code = code;if (code == 1) {var cardtype = deviceObjectId.DecideReadCardType(); // 判断卡类型 1-身份证 2-外国居留证if (cardtype == 1) {deviceObjectId.setMute(0); // 设置是否静音读卡 0-不静音 1-静音deviceObjectId.RepeatRead(1); // 设置是否重复读卡 0-不重复 1-重复result.success = true;result.realname = deviceObjectId.GetName(); // 姓名result.nation = deviceObjectId.GetFolk(); // 民族result.gender = deviceObjectId.GetSex(); // 性别 文字result.genderNum = deviceObjectId.GetSexN(); // 性别 数字result.birthYear = deviceObjectId.GetBirthYear(); // 出生日期 年result.birthMonth = deviceObjectId.GetBirthMonth() // 出生日期 月result.birthDay = deviceObjectId.GetBirthDay() // 出生日期 日result.idCardNum = deviceObjectId.GetCode(); // 公民身份证号码result.idCardSN = deviceObjectId.GetIDCardSN(); // 身份证卡号result.address = deviceObjectId.GetAddress(); // 地址result.agency = deviceObjectId.GetAgency(); // 签发机关result.valid = deviceObjectId.GetValid(); // 有效日期result.samId = deviceObjectId.GetSAMID(); // 安全模块号result.photoBase64 = deviceObjectId.GetJPGPhotobuf(); // 照片(Base64编码)result.cardPhotoBase64 = deviceObjectId.GetCardPhotobuf(); // 身份证正反面照片(Base64编码)result.returnMsg = 1;if (photonPath == null) {photonPath = "d:\\idcard\\" + "Z" + "+" + deviceObjectId.GetIDCardSN() + deviceObjectId.GetName() + ".jpg"; // 照片输出路径if (cardPath == null) {cardPath = "d:\\idcard\\" + "Z" + "+" + deviceObjectId.GetIDCardSN() + deviceObjectId.GetName() + "card.jpg"; // 正反面输出路径}deviceObjectId.ExportPhoto(photonPath, cardPath); // 输出照片接口} else {console.log("当前卡片不是身份证,请将身份证放到读卡器上!");}}} else if (code == -1) {result.returnMsg = -1;console.log("端口初始化失败!");} else if (code == -2) {result.returnMsg = -2;console.log("请重新将卡片放到读卡器上!");} else if (code == -3) {result.returnMsg = -3;console.log("读取数据失败!");} else if (code == -4) {result.returnMsg = -4;console.log("生成照片文件失败,请检查设定路径和磁盘空间!");}return result;
}

以上就是华大多功能四合一HD-100多功能智能卡读写器配置的使用教程,希望可以帮助到你,如有疑问欢迎私信探讨交流。