普天CPIDMR身份证阅读器开发说明
一、 系统要求
使用本API的PC机,必须满足下列条件:
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.dll、sdtapi.dll、WltRS.dll、license.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自带多种调用示例。目前有基于以下编程语言的示例:VC、C#、VB.net、Delphi、BCB、Java、PB。所有示例都使用“打开设备”->“读卡”->“关闭设备”的调用顺序。
使用调用示例时请将cardapi3.dll、sdtapi.dll、WltRS.dll、license.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
- 上一篇:访客系统功能升级,诚招各地区代理商 2016/10/8
- 下一篇:hx-100D串口指令,嵌入式232串口开发接口协议 2016/9/18