普天CPIDMR身份证阅读器开发说明

2016-9-23 17:38:06      点击:

一、 系统要求

使用本APIPC机,必须满足下列条件:

l Windows 2000, Windows XP或更高

l 至少64兆内存(64M RAM or Larger

l 至少10兆空闲硬盘空间(10M Free Hard Disk Space or Larger

l 至少一个空闲普通串口或USB口(视用户需求而定)。

二、 文件列表

API含下列文件:

文件名

说明

cardapi.h

cardapi3.lib

cardapi3.dll

API中的各个函数在此DLL中实现

sdtapi.dll

WltRS.dll

license.dat

授权文件

使用API时请将cardapi3.dllsdtapi.dllWltRS.dlllicense.dat四个文件放在一起。

三、 API详细说明

1. 错误代码:

错误号

含义

0

成功

1

端口打开失败

2

数据传输超时

10

没有找到卡

11

读卡操作失败

20

自检失败

30

其他错误

40

相片解码失败

API中所有的函数都使用统一的错误代码。

2. 证件信息结构

typedef struct _personinfow

{

wchar_t name[16];

wchar_t sex[2];

wchar_t nation[10];

wchar_t birthday[10];

wchar_t address[36];

wchar_t cardId[20];

wchar_t police[16];

wchar_t validStart[10];

wchar_t validEnd[10];

wchar_t sexCode[2];

wchar_t nationCode[4];

wchar_t appendMsg[36];

}PERSONINFOW,*PPERSONINFOW;

typedef struct _personinfoa

{

char name[32];

char sex[4];

char nation[20];

char birthday[12];

char address[72];

char cardId[20];

char police[32];

char validStart[12];

char validEnd[12];

char sexCode[4];

char nationCode[4];

char appendMsg[72];

}PERSONINFOA,*PPERSONINFOA;

PERSONINFOW中的字符串使用UTF-16编码,PERSONINFOA中的字符串使用GBK编码。

结构体成员说明:

name

姓名

sex

性别

nation

民族

birthday

出生日期

address

地址

cardId

身份证号码

police

签发机关

validStart

有效开始日期

validEnd

有效截止日期

sexCode

性别代码

nationCode

民族代码

appendMsg

新地址

其中日期格式均为YYYYMMDD,例如20080808有效截止日期可以是长期。

3. long __stdcall OpenCardReader(long lPort, ULONG ulFlag, ULONG ulBaudRate)

打开并检测阅读器。

参数

lPort:端口号,1~16表示串口号,1001表示USB口,0表示自动选择。

ulFlag:可选的标志位,可以用“按位或”运算符组合。

Bit0

清零表示每次读卡时都重新打开和关闭端口。置1表示重复使用已打开的端口。建议使用蓝牙阅读器的用户将此位置1

Bit1

允许重复读取证件。即证件不离开阅读器时可以被多次读取。

Bit2

读卡时同时读取新地址。

Bit16~Bit23

在接收到串口数据后等待的毫秒数(0~255)

ulBaudRate:波特率。使用串口阅读器时请正确设置波特率。串口阅读器出厂时的波特率一般为115200。使用USB阅读器时忽略该参数。

返回值:错误代码。

4. long __stdcall GetPersonMsgW(PPERSONINFOW pInfo, const wchar_t* pszImageFile)

读取二代证,所有参数中的字符串使用UTF-16编码。

参数

pInfo:指向证件信息结构的指针。

pszImageFile:照片路径和文件名。照片的格式是bmp

例如 C:\Documents and Settings\test\Local Settings\Temp\image.bmp(如果当前用户是test的话)

返回值:错误代码。

5. long __stdcall GetPersonMsgA(PPERSONINFOA pInfo, const char* pszImageFile)

读取二代证,所有参数中的字符串使用GBK编码。

参数

pInfo:指向证件信息结构的指针。

pszImageFile:照片路径和文件名。照片的格式是bmp

例如 C:\Documents and Settings\test\Local Settings\Temp\image.bmp(如果当前用户是test的话)

返回值:错误代码。

6. long __stdcall ResetCardReader()

重置阅读器。重置成功后自动等待2秒钟。一般情况下不使用该函数。

API自带多种调用示例。目前有基于以下编程语言的示例:VCC#VB.netDelphiBCBJavaPB。所有示例都使用“打开设备”->“读卡”->“关闭设备”的调用顺序。

使用调用示例时请将cardapi3.dllsdtapi.dllWltRS.dlllicense.dat四个文件放在被调用的路径中。

使用C#VB.net示例时请先根据需要修改输出文件的路径。C#:“项目”->“(项目名称)属性”->“生成”->“输出路径”。VB.net:“项目”->“(项目名称)属性”->“编译”->“生成文件输出路径”。

使用网页(B/S应用)、VB6开发的用户请使用ActiveX控件。

 

常见问题

1、如果打开端口失败,第一看驱动有没有装好,有32位,64位驱动,是不同的。

2、检查身份证阅读器的线是不是插在台式机后面,因为扩展USB可能供电不足。

3、端口号说明:USB是1001开始,串口是01开始,0是自动选,但可能会连接慢一点

身份证阅读器技术支持网站:http://www.hxanf.com