身份证阅读器SDK使用手册
身份证阅读器SDK使用手册
V2.08
华视电子读写设备有限公司
2009年09月23日
华视电子读写设备有限公司 1 之 7
身份证阅读器SDK使用手册
概述
本手册是操作身份证阅读器动态库应用函数的定义格式、调用方法和返回值的说明。在使用前,请确认授权文件termb.lic是否在你的PC机C:\\根目录下。 1.
定义
应用函数开发包含下列文件:
termb.dll API函数的动态联接库 sdtapi.dll 内部动态库 cvrapi.dll 内部动态库 wltrs.dll 内部动态库 termb.lic 身份证相片解压授权文件,放于C:\\目录下 适用操作系统: Windows NT: 需要NT 3.1版或以后版本
Windows: 需要 Windows 98、Windows 2000或以后版本 适用开发语言: Visual C++ 5.0 及以后版本 Visual Basic 5.0 及以后版本 Delphi 3.0 及以后版本 PowerBuilder 6.0 及以后版本
2.
函数列表
//以下为主要API函数
int CVR_InitComm(int Port) 初始化连接;
int CVR_Authenticate() 卡认证; int CVR_Read_Content(int Active) 读卡操作。 int CVR_CloseComm() 关闭连接;
//以下为可选API函数,方便二次开发 int CVR_Ant(int mode) 射频操作 int CVR_ReadBaseMsg ( unsigned char *pucCHMsg, unsigned int *puiCHMsgLen, unsigned char *pucPHMsg, unsigned int *puiPHMsgLen, int nMode) 读卡操作(读入内存) int GetPeopleName(char *strTmp, int *strLen) 得到姓名信息 int GetPeopleSex(char *strTmp, int *strLen) 得到性别信息 int GetPeopleNation(char *strTmp, int *strLen) 得到民族信息 int GetPeopleBirthday(char *strTmp, int *strLen) 得到出生日期 int GetPeopleAddress(char *strTmp, int *strLen) 得到地址信息 int GetPeopleIDCode(char *strTmp, int *strLen) 得到身份证号信息 int GetDepartment(char *strTmp, int *strLen) 得到发证机关信息
华视电子读写设备有限公司 2 之 7
身份证阅读器SDK使用手册
得到有效开始日期 得到有效截止日期
int GetStartDate(char *strTmp, int *strLen) int GetEndDate(char *strTmp, int *strLen)
3.
函数调用流程
开始 初始化连接 打开射频 卡认证 读卡操作CVR_Read_Content 读卡至内存缓存 CVR_ReadBaseMsg 关闭射频 关闭连接 结束 4.
函数说明
初始化连接
原 型:int CVR_InitComm (int Port)
华视电子读写设备有限公司 3 之 7
身份证阅读器SDK使用手册
说 明:本函数用于PC与华视电子第二代居民身份证阅读器的连接。 参 数:Port:连接串口(COM1~COM16)或USB口(1001~1016)
值 意义 1 串口1 2 串口2 3 串口3 4 串口4 1001 USB口1 1002 USB口2 1003 USB口3 1004 USB口4
返 回 值:
值 1 0
意义 正确 错误 关闭串口 原 型: int CVR_CloseComm(void)
说 明:本函数用于关闭PC到阅读器的连接。 参 数:无 返 回 值:
值 意义 1 正确 0 错误
卡认证
原 型:int CVR_Authenticate (void) 说 明:本函数用于读卡器和卡片之间的合法身份确认。卡认证循环间隔大于300ms。 参 数: 返 回 值: 值 意义 说明 1 正确 卡片正确放置时 0 错误 未放卡或卡片放置不正确时 注意:若卡片放置后发生认证错误时,应移走卡片重新放置。
读卡操作
原 型:int CVR_Read_Content(int Active); 说 明:本函数用于通过阅读器从第二代居民身份证中读取相应信息。卡认证成功以后才可做读卡操作,读卡完毕若继续读卡应移走二代证卡片重新放置做卡认证。
参 数:Active 读取信息类型
Active 意义 说明 1 读基本信息 生成文字WZ.TXT、相片数据XP.WLT和相片ZP.BMP(解码) 2 读基本信息 生成文字WZ.TXT和相片数据XP.WLT
华视电子读写设备有限公司 4 之 7
3 4 5 6 身份证阅读器SDK使用手册 读最新住址信息 生成最新住址NEWADD.TXT(卡无最新地址则生成空文件) 读基本信息 生成WZ.TXT(解码),相片ZP.BMP(解码) 读芯片管理号 芯片管理号IINSNDN.bin 以设备唯一标志号,生成文字WZ.TXT(解码),相片XP.BMP(解码) 读基本信息 (用于终端网络环境) 返 回 值:
返回值 1 0 意义 正确 错误
射频操作
原 型:int CVR_Ant(int mode);
说 明:本函数用于打开/关闭射频。阅读器在不读卡时,如果射频对其它的电子产
品有干扰的话,可以选择关闭射频,当需要读卡时,再打开射频。该函数只在当连接到串行接口的阅读器时,调用有效。如不调用此函数时,射频一直处于打开状态。
注:当 CVR_InitComm函数调用成功后,该函数有效。 参 数:mode
MODE 意义 0 关闭射频 1 打开射频 返 回 值:
返回值 1 0 意义 正确 错误
读文字、照片信息到自定义内存缓冲
原 型:int CVR_ReadBaseMsg (unsigned char *pucCHMsg, unsigned int *puiCHMsgLen, unsigned char *pucPHMsg, unsigned int *puiPHMsgLen, int nMode)
说 明:此函数代替CVR_Read_Content函数,将身份信息读到自定义内存缓冲中。卡 认证CVR_Authenticate成功以后调用本函数。 参 数: 参 数 说 明 备 注 pucCHMsg 身份文字信息内存缓冲指针 方向:Out puiCHMsgLen 身份文字信息长度 默认 256 Byte pucPHMsg 身份照片信息内存缓冲指针 方向:Out puiPHMsgLen 身份照片信息长度 默认 1024 Byte
华视电子读写设备有限公司 5 之 7
nMode 身份证阅读器SDK使用手册 传入参数 1 文字编码为默认UCS-2格式, 照片未解压成bmp文件 传入参数 2 传入参数 3 传入参数 4 文字编码已转换成GBK国标码格式, 照片未解压成bmp文件 文字编码为默认UCS-2格式, 照片已解压成zp.bmp文件 文字编码已转换成GBK国标码格式, 照片已解压成zp.bmp文件 返 回 值:
返回值 1 0 意义 正确 错误
读各项文字信息到自定义内存缓冲 原 型: int _stdcall GetPeopleName(char *strTmp, int *strLen) //得到姓名信息 int _stdcall GetPeopleSex(char *strTmp, int *strLen) //得到性别信息 int _stdcall GetPeopleNation(char *strTmp, int *strLen) //得到民族信息 int _stdcall GetPeopleBirthday(char *strTmp, int *strLen) //得到出生日期 int _stdcall GetPeopleAddress(char *strTmp, int *strLen) //得到地址信息 int _stdcall GetPeopleIDCode(char *strTmp, int *strLen) //得到卡号信息 int _stdcall GetDepartment(char *strTmp, int *strLen) //得到发证机关信息 int _stdcall GetStartDate(char *strTmp, int *strLen) //得到有效开始日期 int _stdcall GetEndDate(char *strTmp, int *strLen) //得到有效截止日期 说 明:以上函数调用流程为:调用 CVR_Read_Content 或者 CVR_ReadBaseMsg 函数 成功后再分别调用以上函数。CVR_Read_Content 或者 CVR_ReadBaseMsg 函数 自动 在应用程序当前目录产生BMP照片文件。 参数:
*strTmp 返回的信息缓存指针。 *strLen 返回的信息长度指针。 返 回 值:
返回值 意义 1 正确 0 错误
注意:若采用查询方式自动判断卡片是否放置,则间隔时间建议大于
300ms。
华视电子读写设备有限公司 6 之 7
身份证阅读器SDK使用手册
注意:
1、 读完基本信息后,若需要立即读取最新住址信息或芯片管理号,在未移走卡片的情况下可以不用卡认证;
2、 单独读取最新住址信息或芯片管理号时,需要先进行卡认证; 3、若卡片放置后发生读卡错误时,应移走卡片重新放置。
文字信息采用GB 13000的UCS-2进行存储,各项目分配如下:
项目 长度(字节) 说明 30 姓名 汉字 2 性别 代码 4 民族 代码 16 出生 年月日:YYYYMMDD 70 住址 汉字和数字 36 公民身份号码 数字 30 签发机关 汉字 16 有效期起始日期 年月日:YYYYMMDD 16 有效期截止日期 年月日:YYYYMMDD 有效期为长期时存储“长期” 70 最新住址 汉字和数字
芯片管理号分配如下: 项目 长度(字节) 说明 4 IIN 8 SN 16 DN
华视电子读写设备有限公司 7 之 7