华视身份证阅读器SDK使用手册

华视身份证阅读器SDK使用手册

V1.33

 

华视电子读写设备有限公司

 20080711

概述

    本手册是操作身份证阅读器动态库应用函数的定义格式、调用方法和返回值的说明。在使用前,请确认授权文件termb.lic是否在你的PCC:/根目录下。

 

1.       定义

应用函数开发包含下列文件:

termb.dll        API函数的动态联接库

sdtapi.dll       内部动态库

cvrapi.dll      内部动态库

wltrs.dll       内部动态库

termb.lic        身份证相片解压授权文件,放于C:/目录下

适用操作系统:

       Windows NT: 需要NT 3.1版或以后版本

    Windows:    需要 Windows 98Windows 2000或以后版本

适用开发语言:

    Visual C++   5.0 及以后版本

    Visual Basic 5.0 及以后版本

    Delphi        3.0 及以后版本

    PowerBuilder 6.0 及以后版本

 

2.       函数列表

    int CVR_InitComm(int Port)                               初始化连接;

int CVR_Authenticate()                                  卡认证;

int CVR_Read_Content(int Active)                                读卡操作。

int CVR_CloseComm()                                      关闭连接;

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)                                  得到发证机关信息

       int  GetStartDate(char *strTmp, int *strLen)                                             得到有效开始日期      

       int  GetEndDate(char *strTmp, int *strLen)                                           得到有效截止日期

 

3.       函数调用流程

 

4.       函数说明

4.1    初始化连接

    型:int CVR_InitComm (int Port)

    明:本函数用于PC与华视电子第二代居民身份证阅读器的连接。

    数:Port:连接串口或USB

意义

1

串口1

2

串口2

3

串口3

4

串口4

1001

USB1

1002

USB2

1003

USB3

1004

USB4

 

值:

意义

1

正确

0

错误

 

4.2    关闭串口

    型:

             int CVR_CloseComm(void)

    明:本函数用于关闭PC到阅读器的连接。

    数:无

值:

意义

1

正确

0

错误

 

4.3    卡认证

    型:int CVR_Authenticate (void)

    明:本函数用于读卡器和卡片之间的合法身份确认。

    数:

值:

意义

说明

1

正确

卡片正确放置时

0

错误

未放卡或卡片放置不正确时

注意:若卡片放置后发生认证错误时,应移走卡片重新放置。

 

4.4    读卡操作

    型:int CVR_Read_Content(int Active)

    明:本函数用于通过阅读器从第二代居民身份证中读取相应信息。

    数:Active   读取信息类型

Active

意义

说明

1

读基本信息

生成文字WZ.TXT、相片数据XP.WLT和相片ZP.BMP(解码)

2

读基本信息

生成文字WZ.TXT和相片数据XP.WLT

3

读最新住址信息

生成最新住址NEWADD.TXT(卡无最新地址则生成空文件)

4

读基本信息

生成WZ.TXT(解码),相片ZP.BMP(解码)

5

读芯片管理号

芯片管理号IINSNDN.bin

6

读基本信息

以设备唯一标志号,生成文字WZ.TXT(解码),相片XP.BMP(解码)

(用于终端网络环境)

 

值:

返回值

意义

1

正确

0

错误

 

4.5    射频操作

    型:int CVR_Ant(int mode)

    明:本函数用于打开/关闭射频。阅读器在不读卡时,如果射频对其它的电子产品有干扰的话,可以选择关闭射频,当需要读卡时,再打开射频。该函数只在当连接到串行接口的阅读器时,调用有效。如不调用此函数时,射频一直处于打开状态。

                  注:当 CVR_InitComm函数调用成功后,该函数有效。

    数:mode  

 

MODE

意义

0

关闭射频

1

打开射频

 

值:

返回值

意义

1

正确

0

错误

 

 

4.6    读文字、照片信息到自定义内存缓冲

         型: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

nMode

传入参数1

文字编码为默认UCS-2格式,

照片未解压成bmp文件

传入参数2

文字编码已转换成GBK国标码格式,

照片未解压成bmp文件

传入参数3

文字编码为默认UCS-2格式,

照片已解压成zp.bmp文件

传入参数4

文字编码已转换成GBK国标码格式,

照片已解压成zp.bmp文件

 

值:

返回值

意义

1

正确

0

错误

 

 

4.7    读各项文字信息到自定义内存缓冲

  型:

       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

 

注意:

1、  读完基本信息后,若需要立即读取最新住址信息或芯片管理号,在未移走卡片的情况下可以不用卡认证;

2、  单独读取最新住址信息或芯片管理号时,需要先进行卡认证;

3、若卡片放置后发生读卡错误时,应移走卡片重新放置。

 

文字信息采用GB 13000UCS-2进行存储,各项目分配如下:

项目

长度(字节)

说明

姓名

30

汉字

性别

2

代码

民族

4

代码

出生

16

年月日:YYYYMMDD

住址

70

汉字和数字

公民身份号码

36

数字

签发机关

30

汉字

有效期起始日期

16

年月日:YYYYMMDD

有效期截止日期

16

年月日:YYYYMMDD

有效期为长期时存储“长期”

最新住址

70

汉字和数字

 

芯片管理号分配如下:

项目

长度(字节)

说明

IIN

4

 

SN

8

 

DN

16

 

 

你可能感兴趣的:(华视身份证阅读器SDK使用手册)