123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291 |
- /////////////////////////////////////////////////////////////////////////////////
- /// Copyright (c) 2012 China Merchants Bank, all rights reserved ///
- /// Adapter Interface for Identity Card reader. ///
- /// ///
- ////////////////////////////////////////////////////////////////////////////////
- #ifndef IDCER_CLASS_H
- #define IDCER_CLASS_H
- #pragma once
- #include "DeviceBaseClass.h"
- const int IDCER_EIGHT_BYTE_SIZE = 8;
- const int MAX_IDCER_SIMPLE_INFO_SIZE = 32;
- const int MAX_IDCER_INFO_SIZE = 128;
- const int MAX_IDCER_PHOTO_PATH = 260;
- //二代身份证信息结构(需要支持外国人永久居留证请使用IDCerInfoEx)
- //请务必按照各字段指定格式返回数据
- struct IDCerInfo
- {
- struct Name{
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;}name;
- struct Sex{
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}sex;
- struct Nation{
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}nation;
- struct Birthday{//format:1986年10月07日
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}birthday;
- struct Address{
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;}address;
- struct Idno{
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}idno;
- struct Department{
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;}department;
- struct StartDate{//format:2010.08.09
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}startDate;
- struct EndDate{ //format:2020.08.09
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;}endDate;
- struct NewAddress{
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;}newAddress;
- struct PhotoPath{
- CHAR data[MAX_IDCER_PHOTO_PATH];
- DWORD dwSize;}photoPath;
- };
- //二代证信息结构(支持外国人永久居留证)
- //请务必按照各字段指定格式返回数据
- struct IDCerInfoEx
- {
- struct Name{//中文姓名
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }name;
- struct Sex{//性别
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }sex;
- struct Nation{//民族(二代证专用)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }nation;
- struct Birthday{//出生日期,格式:1986年10月07日
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }birthday;
- struct Address{//住址(二代证专用)
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }address;
- struct Idno{//证件号码,二代证指身份证号,外国人指永久居留证号
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }idno;
- struct Department{//二代证指签发机关,外国人指当次申请受理机关代码
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }department;
- struct StartDate{//有效期起始日(签发日)格式:2010.08.09
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }startDate;
- struct EndDate{ //有效期截止日(终止日)格式:2020.08.09
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }endDate;
- struct NewAddress{//最新地址,二代证专用
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }newAddress;
- struct PhotoPath{
- CHAR data[MAX_IDCER_PHOTO_PATH];
- DWORD dwSize;
- }photoPath;
- struct EnglishName{//英文姓名,外国人专用
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }englishName;
- struct Nationality{//国籍或地区代码,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }nationality;
- struct IdVersion{//证件版本号,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }idVersion;
- struct IdType{//证件类型标识,外国人取值'I',二代证为空
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }idType;
- struct Reserved{//保留字段,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }reserved;
- struct TXZCode{//通行证号码(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }txzCode;
- struct IssuedSN{//签发次数(港澳台居住证)
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }issuedSN;
- struct Reserved2{//备用2(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved2;
- struct Reserved3{//备用3(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved3;
- struct Reserved4{//备用4(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved4;
- struct Reserved5{//备用5(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved5;
- };
- struct IDCerInfoEx2
- {
- struct Name {//中文姓名
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }name;
- struct Sex {//性别
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }sex;
- struct Nation {//民族(二代证专用)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }nation;
- struct Birthday {//出生日期,原始格式:19861007
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }birthday;
- struct Address {//住址(二代证专用)
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }address;
- struct Idno {//证件号码,二代证指身份证号,外国人指永久居留证号
- CHAR data[2 * MAX_IDCER_SIMPLE_INFO_SIZE]; //拓展至64字节
- DWORD dwSize;
- }idno;
- struct Department {//二代证指签发机关,外国人指当次申请受理机关代码
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }department;
- struct StartDate {//有效期起始日(签发日)原始格式:20200809
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }startDate;
- struct EndDate {//有效期截止日(终止日)原始格式:20200809
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }endDate;
- struct NewAddress {//最新地址,二代证专用
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }newAddress;
- struct PhotoPath {
- CHAR data[MAX_IDCER_PHOTO_PATH];
- DWORD dwSize;
- }photoPath;
- struct EnglishName {//英文姓名,外国人专用
- CHAR data[MAX_IDCER_INFO_SIZE];
- DWORD dwSize;
- }englishName;
- struct Nationality {//国籍或地区代码,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }nationality;
- struct IdVersion {//证件版本号,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }idVersion;
- struct IdType {//证件类型标识,外国人取值'I',二代证为空
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }idType;
- struct Reserved {//保留字段,外国人专用
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }reserved;
- struct TXZCode {//通行证号码(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }txzCode;
- struct IssuedSN {//签发次数(港澳台居住证)
- CHAR data[IDCER_EIGHT_BYTE_SIZE];
- DWORD dwSize;
- }issuedSN;
- struct Reserved2 {//备用2(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved2;
- struct Reserved3 {//备用3(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved3;
- struct Reserved4 {//备用4(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved4;
- struct Reserved5 {//备用5(港澳台居住证)
- CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
- DWORD dwSize;
- }reserved5;
- };
- class IDCerClass : public DeviceBaseClass
- {
- public:
- //
- // Open device.
- // if usb device,set dwPort=0
- //
- virtual ErrorCodeEnum DevOpen(DWORD dwPort) = 0;
- //
- // Optional.
- // Open or close RF.
- // Arguments:
- // - bControl:true:open RF,false close RF
- // - 对于吸入式,为true接收身份证插入,为false时弹出身份证并关闭接收身份证插入
- //
- virtual ErrorCodeEnum IDCerRFControl(bool bControl) = 0;
- //
- // Optional.
- // Certificate authentication.
- //
- virtual ErrorCodeEnum IDCerAuthenticate() = 0;
- // 即将废弃,请使用IDCerGetDataEx
- // Get Identity Card info.
- //
- virtual ErrorCodeEnum IDCerGetData(IDCerInfo &idCerInfo) { return Error_NotImpl; }
- // 获取证件信息,包括二代身份证、外国人永久居留证
- // Get Identity Card info.
- //
- virtual ErrorCodeEnum IDCerGetDataEx(IDCerInfoEx &idCerInfoEx){return Error_NotImpl;}
- // 强制弹出身份证等证件
- // Force ID Card to eject。
- //
- virtual ErrorCodeEnum ForceIDEject(){return Error_NotImpl;}
- // 扫描证件并保留扫描文件到默认路径(dep目录下),证件正面使用“idfront.bmp”,证件反面使用“idback.bmp”
- // Scan ID Card and save the image to the position(dep/),using default name "idfront.bmp" and "idback.bmp"。
- //
- virtual ErrorCodeEnum ScanIDAndSaveImage(){return Error_NotImpl;}
- // 获取卡片是否插入或者取走
- // Query if ID Card have been inserted or fetched。
- // pos:
- // -- 0,未检测到任何证件;1,证件在读卡器内部;2,证件在进卡口
- //
- virtual ErrorCodeEnum QueryCardPos(int &pos){return Error_NotImpl;}
- //该接口传回身份证原始UCS2编码文字信息,厂商不必进行编码转换
- virtual ErrorCodeEnum IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2) { return Error_NotImpl; }
- };
- #endif //IDCER_CLASS_H
|