本文档提供了OCR+RFID感应识别电子护照阅读器|读卡器MERR100+的 API 接口函数说明,本接口用 C 语言编 写,以 DLL 形式提供。
1、SDK 使用
使用本 SDK,请将以下文件包含到你的工程中:
· DRPassportAPI.h – 接口函数的定义
如果你想用静态连接,请连接下面文件:
· DRPassportAPI.lib
运行时,以下文件必需要包含到运行目录下:
· DRPassportAPI.dll – 主要运行库.
· EMPXDReader.dll, DtIDCard.dll, dtocr.dll, GetRoi.dll, XFaceDetection.dll , CP210xRuntime.dll etc… – 算法运行库. 具体见 BIN 文件夹中所包含文件
2、返回错误
函数返回值为 BOOL 类型,返回 FALSE 表示调用接口失败!
3、标准的工作流程
3.1. 调用 DRP_Initialize() 初始化设备
3.2. 调用 DRP_InitIDCard() 初始化芯片读卡器
3.3. 调用 DRP_Capture_RegisterCallbackResultImage()注册护照返回回调函数
3.4. 调用 DRP_Capture_RegisterCallbackResultIDCard()注册二代证返回回调函数
3.5. 调用 DRP_SetCapture_Start() 设备开始运行
3.6. 调用 DRP_SetAutoModel()设置是否自动触发模式,默认是手动触发
3.7. 调用 DRP_Capture_Manual()手动强制证件阅读
3.8. 调用 DRP_StopCapture() 设备停止运行
3.9. 调用 DRP_DeInitialize() 去初始化设备,释放资源
4、 运行设备 程序利用
API 运行设备如下:
初始化证件阅读器
调用 API 函数抓取图像
关闭证件阅读器
5、开始
每次只允许 PC 上有一个设备运行,如要运行,它必需要求如下:
1. 调用 DRP_Initialize() 初始化设备 调用 DRP_Capture_RegisterCallbackResultImage 初始化回调函数
2. 调用 DRP_SetCapture_Start() 设置触发模式
3. 调用 DRP_Capture_Manual() 扫描证件.
4. 调用函数处理回调函数返回的结果.
下面的代码是初始化设备和芯片读卡器:
// TODO: 在此添加控件通知处理程序代码
BOOL br=FALSE;
BOOL br1=FALSE;
int icom[5] = {0};
CString strMSG="";
br = DRP_Initialize(2);
if (br)
{ SetSatus("相机初始化成功!正在初始化天线....");
br1=DRP_InitIDCard("",icom); }
else
{ SetSatus("相机初始化失败!");
return; } ……………
DRP_Capture_RegisterCallbackResultIDCard(OnResultID,this); DRP_Capture_RegisterCallbackResultImage(OnResultPassport,this); 华
6、获取证件信息
设备和程序之间的数据交换是通过回调函数实现的。
6.1开始一个扫描
调用 DRP_SetCapture_Start,设备开始运行,然后调用 CGP_Capture_Manual 开始扫描证件。MEPR100 证件阅读器可自动识别证件类型,参数无需指定证件类型。
6.2 得到最终的图像和数据 图像和数据通过回调函数 CGP_CallbackResultData
图像和数据通过回调函数 CGP_CallbackResultData 返回
重要提示:请不要在程序中使用返回的图像内存指针,这个指针指向的内存会在下一次扫描
证件的时候改变,请将内存拷贝到自已申请的内存中使用。
7、关闭设备
程序关闭设备,将会释放所有资源,当前的设备句柄不在有效,如果需要再次使用相同设 备,还需要再次对设备进行初始化。
关闭设备请调用函数 CGP_DeInitialize
以下代码为关闭设备示例:
// NOTE: Error handling is kept simple for brevity
DRP_DeInitialize();
if (…) delete[] …;
if (…) delete[] …;
if (…) delete[] …;
8、获取设备信息
MEPR100 阅读器内保存了设备的生产日期,有效日期及序列号,版本号信息,调用函数 DRP_GetDeviceInfo.
将获取这些信息
int nRet = 0;
DRPReaderPropertyInfo info; …
nRet = DRP_GetDeviceInfo(&info);