二次开发说明
序:
在调用OCX控件之前需要注册OCX控件,在dos里输入regsvr32 [path]\\xxx.ocx可以实现OCX控件的注册,输入regsvr32 /u [path]\\xxx.ocx可以注销已经注册的OCX控件。如:注册IdCardFingerCom.dll控件,regsvr32 C:\\Documents and Settings\\ IdCardFingerCom.dll。
IdCardFingerCom.dll控件的classid:
1ABD01EC-2767-464B-93EE-12DA867464FA。
需把2个动态库WltRS.dll、SynoAPIEx_CR20.dll和控件IdCardFingerCom.dll连同文件夹IdCardFingerCom整体放到C盘根目录下(这步很重要,须严格按照要求来做)。
如果需要通过IdCardFingerCom.dll控件操作android设备,则需要在android设备中安装
GpioTest.apk来打开/关闭android设备下位机的电源(如:A320A和A370)。
为需要用到的dll和ocx控件压缩包。经过测试IdCardFingerCo
m.dll控件支持javascript(目前仅支持IE浏览器)、c#、vb语言调用。
为javascript、c#、vb语言调用控件的演示程序。
一、 设备获取、打开说明
1. HRESULT PSGetUDiskNum([in]int deviceFlag, [out, retval]int* deviceNum);
功能说明:获取UDISK设备数,即获取CR20/CR30/CR30A/A320A/A370的设备数。
参数说明:参数deviceFlag为入参,值为1时表示获取CR30/CR30A/A320A/A370设备数,值不为1时表示获取CR20设备数。
返回值说明:参数deviceNum为返回值,表示获取到的设备数目,小于等于0说明未获取到设备数
2. HRESULT PSOpenDeviceEx([in]int deviceFlag);
功能说明:打开CR20/CR30/CR30A/A320A/A370设备USB接口。
参数说明:参数deviceFlag为入参,值为1时表示打开CR30/CR30A/A320A/A370设备,值不为1时表示打开CR20设备。
返回值说明:无。可以通过(六)中的属性Result的值来判断为0表示打开成功,否则打开失败。
3. HRESULT PSCloseDeviceEx();
功能说明:关闭CR20/CR30/CR30A/A320A/A370设备USB接口。
参数说明:无。
返回值说明:无。可以通过(六)中的属性Result的值来判断为0表示打开成功,否则打开失败。
二、 指纹注册功能流程图
PSGetImagePSGetImage如果不需要指纹图像可以略过PSUpImage和PSImgData2BMP2步PSUpImagePSUpImage如果不需要指纹图像可以略过PSUpImage和PSImgData2BMP2步PSImgData2BMPPSImgData2BMPPSGenCharPSGenChar注意:参数指定charbuffer1PSRegModule注意:参数指定charbuffer2PSUpChar
三、 指纹验证流程图
1.一对一比对流程图:
PSDownCharPSGetImage如果不需要指纹图像可以略PSUpImage过PSUpImage和PSImgData2BMP2步PSImgData2BMPPSGenCharPSMatch2.一对多比对流程图:
PSDownCharPSStoreCharPSGetImage如果不需要指纹图像可以略PSUpImage过PSUpImage和PSImgData2BMP2步PSImgData2BMPPSGenCharPSSearch 四、 指纹功能方法说明
注意:如果PSGenChar生成特征值到CharBuffer1,则PSDownChar需把特征值下载到CharBuffer2;如果PSGenChar生成特征值到CharBuffer2,则PSDownChar需把特征值下载到CharBuffer1
1. HRESULT PSGetImage();
功能说明:检测手指,检测到后录入指纹图像存于ImageBuffer。
参数说明:无。
返回值说明:无
2. HRESULT PSUpImage([out, retval]BSTR* imageData);
功能说明:将图像缓冲区中的原始指纹图像数据上传给上位机。
参数说明:无
返回值说明:参数imageData为返回值,表示原始指纹图像数据
注:调用此函数以后,可以通过HRESULT ImageLength([out, retval] long *pVal);
属性值获取指纹图像数据的长度。
3. HRESULT PSImgData2BMP([in]BSTR imageFile, [in]BSTR* imageData);
功能说明:将原始的指纹图像数据转换为可视的指纹图像
参数说明: imageFile入参为转换以后的指纹图像路径+图片名,imageData入参为原始指纹图像数据。
返回值说明:无
4. HRESULT PSGenChar([in]int bufferId);
功能说明:将ImageBuffer中的原始指纹图像数据生成指纹特征文件存于CharBuffer1或者CharBuffer2中。
参数说明:参数bufferId为入参, bufferId的值(1h表示CharBuffer1和2h表示CharBuffer2)
返回值说明:无
注:本文中的h表示十六进制
5. HRESULT PSRegModule();
功能说明:将CharBuffer1 与CharBuffer2 中的特征文件合并生成模板,结果存于CharBuffer1 与CharBuffer2。
参数说明:无
返回值说明:无
6. HRESULT PSUpChar([in]int bufferId, [out, retval]BSTR* templetData);
功能说明:将特征缓冲区中的特征文件上传给上位机
参数说明:参数bufferId为入参,bufferId的值(1h表示CharBuffer1和2h表示CharBuffer2)。
返回值说明:templetData为返回值,表示上位机将要接收的指纹特征模板数据
注:调用此函数以后,可以通过HRESULT TempletLength([out, retval] long *pVal);属性值获取指纹特征模板数据的长度。
7. HRESULT PSDownChar([in]int bufferId, [in] BSTR * templetData);
功能说明:上位机下载特征文件到模块的一个特征缓冲区
参数说明:参数bufferId为入参, bufferId的值(1h表示CharBuffer1和2h表示CharBuffer2),templetData入参为下位机将要接收的指纹特征模板数据。
返回值说明:无
8. HRESULT PSMatch([out, retval]int* score);
功能说明:精确比对CharBuffer1和CharBuffer2中的特征文件
参数说明:无。
返回值说明:score 为返回值,表示指纹比对得分
9. HRESULT PSStoreChar([in]int bufferId, [in]int pageId);
功能说明:将CharBuffer1或者CharBuffer2中的模板文件存到pageId号flash数据库位置
参数说明:参数bufferId和pageId为入参, bufferId的值(1h表示CharBuffer1和2h表示CharBuffer2),pageId为要存入flash库的位置(该值为0~1023之间的数)
返回值说明:无
10.HRESULT PSSearch([in]int bufferId, [in]int startPage, [in]int pageNum, [out, retval]int* score);
功能说明:以CharBuffer1或者CharBuffer2中的特征文件搜索整个或部分指纹库,若搜索到则返回页码。
参数说明:参数bufferId、startPage和pageNum为入参, bufferId的值(1h表示CharBuffer1和2h表示CharBuffer2),startPage为搜索起始页,pageNum为搜索页数(startPage为0~1023之间的数,iPageNum应小于等于1023 - startPage)。
返回值说明:score为返回值,表示搜索指纹得分(搜索到的指纹和bufferID中的指纹特征值相似度越高,则得分越高)。
注:调用此函数以后,可以通过HRESULT MbAddress([out, retval] long *pVal);
获取搜索到的与当前指纹匹配的指纹模板在指纹flash库中的位置
11. HRESULT PSEmpty();
功能说明:清空指纹flash库
参数说明:无
返回值说明:无
五、 身份证信息的获取
1.HRESULT PSUpIDCardData([in]BSTR zpFile, [out, retval]BSTR* idCardData);
功能说明: 获取身份证信息,解析身份证文本信息和照片信息,生成照片bmp文件,调用此函数以后可以通过以下的2~10的属性值获取身份证的姓名、性别、民族、生日、住址、身份证号码、签证机关、生效日期和失效日期,并且可以在zpFile所设置的路径+文件名下获取到和zpFile相同文件名但不同扩展名的照片文件(如:zpFile为zp.wlt,则照片文件为zp.bmp)
参数说明:zpFile为希望身份证照片生成路径+文件名,文件必须以.wlt为扩展名,如:\"D:\\\\zp.wlt \"
返回值说明:idCardData为返回值,表示原始的身份证数据
2.HRESULT CardName([out, retval] BSTR *pVal);
姓名
3.HRESULT CardSex([out, retval] BSTR *pVal);
性别
4.HRESULT CardRace([out, retval] BSTR *pVal);
民族
5.HRESULT CardBirth([out, retval] BSTR *pVal);
生日
6.HRESULT CardAddress([out, retval] BSTR *pVal);
住址
7.HRESULT CardIdNum([out, retval] BSTR *pVal);
身份证号码
8.HRESULT CardIssue([out, retval] BSTR *pVal);
签证机关
9.HRESULT CardStartTime([out, retval] BSTR *pVal);
生效日期
10.HRESULT CardEndTime([out, retval] BSTR *pVal);
失效日期
六、 返回值说明
HRESULT Result([out, retval] long *pVal);
注:Result属性值表示以上所有指纹身份证操作函数被调用后所返回的结果,可以通过Result值判断操作成功还是失败。以下为Result可能会取到的返回值:
1.指纹操作时的返回值
0x00 成功
0x01 收包有错
0x02 传感器上无手指
0x03 录入指纹不成功
0x04 指纹图像太干、太淡而生不成特征
0x05 指纹图像太湿、太糊而生不成特征
0x06 指纹图像太乱而生不成特征值
0x07 指纹图像正常,但特征点太少(或面积太小)而生不成特征
0x08 指纹不匹配
0x09 没有搜索到相同的指纹
0x0a 合并失败(两枚指纹不属于同一手指)
0x0b pageId超出指纹库范围(访问指纹库时地址序号超出指纹库范围)
0x0c 读出模板出错或模板无效
0x0d 上传特征指令执行失败
0x0e 不能接受后续数据包
0x0f 不能发送后续数据包
0x10 删除模板失败
0x11 清空指纹库失败
0x12 不能进入低功耗状态
0x13 口令不正确
0x14 系统复位失败
0x15 图像缓冲区内没有有效原始图而生不成图像
0X17 残留指纹或两次采集之间手指没有移动过
2.调用ocx控件和身份证操作出错时的返回值
0 成功
-10 无效的参数
-11 函数调用失败
-12 异常
-13 无效的句柄
-14 类型错误
-15 维数错误
-16 数组下标错误
-17 动态库加载失败
-18 无效的身份证数据
因篇幅问题不能全部显示,请点此查看更多更全内容